Sadržaj:
- Pribor
- Korak 1: Malo matematike
- Korak 2: Nabavite neke podatke
- Korak 3: Hardver 1 Linearni aktuator
- Korak 4: Hardver 2 - H -most
- Korak 5: Hardver 3 Upravljačka elektronika (Arduino)
- Korak 6: "Stražnji prekidači"
Video: Otvoreni (biciklistički) simulator ocjene - OpenGradeSIM: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:34
Uvod
Određena poznata američka tvrtka za fitness (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 stupnju 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 (nikad 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 se htio približiti tome, ali na 10% proračuna!
Ovo je osmišljeno oko mog Tacx Neo -a, ali svaki trener koji emitira svoje podatke o snazi i brzini putem ANT+ ili BLE -a 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 premašiti 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/s. Pokretači s potenciometrima koji se mogu koristiti kao jednostavni servo pogoni također su 2 do 3 puta skuplji.
Pribor
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 izrezani 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 ostavljaju 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 200 mm hod, npr. Al03 Mini linearni aktuatori sa
L298N H most (poput:
Arduino Nano IoT 33 www.rapidonline.com narudžba 73-4863
Membrana tipkovnica s 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 odlično rade!
NPE CABLE Ant+ na BLE most
Isječak za 3D ispis za CABLE bridge
1.3 OLED LCD zaslon modul s IIC I2C sučeljem 128x32 3.3V
Korak 1: Malo matematike
Moramo izračunati nagib koji se simulira. Nadao sam se da će trener oglašavati ove podatke zajedno s brzinom, snagom, ritmom itd. Međutim, trener jednostavno postavlja otpor za održavanje izlazne snage prema softveru na tabletu, računalu itd. Koji se koristi za kontrolu. Nisam imao načina da jednostavno 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 otporne 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 crte sada možemo izračunati snagu (W) iz otpora = (0,0102*(Brzina kmh^2,8))+9,428.
Uzmite snagu iz otpora iz izmjerene snage kako biste dobili moć 'penjanja'.
Znamo brzinu uspona u km/h i to pretvaramo u SI jedinice m/s (podijelimo s 3,6).
Nagib se nalazi iz: Nagib (%) = ((PowerClimbing/(Težina kg*g))/Brzina)*100
gdje je ubrzanje slobodnog pada g = 9,8m/s/s ili 9,8 N/kg
Korak 2: 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 jako zaglavio jer trenutna verzija v.1.1.2 izvorne ArduinoBLE knjižnice za ovaj modul ne obrađuje 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 slobodnim za aplikaciju za vježbu 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 endian, tj. Najmanji oktet prvi). Primijenio sam filtar pomičnog prosjeka kako bih dao prosječnu snagu od 3 sekunde - baš kao što pokazuje moje biciklističko računalo - jer je to manje nestabilno.
if (powerCharacteristic.valueUpdated ()) {{100} {101}
// Definiraj 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]; // snaga najmanji sig -bajt u HEX -ovom bajtu rawpowerValue3 = holdpowervalues [3]; // snaga većine sig -bajta u HEX -u dugačka rawpowerTotal = (rawpowerValue2 + (rawpowerValue3 * 256)); // Upotrijebite filtar pomičnog 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 što 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 se na početku nalazi 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}
// Za ovu vrijednost potreban je niz od 16 bajtova 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čajni bajt u HEX -ovom bajtu rawValue2 = holdvalues [2]; // okretaji sljedeći najznačajniji bajt u HEX -ovom bajtu rawValue3 = holdvalues [3]; // okretaji sljedeći najznačajniji bajt u HEX -ovom bajtu rawValue4 = holdvalues [4]; // okretaji najznačajniji bajt u HEX bajtu rawValue5 = holdvalues [5]; // vrijeme od zadnjeg događaja kotača najmanje sig byte byte 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 = netočno; } else {// Dohvati 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; Vrijeme_2 = Vremenska oznaka; firstData = istina;}
// 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 = (Vrijeme_2 - Vrijeme_1); float timeSecs = timeDifference / 1024; float timeHrs = timeSecs / 3600;
// Nađi brzinu kmh
brzinaKMH = (kmTravelled / timeHrs);
Arduino skica nalazi se na GitHub -u (https://github.com/mockendon/opengradesim).
Korak 3: Hardver 1 Linearni aktuator
Prolazna osovina na mome 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) isporučio mi ju je i odrezao na nekoliko funti.
Pokretač ima šipku od 20 mm s rupom od 6 mm, pa 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 postavljanje za brzo izdanje, nešto poput ovoga (https://www.amazon.co.uk/Sharplace-Quick-Release-Conversion-Adapter/dp/B079DCY344) izbjeglo bi ponovno dizajniranje ove komponente.
Prtljažnik je dizajniran tako da stane u blok za podizanje koji se isporučuje s mojim Tacx trenažerom, ali vjerojatno bi se uklopio u mnoge slične dizače ili možete jednostavno urediti datoteku TinkerCad tako da odgovara vašim zahtjevima.
Korak 4: Hardver 2 - H -most
Ove L298N H mostovske ploče koje su vrlo česte na internetu imaju ugrađen 5V regulator 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 je potrebna pretvarač logičke razine (ili optoizolator jer su signali samo jednosmjerni).
Kućište je dizajnirano za prihvaćanje priključaka za napajanje koji se obično koriste u LED rasvjetnim aplikacijama. Zaklao sam USB produžni kabel kako bih omogućio jednostavno povezivanje / odvajanje 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 priključke ili periferne uređaje greškom ih priključivši!
Korak 5: Hardver 3 Upravljačka elektronika (Arduino)
Kućište za Arduino OLED i pretvarač logičke razine 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 mjerila akcelerometra ili redak koda samo za automatsko nuliranje na početku bilo bi lako dodati.
Kućište ima mjesto za membransku tipkovnicu - ovo se koristi za postavljanje kombinirane težine vozača i bicikla. Ovo možete jednostavno programski postaviti, posebno ako ni s kim ne dijelite trener.
Možda bi bilo lijepo implementirati 'ručni' način rada. Možda bi pritiskom na obje tipke pokrenuo ručni način rada, a zatim bi tipke mogle povećati / smanjiti nagib. Ovo ću dodati na popis obaveza!
STL datoteka slučaja ponovno je dostupna na Thingiverseu (vezu potražite u odjeljku potrošnog materijala).
Arduino skica nalazi se na GitHub -u (https://github.com/mockendon/opengradesim).
Ovdje možete ispisati uredan mali isječak za svoj CABLE most
Korak 6: "Stražnji prekidači"
Mnogi su ljudi pokrenuli pitanje ispadanja stražnjice 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 s dubokim utorom 61800-2RS (oko 2 GBP svaki) na adaptere za brzo otpuštanje, a zatim na njih montirati prolazne osovine (vidi slike) s QR ražnjem veće veličine
Ležajevi trebaju tanku podlošku 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 strani pogona za nekoliko mm pa ćete morati ponovno indeksirati
Dizajniram prilagođene dijelove (vidi pdf plan) za obradu (na tokarskom stroju mog 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;)
Preporučeni:
PCBWay Arduino biciklistički brojač kilometara: 4 koraka
PCBWay Arduino biciklistički brojač kilometara: U mnogim vozilima postoje uređaji koji izračunavaju prijeđenu udaljenost i bitni su za prezentiranje informacija vozaču. Tako je putem ovih podataka moguće pratiti prijeđenu udaljenost između dvije točke, na primjer
Pronađite svoje ocjene na Bellarmine's Moodleu: 11 koraka
Pronađite svoje ocjene na Bellarmine's Moodle -u: Lako je znati vaše ocjene ako vam profesor vrati papir s komentarima i bilješkama po cijelom tekstu. No s novim internetskim platformama koje većina sveučilišta koristi, to se može zakomplicirati. Evo jednog od načina da pronađete svoje ocjene ako
Arduino biciklistički brzinomjer pomoću GPS -a: 8 koraka
Arduino biciklistički brzinomjer pomoću GPS -a: U ovom ćemo vodiču koristiti Arduino i Visuino za prikaz trenutne brzine bicikla s GPS -a na zaslonu ST7735. Pogledajte demonstracijski video
RGB LED biciklistički krug u boji: 4 koraka
RGB LED biciklistički krug u boji: Kako ponovno namjestiti RGB LED biciklističko kolo u boji iz Glade LightShow osvježivača zraka. Bio sam u procesu stvaranja biciklističkog kruga crvene, zelene i plave boje temeljenog na PIC mikrokontroleru kada sam uočio Gladu LightShow osvježivač zraka
Benthekahnovi biciklistički hakovi!: 4 koraka
Benthekahn's Bike Hacks !: Zdravo, i dobrodošli u moje biciklističke hakove Instructable. Pokazat ću vam nekoliko jednostavnih hakova koje možete jednostavno i jeftino učiniti svom biciklu kako biste ga učinili boljim