Kazalo:

Dvokolesni samo uravnoteževalni robot: 7 korakov
Dvokolesni samo uravnoteževalni robot: 7 korakov

Video: Dvokolesni samo uravnoteževalni robot: 7 korakov

Video: Dvokolesni samo uravnoteževalni robot: 7 korakov
Video: Обида_Рассказ_Слушать 2024, November
Anonim
Dvokolesni samo uravnoteževalni robot
Dvokolesni samo uravnoteževalni robot

Ta navodila bodo šla skozi postopek načrtovanja in izdelave samo uravnoteženega robota. Kot opombo želim samo povedati, da samo uravnotežujoči se roboti niso nov koncept in so jih zgradili in dokumentirali drugi. To priložnost želim izkoristiti, da z vami delim svojo interpretacijo tega robota.

Kaj je samo uravnoteževalni robot?

Rob za samo uravnoteženje je sistem, ki uporablja inercialne merilne podatke, zbrane iz vgrajenega senzorja, za stalno prilagajanje svojega položaja, da ostane pokonci.

Kako deluje?

Preprosto analogijo, ki jo je treba upoštevati, je obrnjeno nihalo. Kjer je središče mase nad vrtilno točko. Vendar v našem primeru nihalo omejujemo na 1 stopnjo svobode tako, da imamo eno os vrtenja, v našem primeru os vrtenja obeh koles. Ker bo zaradi kakršnih koli motenj robot padel, potrebujemo metodo za aktivno ohranjanje ravnotežja robota. Tu nastopi naš algoritem z zaprto zanko (PID krmilnik), saj vemo, v katero smer pada naš robot, lahko prilagodimo smer vrtenja motorjev, da bo sistem uravnotežen.

Kako deluje algoritem z zaprto zanko?

Osnovno načelo ohranjanja ravnotežja robota je, da če robot pade naprej, bo to kompenziral s premikom dna robota naprej, da se ujame in zato ostane navpičen. Podobno, če robot pade nazaj, bo to kompenziral s premikanjem dna robota nazaj, da se ujame.

Torej, tukaj moramo narediti dve stvari, najprej moramo izračunati kot nagiba (Roll), ki ga robot doživlja, in posledično moramo nadzorovati smer vrtenja motorjev.

Kako bomo merili kot nagiba?

Za merjenje nagibnega kota bomo uporabili enoto za inercialno merjenje. Ti moduli vključujejo merilnik pospeška in žiroskop.

  • Merilnik pospeška je elektromagnetna naprava, ki meri ustrezen pospešek, to je pospešek telesa v okvirju trenutnega počitka.
  • Žiroskop je elektromehanska naprava, ki meri kotno hitrost in se uporablja za določanje orientacije naprave.

Težava pri uporabi takšnih senzorjev pa je ta:

  • Merilnik pospeška je zelo hrupen, vendar je s časom dosleden, kot se spreminja z nenadnimi vodoravnimi premiki
  • Vrednost žiroskopa pa se bo sčasoma spreminjala, vendar je sprva precej natančna

Za to navodilo ne bom uporabil filtra, namesto da bom uporabil vgrajeno digitalno obdelavo gibanja (DMP). Drugi so uporabili komplementarni filter za nemoten signal, lahko izberete katero koli metodo, ki vam je všeč. saj robot uravnava obe izvedbi.

Zaloge

Deli:

  1. Arduino Pro Mini 3.3V 8 z 8 Mhz ATMEGA328
  2. FT232RL 3.3V 5.5V FTDI Modul serijskega vmesnika USB v TTL
  3. Modul GY-521 z MPU-6050
  4. Par mikrozobniškega motorja N20 6V - 300rpm
  5. Gonilnik motorja L298N
  6. LM2596S pretvornik enosmernega v enosmerni tok
  7. Baterija (9.7V polnilna litij-ionska baterija)
  8. Trak za baterije
  9. Dve prototipni vezji PCB
  10. Moški in ženski zatiči za glavo

Orodja:

  1. Spajkalnik in spajkanje
  2. Najlon šesterokotni distančnik
  3. Komplet preciznih izvijačev
  4. 3D tiskalnik

1. korak: Gradnja

Ker sem imel dostop do 3D tiskalnika, sem se odločil, da 3D natisnem ohišje in uporabim stojala, da povežem vse skupaj.

Robot je sestavljen iz 4 plasti

  1. Spodnja plast povezuje motorje in ima pritrdilne točke za modul gonilnika motorja L298N
  2. Naslednja plast vsebuje prototipno ploščo z Arduino pro mini in nanjo spajkane glave
  3. Tretji sloj pritrdi IMU
  4. Zgornji sloj, ki mu pravim "odbijač", nosi baterijo, pretvornik denarja in denarno stikalo

Moje glavno načelo oblikovanja je bilo, da je vse modularno. Razlog za to je bil, če je šlo kaj narobe z eno od komponent, ki jo lahko enostavno zamenjam ali če potrebujem komponento za drug projekt, jo lahko enostavno vzamem, ne da bi skrbel, da sistema ne bom več mogel uporabljati.

2. korak: Ožičenje

Ožičenje
Ožičenje

Na prvo ploščo sem spajkal nekaj pintov ženskih glav, da se ujemajo z zatiči za glavo Arduino pro mini. Po tem sem na ploščo spajkala moške zatiče glave, ki omogočajo dostop do V/I. Preostale komponente so bile nameščene na 3D -tiskani okvir in povezane z mostičnimi žicami.

3. korak: Teorija nadzora

Zdaj gremo k jedru projekta. Da bi bil robot uravnotežen, moramo ustvariti ustrezen krmilni signal, da motorje poganja v pravo smer in s pravo hitrostjo, da bo robot uravnotežen in stabilen. Za to bomo uporabili priljubljen algoritem krmilne zanke, znan kot PID krmilnik. Kot kratica kaže, da obstajajo trije izrazi tega krmilnika, to so sorazmerni, integralni in izpeljani izrazi. Vsakega od njih spremljajo koeficienti, ki določajo njihov vpliv na sistem. Pogosto najbolj zamuden del implementacije krmilnika je uglaševanje dobičkov za vsak edinstven sistem, da bi dobili najbolj optimalen odziv.

  • Sorazmerni izraz neposredno pomnoži napako, da dobimo rezultat, zato je večja napaka večji odziv
  • Integralni izraz ustvari odziv na podlagi kopičenja napake za zmanjšanje napake v stanju dinamičnega ravnovesja. Dlje ko je sistem neuravnotežen, hitreje se bodo motorji odzvali
  • Izpeljani izraz je izpeljanka napake, ki se uporablja za napovedovanje prihodnjega odziva in pri tem zmanjšuje nihanje zaradi preseganja stanja dinamičnega ravnovesja.

Osnovno načelo tega algoritma je nenehno izračunavanje kota nagiba, ki je razlika med želenim položajem in trenutnim položajem, kar je znano kot napaka. Nato uporabi te vrednosti napak in izračuna vsoto sorazmernih, integralnih in izvedenih odzivov, da dobi izhod, ki je krmilni signal, ki se pošlje na motorje. Če bo napaka velika, bo krmilni signal, ki se pošlje na motorje, vrtel motorje z veliko hitrostjo, da pridejo v uravnoteženo stanje. Podobno, če je napaka majhna, bo krmilni signal vrtil motorje pri nizki hitrosti, da bo robot uravnotežen.

4. korak: Uporaba MPU 6050

Knjižnica MPU6050

github.com/jrowberg/i2cdevlib/tree/master/…

Umerjanje odmikov Vsi senzorji niso natančne replike drug drugega. Če preizkusite dva MPU 6050, lahko dobite različne vrednosti za merilnik pospeška in žiroskop, če ste mirno postavljeni na isto površino. Za premagovanje tega stalnega odmika kota moramo proslaviti vsak senzor, ki ga uporabljamo. Izvajanje tega skripta:

www.i2cdevlib.com/forums/topic/96-arduino-…

ki ga je napisal Luis Rodenas, bomo dobili odmike. Napake pri odmiku je mogoče odpraviti z definiranjem vrednosti odmika v rutini setup ().

Uporaba digitalnega procesorja gibanja

MPU6050 vsebuje DMP (digitalni procesor gibanja).

Kaj je DMP? DMP si lahko predstavljate kot vgrajen mikrokrmilnik, ki obdeluje kompleksno gibanje iz 3-osnega žiroskopa in 3-osnega merilnika pospeška na krovu mpu6050 z uporabo lastnih algoritmov fuzije gibanja. Raztovarjanje obdelave, ki bi jo sicer izvedel Arduino

Kako ga uporabljati? Če želite ugotoviti, kako uporabljati DMP, si oglejte primer skice MPU6050_DMP6, ki je priložena knjižnici MPU6050 (v Arduino IDE: Datoteka-> Primer-> MPU6050-> MPU6050_DMP6). To je tudi dobra priložnost, da preverite, ali vaš senzor deluje in ali je ožičenje pravilno

5. korak: Kodiranje

Za programiranje Arduino pro mini sem uporabil Arduino IDE in vmesnik FTDI.

Z uporabo vzorčne skice (MPU6050_DMP6), ki je priložena knjižnici MPU6050, sem kot osnovno kodo dodal funkcije PID () in MotorDriver ().

Dodajte knjižnico

  • MPU6050: Za uporabo senzorja MPU6050 bomo morali prenesti knjižnico razvijalcev I2C od Jeffa Rowberga in jo dodati v mapo »knjižnice« Arduino v programskih datotekah v računalniku.
  • Wire: Potrebujemo tudi knjižnico Wire, ki nam omogoča komunikacijo z napravami I2C.

Psevdo koda

Vključi knjižnice:

  • Wire.h
  • MPU6050
  • I2Cdev.h

Inicializirajte spremenljivke, konstante in objekte

Nastaviti ()

  • Nastavite pin način za krmiljenje motorjev
  • Nastavite način pin za LED stanja
  • Inicializirajte MPU6050 in nastavite vrednosti odmika

PID ()

Izračunajte vrednost PID

MotorDriver (odziv PID)

Za nadzor hitrosti in smeri motorjev uporabite vrednost PID

Zanka ()

  • Pridobite podatke iz DMP
  • Pokličite PID () kot funkcijo MotorDriver ()

Korak 6: Postopek uravnavanja PID

To je najbolj dolgočasen del projekta in zahteva malo potrpljenja, razen če imate veliko srečo. Tu so koraki:

  1. Izraz I in D nastavite na 0
  2. Če držite robota, nastavite P tako, da bo robot začel nihati glede na položaj ravnotežja
  3. Ko je nastavljen P, povečajte I, da robot hitreje pospeši, ko ni v ravnovesju. Ko sta P in I pravilno nastavljena, bi moral biti robot sposoben vsaj nekaj sekund samo uravnotežiti z nekaj nihanja
  4. Končno povečanje D zmanjša nihanje

Če prvi poskus ne daje zadovoljivih rezultatov, ponovite korake z drugo vrednostjo P. Upoštevajte tudi, da lahko pozneje natančno prilagodite vrednosti PID, da še povečate učinkovitost. Tu so vrednosti odvisne od strojne opreme, ne bodite presenečeni, če dobite zelo velike ali zelo majhne vrednosti PID.

7. korak: Zaključek

Uporabljeni mikro gonilni motorji so se počasi odzivali na velike motnje in ker je bil sistem preveč lahek, ni bilo dovolj vztrajnosti, da bi dosegel želeni učinek nihala, zato bi se, če bi se robot nagnil naprej, le nagnil pod kotom in tekel naprej. Končno so bila 3D tiskana kolesa slaba izbira, saj nenehno zdrsnejo.

Predlogi za izboljšanje:

  • Hitrejši motorji z večjim navorom, to je pri enosmernih motorjih višja nazivna napetost, večji navor
  • vzemite težjo baterijo ali pa samo premaknite maso nekoliko višje
  • Za večji oprijem zamenjajte 3D tiskana kolesa z gumijastimi

Priporočena: