Kazalo:

Pametni trener za notranje kolo DIY: 5 korakov
Pametni trener za notranje kolo DIY: 5 korakov

Video: Pametni trener za notranje kolo DIY: 5 korakov

Video: Pametni trener za notranje kolo DIY: 5 korakov
Video: Какого числа от 1 до 31, родился человек, такая у него и вся жизнь 2024, September
Anonim
DIY Indoor Bike Smart Trainer
DIY Indoor Bike Smart Trainer
DIY Indoor Bike Smart Trainer
DIY Indoor Bike Smart Trainer
DIY Indoor Bike Smart Trainer
DIY Indoor Bike Smart Trainer

Uvod

Ta projekt se je začel kot preprosta sprememba notranjega kolesa Schwinn IC Elite, ki uporablja preproste vijačne in filčne blazinice za nastavitve upora. Težava, ki sem jo želel rešiti, je bila, da je bil premer vijaka prevelik, zato je bil razpon od tega, da ne morem pedalirati, do popolnega vrtenja kolesa, le nekaj stopinj na gumbu upora. Sprva sem vijak spremenil v M6, potem pa bi moral narediti gumb, zakaj torej ne bi uporabil levega koračnega motoca NEMA 17 za spremembo upora? Če že obstaja nekaj elektronike, zakaj ne bi računalniku dodali merilnika moči ročice in povezave bluetooth, da bi naredili pametnega trenerja?

To se je izkazalo za težje, kot je bilo pričakovano, ker ni bilo primerov, kako bi posnemali merilnik porabe energije z arduinom in bluetoothom. Na koncu sem porabil približno 20 ur za programiranje in interpretacijo specifikacij BLE GATT. Upam, da bom z zgledom lahko pomagal nekomu, da ne izgubi toliko časa, da bi poskušal razumeti, kaj točno pomeni polje vrste podatkov o storitvah podatkov …

Programska oprema

Celoten projekt je na GitHubu:

github.com/kswiorek/ble-ftms

Zelo priporočam uporabo Visual Studia z vtičnikom VisualGDB, če nameravate narediti nekaj resnejšega kot le kopirati kodo.

Če imate vprašanja o programu, vprašajte, vem, da moji minimalistični komentarji morda ne bodo veliko pomagali.

Krediti

Hvala stoppi71 za vodnik, kako narediti merilnik moči. Ročico sem naredil po njegovem načrtu.

Zaloge:

Materiali za ta projekt so zelo odvisni od tega, katero kolo spreminjate, vendar obstaja nekaj univerzalnih delov.

Ročica:

  1. Modul ESP32
  2. HX711 Senzor teže ADC
  3. Merilniki napetosti
  4. MPU - žiroskop
  5. Majhna Li-Po baterija (približno 750 mAh)
  6. Termoskrčljiv tulec
  7. A4988 Steper voznik
  8. 5V regulator
  9. Arduino cevni priključek
  10. 12V arduino napajanje

Konzola:

  1. Steper NEMA 17 (mora biti precej zmogljiv,> 0,4 Nm)
  2. Palica M6
  3. 12864 lcd
  4. WeMos LOLIN32
  5. Taktična stikala

Oprema

Pri tem bi se verjetno lahko izognili uporabi samo 3D tiskalnika, vendar lahko z laserskim rezanjem ohišja prihranite veliko časa, izdelate pa lahko tudi tiskane vezje. Datoteki DXF in gerber sta na GitHubu, zato jih lahko naročite lokalno. Spojka od navojne palice do motorja je bila obrnjena na stružnici in to je lahko edina težava, saj mora biti del dovolj močan, da vleče blazinice, vendar v tem kolesu ni veliko prostora.

Odkar sem izdelal prvo kolo, sem kupil rezkalni stroj, ki mi omogoča izdelavo rež za senzorje v ročici. Nekoliko olajša njihovo lepljenje in jih tudi zaščiti, če bi kaj udarilo v ročico. (Nekajkrat so mi ti senzorji padli, zato sem hotel biti varen.)

