Turinys:

Atviro (dviračio) klasės simuliatorius - „OpenGradeSIM“: 6 žingsniai
Atviro (dviračio) klasės simuliatorius - „OpenGradeSIM“: 6 žingsniai

Video: Atviro (dviračio) klasės simuliatorius - „OpenGradeSIM“: 6 žingsniai

Video: Atviro (dviračio) klasės simuliatorius - „OpenGradeSIM“: 6 žingsniai
Video: Dviračio žinios. Europos Sąjungos ir mokinių klasės panašumai, lietuvių gūglinimo įpročiai 2024, Lapkritis
Anonim
Image
Image
Atviras (dviračių) klasių simuliatorius - „OpenGradeSIM“
Atviras (dviračių) klasių simuliatorius - „OpenGradeSIM“
Atviras (dviračių) klasių simuliatorius - „OpenGradeSIM“
Atviras (dviračių) klasių simuliatorius - „OpenGradeSIM“

Įvadas

Tam tikra gerai žinoma JAV treniruoklių kompanija („Wahoo“) neseniai pristatė puikią treniruoklių salėje priemonę, kuri pakelia ir nuleidžia dviračio priekį ant turbo treniruoklio pagal imituojamą kalno, kuriuo naudotojas važiuoja, laipsnį („Kickr Climb“).

Atrodo nuostabiai, bet, deja, tai nėra mums visiems prieinama, nes jums reikės 1) aukščiausio lygio „Wahoo“treniruoklio ir 2) 500 svarų grynųjų pinigų, kad tai padarytumėte savo.

Aš sulaužiau raktikaulį (niekada nesodinau plento dviratininko ant kalnų dviračio), todėl turėjau daugiau mylių ant treniruoklio ir daugiau laiko mąstyti ir maniau, kad tai gali būti įdomus projektas.

Komercinis vienetas imituoja nuo -5% iki +20%, todėl norėjau priartėti prie to, bet 10% biudžeto!

Tai sukurta aplink mano „Tacx Neo“, tačiau bet kuris treneris, kuris transliuoja savo galios ir greičio duomenis per ANT+ arba BLE, gali būti pradėtas naudoti (manau!).

Kadangi mano kelių dviračio ratų bazė yra tiksliai 1000 mm, aš turiu pakelti šakutes 200 mm, kad imituotų 20% (žr. Paveikslėlį), kad 200 mm linijinė pavara būtų tinkama. Dviračio ir motociklininko svoris greičiausiai neviršys 100 kg, o kadangi jis yra paskirstytas tarp ašių ir dauguma yra ant nugaros, 750N pakels 75 kg ir turėtų būti gerai. Greitesnes pavaras galima įsigyti už daugiau pinigų, tačiau ši man kainavo apie 20 svarų ir valdo 10 mm/sek. Pavaros su potenciometrais, kuriuos galima naudoti kaip paprastus servus, taip pat kainuoja 2–3 kartus brangiau.

Prekės

3D ašies adapterio dalies spausdinimas (PLA arba ABSetc):

100 mm 3/4 colio 10 swg aliuminio vamzdžių atsargų (per ašies rėmą)

80 mm 6 mm nerūdijančio plieno strypas

Linijinės pavaros dalies batų 3D spausdinimas (PLA arba ABSetc):

H-tilto korpuso 3D spausdinimas

„Arduino“korpuso 3D versija (1 versija su klaviatūra) https://www.thingiverse.com/thing:3984911 (2 versija, kaip parodyta (https://www.thingiverse.com/thing:3995976)

Lazeriu supjaustytas 3 mm skaidraus akrilo 32 x 38 mm gabalas, kad neprakaituotumėte visoje elektronikoje (tai padarė, ne idealu).

Kai kurie kraujavimo blokai (pritaikyti palikti trinkeles), kad jūsų entuziazmas netyčia neišstumtų sukaklių stūmoklių iš „Shimano“diskinių stabdžių

Linijinė pavara 750N 200 mm, pvz., Al03 mini linijinės pavaros iš

L298N H tiltas (pvz.:

„Arduino Nano IoT 33“www.rapidonline.com užsakymas 73-4863

Dviejų klavišų membraninė klaviatūra, pvz., IIC I2C loginio lygio keitiklio dvikryptis modulis nuo 5V iki 3.3V, skirtas „Arduino“, pvz., 12V 3A nuolatinės srovės maitinimo šaltinis - puikiai tinka LED apšvietimui!

NPE CABLE Ant+ į BLE tiltą

3D spausdinimui skirtas CABLE tilto klipas

1,3 OLED LCD ekrano modulis su IIC I2C sąsaja 128x32 3.3V

1 žingsnis: šiek tiek matematikos

Šiek tiek matematikos
Šiek tiek matematikos

Turime apskaičiuoti imituojamą nuolydį. Aš tikėjausi, kad treneris reklamuos šiuos duomenis kartu su greičiu, galia, kadencija ir tt, tačiau treneris tiesiog nustato pasipriešinimą, kad išlaikytų galią pagal planšetinio kompiuterio, kompiuterio ir tt programinę įrangą. Aš neturėjau jokio būdo lengvai užfiksuoti „imituotą pažymį“iš programinės įrangos, todėl turėčiau dirbti atgal …

Dviratį ir raitelį veikiančios jėgos yra pasipriešinimo nuostolių ir jėgos, reikalingos lipant į kalną, derinys. Treneris praneša apie greitį ir galią. Jei tam tikru greičiu galime rasti varžinius nuostolius, likusi galia naudojama lipant į kalną. Galia lipti priklauso nuo dviračio ir motociklininko svorio bei pakilimo greičio, todėl galime grįžti į nuolydį.

Pirmiausia naudoju nuostabų https://bikecalculator.com, kad surastų duomenų taškus, skirtus varžos galios praradimui įprastu greičiu. Tada aš pakeičiau greičio sritį, kad gaučiau tiesinį ryšį, ir radau geriausiai tinkančią liniją. Imdami tiesės lygtį, dabar galime apskaičiuoti galią (W) iš pasipriešinimo = (0,0102*(greičio kmh^2,8))+9,428.

Pasinaudokite pasipriešinimo jėga iš išmatuotos galios, kad gautumėte „laipiojimo“jėgą.

Mes žinome pakilimo greitį km/h ir konvertuojame jį į SI vienetus m/s (padalijame iš 3,6).

Nuolydis randamas iš: Nuolydis (%) = ((„PowerClimbing“/(SvorisKg*g))/Greitis)*100

kur laisvo kritimo pagreitis g = 9,8 m/s/s arba 9,8 N/kg

2 žingsnis: Gaukite tam tikrų duomenų

Gaukite kai kuriuos duomenis
Gaukite kai kuriuos duomenis

Norint apskaičiuoti nuolydį, reikia greičio ir galios. Norėdami tai gauti, naudoju „Arduino Nano 33 IoT“, kad prisijungčiau prie trenerio per BLE. Iš pradžių labai įstrigo, nes dabartinė šio modulio „ArduinoBLE“bibliotekos v.1.1.2 versija netvarko autentifikavimo jokia forma, o tai reiškia, kad dauguma (?) Komercinių BLE jutiklių nebus su juo susieti.

Sprendimas buvo naudoti NPE kabelį ANT+ į BLE tiltą (https://npe-inc.com/cableinfo/), kuris neleidžia integruotam trenerio BLE, kad mokymo programa galėtų bendrauti ir nereikalauja BLE autentifikavimo. pusėje.

BLE galios charakteristika yra gana paprasta, nes galia vatais yra perduodamų duomenų antrajame ir trečiajame baituose kaip 16 bitų sveikas skaičius (mažas endianas, ty mažiausiai reikšmingas oktetas). Taikiau slenkančio vidurkio filtrą, kad galėčiau gauti 3 sekundžių vidutinę galią - kaip rodo mano dviračio kompiuteris -, nes tai yra mažiau nepastovi.

if (powerCharacteristic.valueUpdated ()) {

// Apibrėžkite masės reikšmę uint8_t holdpowervalues [6] = {0, 0, 0, 0, 0, 0}; // Skaityti reikšmę į masyvą powerCharacteristic.readValue (holdpowervalues, 6); // Galia grąžinama vatais 2 ir 3 vietose (0 ir 1 yra 8 bitų vėliavos) baitas rawpowerValue2 = holdpowervalues [2]; // mažiausios galios baitas HEX baitu rawpowerValue3 = holdpowervalues [3]; // galingiausias sig baitas HEX long rawpowerTotal = (rawpowerValue2 + (rawpowerValue3 * 256)); // Naudokite slenkančio vidurkio filtrą, kad suteiktumėte „3s power“powerTrainer = moveAverageFilter_power.process (rawpowerTotal);

BLE greičio charakteristika (važiavimo dviračiu greitis ir kadencija) yra vienas iš tų dalykų, kurie verčia susimąstyti, kas iš to SIG rūko, kai jie parašė specifikaciją.

Charakteristika grąžina 16 baitų masyvą, kuriame nėra nei greičio, nei kadencijos. Vietoj to rato apsisukimus ir alkūninio apsisukimus (sumas) ir laiką nuo paskutinio įvykio gaunate per 1024 sekundes. Taigi daugiau matematikos. O ir baitai ne visada yra, todėl pradžioje yra vėliavos baitas. O baitai yra mažai endianiniai HEX, todėl reikia perskaityti atgal, antrąjį baitą padauginus iš 256, trečio iš 65536 ir tt, tada sudėjus. Norėdami rasti greitį, turite nustatyti standartinę dviračio rato apimtį, kad žinotumėte atstumą …

if (speedCharacteristic.valueUpdated ()) {

// Šiai vertei reikia 16 baitų masyvo uint8_t holdvalues [16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Bet aš skaitysiu tik pirmuosius 7 speedCharacteristic.readValue (holdvalues, 7); baitas rawValue0 = sulaikymo vertės [0]; // dvejetainės vėliavos 8 bitų int baitų rawValue1 = holdvalues [1]; // apsisukimų mažiausiai reikšmingas baitas HEX baitu rawValue2 = holdvalues [2]; // apsisukimai kitas reikšmingiausias baitas HEX baitu rawValue3 = holdvalues [3]; // apsisukimai kitas reikšmingiausias baitas HEX baitu rawValue4 = holdvalues [4]; // apsisukimų reikšmingiausias baitas HEX baitu rawValue5 = holdvalues [5]; // laikas nuo paskutinio rato įvykio mažiausiai sig baito rawValue6 = holdvalues [6]; // laikas nuo paskutinio rato įvykio daugiausiai sig baitų, jei (firstData) {// Gaukite kaupiamąjį rato apsisukimą kaip mažą endianą šešiakampį 2, 3 ir 4 vietoje (pirmiausia mažiausiai reikšmingas oktetas) WheelRevs1 = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); // Gauti laiko nuo paskutinio rato įvykio per 1024 -ąją sekundės dalį Time_1 = (rawValue5 + (rawValue6 * 256)); firstData = klaidinga; } else {// Gauti antrąjį duomenų ilgio rinkinį WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); ilgas TimeTemp = (rawValue5 + (rawValue6 * 256)); if (WheelRevsTemp> WheelRevs1) {// įsitikinkite, kad dviratis juda WheelRevs2 = WheelRevsTemp; Time_2 = TimeTemp; firstData = tiesa;}

// Raskite atstumo skirtumą cm ir konvertuokite į km float distanceTravelled = (((WheelRevs2 - WheelRevs1) * wheelCircCM);

plūdė kmTravelled = distanceTravelled / 1000000;

// Raskite laiko per 1024 sekundes ir konvertuokite į valandas

float timeDifference = (Time_2 - Time_1); float timeSecs = timeDifference / 1024; plūdės laikasHrs = timeSecs / 3600;

// Raskite greitį kmh

greitisKMH = (kmTravelled / timeHrs);

„Arduino“eskizas priglobtas „GitHub“(https://github.com/mockendon/opengradesim).

3 žingsnis: 1 -oji aparatinė įranga - linijinė pavara

Techninė įranga 1 linijinė pavara
Techninė įranga 1 linijinė pavara
Techninė įranga 1 linijinė pavara
Techninė įranga 1 linijinė pavara
Techninė įranga 1 linijinė pavara
Techninė įranga 1 linijinė pavara

Mano diskinių stabdžių kelių dviračio ašis nurodo 19,2 mm ašį, kad išvalytų 12 mm skersmens ašį ir 100 mm tarp šakių.

Atsarginis 3/4 colio 10swg aliuminio vamzdis puikiai tinka ir gražus vaikinas, pavadintas „Dave on ebay“(https://www.ebay.co.uk/str/aluminiumonline), tiekiamas ir nukerpamas iki kelių kilogramų.

Pavara turi 20 mm strypą su 6 mm skylute, todėl 3D atspausdinta dalis sujungia aliuminio vamzdelį su 6 mm plieno strypu, o kadangi jėgos yra 90% suspaudimo, kai kurie PLA / ABS yra patenkinti.

Jei vykdote standartinę greitojo atleidimo sąranką, kažkas panašaus (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) neleistų pertvarkyti šio komponento.

Bagažinė suprojektuota taip, kad tilptų į „Tacx“treniruoklio komplekte esantį kėlimo bloką, bet tikriausiai tilptų į daugelį panašių kėlimo įrenginių, arba galite tiesiog redaguoti „TinkerCad“failą pagal savo poreikius.

4 žingsnis: 2 aparatūra - „H -Bridge“

Techninė įranga 2 - „H -Bridge“
Techninė įranga 2 - „H -Bridge“
Techninė įranga 2 - „H -Bridge“
Techninė įranga 2 - „H -Bridge“
Techninė įranga 2 - „H -Bridge“
Techninė įranga 2 - „H -Bridge“

Šios L298N H tilto plokštės, kurios yra labai paplitusios internete, turi įmontuotą 5 V reguliatorių, kuris puikiai tinka maitinti „Arduino“iš 12 V maitinimo šaltinio, reikalingo linijinei pavarai. Deja, „Arduino Nano IoT“plokštė signalizuoja 3,3 V, todėl reikia loginio lygio keitiklio (arba optoizoliatoriaus, nes signalai yra tik vienpusiai).

Korpusas skirtas priimti maitinimo jungtis, dažniausiai naudojamas LED apšvietimo programose. Nupjoviau USB prailginimo laidą, kad būtų galima lengvai prijungti / atjungti „Arduino“galvos bloką, ir nors buvau įsitikinęs, kad naudoju maitinimo linijas, o duomenų linijas - 3,3 V signalui, nuoširdžiai patarčiau prieš tai, nes nekenčiu, kai kas nors kepa savo USB prievadus ar periferinius įrenginius per klaidą juos prijungęs!

5 žingsnis: 3 aparatinė įranga „Control Electronics“(„Arduino“)

Techninė įranga 3 „Control Electronics“(„Arduino“)
Techninė įranga 3 „Control Electronics“(„Arduino“)
Techninė įranga 3 „Control Electronics“(„Arduino“)
Techninė įranga 3 „Control Electronics“(„Arduino“)
Techninė įranga 3 „Control Electronics“(„Arduino“)
Techninė įranga 3 „Control Electronics“(„Arduino“)

„Arduino OLED“ir loginio lygio keitiklio korpusas turi standartinį 1/2 apsisukimo Garmin stiliaus laikiklį gale, kad būtų galima saugiai pritvirtinti prie dviračio. „Priekinis“laikiklis leis įrenginį pakreipti aukštyn arba žemyn iki „nulio“, o akselerometro padėtis bus lengva, arba bus lengva pridėti kodo eilutę iki automatinio nulio.

Korpusas turi vietą membraninei klaviatūrai - tai naudojama norint nustatyti bendrą vairuotojo ir dviračio svorį. Galite tai nustatyti tik programiškai, ypač jei su niekuo nesidalinate treneriu.

Gali būti malonu įdiegti „rankinį“režimą. Galbūt paspaudus abu mygtukus galima įjungti rankinį režimą, o tada mygtukai gali padidinti / sumažinti nuolydį. Įtrauksiu tai į darbų sąrašą!

Bylos STL byla vėlgi yra prieinama „Thingiverse“(nuorodą rasite prekių skyriuje).

„Arduino“eskizas priglobtas „GitHub“(https://github.com/mockendon/opengradesim).

Čia galite atsispausdinti tvarkingą mažą CABLE tilto klipą

6 žingsnis: „Galiniai iškritimai“

„Galiniai iškritimai“
„Galiniai iškritimai“
„Galiniai iškritimai“
„Galiniai iškritimai“
„Galiniai iškritimai“
„Galiniai iškritimai“

Daugelis žmonių iškėlė klausimą dėl galinio iškritimo, trinant dviratį. Kai kurie treniruokliai turi ašį, kuri juda (pvz., „Kickr“), tačiau daugelis jų neturi.

Šiuo metu geriausias mano sprendimas yra ant greito atlaisvinimo adapterių pritvirtinti kai kuriuos standartinius 61800-2RS griovelių guolius (apie 2 svarus sterlingų) ir tada ant jų pritvirtinti permetamus ašis (žr. Paveikslėlius) naudojant didesnio dydžio QR iešmą

Guoliams reikia plonos tarpiklio poveržlės, pvz., M12 16 mm 0,3 mm tarp adapterio ir guolio.

Jie puikiai tinka ir sukasi kartu su dviračiu ir iešmu nepriklausomai nuo treniruoklio.

Šiuo metu tai keičia poros mm poslinkį pavaros pusėje, todėl turėsite iš naujo indeksuoti

Aš projektuoju pasirinktines dalis (žr. Pdf planą), kurias reikia apdoroti (mano būsimo svainio staklėse, kai jis turės valandą padėti!). Šie dar nėra išbandyti !!! Bet šlifavimas 1 mm atstumu nuo atsarginės pavaros pusės QR adapterio yra greitas sprendimas be jokių specialių įrankių;)

Rekomenduojamas: