
Satura rādītājs:
2025 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2025-01-23 14:59




Ievads
Kāds labi pazīstams ASV fitnesa uzņēmums (Wahoo) nesen parādīja lielisku iekštelpu treniņu palīglīdzekli, kas paceļ un pazemina velosipēda priekšpusi uz turbo trenažiera atbilstoši simulētajai kalna pakāpei, ar kuru brauc lietotājs (Kickr Climb).
Izskatās pārsteidzoši, bet diemžēl tas nav pieejams mums visiem, jo, lai to izdarītu, jums būs nepieciešams 1) Wahoo trenažieris un 2) 500 sterliņu mārciņu.
Es salauzu atslēgas kaulu (nekad neliku šosejas riteņbraucēju uz kalnu velosipēdu), tāpēc man bija vairāk jūdzes uz trenažiera un vairāk laika, lai mētātos, un domāju, ka tas varētu būt jautrs projekts.
Komerciālā vienība simulē no -5% līdz +20%, tāpēc es gribēju tuvināties tam, bet par 10% no budžeta!
Tas ir izstrādāts ap manu Tacx Neo, taču jebkuru treneri, kas pārraida savus jaudas un ātruma datus, izmantojot ANT+ vai BLE, varētu likt strādāt (es domāju!).
Tā kā manas šosejas velosipēda riteņu bāze ir tieši 1000 mm, man vajadzētu pacelt dakšas par 200 mm, lai simulētu 20% (skat. Attēlu), lai to darītu 200 mm lineāra izpildmehānisms. Velosipēda un braucēja svars, visticamāk, nepārsniegs 100 kg, un, tā kā tas ir sadalīts starp asīm un lielākā daļa atrodas aizmugurē, 750N pacels 75 kg, un tam vajadzētu būt kārtībā. Ātrāki izpildmehānismi ir pieejami par lielāku naudu, taču šī man izmaksāja aptuveni 20 sterliņu mārciņas un nodrošina 10 mm/sek. Arī pievadi ar potenciometriem, kurus var izmantot kā vienkāršus servos, ir 2 līdz 3 reizes dārgāki.
Piegādes
3D drukāšana (PLA vai ABSetc) caur ass ass adaptera daļu:
100 mm 3/4 collu 10 swg alumīnija cauruļu krājums (caur asu rāmi)
80 mm 6 mm nerūsējošā tērauda stieņu krājums
Apavu 3D druka (PLA vai ABSetc) lineārajai izpildmehānisma daļai:
H-tilta korpusa 3D izdruka
Arduino korpusa 3D izdruka (1. versija ar tastatūru) https://www.thingiverse.com/thing:3984911 (2. versija, kā parādīts (https://www.thingiverse.com/thing:3995976)
Lāzera griezuma 3 mm caurspīdīga akrila gabals 32 x 38 mm, lai jūs nesvīst visā elektronikā (tas bija ideāli).
Daži asiņošanas bloki (pielāgoti paliktņu ieslēgšanai), lai jūsu sajūsmā nejauši neizbīdītu suporta virzuļus no jūsu Shimano disku bremzēm
Lineārais izpildmehānisms 750N 200 mm, piemēram, Al03 mini lineārie izpildmehānismi no vietnes
L298N H tilts (piemēram:
Arduino Nano IoT 33 www.rapidonline.com pasūtījums 73-4863
2 taustiņu membrānas tastatūra, piemēram, IIC I2C loģikas līmeņa pārveidotājs divvirzienu modulis 5V līdz 3.3V Arduino, piemēram, 12V 3A DC barošanas avots - tie, kas paredzēti LED apgaismojumam, darbojas lieliski!
NPE CABLE Ant+ uz BLE tiltu
3D izdrukājams klips CABLE tiltam
1,3 collu OLED LCD displeja modulis ar IIC I2C interfeisu 128x32 3.3V
1. solis: nedaudz matemātikas

Mums jāaprēķina simulētais slīpums. Es cerēju, ka treneris reklamēs šos datus kopā ar ātrumu, jaudu, kadenci uc Man nebija iespējas viegli iegūt “simulēto atzīmi” no programmatūras, tāpēc man būtu jāstrādā atpakaļ …
Spēki, kas iedarbojas uz velosipēdu un braucēju, ir pretestības zaudējumu un spēka, kas nepieciešams, lai uzbrauktu kalnā, kombinācija. Treneris ziņo par ātrumu un jaudu. Ja mēs varam atrast pretestības zudumus ar noteiktu ātrumu, tad atlikušā jauda tiek izmantota, lai uzbrauktu kalnā. Kāpšanas spēks ir atkarīgs no velosipēda un braucēja svara un pacelšanās ātruma, tāpēc mēs varam atgriezties pie slīpuma.
Vispirms es izmantoju apbrīnojamo https://bikecalculator.com, lai atrastu dažus datu punktus pretestības jaudas zudumam tipiskā ātrumā. Tad es pārveidoju ātruma domēnu, lai radītu lineāras attiecības, un atradu vispiemērotāko līniju. Ņemot līnijas vienādojumu, mēs tagad varam aprēķināt jaudu (W) no pretestības = (0,0102*(ātruma kmh 2,8))+9,428.
Ņemiet pretestības spēku no izmērītās jaudas, lai iegūtu “kāpšanas” spēku.
Mēs zinām pacelšanās ātrumu km/h un pārvēršam to SI vienībās m/s (dalām ar 3,6).
Slīpums tiek atrasts no: Slīpums (%) = ((PowerClimbing/(SvarsKg*g))/Ātrums)*100
kur brīvā kritiena paātrinājums g = 9,8 m/s/s vai 9,8 N/kg
2. darbība: iegūstiet dažus datus

Slīpuma aprēķins prasa ātrumu un jaudu. Lai to saņemtu, es izmantoju Arduino Nano 33 IoT, lai izveidotu savienojumu ar treneri, izmantojot BLE. Sākumā es ļoti iestrēdzu, jo šī moduļa vietējās ArduinoBLE bibliotēkas pašreizējā v.1.1.2 versija nekādā veidā nerīkojas ar autentifikāciju, kas nozīmē, ka lielākā daļa (?) Komerciālo BLE sensoru ar to nesavienojas.
Risinājums bija izmantot NPE kabeli ANT+ uz BLE tiltu (https://npe-inc.com/cableinfo/), kas pasargā trenera iebūvēto BLE, lai apmācības lietotne varētu sazināties, un nav nepieciešama BLE autentifikācija. pusē.
BLE jaudas raksturlielums ir diezgan vienkāršs, jo jauda vatos ir pārraidīto datu otrajā un trešajā baitos kā 16 bitu vesels skaitlis (vispirms mazs endiāns, ti, vismazāk nozīmīgais oktets). Es izmantoju slīdošo vidējo filtru, lai iegūtu 3s vidējo jaudu - tāpat kā riteņbraukšanas dators rāda -, jo tas ir mazāk nepastāvīgs.
if (powerCharacteristic.valueUpdated ()) {
// Definējiet masīvu vērtībai uint8_t holdpowervalues [6] = {0, 0, 0, 0, 0, 0}; // Nolasīt vērtību masīvā powerCharacteristic.readValue (holdpowervalues, 6); // Jauda tiek atgriezta vatos 2. un 3. vietā (loc 0 un 1 ir 8 bitu karodziņi) baits rawpowerValue2 = holdpowervalues [2]; // jaudas mazākais sig baits HEX baitā rawpowerValue3 = holdpowervalues [3]; // jauda visvairāk sig baitu HEX long rawpowerTotal = (rawpowerValue2 + (rawpowerValue3 * 256)); // Izmantojiet mainīgo vidējo filtru, lai sniegtu '3s power' powerTrainer = moveAverageFilter_power.process (rawpowerTotal);
BLE ātruma raksturojums (Riteņbraukšanas ātrums un kadence) ir viena no tām lietām, kas liek aizdomāties par to, kas uz zemes SIG smēķēja, rakstot specifikāciju.
Raksturlielums atgriež 16 baitu masīvu, kurā nav ne ātruma, ne kadences. Tā vietā jūs saņemat 1024 sekundes sekundes riteņu apgriezienus un kloķa apgriezienus (kopsummas) un laiku kopš pēdējā notikuma. Tad vairāk matemātikas. Ak, un baiti ne vienmēr ir klāt, tāpēc sākumā ir karoga baits. Ak, un baiti ir mazie endiālie HEX, tāpēc jums jālasa atpakaļ, otro baitu reizinot ar 256, trešo ar 65536 utt., Pēc tam tos saskaitot. Lai atrastu ātrumu, jums jāpieņem standarta velosipēda riteņa apkārtmērs, lai zinātu attālumu….
if (speedCharacteristic.valueUpdated ()) {
// Šai vērtībai ir nepieciešams 16 baitu masīvs uint8_t holdvalues [16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Bet es lasīšu tikai pirmos 7 ātrumusCharacteristic.readValue (holdvalues, 7); baits rawValue0 = aizturēšanas vērtības [0]; // binārie karodziņi 8 bitu int baits rawValue1 = aizturēšanas vērtības [1]; // apgriezienu vismazāk nozīmīgais baits HEX baitos rawValue2 = aizturēšanas vērtības [2]; // apgriezieni nākamais nozīmīgākais baits HEX baitos rawValue3 = holdvalues [3]; // apgriezieni nākamais nozīmīgākais baits HEX baitos rawValue4 = holdvalues [4]; // apgriezienu nozīmīgākais baits HEX baitos rawValue5 = aizturēšanas vērtības [5]; // laiks kopš pēdējā riteņa notikuma vismaz sig baits rawValue6 = aizturēšanas vērtības [6]; // laiks kopš pēdējā riteņa notikuma visvairāk sig baitu if (firstData) {// Iegūstiet kumulatīvos riteņu apgriezienus kā mazo endian hex lokalizācijā 2, 3 un 4 (vispirms vismazāk nozīmīgais oktets) WheelRevs1 = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); // Iegūstiet laiku kopš pēdējā riteņa notikuma 1024 sekundes laikā Time_1 = (rawValue5 + (rawValue6 * 256)); firstData = nepatiess; } cits {// Iegūstiet otro datu garo komplektu WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); garš TimeTemp = (rawValue5 + (rawValue6 * 256)); if (WheelRevsTemp> WheelRevs1) {// pārliecinieties, vai velosipēds kustas WheelRevs2 = WheelRevsTemp; Time_2 = TimeTemp; firstData = taisnība;}
// Atrodiet attāluma starpību cm un pārvērtiet par km pludiņa distanceTravelled = ((WheelRevs2 - WheelRevs1) * wheelCircCM);
pludiņš kmTravelled = distanceTravelled / 1000000;
// Atrodiet laiku 1024 sekundēs un pārvērtiet to stundās
float timeDifference = (Time_2 - Time_1); float timeSecs = timeDifference / 1024; pludiņa laiksHrs = timeSecs / 3600;
// Atrast ātrumu kmh
ātrumsKMH = (kmTravelled / timeHrs);
Arduino skice tiek mitināta vietnē GitHub (https://github.com/mockendon/opengradesim).
3. solis: Aparatūra 1 Lineārais izpildmehānisms



Caurplūdes ass manā disku bremžu šosejas velosipēdā norāda 19,2 mm asi, lai atbrīvotu 12 mm cauri asi ar 100 mm starp dakšām.
Stock 3/4 collu 10swg alumīnija caurule ir ideāli piemērota, un piegādāja jauku čali, ko sauca Dave par ebay (https://www.ebay.co.uk/str/aluminiumonline) un nogrieza to man līdz dažām mārciņām.
Izpildmehānismam ir 20 mm stienis ar 6 mm caurumu, tāpēc 3D drukātā daļa savieno alumīnija cauruli ar 6 mm tērauda stieni, un, tā kā spēki ir 90% kompresijas, daži PLA / ABS ir izaicinājumi.
Ja palaižat standarta ātrās atbrīvošanas iestatījumus, kaut kas līdzīgs šim (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) izvairītos no šī komponenta pārprojektēšanas.
Zābaki ir veidoti tā, lai tie ietilptu pacelšanas blokā, kas piegādāts kopā ar manu Tacx trenažieri, bet, iespējams, iederētos daudzos līdzīgos paaugstinātājos, vai arī varat vienkārši rediģēt TinkerCad failu atbilstoši savām prasībām.
4. solis: 2. aparatūra - H -tilts



Šiem L298N H tilta dēļiem, kas ir ļoti izplatīti tiešsaistē, ir iebūvēts 5 V regulators, kas ir lieliski piemērots Arduino barošanai no 12 V barošanas avota, kas nepieciešams lineārajai izpildmehānismai. Diemžēl Arduino Nano IoT plate ir 3.3V signalizācija, tāpēc ir nepieciešams loģiskā līmeņa pārveidotājs (vai optoizolators, jo signāli ir tikai vienvirziena).
Korpuss ir paredzēts, lai pieņemtu barošanas savienotājus, ko parasti izmanto LED apgaismojuma lietojumos. Es nogriezu USB pagarinājuma vadu, lai būtu iespējams viegli pieslēgt / atvienot Arduino galvas bloku, un, lai gan biju pārliecināts, ka strāvas padeves līnijas un 3,3 V signālu pārraides datu līnijas, es godīgi ieteiktu PRET to, ienīst kādu, kurš cep savu USB portu vai perifērijas ierīci, nejauši pievienojot to!
5. solis: 3. aparatūra, vadības elektronika (Arduino)



Arduino OLED un loģiskā līmeņa pārveidotāja korpusam ir standarta 1/2 pagrieziena Garmin stila stiprinājums aizmugurē, lai to varētu droši piestiprināt pie velosipēda. “Ārējais priekšējais” stiprinājums ļaus iekārtu noliekt uz augšu vai uz leju līdz “nullei” akselerometra pozīciju vai viegli pievienot koda rindu līdz automātiskai nullei sākumā.
Korpusā ir vieta membrānas tastatūrai - to izmanto, lai iestatītu braucēja un velosipēda kopējo svaru. Jūs to varat iestatīt tikai programmatiski, it īpaši, ja trenažieri nekopīgojat nevienam.
Varētu būt jauki ieviest “manuālo” režīmu. Iespējams, nospiežot abas pogas, var tikt aktivizēts manuālais režīms, un tad pogas var palielināt / samazināt slīpumu. Es to pievienošu uzdevumu sarakstam!
Lietas STL fails atkal ir pieejams vietnē Thingiverse (saiti skatiet piegādes sadaļā).
Arduino skice tiek mitināta vietnē GitHub (https://github.com/mockendon/opengradesim).
Jūs varat izdrukāt glītu klipu savam CABLE tiltam šeit:
6. solis: “Aizmugurējie izkrišanas gadījumi”



Daudzi cilvēki ir izvirzījuši jautājumu par aizmugurējās izkrišanas berzi, velosipēdam pārvietojoties. Dažiem trenažieriem ir kustīga ass (piemēram, Kickr), bet daudziem nav.
Pašlaik mans labākais risinājums man ir uzmontēt dažus standarta 61800-2RS dziļo rievu gultņus (katrs aptuveni 2 GBP) uz ātrās atvienošanas adapteriem un pēc tam uz tiem (skat. Attēlus) ar pārskrūvētu ass ieskrūvējumu (skat. Attēlus)
Gultņiem ir nepieciešama plāna starplikas paplāksne, piemēram, M12 16 mm 0,3 mm starp adapteri un gultni.
Tie lieliski iederas un rotē kopā ar velosipēdu un iesmu neatkarīgi no trenažiera.
Pašlaik tas maina nobīdi piedziņas pusē par pāris mm, tāpēc jums būs jāveic atkārtota indeksēšana
Es izstrādāju pielāgotas detaļas (skat. Pdf plānu), lai tās varētu apstrādāt (uz mana nākamā brāļa virpas, kad viņam būs stunda laika, lai palīdzētu!). Šie vēl nav pārbaudīti !!! Bet 1 mm slīpēšana no krājuma piedziņas puses QR adaptera iekšējās virsmas ir ātrs labojums bez īpašiem instrumentiem;)
Ieteicams:
Arduino atvērtā loga detektors - ziemai: 6 soļi

Arduino atvērto logu detektors - ziemai: Ārā kļūst auksts, bet dažreiz man istabās ir nepieciešams svaigs gaiss. Tātad, es atveru logu, izeju no istabas, aizveru durvis un gribu atgriezties pēc 5 līdz 10 minūtēm. Un pēc dažām stundām es atceros, ka logs ir atvērts … Varbūt jūs zināt, ka
Q -Bot - atvērtā koda Rubika kuba risinātājs: 7 soļi (ar attēliem)

Q -Bot - atklātā pirmkoda Rubika kuba risinātājs: Iedomājieties, ka jums ir kodēts Rubika kubs, jūs zināt, ka 80. gadu mīkla ir tāda, kāda ir ikvienam, bet neviens īsti nezina, kā to atrisināt, un jūs vēlaties to atgriezt sākotnējā modelī. Par laimi, mūsdienās ir ļoti viegli atrast risinājumu
Arduino Learner Kit (atvērtā koda): 7 soļi (ar attēliem)

Arduino apmācības komplekts (atvērtā pirmkoda): ja esat iesācējs Arduino pasaulē un gatavojaties apgūt Arduino, jums ir praktiska pieredze, šī instrukcija un šis komplekts ir domāts jums. Šis komplekts ir arī laba izvēle skolotājiem, kuriem patīk vienkāršā veidā mācīt saviem studentiem Arduino
Velosipēda simulators ar ātruma regulēšanu reāllaikā: 5 soļi

Velosipēda simulators ar ātruma regulēšanu reāllaikā: Šis projekts izmanto magnētisko niedru slēdzi, lai izveidotu spidometru un kontrolētu pirmās personas riteņbraukšanas video video ātrumu vietnē YouTube vai citos plašsaziņas līdzekļos. Arduino aprēķina mph un pēc tam izmanto šo informāciju, lai simulētu datora pogu nospiešanu
Tahometrs, kas izgatavots no velosipēda spidometra (velosipēda dators): 3 soļi (ar attēliem)

Tahometrs, kas izgatavots no velosipēda spidometra (velosipēda dators): dažreiz jums vienkārši jāzina, cik ātri griežas ritenis, vārpsta vai motors. Rotācijas ātruma mērierīce ir tahometrs. Bet tie ir dārgi, un tos nav viegli atrast. To ir lēti un viegli izgatavot, izmantojot velosipēda spidometru (cikl