1. korak: Ročica:

Ročica
Ročica
Ročica
Ročica
Ročica
Ročica

Najbolje je, da sledite tej vadnici:

V bistvu morate senzorje prilepiti na ročico na štirih mestih in jih povezati s stranicami plošče.

Pravilne povezave so že tam, zato morate le spajati pare žic neposredno na teh osem blazinic na plošči.

Za povezavo s senzorji uporabite najtanjšo možno žico - blazinice je zelo enostavno dvigniti. Senzorje morate najprej zlepiti in pustiti le dovolj zunaj za spajkanje, nato preostale premazati z epoksidom. Če poskusite spajkati pred lepljenjem, se zvijejo in zlomijo.

Za sestavljanje tiskanega vezja:

  1. Zlata vstavite od spodaj (stran s sledmi) v vse luknje, razen navpičnih blizu dna.
  2. Postavite tri plošče (ESP32 na vrh, nato MPU, HX711 na dno), tako da se zlati čepi držijo skozi obe luknji.
  3. Spojite glave na deske na vrhu
  4. Zlatokosice odrežite z dna. (Poskusite jih najprej razrezati pred montažo, da boste vedeli, da vaši "zlati zatiči" v notranjosti niso iz jekla - zaradi tega jih je skoraj nemogoče razrezati in jih morate piliti ali brusiti)
  5. preostale čepke spajkajte na dno plošče.
  6. Naložite vdelano programsko opremo za ročico

Zadnji korak je, da celotno ročico zapakirate s toplotno skrčljivo pušo.

Ta način izdelave plošče ni idealen, saj deske zavzamejo veliko prostora, v katerega bi lahko namestili druge stvari. Najbolje bi bilo, če bi vse komponente spajkali neposredno na ploščo, vendar mi primanjkuje sposobnosti, da bi sam spajal te majhne SMD. Moral bi ga naročiti sestavljenega in verjetno bi naredil nekaj napak ter jih na koncu naročil trikrat in čakal eno leto, preden pridejo.

Če bi kdo lahko oblikoval ploščo, bi bilo super, če bi imela nekaj zaščitnega toka baterije in senzor, ki bi vklopil ESP, če bi se ročica začela premikati.

POMEMBNO

Tipalo HX711 je privzeto nastavljeno na 10Hz - za merjenje moči se to zelo upočasni. Zatič 15 morate dvigniti s plošče in ga priključiti na zatič 16. To poganja pin visoko in omogoča način 80Hz. Mimogrede, ta 80Hz določa hitrost celotne zanke arduino.

Uporaba

ESP32 je programiran za prehod v stanje spanja po 30 -ih letih brez priključene naprave Bluetooth. Če ga želite znova vklopiti, morate pritisniti gumb za ponastavitev. Senzorji se napajajo tudi iz digitalnega zatiča, ki se v načinu spanja izklopi. Če želite preizkusiti senzorje s primerno kodo iz knjižnic, morate zatakniti zatič VISOKO in malo počakati, preden se senzorji vklopijo.

Po montaži je treba senzorje umeriti tako, da odčitajo vrednost brez sile in nato z uporabo teže (uporabil sem kegljiček 12kg ali 16kg, obešen na pedal). Te vrednosti je treba vnesti v kodo powerCrank.

Najbolje je, da ročico obrežete pred vsako vožnjo - ne bi se smela tara, ko nekdo vozi s pedali, vendar je bolje, da je varna kot žal in jo je mogoče tarati le enkrat na vklop. Če opazite čudne ravni moči, morate ta postopek ponoviti:

  1. Ročico postavite naravnost navzdol, dokler lučka ne začne utripati.
  2. Po nekaj sekundah bo lučka ostala prižgana - potem se je ne dotikajte
  3. Ko se lučka ugasne, se trenutna sila, zaznana kot nova 0.

Če želite uporabiti samo ročico, brez konzole, je koda tukaj na githubu. Vse ostalo deluje enako.

