Cuprins:

Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 pași
Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 pași

Video: Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 pași

Video: Open (Bicycle) Grade Simulator - OpenGradeSIM: 6 pași
Video: F7HH0W8K36U3VXJ 2024, Noiembrie
Anonim
Image
Image
Open (Bicycle) Grade Simulator - OpenGradeSIM
Open (Bicycle) Grade Simulator - OpenGradeSIM
Open (Bicycle) Grade Simulator - OpenGradeSIM
Open (Bicycle) Grade Simulator - OpenGradeSIM

Introducere

O anumită companie de fitness bine cunoscută din SUA (Wahoo) a scos recent un ajutor extraordinar pentru antrenament în interior, care ridică și coboară partea din față a bicicletei pe turbo trainer în funcție de gradul simulat al dealului pe care îl parcurge utilizatorul (Kickr Climb).

Pare uimitor, dar, din păcate, acest lucru nu este disponibil pentru noi toți, deoarece veți avea nevoie de 1) un antrenor Wahoo de top și 2) 500 GBP în numerar pentru a vă face acest lucru.

Am spart o clavicula (nu am pus niciodată un biciclist rutier pe o bicicletă montană), așa că am avut mai multe mile pe antrenor și mai mult timp pentru a trage și am crezut că acest lucru ar putea fi un proiect distractiv.

Unitatea comercială simulează -5% până la + 20%, așa că am vrut să mă apropii de asta, dar cu 10% din buget!

Acest lucru este conceput în jurul Tacx Neo al meu, dar orice antrenor care își transmite datele de putere și viteză prin ANT + sau BLE ar putea fi pus în funcțiune (cred!).

Deoarece ampatamentul de pe bicicleta mea de drum măsoară exact 1000 mm, ar trebui să ridic furcile cu 200 mm pentru a simula 20% (a se vedea imaginea), așa că ar face un actuator liniar de 200 mm. Greutatea bicicletei + călărețului este puțin probabil să depășească 100 kg și, deoarece aceasta este distribuită între axe și cea mai mare parte este pe spate 750N va ridica 75 kg și ar trebui să fie ok. Actuatoarele mai rapide sunt disponibile pentru mai mulți bani, dar acesta mă costă în jur de 20 GBP și gestionează 10 mm / sec. Actuatoarele cu potențiometre care pot fi utilizate ca servo simple sunt, de asemenea, de 2 până la 3 ori mai scumpe.

Provizii

Imprimare 3D (PLA sau ABSetc) a piesei adaptorului axului traversant:

100 mm din tub de aluminiu de 3/4 inch 10 swg (pentru un cadru ax axial)

Stoc de bare din oțel inoxidabil de 80 mm

Imprimare 3D (PLA sau ABSetc) a pantofului pentru partea actuatorului liniar:

Imprimare 3D a husei pentru podul H

Imprimare 3D a husei pentru Arduino (versiunea 1 cu tastatură) https://www.thingiverse.com/thing:3984911 (versiunea 2 așa cum se arată (https://www.thingiverse.com/thing:3995976)

Piesă tăiată cu laser din acrilic transparent de 3 mm, 32 x 38 mm, pentru a vă împiedica să transpirați în toate componentele electronice (a făcut asta, nu este ideal).

Câteva blocuri de sângerare (adaptate pentru a lăsa tampoanele înăuntru) pentru a vă împiedica să împingeți accidental pistoanele etrierului din frânele de disc Shimano în entuziasmul dvs.

Actuator liniar 750N 200mm cursă de ex. Mini actuatoare liniare Al03 de la

