Buksan (Bisikleta) Baitang Simulator - OpenGradeSIM: 6 na Hakbang
Buksan (Bisikleta) Baitang Simulator - OpenGradeSIM: 6 na Hakbang
Anonim
Image
Image
Buksan (Bisikleta) Baitang Simulator - OpenGradeSIM
Buksan (Bisikleta) Baitang Simulator - OpenGradeSIM
Buksan (Bisikleta) Baitang Simulator - OpenGradeSIM
Buksan (Bisikleta) Baitang Simulator - OpenGradeSIM

Panimula

Ang isang tiyak na kilalang kumpanya ng fitness na nakabase sa Estados Unidos (Wahoo) kamakailan ay naglabas ng isang mahusay na tulong sa pagsasanay sa panloob na itinaas at ibababa ang harap ng bisikleta sa turbo trainer ayon sa simulate na grado ng burol na sinasakyan ng gumagamit (ang Kickr Climb).

Mukhang kamangha-mangha ngunit nakalulungkot na ito ay hindi magagamit sa amin lahat dahil kakailanganin mo ng 1) isang tuktok ng saklaw na trainer ng Wahoo at 2) £ 500 cash upang magawa mo ito.

Sinira ko ang isang clavicle (hindi kailanman naglagay ng isang siklista sa kalsada sa isang bisikleta sa bundok) kaya't mayroon akong maraming mga milya sa trainer at mas maraming oras upang mag-isip at naisip na ito ay maaaring maging isang masaya na proyekto.

Ang yunit ng komersyo ay gumagaya ng -5% hanggang + 20% kaya nais kong lumapit doon ngunit sa 10% ng badyet!

Ito ay dinisenyo sa paligid ng aking Tacx Neo ngunit ang anumang tagapagsanay na nagsasahimpapawid ng data ng lakas at bilis nito sa pamamagitan ng ANT + o BLE ay maaaring gawin upang gumana (Inaasahan ko!).

Dahil ang base ng gulong sa aking road bike ay sumusukat nang eksaktong 1000mm kakailanganin kong iangat ang mga tinidor ng 200mm upang gayahin ang 20% (tingnan ang larawan) upang magawa ng isang 200mm linear actuator. Ang bigat ng bisikleta + rider ay malamang na hindi lumampas sa 100kg at dahil ito ay ipinamamahagi sa pagitan ng mga ehe at ang karamihan ay nasa likod na 750N ay aangat ang 75kg at dapat ay ok. Ang mga mas mabilis na actuator ay magagamit para sa mas maraming pera ngunit ang isang ito ay nagkakahalaga sa akin ng halos £ 20 at namamahala ng 10mm / sec. Ang mga actuator na may potentiometers na maaaring magamit bilang simpleng servos ay 2 hanggang 3 beses na mas mahal.

Mga gamit

3D print (PLA o ABSetc) ng through axle adapter part:

100mm ng 3/4 pulgada 10 swg aluminyo tube stock (para sa isang through axle frame)

80mm ng 6mm stock na hindi kinakalawang na asero

3D print (PLA o ABSetc) ng sapatos para sa linear na bahagi ng actuator:

3D print ng Kaso para sa H-tulay

3D print ng Kaso para sa Arduino (Bersyon 1 na may keypad) https://www.thingiverse.com/thing:3984911 (Bersyon 2 tulad ng ipinapakita (https://www.thingiverse.com/thing<<995976)

Laser cut piraso ng 3mm malinaw acrylic 32 x 38mm upang maiwasan ka mula sa pagpapawis sa buong electronics (ginawa iyon, hindi perpekto).

Ang ilang mga bloke ng dumudugo (inangkop upang iwanan ang mga pad) upang mapigilan ka nang hindi sinasadyang maitulak ang mga calliper piston palabas sa iyong mga preno ng Shimano disc sa iyong sigasig

Linear Actuator 750N 200mm na paglalakbay hal Al03 Mini Linear Actuators mula sa