2. korak: Konzola

Konzola
Konzola
Konzola
Konzola
Konzola
Konzola

Ohišje je izrezano iz 3 mm akrila, gumbi so 3D natisnjeni in na distančnikih za LCD so izrezani iz 5 mm akrila. Lepljen je z vročim lepilom (precej dobro se prilepi na akril) in na voljo je 3D natisnjen "nosilec" za pritrditev tiskanega vezja na LCD. Zatiči za LCD so spajkani z spodnje strani, tako da ne moti ESP.

ESP je spajen na glavo, zato vrata USB ustrezajo ohišju

Ločeno tiskano vezje gumbov je zlepljeno z vročim lepilom, zato so gumbi zajeti v njihove luknje, vendar še vedno pritiskajo stikala. Gumbi so povezani s ploščo s konektorji JST PH 2.0, vrstni red pin pa je enostavno razbrati iz sheme

Zelo pomembno je, da koračni gonilnik namestite v pravo smer (potenciometer v bližini ESP)

Celoten del kartice SD je onemogočen, saj je v prvi različici nihče ni uporabljal. Kodo je treba posodobiti z nekaterimi nastavitvami uporabniškega vmesnika, kot sta teža kolesarja in nastavitev težavnosti.

Konzola je nameščena z lasersko izrezanimi "rokami" in zadrgami. Mali zobje kopajo v krmilo in držijo konzolo.

3. korak: Motor

Motor
Motor
Motor
Motor
Motor
Motor

Motor se drži na mestu gumba za nastavitev s 3D natisnjenim nosilcem. Na gred je pritrjena spojka - na eni strani je 5 mm luknja z nastavitvenimi vijaki za držanje gredi, na drugi pa navoj M6 z nastavitvenimi vijaki, ki ga zaklenejo. Če želite, ga boste verjetno naredili v vrtalnem stroju iz kakih 10 mm okroglih zalog. Ni nujno, da je zelo natančen, saj motor ni nameščen zelo tesno.

V sklopko je privit kos navojne palice M6, ki vleče medeninasto matico M6. Obdelal sem ga, lahko pa ga naredim tudi iz kosa medenine s pilo. Na navadno matico lahko celo privarite nekaj nastavkov, da se ne vrtijo. Rešitev je lahko tudi 3D natisnjena matica.

Navoj mora biti tanjši od vijaka. Njegova višina je približno 1,3 mm, za M6 pa 0,8 mm. Motor nima dovolj navora, da bi zavrtel vijak.

Matico je treba dobro mazati, saj motor komaj obrača vijak na višjih nastavitvah

4. korak: Konfiguracija

Konfiguracija
Konfiguracija
Konfiguracija
Konfiguracija

Če želite naložiti kodo na ESP32 iz Arduino IDE, morate slediti tej vadnici:

Plošča je "WeMos LOLIN32", deluje pa tudi "Dev modul"

Predlagam uporabo Visual Studio, vendar se lahko pogosto zlomi.

Pred prvo uporabo

Ročico je treba nastaviti v skladu s korakom "ročica"

Z aplikacijo "nRF Connect" morate preveriti naslov MAC ročice ESP32 in ga nastaviti v datoteko BLE.h.

V vrstici 19 indoorBike.ino morate nastaviti, koliko obratov vijaka je potrebno, da nastavite upor od popolnoma ohlapnega do največjega. ("Najvišje" je namerno subjektivno, s to nastavitvijo prilagodite težave.)

Pametni trener ima "virtualne prestave", da jih pravilno nastavi, kalibrirati ga morate v vrsticah 28 in 29. Na določeni upornosti morate pedala vrtiti s konstantno kadenco, nato prebrati moč in jo nastaviti v datoteko. To ponovite z drugo nastavitvijo.

Skrajni levi gumb preklopi iz načina ERG (absolutni upor) v simulacijski način (virtualni zobniki). Način simulacije brez računalniške povezave ne naredi ničesar, saj ni simulacijskih podatkov.

Vrstica 36. nastavi virtualne prestave - število in razmerja. Izračunate jih tako, da število zob v sprednji prestavi delite s številom zob v zadnji prestavi.

V vrstico 12 vnesete težo kolesarja in kolesa (V [newtonih], masa pomnoži s gravitacijskim pospeškom!)

Celoten fizikalni del tega je verjetno preveč zapleten in tudi sam se ne spomnim, kaj točno počne, vendar izračunam potreben navor, da kolesarja potegnem navkreber ali kaj podobnega (zato kalibracija).

Ti parametri so zelo subjektivni, zato jih morate nastaviti po nekaj vožnjah, da bodo pravilno delovali.

Vrata COM za odpravljanje napak pošiljajo neposredne binarne podatke, ki jih sprejme bluetooth, v narekovajih ('') in simulacijske podatke.

Konfigurator

Ker se je izkazalo, da je konfiguracija domnevno realistične fizike velika težava, da bi se počutila realistično, sem ustvaril konfigurator grafičnega vmesnika, ki bi uporabnikom omogočil grafično opredelitev funkcije, ki se pretvori iz stopnice hriba v raven absolutnega upora. Ni še popolnoma dokončan in nisem ga imel možnosti preizkusiti, v naslednjem mesecu pa bom predelal še eno kolo, zato ga bom potem poliral.

Na zavihku "Gears" lahko s premikanjem drsnikov nastavite razmerje vsake prestave. Nato morate kopirati bit kode, da zamenjate definirane zobnike v kodi.

Na zavihku "Ocena" dobite graf linearne funkcije (ja, izkazalo se je, da je najbolj sovražen predmet v matematiki dejansko uporaben), ki vzame oceno (navpična os) in prikaže korake absolutnega upora (vodoravna os). Za zainteresirane bom šel malo kasneje.

Uporabnik lahko to funkcijo opredeli z dvema točkama, ki ležita na njej. Na desni je prostor za menjavo trenutne prestave. Izbrana prestava, kot si lahko predstavljate, spremeni način, kako se stopnje preslikajo v upor - pri nižjih prestavah je lažje pedalirati navkreber. Premikanje drsnika spremeni 2. koeficient, ki vpliva na to, kako izbrana prestava spremeni funkcijo. Z njim se je najlažje nekaj časa poigrati in videti, kako se obnaša. Morda boste morali poskusiti tudi z nekaj različnimi nastavitvami, da ugotovite, kaj vam najbolj ustreza.

Napisano je bilo v Pythonu 3 in bi moralo delovati s privzetimi knjižnicami. Če ga želite uporabiti, morate razkomentirati vrstice takoj za "odkomentirajte te vrstice za uporabo konfiguratorja". Kot sem rekel, ni bil preizkušen, zato bi lahko prišlo do napak, če pa se kaj pojavi, napišite komentar ali odprite težavo, da ga lahko popravim.

Matematika (in fizika)

Edini način, kako lahko krmilnik naredi občutek, da greste navzgor, je, da zavrtite uporni vijak. Oceno moramo pretvoriti v število vrtljajev. Za lažjo nastavitev je celoten razpon od popolnoma ohlapnega do tega, da ne morete obrniti ročice, razdeljen na 40 korakov, enako se uporablja v načinu ERG, vendar tokrat namesto celih števil uporablja resnične številke. To naredite s preprosto funkcijo zemljevida - poiščete jo lahko v kodi. Zdaj smo korak višje - namesto da bi se ukvarjali z vrtljaji vijaka, se ukvarjamo z namišljenimi koraki.

Kako torej dejansko deluje, ko greš s kolesom navzgor (ob predpostavki konstantne hitrosti)? Očitno mora obstajati neka sila, ki te bo pritisnila navzgor, sicer se boš spustil navzdol. Ta sila, kot nam pravi prvi zakon gibanja, mora biti po velikosti enaka, a po smeri nasprotna sili, ki vas potegne navzdol, da boste lahko v enotnem gibanju. Prihaja zaradi trenja med kolesom in podlago, in če narišete diagram teh sil, mora biti enak teži kolesa in kolesar, ki je pomnožen z oceno:

F = Fg*G

Kaj je tisto, zaradi česar kolo uporablja to silo? Ker imamo opravka z zobniki in kolesi, je lažje razmišljati o navoru, ki je preprosto sila, ki meri polmer:

t = F*R

Ker sodelujejo zobniki, na ročico prenesete navor, ki potegne verigo in zavrti kolo. Navor, potreben za obračanje kolesa, se pomnoži z prestavnim razmerjem:

tp = tw*gr

in nazaj iz formule navora dobimo silo, potrebno za obračanje pedala

Fp = tp/r

To je nekaj, kar lahko izmerimo z merilnikom moči v ročici. Ker je dinamično trenje linearno povezano s silo in ker to kolo uporablja vzmeti za prenos te sile, je linearno glede na gibanje vijaka.

Moč je sila, ki spreminja hitrost (ob enaki smeri vektorjev)

P = F*V

linearna hitrost pedala je povezana s kotno hitrostjo:

V = ω*r

in tako lahko izračunamo silo, potrebno za obračanje stopalk na nastavljeno stopnjo upora. Ker je vse linearno povezano, lahko za to uporabimo proporcije.

To je v bistvu tisto, kar je programska oprema morala izračunati med kalibracijo in z uporabo krožnega načina, da bi dobili zapleteno kompozitno, vendar linearno funkcijo, ki se nanaša na stopnjo odpornosti. Vse sem zapisal na papir, izračunal končno enačbo in vse konstante so postale trije koeficienti.

To je tehnično 3D -funkcija, ki predstavlja ravnino (mislim, da) upošteva oceno in prestavno razmerje kot argumente, ti trije koeficienti pa so povezani s tistimi, ki so potrebni za opredelitev ravnine, a ker so prestave diskretne številke, je bilo lažje naj bo parameter, namesto da bi se ukvarjal s projekcijami in podobnim. Prvi in tretji koeficient je mogoče določiti z eno vrstico in (-1)* drugi koeficient je koordinata X točke, kjer se črta "vrti" naokoli pri menjavi prestav.

V tej vizualizaciji so argumenti predstavljeni z navpično črto, vrednosti pa z vodoravno, in vem, da je to lahko nadležno, vendar je bilo zame bolj intuitivno in se je bolje prilegalo grafičnemu vmesniku. Verjetno je to razlog, zakaj ekonomisti tako narišejo svoje grafikone.

5. korak: Končaj

Zdaj potrebujete nekaj aplikacij, s katerimi se lahko vozite na svojem novem trenerju (kar vam je prihranilo okoli 900 USD:)). Tu so moja mnenja o nekaterih od njih.

  • RGT Cycling - po mojem mnenju najboljši - ima popolnoma brezplačno možnost, vendar ima malo skladb. Najbolje se ukvarja s povezovalnim delom, saj se vaš telefon poveže prek bluetootha, računalnik pa prikaže skladbo. Uporablja realističen video s kolesarjem AR
  • Rouvy - veliko skladb, samo plačljiva naročnina, iz nekega razloga aplikacija za računalnik s tem ne deluje, morate uporabiti telefon. Lahko pride do težav, ko vaš prenosnik uporablja isto kartico za bluetooth in WiFi, pogosto zaostaja in se ne želi naložiti
  • Zwift - animirana igra, samo plačljiva, deluje zelo dobro s trenerjem, vendar je uporabniški vmesnik precej primitiven - zaganjalnik uporablja Internet Explorer za prikaz menija.

Če vam je bila izdelava všeč (ali ne), mi to povejte v komentarjih in če imate kakršna koli vprašanja, jih lahko postavite tukaj ali pošljete težavo githubu. Z veseljem bom vse razložil, saj je precej zapleteno.

Priporočena: