Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Rakentaminen
- Vaihe 2: Johdotus
- Vaihe 3: Ohjausteoria
- Vaihe 4: MPU 6050: n käyttö
- Vaihe 5: Koodaus
- Vaihe 6: PID -viritys
- Vaihe 7: Päätelmä
Video: Kaksipyöräinen itsetasapainottava robotti: 7 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 08:59
Tämä opas käy läpi itsetasapainottavan robotin suunnittelun ja rakentamisen. Huomautuksena haluan vain todeta, että itsetasapainottavat robotit eivät ole uusi konsepti ja että muut ovat rakentaneet ja dokumentoineet ne. Haluan käyttää tätä tilaisuutta ja jakaa kanssani tulkintani tästä robotista.
Mikä on itsetasapainottava robotti?
Itsetasapainottava robotti on järjestelmä, joka käyttää inertiaalisia mittaustietoja, jotka on kerätty sisäisestä anturista, säätääkseen jatkuvasti asentoaan pysyäkseen pystyssä.
Kuinka se toimii?
Yksinkertainen vertailukohta on käänteinen heiluri. Kun massakeskus on kääntöpisteen yläpuolella. Meidän tapauksessamme kuitenkin rajoitamme heiluria yhteen vapausasteeseen, koska meillä on yksi pyörimisakseli, meidän tapauksessamme kahden pyörän pyörimisakseli. Koska kaikenlaiset häiriöt aiheuttavat robotin putoamisen, tarvitsemme tavan pitää robotti aktiivisesti tasapainossa. Tässä tulee meidän suljetun silmukan algoritmimme (PID-ohjain), tietäen mihin suuntaan robotti putoaa, voimme säätää moottorien pyörimissuuntaa pitämään järjestelmän tasapainossa.
Miten suljetun silmukan algoritmi toimii?
Robotin tasapainottamisen perusperiaate on, että jos robotti putoaa eteenpäin, se kompensoi siirtämällä robotin pohjaa eteenpäin saadakseen itsensä kiinni ja pysyäkseen siten pystysuorassa. Samoin jos robotti putoaa taaksepäin, se kompensoi sitä siirtämällä robotin pohjaa taaksepäin saadakseen itsensä kiinni.
Joten meidän on tehtävä kaksi asiaa täällä, ensinnäkin meidän on laskettava robotin kaltevuuskulma (rulla) ja seurauksena meidän on hallittava moottorien pyörimissuuntaa.
Miten mittaamme kallistuskulman?
Kaltevuuskulman mittaamiseksi käytämme inertiaalista mittausyksikköä. Nämä moduulit sisältävät kiihtyvyysanturin ja gyroskoopin.
- Kiihtyvyysmittari on sähkömagneettinen laite, joka mittaa oikean kiihtyvyyden, tämä on kehon kiihtyvyys hetkellisessä lepokehyksessä.
- Gyroskooppi on sähkömekaaninen laite, joka mittaa kulmanopeuden ja jota käytetään laitteen suunnan määrittämiseen.
Tällaisten antureiden käytön ongelma on kuitenkin seuraava:
- Kiihtyvyysmittari on erittäin meluisa, mutta tasainen ajan myötä, kulma vaihtelee äkillisten vaakasuorien liikkeiden mukaan
- Gyroskoopin arvo sen sijaan ajautuu ajan myötä, mutta aluksi se on melko tarkka
Tämän ohjeen vuoksi en aio ottaa käyttöön suodatinta sen sijaan, että käytän sisäistä digitaalista liikeprosessointia (DMP). Toiset ovat käyttäneet täydentävää suodatinta saadakseen tasaisen signaalin, voit valita haluamasi menetelmän. robotti tasapainottaa kumman tahansa toteutuksen kanssa.
Tarvikkeet
Osat:
- Arduino Pro Mini 3.3V 8 ja 8 Mhz ATMEGA328
- FT232RL 3.3V 5.5V FTDI USB -TTL -sarjasovitinmoduuli
- GY-521-moduuli, jossa MPU-6050
- Pari N20 -vaihteistomoottoria 6V - 300 rpm
- L298N moottorin kuljettaja
- LM2596S DC -DC -buck -muunnin
- Akku (ladattava 9,7 V: n litiumioniakku)
- Akun hihna
- Kaksi prototyyppistä piirilevyä
- Uros- ja naaraspuoliset otsatapit hyppyjohtimet
Työkalut:
- Juotin ja juote
- Nylon hex -välikappale
- Tarkka ruuvimeisselisarja
- 3D tulostin
Vaihe 1: Rakentaminen
Koska minulla oli pääsy 3D -tulostimeen, päätin tulostaa rungon 3D -muodossa ja yhdistää kaikki toisiinsa standoffien avulla.
Robotti koostuu 4 kerroksesta
- Alempi kerros yhdistää moottorit ja siinä on kiinnityspisteet moottorin ohjainmoduulille L298N
- Seuraavassa kerroksessa on prototyyppikortti, johon on liitetty Arduino pro mini ja otsikot
- Kolmas kerros kiinnittää IMU: n
- Ylempi kerros, jota kutsun "puskurikerrokseksi", pitää akun, buck -muuntimen ja rahakytkimen
Pääsuunnitteluperiaatteeni oli pitää kaikki modulaarisena. Syynä tähän oli se, että jos jokin komponenteista meni pieleen, voin helposti vaihtaa sen tai jos tarvitsen komponentin toiseen projektiin, voin ottaa sen helposti ilman huolta siitä, etten voi käyttää järjestelmää uudelleen.
Vaihe 2: Johdotus
Juotin joitain naaraspuolisia otsikkopintejä perf-boardiin, jotta ne sopisivat yhteen Arduino pro mini -otsikkotappien kanssa. Tämän jälkeen juotin urospuolisen otsikon nastat levylle, jotta pääsy I/O: hon. Loput komponentit asennettiin 3D -tulostettuun kehykseen ja liitettiin hyppyjohtimilla.
Vaihe 3: Ohjausteoria
Nyt siirrymme projektin ytimeen. Jotta robotti pysyisi tasapainossa, meidän on luotava sopiva ohjaussignaali moottorien käyttämiseksi oikeaan suuntaan ja oikealla nopeudella, jotta robotti pysyy tasapainossa ja vakaana. Tätä varten käytämme suosittua ohjaussilmukan algoritmia, joka tunnetaan nimellä PID -ohjain. Kuten lyhenne viittaa siihen, että tälle ohjaimelle on kolme termiä, nämä ovat suhteellisia, integraalisia ja johdannaisia termejä. Jokaisessa niistä on kertoimet, jotka määrittävät niiden vaikutuksen järjestelmään. Usein aikaa vievin osa ohjaimen toteutuksessa on kunkin ainutlaatuisen järjestelmän vahvistusten säätäminen optimaalisen vastauksen saamiseksi.
- Suhteellinen termi kertoo suoraan virheestä, jolloin saadaan tulos, joten mitä suurempi virhe, sitä suurempi vastaus
- Integraalitermi tuottaa virheen kertymiseen perustuvan vastauksen vakaan tilan virheen vähentämiseksi. Mitä kauemmin järjestelmä on epätasapainossa, sitä nopeammin moottorit reagoivat
- Johdannaistermi on johdannainen virheestä, jota käytetään ennustamaan tulevaa vastetta, ja näin se vähentää vakaan tilan ylityksen aiheuttamaa värähtelyä.
Tämän algoritmin perusperiaate on laskea jatkuvasti kaltevuuskulma, joka on halutun sijainnin ja nykyisen sijainnin välinen ero, tätä kutsutaan virheeksi. Sitten se käyttää näitä virhearvoja ja laskee suhteellisten, integraalisten ja johdannaisvasteiden summan saadakseen ulostulon, joka on moottoreille lähetettävät ohjaussignaalit. Tämän seurauksena, jos virhe on suuri, moottoreille lähetetty ohjaussignaali pyörii moottoreita suurella nopeudella tasapainoisen tilan saavuttamiseksi. Samoin, jos virhe on pieni, ohjaussignaali pyörii moottoreita hitaasti, jotta robotti pysyy tasapainossa.
Vaihe 4: MPU 6050: n käyttö
MPU6050 -kirjasto
github.com/jrowberg/i2cdevlib/tree/master/…
Siirtymien kalibrointi Kaikki anturit eivät ole toistensa tarkkoja kopioita. Tämän seurauksena, jos testaat kahta MPU 6050 -laitetta, saatat saada eri arvot kiihtyvyysanturille ja gyroskoopille, kun ne asetetaan paikalleen samalla pinnalla. Tämän jatkuvan kulmapoikkeaman voittamiseksi meidän on juhlittava jokaista käyttämäämme anturia. Tämän komentosarjan suorittaminen:
www.i2cdevlib.com/forums/topic/96-arduino-…
kirjoittanut Luis Rodenas, saamme offsetit. Siirtymävirheet voidaan poistaa määrittämällä siirtymäarvot setup () - rutiinissa.
Digitaalisen liikeprosessorin käyttäminen
MPU6050 sisältää DMP: n (Digital Motion Processor).
Mikä on DMP? Voit ajatella DMP: tä sisäisenä mikro-ohjaimena, joka käsittelee monimutkaisen liikkeen 3-akselisesta gyroskoopista ja 3-akselisesta kiihtyvyysmittarista mpu6050: ssä käyttämällä omia liikefuusioalgoritmejaan. Poistetaan käsittely, jonka Arduino muuten tekisi
Kuinka käyttää sitä? Selvittääksesi kuinka käyttää DMP: tä, käy läpi esimerkkiluonnos MPU6050_DMP6, joka toimitetaan MPU6050-kirjaston mukana (Arduino IDE: Tiedosto-> Esimerkki-> MPU6050-> MPU6050_DMP6). Tämä on myös hyvä tilaisuus tarkistaa, että anturi todella toimii ja johdotus on oikein
Vaihe 5: Koodaus
Käytin Arduino IDE: tä ja FTDI -käyttöliittymää Arduino pro minin ohjelmointiin.
Käyttämällä MPU6050 -kirjaston mukana tulevaa esimerkkiluonnosta (MPU6050_DMP6) peruskoodina lisäsin PID () - ja MotorDriver () -toiminnot.
Lisää kirjasto
- MPU6050: Jotta voisimme käyttää MPU6050 -anturia, meidän on ladattava I2C -kehittäjäkirjasto Jeff Rowbergilta ja lisättävä se Arduino -kirjastoon, joka löytyy tietokoneen ohjelmatiedostoista.
- Johto: Tarvitsemme myös Wire -kirjaston, jotta voimme kommunikoida I2C -laitteiden kanssa.
Pseudo -koodi
Sisällytä kirjastot:
- Johto. H
- MPU6050
- I2Cdev.h
Alusta muuttujat, vakiot ja objektit
Perustaa ()
- Aseta nastainen tila moottoreiden ohjaamiseen
- Aseta pin -tila tila -LEDille
- Alusta MPU6050 ja aseta siirtymäarvot
PID ()
Laske PID -arvo
MotorDriver (PID -vaste)
Käytä PID -arvoa moottorien nopeuden ja suunnan säätämiseen
Silmukka ()
- Hae tietoja DMP: ltä
- Kutsu PID () MotorDriver () -toimintoihin
Vaihe 6: PID -viritys
Tämä on hankalin vaihe, ja vaatii hieman kärsivällisyyttä, ellei sinulla ole onnea. Tässä on vaiheet:
- Aseta termi I ja D arvoon 0
- Pidä kiinni robotista ja säädä P niin, että robotti alkaa juuri värähdellä vaaka -asennosta
- Kun P on asetettu, lisää I -arvoa, jotta robotti kiihtyy nopeammin, kun se on epätasapainossa. Kun P ja I on viritetty oikein, robotin pitäisi pystyä tasapainottumaan vähintään muutaman sekunnin ajan ja heilahtamaan
- Lopuksi lisää D vähentää värähtelyä
Jos ensimmäinen yritys ei anna tyydyttäviä tuloksia, toista vaiheet eri P-arvolla. Huomaa myös, että voit hienosäätää PID-arvoja myöhemmin parantaaksesi suorituskykyä entisestään. Tässä olevat arvot riippuvat laitteistosta. Älä ihmettele, jos saat erittäin suuria tai hyvin pieniä PID -arvoja.
Vaihe 7: Päätelmä
Käytetyt mikrovaihteistomoottorit reagoivat hitaasti suuriin häiriöihin, ja koska järjestelmä oli liian kevyt, hitaus ei riittänyt halutun heilurivaikutuksen saavuttamiseen, joten jos robotti nojaa eteenpäin, se vain nojaisi kulmassa ja ajaisi eteenpäin. Lopuksi 3D -tulostetut pyörät olivat huono valinta, koska ne luisuvat jatkuvasti.
Parannusehdotuksia:
- Nopeammat moottorit, joilla on suurempi vääntömomentti, eli tasavirtamoottoreilla on suurempi jännite, sitä suurempi vääntömomentti
- hanki raskaampi akku tai siirrä massaa hieman korkeammalle
- Vaihda 3D -tulostetut pyörät kumipyörille saadaksesi paremman pidon
Suositeltava:
Itsetasapainottava robotti - PID -ohjausalgoritmi: 3 vaihetta
Itsetasapainottava robotti - PID -ohjausalgoritmi: Tämä projekti suunniteltiin, koska olin kiinnostunut oppimaan lisää ohjausalgoritmeista ja siitä, kuinka tehokkaasti toteuttaa toiminnallisia PID -silmukoita. Hanke on vielä kehitysvaiheessa, koska Bluetooth -moduulia ei ole vielä lisätty, mikä
Itsetasapainottava robotti Magicbitista: 6 vaihetta
Magicbitin itsetasapainottava robotti: Tämä opetusohjelma näyttää, kuinka tehdä itsetasapainottava robotti Magicbit dev -levyn avulla. Käytämme magicbitia kehityskorttina tässä projektissa, joka perustuu ESP32: een. Siksi mitä tahansa ESP32 -kehityskorttia voidaan käyttää tässä projektissa
HeadBot-itsetasapainottava robotti STEM-oppimiseen ja ulottuvuuteen: 7 vaihetta (kuvilla)
HeadBot-itsetasapainottava robotti STEM-oppimiseen ja ulottuvuuteen: Headbot-kahden jalan korkea, itsetasapainottava robotti-on South Eugene Robotics Teamin (SERT, FRC 2521), ensimäisen kilpailukykyisen lukion robotiikkaryhmän, aivopohja. Robotikilpailu, Eugene, Oregon. Tämä suosittu avustusrobotti tekee
2 -pyöräinen itsetasapainottava robotti: 4 vaihetta
2-pyöräinen itsetasapainotusrobotti: Minun vaatimaton näkemykseni mukaan et ole todellinen Maker, ellet rakenna omaa 2-pyöräistä itsepalautusrobottiasi.:-Joten tässä se on … ja mikä tärkeintä, se toimii !!! Tämä projekti näyttää hyvin yksinkertaiselta. Sen sijaan se vaatii hyvää tietämystä
Itsetasapainottava robotti käyttäen PID -algoritmia (STM MC): 9 vaihetta
Itsetasapainottava robotti PID -algoritmin (STM MC) avulla: Viime aikoina on tehty paljon töitä esineiden itsetasapainottamisessa. Itsetasapainon käsite alkoi käänteisen heilurin tasapainottamisesta. Tämä käsite ulottui myös lentokoneiden suunnitteluun. Tässä projektissa olemme suunnitelleet pienen modin