Avatud (jalgratta) klassi simulaator - OpenGradeSIM: 6 sammu
Avatud (jalgratta) klassi simulaator - OpenGradeSIM: 6 sammu
Anonim
Image
Image
Avatud (jalgratta) klassi simulaator - OpenGradeSIM
Avatud (jalgratta) klassi simulaator - OpenGradeSIM
Avatud (jalgratta) klassi simulaator - OpenGradeSIM
Avatud (jalgratta) klassi simulaator - OpenGradeSIM

Sissejuhatus

Teatud tuntud USA spordifirma (Wahoo) tõi hiljuti välja suurepärase sisetreeningu abivahendi, mis tõstab ja langetab turbo treeneril jalgratta esiosa vastavalt kasutaja poolt sõidetava mäe simulatsioonile (Kickr Climb).

Tundub hämmastav, kuid kahjuks pole see meile kõigile kättesaadav, kuna vajate 1) tipptasemel Wahoo treenerit ja 2) 500 naela, et see oma teha.

Ma murdsin rangluu (ei pannud kunagi maanteejalgratturit mägirattale), nii et mul oli treeneril rohkem kilomeetreid ja rohkem aega nokitsemiseks ning arvasin, et see võib olla lõbus projekt.

Kaubandusüksus simuleerib -5% kuni +20%, nii et tahtsin selle lähedale jõuda, kuid 10% eelarvest!

See on loodud minu Tacx Neo ümber, kuid iga treener, kes edastab oma võimsuse ja kiiruse andmeid ANT+ või BLE kaudu, saab tööle panna (ma arvan!).

Kuna minu maanteeratta teljevahe on täpselt 1000 mm, peaksin kahvleid tõstma 200 mm võrra, et simuleerida 20% (vt pilti), nii et 200 mm lineaarne ajam sobiks. Jalgratta ja sõitja kaal ei ületa tõenäoliselt 100 kg ja kuna see on jaotatud telgede vahel ja enamik on tagaküljel, tõstab 750N üles 75 kg ja peaks olema korras. Kiiremad ajamid on saadaval rohkem raha eest, kuid see maksis mulle umbes 20 naela ja haldab 10 mm/sek. Potentsiomeetritega ajamid, mida saab kasutada lihtsate servodena, on samuti 2–3 korda kallimad.

Tarvikud

3D -printimine (PLA või ABSetc) läbi teljeadapteri osa:

100 mm 3/4 tolli 10 swg alumiiniumtoru (läbiva telje raami jaoks)

80 mm 6 mm roostevabast terasest kang

Lineaarse ajami osa kinga 3D -print (PLA või ABSetc):

H-silla ümbrise 3D-trükk

Arduino ümbrise 3D -trükk (versioon 1 koos klaviatuuriga) https://www.thingiverse.com/thing:3984911 (versioon 2 nagu näidatud (https://www.thingiverse.com/thing:3995976)

Laserlõigatud tükk 3 mm läbipaistvast akrüülist 32 x 38 mm, et vältida higistamist kogu elektroonikas (see ei olnud ideaalne).

Mõned verejooksuklotsid (kohandatud klotside sisse jätmiseks), et vältida teie entusiasmi ajal juhuslikult kolvi Shimano ketaspiduritelt välja lükkamist

Lineaarne ajam 750N 200 mm, nt Al03 mini lineaarsed ajamid saidilt

L298N H sild (nagu:

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

2 võtmega membraaniga klaviatuur, nt

IIC I2C loogilise taseme muunduri kahesuunaline moodul 5V kuni 3.3V Arduino jaoks, nt

12V 3A alalisvoolu toide - LED -valgustite jaoks sobivad suurepäraselt!

NPE CABLE Ant+ BLE sillale

3D -prinditav klipp kaablisillale

1,3 OLED LCD -ekraanimoodul IIC I2C liidesega 128x32 3.3V

Samm: natuke matemaatikat

Natuke matemaatikat
Natuke matemaatikat

Peame arvutama simuleeritava kalde. Ma lootsin, et treener reklaamib neid andmeid koos kiiruse, võimsuse, kadentsi jms., Kuid treener seab lihtsalt vastupanu, et säilitada väljundvõimsus vastavalt tahvelarvuti, arvuti jms tarkvarale, mida kasutatakse selle juhtimiseks. Mul ei olnud võimalust tarkvara abil lihtsalt simuleeritud hindeid tabada, nii et ma peaksin tagurpidi töötama …

Jalgrattale ja ratturile mõjuvad jõud on kombinatsioon takistuslikest kaotustest ja mäest ronimiseks vajalikust jõust. Treener teatab kiirusest ja võimsusest. Kui suudame teatud kiirusel leida takistuslikud kaotused, kasutatakse järelejäänud võimsust mäest üles ronimiseks. Ronimisjõud sõltub ratta ja sõitja kaalust ning tõusukiirusest ja seega saame kallakule tagasi töötada.

Kõigepealt kasutasin hämmastavat https://bikecalculator.com, et leida mõningaid andmepunkte takistusliku võimsuse kadumise kohta tüüpilistel kiirustel. Seejärel muutsin kiiruse domeeni lineaarse suhte loomiseks ja leidsin kõige sobivama joone. Võttes sirge võrrandi, saame nüüd võimsuse (W) arvutada takistuse põhjal = (0,0102*(kiiruskmh^2,8))+9,428.

Võtke vastupanu jõud mõõdetud võimsusest, et anda ronimisjõud.

Me teame tõusukiirust km/h ja teisendame selle SI ühikuteks m/s (jagage 3,6 -ga).

Kallak leitakse järgmiselt: Kallak (%) = ((PowerClimbing/(KaalKg*g))/Kiirus)*100

kus vabalangemise kiirendus g = 9,8 m/s/s või 9,8 N/kg

2. samm: hankige andmeid

Hankige andmeid
Hankige andmeid

Kallaku arvutamine nõuab kiirust ja võimsust. Selle vastuvõtmiseks kasutasin treeneriga ühenduse loomiseks BLE kaudu Arduino Nano 33 IoT. Ma jäin esialgu väga jänni, kuna selle mooduli algse ArduinoBLE raamatukogu praegune v.1.1.2 versioon ei käsitle autentimist mingil kujul, mis tähendab, et enamik (?) Kaubanduslikke BLE -andureid sellega ei paaritu.

Lahenduseks oli kasutada NPE-kaablit ANT+ BLE-sillale (https://npe-inc.com/cableinfo/), mis hoiab treeneri sisseehitatud BLE-d vaba, et koolitusrakendus saaks suhelda ja ei nõua BLE-l autentimist pool.

BLE võimsuse karakteristik on üsna lihtne, kuna võimsus vattides sisaldub edastatud andmete teises ja kolmandas baidis 16 -bitise täisarvuna (väike endiaan, st kõige vähem oluline oktett kõigepealt). Ma kasutasin libiseva keskmise filtrit, et anda 3 -le keskmine võimsus - nagu mu rattaarvuti näitab -, kuna see on vähem ebakindel.

if (powerCharacteristic.valueUpdated ()) {

// Määrake massiiv väärtusele uint8_t holdpowervalues [6] = {0, 0, 0, 0, 0, 0}; // Väärtuse lugemine massiivi powerCharacteristic.readValue (holdpowervalues, 6); // Võimsus tagastatakse vattidena asukohas 2 ja 3 (loc 0 ja 1 on 8 -bitised lipud) bait rawpowerValue2 = holdpowervalues [2]; // võimsuse vähim sig -bait HEX -baidis rawpowerValue3 = holdpowervalues [3]; // võimsus kõige sig bait HEX -is long rawpowerTotal = (rawpowerValue2 + (rawpowerValue3 * 256)); // Kasutage liikuva keskmise filtrit, et anda '3s power' powerTrainer = moveAverageFilter_power.process (rawpowerTotal);

BLE kiiruse tunnusjoon (Cycling Speed and Cadence) on üks neist asjadest, mis paneb mõtlema, mis pagana pärast SIG suitsetas, kui nad spetsifikatsiooni kirjutasid.

Characteristic tagastab 16 -baidise massiivi, mis ei sisalda kiirust ega kadentsi. Selle asemel saate rattapöördeid ja vända pöördeid (kogusummasid) ning aega pärast viimast sündmust 1024 sekundi jooksul. Nii et rohkem matemaatikat siis. Oh, ja baite pole alati kohal, nii et alguses on lipu bait. Oh, ja baidid on väikesed endiaalsed HEX -d, nii et peate lugema tagurpidi, korrutades teise baidi 256 -ga, kolmanda 65536 -ga jne, seejärel lisades need kokku. Kiiruse leidmiseks peate eeldama tavalist rattaratta ümbermõõtu, et teada saada vahemaad….

if (speedCharacteristic.valueUpdated ()) {

// See väärtus vajab 16 -baidist massiivi uint8_t holdvalues [16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Aga ma loen ainult esimest 7 speedCharacteristic.readValue (holdvalues, 7); bait rawValue0 = hoidmisväärtused [0]; // binaarlipud 8 bitti int baiti rawValue1 = hoidmisväärtused [1]; // pöörete vähim oluline bait HEX baidis rawValue2 = hoidmisväärtused [2]; // pööret järgmine kõige olulisem bait HEX baidis rawValue3 = holdvalues [3]; // pöörded järgmine kõige olulisem bait HEX baidis rawValue4 = holdvalues [4]; // pööretest kõige olulisem bait HEX baidis rawValue5 = hoidmisväärtused [5]; // aeg pärast viimast ratta sündmust vähim sig bait bait rawValue6 = hoidmisväärtused [6]; // aeg pärast viimast rattasündmust kõige rohkem sig baiti if (firstData) {// Hangi kumulatiivsed rattapöörded nii väikese endiani kuusnurgana asukohas 2, 3 ja 4 (kõige vähem oluline oktett kõigepealt) WheelRevs1 = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); // Võta aega viimasest rattaüritusest 1024 sekundi jooksul Time_1 = (rawValue5 + (rawValue6 * 256)); firstData = vale; } else {// Hankige teine andmekogum WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); pikk TimeTemp = (tooresVäärtus5 + (tooresVäärtus6 * 256)); if (WheelRevsTemp> WheelRevs1) {// veenduge, et jalgratas liigub WheelRevs2 = WheelRevsTemp; Time_2 = TimeTemp; firstData = tõsi;}

// Leia kauguste vahe cm -des ja teisenda km -ks ujuki kaugusTravelled = ((WheelRevs2 - WheelRevs1) * wheelCircCM);

float kmTravelled = distanceTravelled / 1000000;

// Leidke aega 1024 sekundi jooksul ja teisendage tundideks

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

// Leia kiirus kmh

kiirusKMH = (kmTravelled / timeHrs);

Arduino visandit hostitakse GitHubis (https://github.com/mockendon/opengradesim).

Samm 3: Riistvara 1 Lineaarne ajam

Riistvara 1 Lineaarne ajam
Riistvara 1 Lineaarne ajam
Riistvara 1 Lineaarne ajam
Riistvara 1 Lineaarne ajam
Riistvara 1 Lineaarne ajam
Riistvara 1 Lineaarne ajam

Minu ketaspiduri maanteeratta läbiv telg määrab 19,2 mm telje, mis puhastab 12 mm läbimõõduga telje kahvlite vahel 100 mm.

Laos 3/4 -tolline 10swg alumiiniumtoru sobib ideaalselt ja ebay'is (https://www.ebay.co.uk/str/aluminiumonline) pakutav kena poiss Dave tarnib ja lõikab selle minu jaoks mõne naela pikkuseks.

Täiturmehhanismil on 20 mm varras, millel on 6 mm auk, nii et 3D -trükitud osa ühendab alumiiniumtoru 6 mm terasvardaga ja kuna jõud on 90% kokkusurutud, vastab mõni PLA / ABS väljakutsele.

Kui kasutate tavalist kiirvabastuse seadistust, väldiks midagi sellist (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) selle komponendi ümberkujundamist.

Saabas on loodud sobituma minu Tacx -treeneriga kaasasolevasse tõsteplokki, kuid tõenäoliselt sobiks see paljudesse sarnastesse tõstetesse või saate lihtsalt TinkerCadi faili vastavalt oma vajadustele muuta.

4. samm: riistvara 2 - H -sild

Riistvara 2 - H -sild
Riistvara 2 - H -sild
Riistvara 2 - H -sild
Riistvara 2 - H -sild
Riistvara 2 - H -sild
Riistvara 2 - H -sild

Nendel veebis väga levinud L298N H sillaplaatidel on sisseehitatud 5 V regulaator, mis sobib suurepäraselt Arduino toiteks 12 V toiteallikast, mida on vaja lineaarse ajami jaoks. Kahjuks on Arduino Nano IoT plaadil 3,3 V signaal, seega on vaja loogilist taseme muundurit (või optoisolaatorit, kuna signaalid on ainult ühesuunalised).

Korpus on mõeldud toitepistikute jaoks, mida tavaliselt kasutatakse LED -valgustite rakendustes. Lõikasin maha USB -pikendusjuhtme, et oleks võimalik Arduino peakomplekti hõlpsalt ühendada / lahti ühendada ning kuigi olin kindel, et kasutan toitejuhtmeid toiteallikaks ja andmesideühendusi 3,3 V signaaliülekandeks, soovitaksin ausalt selle vastu. vihkan kedagi, kes praeb oma USB -pordid või välisseadmed, ühendades need kogemata!

Samm: riistvara 3 juhtelektroonika (Arduino)

Riistvara 3 Juhtelektroonika (Arduino)
Riistvara 3 Juhtelektroonika (Arduino)
Riistvara 3 Juhtelektroonika (Arduino)
Riistvara 3 Juhtelektroonika (Arduino)
Riistvara 3 Juhtelektroonika (Arduino)
Riistvara 3 Juhtelektroonika (Arduino)

Arduino OLED -i ja loogikataseme muunduri korpusel on tagaküljel tavaline 1/2 pöördega Garmini stiilis kinnitus, mis võimaldab selle jalgrattale kindlalt kinnitada. Väljaspool asuv kinnitus võimaldab seadet kiirendusmõõturi asendisse üles või alla nullini kallutada või oleks lihtne lisada koodirida lihtsalt automaatse nullini.

Korpusel on koht membraanist klahvistikule - seda kasutatakse sõitja ja jalgratta kombineeritud kaalu seadmiseks. Saate selle lihtsalt programmiliselt määrata, eriti kui te ei jaga treenerit kellegagi.

Võib olla tore rakendada käsitsi režiimi. Võib -olla võib mõlema nupu vajutamine käivitada käsitsi režiimi ja seejärel võivad nupud kallakut suurendada või vähendada. Lisan selle ülesannete nimekirja!

Juhtumi STL -fail on jälle Thingiverse'is saadaval (linki leiate tarvikute jaotisest).

Arduino visandit hostitakse GitHubis (https://github.com/mockendon/opengradesim).

Siit saate printida oma CABLE -silla jaoks kena väikese klipi

6. samm: „Tagumine väljalangemine”

"Tagumine väljalangemine"
"Tagumine väljalangemine"
"Tagumine väljalangemine"
"Tagumine väljalangemine"
"Tagumine väljalangemine"
"Tagumine väljalangemine"

Paljud inimesed on tõstatanud ratta liikumisel tagumise väljalangemise hõõrdumise probleemi. Mõnel treeneril on telg, mis liigub (nagu Kickril), kuid paljudel mitte.

Praegu on minu jaoks parim lahendus paigaldada kiirkinnitusadapteritele mõned standardsed 61800-2RS sügava soonega laagrid (igaüks umbes 2 naela) ja seejärel paigaldada nendele (vt pilte) üle mõõtmetega QR-vardaga

Laagrid vajavad adapteri ja laagri vahel õhukest vaheseibi, nt M12 16 mm 0,3 mm.

Need sobivad ideaalselt ja pöörlevad koos ratta ja vardaga treenerist sõltumatult.

Praegu muudab see ajami poole nihet paari mm võrra, nii et peate uuesti indekseerima

Kujundan kohandatavaid osi (vt pdf-plaani), mida masinaks teha (oma tulevase õemehe treipingil, kui tal on tund aega abiks!). Neid pole veel testitud !!! Kuid 1 mm lihvimine varuvõlli külje QR -adapteri sisepinnalt on kiire lahendus ilma spetsiaalsete tööriistadeta;)