Otvoreni (biciklistički) simulator ocjene - OpenGradeSIM: 6 koraka
Otvoreni (biciklistički) simulator ocjene - OpenGradeSIM: 6 koraka
Anonim
Image
Image
Simulator otvorenog (biciklističkog) razreda - OpenGradeSIM
Simulator otvorenog (biciklističkog) razreda - OpenGradeSIM
Otvoreni (biciklistički) simulator ocjene - OpenGradeSIM
Otvoreni (biciklistički) simulator ocjene - OpenGradeSIM

Uvod

Određena poznata američka fitnes kompanija (Wahoo) nedavno je iznijela sjajno pomagalo za vježbanje u zatvorenom koje podiže i spušta prednji dio bicikla na turbo trenažeru prema simuliranom stepenu brda kojim se korisnik vozi (Kickr Climb).

Izgleda nevjerojatno, ali nažalost ovo nije dostupno svima nama jer će vam trebati 1) vrhunski trener Wahoo i 2) 500 GBP gotovine da ovo učinite svojim.

Slomio sam ključnu kost (nikada nisam stavljao cestovnog biciklista na brdski bicikl) pa sam imao više kilometara do trenera i više vremena za petljanje i mislio sam da bi ovo mogao biti zabavan projekt.

Komercijalna jedinica simulira -5% do +20% pa sam htio doći blizu toga, ali na 10% budžeta!

Ovo je osmišljeno oko mog Tacx Neo -a, ali svaki trener koji emitira svoje podatke o snazi i brzini putem ANT+ ili BLE mogao bi raditi (računam!).

Budući da međuosovinsko rastojanje na mome cestovnom biciklu ima točno 1000 mm, morao bih podići vilice za 200 mm da simuliram 20% (vidi sliku), pa bi linearni pogon od 200 mm bio dovoljan. Težina bicikla i vozača vjerojatno neće preći 100 kg, a budući da je to raspoređeno po osovinama, a većina je na stražnjoj strani, 750N će podići 75 kg i trebalo bi biti u redu. Brži aktuatori dostupni su za više novca, ali ovaj me koštao oko 20 funti i upravlja 10 mm/sek. Pokretači s potenciometrima koji se mogu koristiti kao jednostavni servo pogoni također su 2 do 3 puta skuplji.

Supplies

3D ispis (PLA ili ABSetc) dijela adaptera kroz osovinu:

100 mm aluminijske cijevi od 10 swg od 3/4 inča (za okvir s osovinom)

80 mm od šipke od nehrđajućeg čelika debljine 6 mm

3D ispis (PLA ili ABSetc) cipele za dio linearnog pogona:

3D ispis kućišta za H-most

3D ispis kućišta za Arduino (verzija 1 s tipkovnicom) https://www.thingiverse.com/thing:3984911 (verzija 2 kao što je prikazano (https://www.thingiverse.com/thing:3995976)

Laserski izrezan komad od 3 mm prozirnog akrila 32 x 38 mm kako se ne biste znojili po cijeloj elektronici (to nije idealno).

Neki blokovi za krvarenje (prilagođeni da ostave uloške postavljene) kako bi spriječili slučajno guranje klipova čeljusti iz vaših Shimano disk kočnica u vašem entuzijazmu

Linearni aktuator 750N hod 200 mm, npr. Al03 mini linearni aktuatori sa

L298N H most (poput:

Arduino Nano IoT 33 www.rapidonline.com narudžba 73-4863

Membranska tastatura sa 2 ključa, npr.

IIC I2C Logički pretvarač razine, dvosmjerni modul 5V do 3.3V Za Arduino npr.

12V 3A DC napajanje - oni za LED rasvjetu rade odlično!

NPE CABLE Ant+ na BLE most

3D isječak za ispis za CABLE bridge

1.3 OLED LCD zaslon modul sa IIC I2C sučeljem 128x32 3.3V

Korak 1: Malo matematike

Neke matematike
Neke matematike

Moramo izračunati nagib koji se simulira. Nadao sam se da će trener oglašavati ove podatke zajedno sa brzinom, snagom, ritmom itd. Međutim, trener jednostavno postavlja otpor za održavanje izlazne snage prema softveru na tabletu, računaru itd. Koji se koristi za kontrolu. Nisam imao načina da lako uhvatim „simuliranu ocjenu“iz softvera pa sam morao raditi unatrag …

Sile koje djeluju na bicikl i vozača kombinacija su otpornih gubitaka i snage potrebne za uspon na brdo. Trener izvještava o brzini i snazi. Ako možemo pronaći otporničke gubitke pri datoj brzini, tada se preostala snaga koristi za uspon na brdo. Snaga penjanja ovisi o težini bicikla i vozača i brzini uspona, pa se možemo vratiti na uspon.

Prvo sam upotrijebio nevjerojatan https://bikecalculator.com kako bih pronašao neke podatkovne točke za gubitak otpornosti pri tipičnim brzinama. Zatim sam transformirao domenu brzine u linearni odnos i pronašao liniju koja najbolje pristaje. Uzimajući jednadžbu linije sada možemo izračunati snagu (W) iz otpora = (0,0102*(Brzina kmh^2,8))+9,428.

Uzmite snagu iz otpora od izmjerene snage kako biste dobili moć 'penjanja'.

Znamo brzinu uspona u km/h i to pretvaramo u SI jedinice m/s (podijelite s 3,6).

Nagib se nalazi iz: Nagib (%) = ((PowerClimbing/(Težina kg*g))/Brzina)*100

pri čemu je ubrzanje slobodnog pada g = 9,8m/s/s ili 9,8 N/kg

Korak 2: Nabavite neke podatke

Nabavite neke podatke
Nabavite neke podatke

Izračun nagiba zahtijeva brzinu i snagu. Koristio sam Arduino Nano 33 IoT za povezivanje s trenerom putem BLE -a da primim ovo. U početku sam se jako zaglavio jer trenutna verzija v.1.1.2 izvorne biblioteke ArduinoBLE za ovaj modul ne podržava autentifikaciju u bilo kojem obliku, što znači da se većina (?) Komercijalnih BLE senzora neće upariti s njom.

Rješenje je bilo upotrijebiti NPE kabel ANT+ na BLE most (https://npe-inc.com/cableinfo/) koji održava ugrađeni BLE trenera besplatnim za aplikaciju za obuku da komunicira preko njega i ne zahtijeva autentifikaciju na BLE-u strana.

Karakteristika snage BLE -a prilično je jasna jer je snaga u vatima sadržana u drugom i trećem bajtu prenesenih podataka kao 16 -bitni cijeli broj (mali endijan, odnosno najmanji oktet prvi). Primijenio sam filtar pokretnog prosjeka kako bih dao prosječnu snagu od 3 sekunde - baš kao što pokazuje moj biciklistički računar - jer je to manje nestabilno.

if (powerCharacteristic.valueUpdated ()) {{100} {101}

// Definiramo niz za vrijednost uint8_t holdpowervalues [6] = {0, 0, 0, 0, 0, 0}; // Očitavanje vrijednosti u nizu powerCharacteristic.readValue (holdpowervalues, 6); // Napajanje se vraća u vatima na lokacijama 2 i 3 (loc 0 i 1 su 8 -bitne zastavice) byte rawpowerValue2 = holdpowervalues [2]; // napajanje najmanji sig -bajt u HEX -ovom bajtu rawpowerValue3 = holdpowervalues [3]; // snaga većine sig -bajta u HEX -u dugačka rawpowerTotal = (rawpowerValue2 + (rawpowerValue3 * 256)); // Koristite filtar pokretnog prosjeka za davanje powerTrainer -a snage 3s = movingAverageFilter_power.process (rawpowerTotal);

Karakteristika brzine BLE (biciklistička brzina i kadenca) jedna je od onih stvari koje vas tjeraju da se zapitate šta je to SIG pušio kad su pisali specifikaciju.

Karakteristika vraća niz od 16 bajta koji ne sadrži ni brzinu ni ritam. Umjesto toga dobivate broj okretaja kotača i okretaja radilice (ukupno) i vrijeme od posljednjeg događaja u 1024 -im dijelovima sekunde. Dakle, više matematike. Oh, i bajtovi nisu uvijek prisutni pa na početku postoji bajt zastavice. Oh, a bajtovi su mali endian HEX pa morate čitati unatrag množeći drugi bajt sa 256, treći sa 65536 itd., A zatim ih zbrajati. Da biste pronašli brzinu, morate pretpostaviti standardni opseg kotača bicikla da biste znali udaljenost….

if (speedCharacteristic.valueUpdated ()) {{100} {101}

// Ovoj vrijednosti je potreban 16 -bajtni niz uint8_t holdvalues [16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; // Ali ja ću pročitati samo prvih 7 speedCharacteristic.readValue (holdvalues, 7); bajt rawValue0 = holdvalues [0]; // binarne zastavice 8 -bitni int -bajt rawValue1 = holdvalues [1]; // okretaji najmanje značajnog bajta u HEX bajtu rawValue2 = holdvalues [2]; // okreće sljedeći najznačajniji bajt u HEX bajtu rawValue3 = holdvalues [3]; // okreće sljedeći najznačajniji bajt u HEX bajtu rawValue4 = holdvalues [4]; // okreće najznačajniji bajt u HEX bajtu rawValue5 = holdvalues [5]; // vrijeme od posljednjeg događaja kotača najmanje sig bajt bajt rawValue6 = holdvalues [6]; // vrijeme od posljednjeg događaja kotača najznačajniji bajt if (firstData) {// Dobijte kumulativne okretaje kotača kao mali endian hex u loc 2, 3 i 4 (najmanji oktet prvi) WheelRevs1 = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); // Dobijte vrijeme od posljednjeg događaja kotača u 1024 -oj sekundi Time_1 = (rawValue5 + (rawValue6 * 256)); firstData = false; } else {// Preuzmite drugi skup podataka long WheelRevsTemp = (rawValue1 + (rawValue2 * 256) + (rawValue3 * 65536) + (rawValue4 * 16777216)); long TimeTemp = (rawValue5 + (rawValue6 * 256)); if (WheelRevsTemp> WheelRevs1) {// provjerite da li se bicikl kreće WheelRevs2 = WheelRevsTemp; Time_2 = TimeTemp; firstData = true;}

// Pronađite razliku udaljenosti u cm i pretvorite u km float distanceTravelled = ((WheelRevs2 - WheelRevs1) * wheelCircCM);

float kmTravelled = distanceTravelled / 1000000;

// Nađite vrijeme u 1024 -im dijelovima sekunde i pretvorite u sate

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

// Pronađi brzinu kmh

brzinaKMH = (kmTravelled / timeHrs);

Arduino skica se nalazi na GitHub -u (https://github.com/mockendon/opengradesim).

Korak 3: Hardver 1 Linearni aktuator

Hardver 1 Linearni aktuator
Hardver 1 Linearni aktuator
Hardver 1 Linearni aktuator
Hardver 1 Linearni aktuator
Hardver 1 Linearni aktuator
Hardver 1 Linearni aktuator

Prolazna osovina na mom cestovnom biciklu s disk kočnicom određuje osovinu od 19,2 mm za čišćenje osovine promjera 12 mm sa 100 mm između vilica.

Aluminijska cijev od 3/4 inča 10swg savršeno se uklapa i zgodan momak zvan Dave na ebayu (https://www.ebay.co.uk/str/aluminiumonline) mi ga je isporučio i odrezao na nekoliko kilograma.

Pokretač ima šipku od 20 mm s rupom od 6 mm, tako da 3D ispisani dio povezuje aluminijsku cijev s čeličnom šipkom od 6 mm, a budući da su sile 90% kompresije, neki PLA / ABS je izazov.

Ako pokrenete standardno brzo podešavanje izdanja, ovako nešto (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) izbjeglo bi ponovno dizajniranje ove komponente.

Prtljažnik je dizajniran da se uklopi u blok za podizanje koji se isporučuje sa mojim Tacx trenažerom, ali bi se vjerovatno uklopio u mnoge slične dizače ili možete jednostavno urediti datoteku TinkerCad prema vašim potrebama.

Korak 4: Hardver 2 - H -most

Hardver 2 - H -most
Hardver 2 - H -most
Hardver 2 - H -most
Hardver 2 - H -most
Hardver 2 - H -most
Hardver 2 - H -most

Ove L298N H mostovske ploče koje su vrlo česte na internetu imaju ugrađen regulator od 5V koji je odličan za napajanje Arduina iz 12V napajanja potrebnog za linearni pogon. Nažalost, Arduino Nano IoT ploča signalizira 3.3V pa otuda postoji potreba za pretvaračem logičkog nivoa (ili optoizolatorom jer su signali samo jednosmjerni).

Kućište je dizajnirano da prihvati priključke za napajanje koji se obično koriste u LED rasvjetnim aplikacijama. Zaklao sam USB produžni kabel kako bih omogućio jednostavno povezivanje / isključivanje Arduino glavne jedinice, a dok sam bio siguran da koristim vodove za napajanje i podatkovne vodove za signalizaciju od 3,3 V, iskreno bih savjetovao PROTIV ovoga jer bih mrzite nekoga da isprži svoje USB portove ili periferne uređaje greškom ih priključivši!

Korak 5: Hardver 3 Kontrolna elektronika (Arduino)

Hardver 3 Kontrolna elektronika (Arduino)
Hardver 3 Kontrolna elektronika (Arduino)
Hardver 3 Kontrolna elektronika (Arduino)
Hardver 3 Kontrolna elektronika (Arduino)
Hardver 3 Kontrolna elektronika (Arduino)
Hardver 3 Kontrolna elektronika (Arduino)

Kućište za Arduino OLED i pretvarač logičkog nivoa ima standardni stražnji držač u Garmin stilu za 1/2 okreta na stražnjoj strani koji omogućuje sigurno postavljanje na bicikl. Montiranje "sprijeda" omogućit će jednostavno naginjanje jedinice prema gore ili dolje na "nulu", položaj akcelerometra ili redak koda samo za automatsko nuliranje na početku bi se lako dodao.

Kućište ima mjesto za membransku tipkovnicu - ovo se koristi za postavljanje kombinirane težine vozača i bicikla. Ovo možete samo programski postaviti, posebno ako ni s kim ne dijelite trenera.

Možda bi bilo lijepo implementirati 'ručni' način rada. Možda bi pritiskom na oba dugmeta pokrenuo ručni način rada, a zatim bi dugmad mogla povećati / smanjiti nagib. Dodaću ovo na listu obaveza!

STL datoteka slučaja ponovo je dostupna na Thingiverse -u (vezu potražite u odjeljku potrošnog materijala).

Arduino skica se nalazi na GitHub -u (https://github.com/mockendon/opengradesim).

Ovdje možete ispisati uredan mali isječak za svoj CABLE most

Korak 6: "Zadnji prekidači"

'Stražnji ispusti'
'Stražnji ispusti'
'Stražnji ispusti'
'Stražnji ispusti'
'Stražnji ispusti'
'Stražnji ispusti'

Mnogi ljudi postavljaju pitanje trljanja stražnjih dijelova dok se bicikl kreće. Neki treneri imaju osovinu koja se pomiče (poput Kickra), ali mnogi nemaju.

Trenutno je moje najbolje rješenje za mene montiranje nekih standardnih ležajeva sa dubokim utorima 61800-2RS (oko 2 funte svaki) na adaptere za brzo otpuštanje, a zatim montiranje prolaznih osovina na njih (pogledajte slike) s QR ražnjem veće veličine

Ležajevima je potrebna tanka podloška za podmetanje, npr. M12 16 mm 0,3 mm između adaptera i ležaja.

Savršeno pristaju i rotiraju se s biciklom i ražnjem neovisno o treneru.

Trenutno ovo mijenja pomak na pogonskoj strani za nekoliko mm pa ćete morati ponovno indeksirati

Dizajniram prilagođene dijelove (pogledajte pdf plan) za obradu (na tokarilici moga budućeg šogora kad ima sat vremena za pomoć!). Ovo još nije testirano !!! No, brušenje 1 mm s unutarnje površine QR adaptera sa strane pogona je brzo rješenje bez posebnih alata;)