Tulay ng L298N H (tulad ng:

Arduino Nano IoT 33 www.rapidonline.com order 73-4863

2 key membrane keyboard hal.

IIC I2C Antas ng Logic Converter Bi-Directional Module 5V hanggang 3.3V Para sa Arduino hal

12V 3A DC power supply - mahusay ang mga para sa LED lighting!

NPE CABLE Ant + upang BLE tulay

3D na naka-print na clip para sa tulay na CABLE

1.3 OLED LCD Display Module na may IIC I2C Interface 128x32 3.3V

Hakbang 1: Ilang Matematika

Ilang Matematika
Ilang Matematika

Kailangan nating kalkulahin ang pagkiling na na-simulate. Inaasahan kong ipo-advertise ng trainer ang data na ito kasama ang bilis, lakas, cadence atbp. Subalit nagtatakda lamang ang trainer ng paglaban upang mapanatili ang output ng kuryente ayon sa software sa tablet, computer atbp na ginagamit upang makontrol ito. Wala akong paraan upang madaling makuha ang 'simulate grade' mula sa software kaya't kailangan kong gumana paatras…

Ang mga puwersang kumikilos sa bisikleta at sakay ay isang kombinasyon ng mga resistive loss at ang lakas na kinakailangan upang umakyat sa burol. Iniuulat ng trainer ang bilis at lakas. Kung mahahanap natin ang mga resistive loss sa isang naibigay na bilis kung gayon ang natitirang lakas ay ginagamit upang umakyat sa burol. Ang lakas na umakyat ay nakasalalay sa bigat ng bisikleta at sakay at ang rate ng pag-akyat at sa gayon maaari kaming gumana pabalik sa pagkiling.

Una kong ginamit ang kamangha-manghang https://bikecalculator.com upang makahanap ng ilang mga puntos ng data para sa resistive pagkawala ng kuryente sa karaniwang bilis. Pagkatapos ay binago ko ang domain ng bilis upang makabuo ng isang linear na relasyon at natagpuan ang pinakamahusay na linya na magkasya. Pagkuha ng equation ng linya maaari na nating kalkulahin ang lakas (W) mula sa paglaban = (0.0102 * (Speedkmh ^ 2.8)) + 9.428.

Kunin ang lakas mula sa paglaban mula sa sinusukat na lakas upang bigyan ang lakas ng 'akyat'.

Alam namin ang bilis ng pag-akyat sa km / hr at i-convert ito sa SI unit ng m / s (hatiin sa 3.6).

Ang hilig ay matatagpuan mula sa: Incline (%) = ((PowerClimbing / (WeightKg * g)) / Bilis) * 100

kung saan ang pagbilis ng libreng pagbagsak g = 9.8m / s / s o 9.8 N / kg

Hakbang 2: Kumuha ng Ilang Data

Kumuha ng Ilang Data
Kumuha ng Ilang Data

Ang pagkalkula ng pagkiling ay nangangailangan ng bilis at lakas. Gumamit ako ng isang Arduino Nano 33 IoT upang kumonekta sa trainer sa pamamagitan ng BLE upang matanggap ito. Natigil ako nang una sa simula dahil ang kasalukuyang bersyon ng v.1.1.2 ng katutubong ArduinoBLE library para sa modyul na ito ay hindi hawakan ang pagpapatotoo sa anumang form na nangangahulugang ang karamihan (?) Na mga komersyal na sensor ng BLE ay hindi ipares dito.

Ang solusyon ay ang paggamit ng isang NPE Cable ANT + hanggang sa tulay ng BLE (https://npe-inc.com/cableinfo/) na pinapanatili ang built sa BLE ng trainer na libre para sa pagsasanay app na makipag-usap at hindi nangangailangan ng pagpapatunay sa BLE tagiliran

Ang katangiang BLE power ay medyo prangka bilang lakas sa watts ay nakapaloob sa pangalawa at pangatlong byte ng naihatid na data bilang isang 16 bit integer (maliit na endian ie hindi gaanong makabuluhang octet muna). Nag-apply ako ng isang gumagalaw na average na filter upang bigyan ang 3s average na lakas - tulad ng ipinapakita ng aking computer sa bisikleta - dahil hindi gaanong nagkakamali.

kung (powerCharacteristic.valueUpdated ()) {

// Tukuyin ang isang array para sa halagang uint8_t holdpowervalues [6] = {0, 0, 0, 0, 0}; // Basahin ang halaga sa array powerCharacteristic.readValue (holdpowervalues, 6); // Ang kapangyarihan ay ibinalik bilang watts sa lokasyon 2 at 3 (loc 0 at 1 ay 8 bit flags) byte rawpowerValue2 = holdpowervalues [2]; // power least sig byte sa HEX byte rawpowerValue3 = holdpowervalues [3]; // power most sig byte in HEX long rawpowerTotal = (rawpowerValue2 + (rawpowerValue3 * 256)); // Gumamit ng average na paglipat ng filter upang bigyan ang power na 3s 'powerTrainer = movingAverageFilter_power.process (rawpowerTotal);

Ang katangiang bilis ng BLE (Bilis ng Pagbibisikleta at Kadenang) ay isa sa mga bagay na nagtataka sa iyo kung ano sa lupa ang SIG ay naninigarilyo nang isulat nila ang detalye.

Ang Characteristic ay nagbabalik ng isang 16 byte array na naglalaman ng alinman sa bilis o cadence. Sa halip makakakuha ka ng mga rebolusyon ng gulong at mga revolusyon ng pihitan (kabuuan) at oras mula noong huling data ng kaganapan sa 1024th ng isang segundo. Kaya mas maraming matematika pagkatapos. Oh, at ang mga byte ay hindi laging naroroon kaya may flag byte sa simula. Oh, at ang mga byte ay maliit na endian HEX kaya kailangan mong basahin ang paatras na pag-multiply ng pangalawang byte ng 256, pangatlo ng 65536 atbp pagkatapos ay idagdag silang magkasama. Upang makahanap ng bilis kailangan mong mag-isip ng isang pamantayan ng bilog ng bisikleta upang malaman ang distansya ….

kung (speedCharacteristic.valueUpdated ()) {

// Ang halagang ito ay nangangailangan ng 16 byte array uint8_t holdvalues [16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Ngunit babasahin ko lang ang unang 7 speedCharacteristic.readValue (holdvalues, 7); byte rawValue0 = holdvalues [0]; // binary flags 8 bit int byte rawValue1 = holdvalues [1]; // mga rebolusyon na hindi gaanong makabuluhang byte sa HEX byte rawValue2 = holdvalues [2]; // revolutions susunod na pinaka-makabuluhang byte sa HEX byte rawValue3 = holdvalues [3]; // revolutions susunod na pinaka-makabuluhang byte sa HEX byte rawValue4 = holdvalues [4]; // revolutions pinaka-makabuluhang byte sa HEX byte rawValue5 = holdvalues [5]; // oras mula noong huling gulong na kaganapan hindi bababa sa sig byte byte rawValue6 = holdvalues [6]; // time simula noong huling gulong na kaganapan pinaka sig byte kung (firstData) {// Kumuha ng mga pinagsama-samang gulong ng gulong bilang maliit na endian hex sa loc 2, 3 at 4 (hindi bababa sa makabuluhang octet muna) WheelRevs1 = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); // Kumuha ng oras mula noong huling kaganapan ng gulong sa 1024ths ng isang segundo Time_1 = (rawValue5 + (rawValue6 * 256)); firstData = false; } iba pa {// Kumuha ng pangalawang hanay ng data mahabang WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); mahabang TimeTemp = (rawValue5 + (rawValue6 * 256)); kung (WheelRevsTemp> WheelRevs1) {// tiyaking gumagalaw ang bisikleta WheelRevs2 = WheelRevsTemp; Oras_2 = TimeTemp; firstData = totoo;}

// Maghanap ng pagkakaiba sa distansya sa cm at i-convert sa km float distanceTravelled = ((WheelRevs2 - WheelRevs1) * wheelCircCM);

float kmTravelled = distanceTravelled / 1000000;

// Maghanap ng oras sa 1024th ng isang segundo at i-convert sa oras

float timeDifference = (Oras_2 - Oras_1); float timeSecs = timeDifference / 1024; float timeHrs = timeSecs / 3600;

// Humanap ng bilis kmh

speedKMH = (kmTravelled / timeHrs);

Ang sketch ng Arduino ay naka-host sa GitHub (https://github.com/mockendon/opengradesim).

Hakbang 3: Hardware 1 ang Linear Actuator

Hardware 1 ang Linear Actuator
Hardware 1 ang Linear Actuator
Hardware 1 ang Linear Actuator
Hardware 1 ang Linear Actuator
Hardware 1 ang Linear Actuator
Hardware 1 ang Linear Actuator

Ang through axle sa aking disc preno ng bisikleta sa kalsada ay tumutukoy sa isang 19.2mm axel upang i-clear ang 12mm sa pamamagitan ng ehe na may 100mm sa pagitan ng mga tinidor.

Ang stock 3/4 inch 10swg aluminyo tube ay isang perpektong akma at isang magandang chap na tinatawag na Dave sa ebay (https://www.ebay.co.uk/str/aluminiumonline) na ibinigay at gupitin ito sa haba para sa akin ng ilang pounds.

Ang actuator ay mayroong 20mm bar na may 6mm hole kaya't ang naka-print na bahagi ng 3D ay naka-link ang tubong aluminyo sa isang 6mm steel bar at dahil ang mga puwersa ay 90% compression ang ilang PLA / ABS ay nasa hamon.

Kung nagpapatakbo ka ng isang pamantayan ng mabilis na pag-setup ng mabilis pagkatapos ang isang bagay tulad nito (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) ay maiiwasan na muling idisenyo ang sangkap na ito.

Ang boot ay idinisenyo upang magkasya sa raiser block na ibinigay sa aking Tacx trainer ngunit malamang na magkasya sa maraming mga katulad na raiser o maaari mo lamang i-edit ang TinkerCad file upang umangkop sa iyong kinakailangan.

Hakbang 4: Hardware 2 - ang H-Bridge

Hardware 2 - ang H-Bridge
Hardware 2 - ang H-Bridge
Hardware 2 - ang H-Bridge
Hardware 2 - ang H-Bridge
Hardware 2 - ang H-Bridge
Hardware 2 - ang H-Bridge

Ang mga board ng tulay na L298N H na napaka-pangkaraniwan sa online ay may built in na 5V regulator na mahusay para sa pagpapaandar ng Arduino mula sa 12V power supply na kinakailangan para sa linear actuator. Sa kasamaang palad ang Arduino Nano IoT board ay 3.3V signaling samakatuwid ang pangangailangan para sa isang lohikal na antas ng converter (o isang optoisolator dahil ang mga signal ay unidirectional lamang).

Ang kaso ay idinisenyo upang tanggapin ang mga konektor ng kuryente na karaniwang ginagamit sa mga aplikasyon ng pag-iilaw ng LED. Kinakatay ko ang isang USB extension lead upang gawing posible na ikonekta / idiskonekta ang unit ng ulo ng Arduino nang madali at habang natitiyak kong gagamitin ang mga linya ng kuryente para sa kuryente at mga linya ng data para sa pagsisenyas ng 3.3V na matapat kong payuhan LABAN ito sa gusto ko galit sa isang tao upang iprito ang kanilang mga USB port o peripheral sa pamamagitan ng pag-plug sa kanila nang hindi sinasadya!

Hakbang 5: Hardware 3 ang Control Electronics (Arduino)

Ang Hardware 3 ang Control Electronics (Arduino)
Ang Hardware 3 ang Control Electronics (Arduino)
Hardware 3 ang Control Electronics (Arduino)
Hardware 3 ang Control Electronics (Arduino)
Ang Hardware 3 ang Control Electronics (Arduino)
Ang Hardware 3 ang Control Electronics (Arduino)

Ang kaso para sa Arduino OLED at antas ng lohika converter ay may pamantayan na 1/2 i-mount ang istilo ng Garmin sa likuran upang payagan itong mai-mount nang ligtas sa bisikleta. Papayagan ng isang 'out front' na mount ang yunit na ikiling pataas o pababa sa 'zero' na posisyon ng accelerometer o isang linya ng code upang makapag-auto zero sa simula ay madaling idagdag.

Ang kaso ay may lugar para sa isang keypad ng lamad - ginagamit ito upang maitakda ang pinagsamang rider at bigat ng bisikleta. Maaari mo lamang itakda ang programmatically na ito lalo na kung hindi ka nagbabahagi ng isang tagapagsanay sa sinuman.

Maaaring masarap ipatupad ang isang 'manwal' mode. Marahil na ang pagpindot sa parehong mga pindutan ay maaaring magpasimula ng isang manual mode at pagkatapos ang mga pindutan ay maaaring dagdagan / bawasan ang pagkiling. Idagdag ko ito sa listahan ng dapat gawin!

Ang file na STL ng kaso ay, muli, magagamit sa Thingiverse (tingnan ang seksyon ng mga supply para sa link).

Ang sketch ng Arduino ay naka-host sa GitHub (https://github.com/mockendon/opengradesim).

Maaari kang mag-print ng isang maayos na maliit na clip para sa iyong tulay na CABLE mula dito

Hakbang 6: 'The Rear Drop Outs'

'The Rear Drop Outs'
'The Rear Drop Outs'
'The Rear Drop Outs'
'The Rear Drop Outs'
'The Rear Drop Outs'
'The Rear Drop Outs'

Maraming tao ang nagtaas ng isyu ng hulihan na drop out rubbing habang gumagalaw ang bisikleta. Ang ilang mga trainer ay may isang ehe na gumagalaw (tulad ng Kickr) ngunit marami ang hindi.

Sa kasalukuyan ang aking pinakamahusay na solusyon para sa akin ay ang pag-mount ng ilang pamantayan ng 61800-2RS malalim na mga bearings ng uka (mga £ 2 bawat isa) sa mabilis na mga adaptor ng paglabas at pagkatapos ay mai-mount ang mga ito sa pamamagitan ng pag-drop ng axel sa mga ito (tingnan ang mga larawan) na may higit sa laki na QR skewer

Ang mga bearings ay nangangailangan ng isang manipis na shim washer hal M12 16mm 0.3mm sa pagitan ng adapter at ng tindig.

Perpekto silang magkasya at paikutin kasama ang bisikleta at ang tuhog na nakapag-iisa ng tagapagsanay.

Sa ngayon binabago nito ang offset sa gilid ng drive ng isang pares ng mm kaya kakailanganin mong muling i-index

Nagdidisenyo ako ng mga pasadyang bahagi (tingnan ang plano sa pdf) sa makina (sa lathe ng aking hinaharap na lalaki kapag mayroon siyang isang oras upang makatulong!). Ang mga ito ay hindi pa nasubok !!! Ngunit ang paggiling 1mm mula sa panloob na ibabaw ng stock drive side QR adapter ay isang mabilis na pag-aayos nang walang mga espesyal na tool;)