Pod L298N H (cum ar fi:

Arduino Nano IoT 33 www.rapidonline.com comandă 73-4863

Tastatură cu membrană cu 2 taste, de ex.

IIC I2C Convertor de nivel logic Modul bidirecțional 5V la 3,3V pentru Arduino de ex.

Alimentare 12V 3A DC - cele pentru iluminatul cu LED-uri funcționează excelent!

NPE CABLE Ant + to BLE bridge

Clip de imprimat 3D pentru podul CABLE

Modul de afișaj LCD OLED de 1,3 cu interfață IIC I2C 128x32 3.3V

Pasul 1: unele matematice

Unele matematice
Unele matematice

Trebuie să calculăm înclinația simulată. Speram că antrenorul va face publicitate acestor date împreună cu viteza, puterea, cadența etc. Cu toate acestea, antrenorul stabilește pur și simplu rezistența la menținerea puterii în funcție de software-ul de pe tabletă, computerul etc. Nu am avut nicio modalitate de a captura cu ușurință „nota simulată” din software, așa că ar trebui să lucrez înapoi …

Forțele care acționează asupra bicicletei și călărețului sunt o combinație de pierderi rezistive și puterea necesară pentru a urca dealul. Antrenorul raportează viteza și puterea. Dacă putem găsi pierderile rezistive la o viteză dată, atunci puterea rămasă este utilizată pentru a urca dealul. Puterea de a urca depinde de greutatea bicicletei și a călărețului și de rata de urcare și astfel putem reveni la înclinare.

Mai întâi am folosit uimitorul https://bikecalculator.com pentru a găsi câteva puncte de date pentru pierderea de putere rezistivă la viteze tipice. Apoi am transformat domeniul vitezei pentru a produce o relație liniară și am găsit cea mai potrivită linie. Luând ecuația liniei, putem calcula acum puterea (W) din rezistență = (0,0102 * (Speedkmh ^ 2.8)) + 9.428.

Luați puterea din rezistență din puterea măsurată pentru a da puterea de „urcare”.

Știm viteza ascensiunii în km / h și o convertim în unități SI de m / s (împărțiți la 3,6).

Inclinația se găsește din: Inclinație (%) = ((PowerClimbing / (WeightKg * g)) / Speed) * 100

unde accelerarea căderii libere g = 9.8m / s / s sau 9.8 N / kg

Pasul 2: obțineți niște date

Obțineți niște date
Obțineți niște date

Calculul înclinației necesită viteză și putere. Am folosit un Arduino Nano 33 IoT pentru a mă conecta la antrenor prin BLE pentru a primi acest lucru. M-am blocat inițial, deoarece versiunea actuală v.1.1.2 a bibliotecii native ArduinoBLE pentru acest modul nu gestionează autentificarea sub nicio formă, ceea ce înseamnă că majoritatea senzorilor (?) Comerciali BLE nu se vor împerechea cu acesta.

Soluția a fost utilizarea unui cablu NPE ANT + către BLE bridge (https://npe-inc.com/cableinfo/) care păstrează gratuit BLE-ul integrat al antrenorului pentru ca aplicația de instruire să comunice și nu necesită autentificare pe BLE latură.

Caracteristica de putere BLE este destul de simplă, deoarece puterea în wați este conținută în al doilea și al treilea octet al datelor transmise ca un număr întreg de 16 biți (endian mic, adică octetul cel mai puțin semnificativ mai întâi). Am aplicat un filtru mediu mobil pentru a oferi o putere medie de 3 s - la fel cum arată computerul meu de bicicletă - deoarece acest lucru este mai puțin neregulat.

if (powerCharacteristic.valueUpdated ()) {

// Definiți o matrice pentru valoarea uint8_t holdpowervalues [6] = {0, 0, 0, 0, 0, 0}; // Citiți valoarea în matrice powerCharacteristic.readValue (holdpowervalues, 6); // Puterea este returnată ca wați în locația 2 și 3 (loc 0 și 1 reprezintă steaguri de 8 biți) octet rawpowerValue2 = holdpowervalues [2]; // cel mai mic sig octet în octet HEX rawpowerValue3 = holdpowervalues [3]; // putere cea mai mare sig octet în HEX lung rawpowerTotal = (rawpowerValue2 + (rawpowerValue3 * 256)); // Utilizați filtrul mediu în mișcare pentru a da „putere 3s” powerTrainer = movingAverageFilter_power.process (rawpowerTotal);

Caracteristica de viteză BLE (Cycling Speed and Cadence) este unul dintre acele lucruri care te fac să te întrebi ce pământ a fumat SIG atunci când au scris specificația.

Caracteristica returnează o matrice de 16 octeți care nu conține nici viteză, nici cadență. În schimb, obțineți rotații ale roților și rotații ale manivelei (totaluri) și timpul de la datele ultimului eveniment în 1024 de secunde. Deci mai multe matematici atunci. Oh, iar octeții nu sunt întotdeauna prezenți, deci există un octet de semnalizare la început. O, iar octeții sunt HEX puțin endian, deci trebuie să citiți înapoi multiplicând al doilea octet cu 256, al treilea cu 65536 etc. apoi adăugându-i împreună. Pentru a găsi viteza, trebuie să presupuneți o circumferință standard a roții bicicletei pentru a cunoaște distanța …

if (speedCharacteristic.valueUpdated ()) {

// Această valoare are nevoie de o matrice de 16 octeți uint8_t holdvalues [16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Dar voi citi doar primele 7 speedCharacteristic.readValue (holdvalues, 7); octet RawValue0 = holdvalues [0]; // semnalizatoare binare 8 biți int octet RawValue1 = holdvalues [1]; // revoluții octet cel mai puțin semnificativ în octetul HEX RawValue2 = holdvalues [2]; // revoluții următorul octet cel mai semnificativ în octetul HEX RawValue3 = holdvalues [3]; // revoluții următorul octet cel mai semnificativ în octetul HEX RawValue4 = holdvalues [4]; // cele mai semnificative revoluții octet în octet HEX RawValue5 = holdvalues [5]; // timpul de la ultimul eveniment al roții, cel mai mic octet de octet RawValue6 = holdvalues [6]; // timpul de la ultimul eveniment al roții, cel mai mare octet dacă (firstData) {// Obțineți rotații cumulative ale roții ca hexagon endian mic în loc 2, 3 și 4 (octetul cel mai puțin semnificativ mai întâi) WheelRevs1 = (RawValue1 + (rawValue2 * 256) + (RawValue3 * 65536) + (RawValue4 * 16777216)); // Obțineți timp de la ultimul eveniment rotativ în 1024ths of a second Time_1 = (rawValue5 + (rawValue6 * 256)); firstData = false; } else {// Obține al doilea set de date lung WheelRevsTemp = (RawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); Long TimeTemp = (RawValue5 + (RawValue6 * 256)); if (WheelRevsTemp> WheelRevs1) {// asigurați-vă că bicicleta se mișcă WheelRevs2 = WheelRevsTemp; Time_2 = TimeTemp; firstData = true;}

// Găsiți diferența de distanță în cm și convertiți în km float distanceTravelled = ((WheelRevs2 - WheelRevs1) * wheelCircCM);

plutitor kmTravelled = distanceTravelled / 1000000;

// Găsiți timpul în 1024 de secunde și convertiți în ore

float timeDifference = (Time_2 - Time_1); float timeSecs = timeDifference / 1024; float timeHrs = timeSecs / 3600;

// Găsiți viteza kmh

speedKMH = (kmTravelled / timeHrs);

Schița Arduino este găzduită la GitHub (https://github.com/mockendon/opengradesim).

Pasul 3: Hardware 1 actuatorul liniar

Hardware 1 actuatorul liniar
Hardware 1 actuatorul liniar
Hardware 1 actuatorul liniar
Hardware 1 actuatorul liniar
Hardware 1 actuatorul liniar
Hardware 1 actuatorul liniar

Axa pasivă de pe bicicleta mea de frână cu disc specifică o axă de 19,2 mm pentru a elibera axa pasivă de 12 mm cu 100 mm între furci.

Tubul de aluminiu stoc 3/4 inch 10swg se potrivește perfect și un tip frumos numit Dave pe ebay (https://www.ebay.co.uk/str/aluminiumonline) furnizat și l-a tăiat la lungime pentru câteva kilograme.

Actuatorul are o bară de 20 mm cu o gaură de 6 mm, astfel încât partea imprimată 3D leagă tubul de aluminiu de o bară de oțel de 6 mm și, din moment ce forțele sunt de 90% compresie, unele PLA / ABS sunt la îndemână.

Dacă executați o configurare standard de lansare rapidă, atunci ceva de genul acesta (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) va evita să reproiectați această componentă.

Portbagajul este conceput pentru a se încadra în blocul de ridicare furnizat împreună cu antrenorul meu Tacx, dar probabil că s-ar potrivi în multe ridicatoare similare sau puteți doar să editați fișierul TinkerCad pentru a se potrivi cerințelor dvs.

Pasul 4: Hardware 2 - Podul H

Hardware 2 - Podul H
Hardware 2 - Podul H
Hardware 2 - Podul H
Hardware 2 - Podul H
Hardware 2 - Podul H
Hardware 2 - Podul H

Aceste plăci de punte L298N H, care sunt foarte frecvente online, au un regulator încorporat de 5V, care este excelent pentru alimentarea Arduino de la sursa de alimentare de 12V necesară pentru actuatorul liniar. Din păcate, placa Arduino Nano IoT are o semnalizare de 3,3V, deci este nevoie de un convertor de nivel logic (sau un optoizolator, deoarece semnalele sunt doar unidirecționale).

Carcasa este concepută pentru a accepta conectorii de alimentare utilizați în mod obișnuit în aplicațiile de iluminat cu LED-uri. Am măcelărit un cablu de extensie USB pentru a face posibilă conectarea / deconectarea cu ușurință a unității de cap Arduino și, în timp ce eram sigur că voi folosi liniile de alimentare pentru alimentare și liniile de date pentru semnalizarea de 3,3 V, aș sfătui sincer ÎMPOTRIVA acestui lucru așa cum aș face urăsc pe cineva să-și prăjească porturile USB sau perifericele conectându-le din greșeală!

Pasul 5: Hardware 3 Control Electronics (Arduino)

Hardware 3 Control Electronics (Arduino)
Hardware 3 Control Electronics (Arduino)
Hardware 3 Control Electronics (Arduino)
Hardware 3 Control Electronics (Arduino)
Hardware 3 Control Electronics (Arduino)
Hardware 3 Control Electronics (Arduino)

Carcasa pentru Arduino OLED și convertorul de nivel logic are o montură standard Garmin de 1/2 tura în spate pentru a permite montarea sa sigură pe bicicletă. O montare „în față” va permite unității să fie înclinată în sus sau în jos până la „zero” poziția accelerometrului sau o linie de cod doar la zero automat la început ar fi ușor de adăugat.

Carcasa are un punct pentru o tastatură cu membrană - aceasta este utilizată pentru a seta greutatea combinată a călărețului și a bicicletei. Puteți seta acest lucru doar la nivel de program, mai ales dacă nu împărtășiți un antrenor cu nimeni.

Ar putea fi frumos să implementați un mod „manual”. Poate că apăsarea ambelor butoane ar putea iniția un mod manual și apoi butoanele ar putea crește / micșora înclinația. Voi adăuga acest lucru la lista de sarcini!

Fișierul STL al cazului este, din nou, disponibil pe Thingiverse (consultați secțiunea consumabile pentru link).

Schița Arduino este găzduită la GitHub (https://github.com/mockendon/opengradesim).

Puteți imprima un clip mic pentru podul CABLE de aici

Pasul 6: „Abandonările din spate”

„Abandonările din spate”
„Abandonările din spate”
„Abandonările din spate”
„Abandonările din spate”
„Abandonările din spate”
„Abandonările din spate”

Mulți oameni au ridicat problema frecării din spate în timp ce bicicleta se mișcă. Unii antrenori au o axă care se mișcă (cum ar fi Kickr), dar mulți nu.

În prezent, cea mai bună soluție pentru mine este să montez niște rulmenți cu șanțuri adânci standard 61800-2RS (aproximativ 2 GBP fiecare) pe adaptoarele cu eliberare rapidă și apoi să montați căderile prin axel pe acestea (a se vedea imaginile) cu un frigăru QR

Rulmenții au nevoie de o șaibă subțire de ex. M12 16mm 0,3 mm între adaptor și rulment.

Se potrivesc perfect și se rotesc cu bicicleta și frigarui independent de antrenor.

În acest moment, acest lucru schimbă offset-ul pe partea unității cu câțiva mm, așa că va trebui să reindexați

Proiectez piese personalizate (a se vedea planul pdf) pentru a fi prelucrate (pe strungul viitorului meu cumnat când are o oră de ajutor!). Acestea nu sunt încă testate !!! Dar măcinarea cu 1 mm de pe suprafața interioară a adaptorului QR din partea unității stoc este o soluție rapidă, fără instrumente speciale;)

Recomandat: