Sisällysluettelo:

Kaksipyöräinen itsetasapainottava robotti: 7 vaihetta
Kaksipyöräinen itsetasapainottava robotti: 7 vaihetta

Video: Kaksipyöräinen itsetasapainottava robotti: 7 vaihetta

Video: Kaksipyöräinen itsetasapainottava robotti: 7 vaihetta
Video: Pyjamasankarit Suomi - Kollin kaksipyöräinen ihme - Lasten Piirretyt 2024, Marraskuu
Anonim
Kaksipyöräinen itsetasapainottava robotti
Kaksipyöräinen itsetasapainottava robotti

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:

  1. Arduino Pro Mini 3.3V 8 ja 8 Mhz ATMEGA328
  2. FT232RL 3.3V 5.5V FTDI USB -TTL -sarjasovitinmoduuli
  3. GY-521-moduuli, jossa MPU-6050
  4. Pari N20 -vaihteistomoottoria 6V - 300 rpm
  5. L298N moottorin kuljettaja
  6. LM2596S DC -DC -buck -muunnin
  7. Akku (ladattava 9,7 V: n litiumioniakku)
  8. Akun hihna
  9. Kaksi prototyyppistä piirilevyä
  10. Uros- ja naaraspuoliset otsatapit hyppyjohtimet

Työkalut:

  1. Juotin ja juote
  2. Nylon hex -välikappale
  3. Tarkka ruuvimeisselisarja
  4. 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

  1. Alempi kerros yhdistää moottorit ja siinä on kiinnityspisteet moottorin ohjainmoduulille L298N
  2. Seuraavassa kerroksessa on prototyyppikortti, johon on liitetty Arduino pro mini ja otsikot
  3. Kolmas kerros kiinnittää IMU: n
  4. 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

Johdotus
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:

  1. Aseta termi I ja D arvoon 0
  2. Pidä kiinni robotista ja säädä P niin, että robotti alkaa juuri värähdellä vaaka -asennosta
  3. 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
  4. 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: