Sadržaj:

Samobalansirajući robot na dva kotača: 7 koraka
Samobalansirajući robot na dva kotača: 7 koraka

Video: Samobalansirajući robot na dva kotača: 7 koraka

Video: Samobalansirajući robot na dva kotača: 7 koraka
Video: Samobalansirajući mobilni robot - poziv na prezentaciju 2024, Studeni
Anonim
Samobalansirajući robot na dva kotača
Samobalansirajući robot na dva kotača

Ova instrukcija će proći kroz proces projektiranja i izgradnje samobalansirajućeg robota. Kao napomenu, samo želim reći da samo uravnotežujući roboti nisu novi koncept i da su ih drugi izgradili i dokumentirali. Ovom prilikom želim podijeliti s vama svoje tumačenje ovog robota.

Što je samo uravnotežujući robot?

Samobalansirajući robot sustav je koji koristi inercijske podatke mjerenja prikupljene s ugrađenog senzora za stalno prilagođavanje svog položaja kako bi ostao uspravan.

Kako radi?

Jednostavnu analogiju koju treba razmotriti je obrnuti visak. Gdje je središte mase iznad točke zakretanja. Međutim, u našem slučaju ograničavamo njihalo na 1 stupanj slobode tako što imamo jednu os rotacije, u našem slučaju os rotacije dva kotača. Budući da će zbog bilo kakvih smetnji robot pasti, potrebna nam je metoda aktivnog održavanja ravnoteže robota. Ovdje nastupa naš algoritam zatvorene petlje (PID kontroler), znajući u kojem smjeru naš robot pada možemo prilagoditi smjer rotacije naših motora kako bi sustav bio uravnotežen.

Kako funkcionira algoritam zatvorene petlje?

Osnovni princip održavanja ravnoteže robota je, ako robot pada naprijed, to će kompenzirati pomicanjem dna robota prema naprijed kako bi se uhvatio i stoga ostao okomit. Slično, ako robot pada unatrag, to će kompenzirati pomicanjem dna robota unatrag kako bi se uhvatio.

Dakle, ovdje moramo učiniti dvije stvari, prvo, moramo izračunati kut nagiba (Roll) koji robot doživljava i kao rezultat toga, moramo kontrolirati smjer rotacije motora.

Kako ćemo mjeriti kut nagiba?

Za mjerenje kuta nagiba koristit ćemo inercijsku mjernu jedinicu. Ovi moduli uključuju mjerač ubrzanja i žiroskop.

  • Akcelerometar je elektromagnetski uređaj koji mjeri odgovarajuće ubrzanje, ovo je ubrzanje tijela u okviru za trenutačni odmor.
  • Žiroskop je elektromehanički uređaj koji mjeri kutnu brzinu i koristi se za određivanje orijentacije uređaja.

Međutim, problem s korištenjem takvih senzora je sljedeći:

  • Akcelerometar je vrlo bučan, ali je dosljedan tijekom vremena, kut varira s naglim horizontalnim pokretima
  • S druge strane, vrijednost žiroskopa s vremenom će se mijenjati, ali je u početku prilično točna

Za ove upute neću implementirati filtar, već ću koristiti ugrađenu Digital Motion Processing (DMP). Drugi su koristili komplementarni filtar za dobivanje glatkog signala, možete odabrati koju god metodu želite. pošto robot balansira s bilo kojom implementacijom.

Pribor

Dijelovi:

  1. Arduino Pro Mini 3.3V 8 sa 8 Mhz ATMEGA328
  2. FT232RL 3.3V 5.5V FTDI Modul serijskog adaptera USB na TTL
  3. Modul GY-521 s MPU-6050
  4. Par N20 mikro zupčaničkog motora 6V - 300rpm
  5. Vozač motora L298N
  6. LM2596S Pretvarač istosmjernog u istosmjerni napon
  7. Baterija (punjiva litij-ionska baterija od 9,7 V)
  8. Remen za bateriju
  9. Dvije prototipne ploče za tiskane ploče
  10. Žice za spajanje muških i ženskih zaglavlja

Alati:

  1. Lemilica i lemljenje
  2. Odstupanje od najlonskog šesterokutnog razmaka
  3. Set preciznih odvijača
  4. 3D pisač

Korak 1: Izgradnja

Budući da sam imao pristup 3D pisaču, odlučio sam 3D ispisati šasiju i upotrijebiti odstupanja za povezivanje svega zajedno.

Robot se sastoji od 4 sloja

  1. Donji sloj povezuje motore i ima montažne točke za modul pogona motora L298N
  2. Sljedeći sloj sadrži prototipnu ploču s Arduino pro mini i zaglavljima zalemljenim na nju
  3. Treći sloj postavlja IMU
  4. Gornji sloj, koji nazivam "odbojnim slojem", drži bateriju, pretvarač dolara i monetarni prekidač

Moje glavno načelo dizajna bilo je držati sve modularno. Razlog za to bio je ako je nešto pošlo po zlu s jednom od komponenti, lako bih je mogao zamijeniti ili ako mi je trebala komponenta za neki drugi projekt, lako je mogu uzeti bez brige da više neću moći koristiti sustav.

Korak 2: Ožičenje

Ožičenje
Ožičenje

Lemio sam neke pinte ženskih zaglavlja na perf-ploču kako bi se slagao s Arduino pro mini zaglavljima zaglavlja. Nakon toga sam lemio muške zaglavlje na ploči kako bih omogućio pristup U/I. Ostatak komponenti montiran je na 3D ispisani okvir i povezan pomoću kratkospojnih žica.

Korak 3: Teorija kontrole

Sada prelazimo na srž projekta. Kako bi robot bio uravnotežen, moramo generirati odgovarajući upravljački signal za pokretanje motora u ispravnom smjeru i ispravnom brzinom kako bi robot bio uravnotežen i stabilan. Za to ćemo koristiti popularni algoritam upravljačke petlje poznat kao PID regulator. Kao što akronim sugerira da ovom kontroleru postoje tri izraza, to su proporcionalni, integralni i izvedeni pojmovi. Svaki od njih popraćen je koeficijentima koji određuju njihov utjecaj na sustav. Često je dio implementacije kontrolera koji oduzima najviše vremena podešavanje dobitaka za svaki jedinstveni sustav kako bi se dobio najoptimalniji odgovor.

  • Proporcionalni izraz izravno množi pogrešku kako bi dao izlaz, pa što je veća pogreška, to je veći odgovor
  • Integralni pojam generira odgovor na temelju akumulacije pogreške kako bi se smanjila stacionarna pogreška. Što je sustav dulje neuravnotežen, motor će brzo reagirati
  • Izvedeni pojam izvedenica je pogreške koja se koristi za predviđanje budućeg odgovora i pritom smanjuje oscilacije zbog prekoračenja ustaljenog stanja.

Osnovni princip ovog algoritma je kontinuirano izračunavanje kuta nagiba koji predstavlja razliku između željenog položaja i trenutnog položaja, to je poznato kao pogreška. Zatim koristi ove vrijednosti pogreške i izračunava zbroj proporcionalnih, integralnih i izvedenih odgovora kako bi dobio izlaz, a to su upravljački signali koji se šalju motorima. Kao rezultat toga, ako je greška velika, upravljački signal poslan motorima rotirat će motore velikom brzinom kako bi došli do uravnoteženog stanja. Isto tako, ako je pogreška mala, upravljački signal će rotirati motore male brzine kako bi robot ostao uravnotežen.

Korak 4: Korištenje MPU 6050

Knjižnica MPU6050

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

Kalibriranje pomaka Nisu svi senzori međusobno točne replike. Kao rezultat toga, ako isprobate dva MPU 6050, možda ćete dobiti različite vrijednosti za akcelerometar i žiroskop kada su mirno postavljeni na istoj površini. Da bismo prevladali ovaj stalni pomak kuta, moramo slaviti svaki senzor koji koristimo. Pokretanje ove skripte:

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

napisao Luis Rodenas, dobit ćemo pomake. Pogreške pomaka mogu se ukloniti definiranjem vrijednosti pomaka u rutini setup ().

Korištenje digitalnog procesora pokreta

MPU6050 sadrži DMP (digitalni procesor kretanja).

Što je DMP? DMP možete zamisliti kao ugrađeni mikrokontroler koji obrađuje složeno kretanje iz troosnog žiroskopa i troosnog akcelerometra na ploči mpu6050, koristeći vlastite fuzijske algoritme. Istovariti obradu koju bi inače obavio Arduino

Kako ga koristiti? Da biste shvatili kako koristiti DMP, pregledajte primjer skice MPU6050_DMP6 koja dolazi s bibliotekom MPU6050 (u Arduino IDE-u: Datoteka-> Primjer-> MPU6050-> MPU6050_DMP6). Ovo je također dobra prilika da provjerite radi li vaš senzor stvarno radi i je li ožičenje ispravno

Korak 5: Kodiranje

Koristio sam Arduino IDE i FTDI sučelje za programiranje Arduino pro mini.

Koristeći primjer skice (MPU6050_DMP6) koja dolazi s bibliotekom MPU6050 kao moj osnovni kôd, dodao sam funkcije PID () i MotorDriver ().

Dodajte biblioteku

  • MPU6050: Za korištenje senzora MPU6050 morat ćemo preuzeti Je2 Rowberg knjižnicu za razvojne programere I2C i dodati je u mapu "knjižnice" Arduino koja se nalazi u programskim datotekama na vašem računalu.
  • Wire: Također nam je potrebna i Wire knjižnica koja nam omogućuje komunikaciju s I2C uređajima.

Pseudo kod

Uključite knjižnice:

  • Žica.h
  • MPU6050
  • I2Cdev.h

Inicijalizirati varijable, konstante i objekte

Postaviti ()

  • Postavite pin način za upravljanje motorima
  • Postavite pin način rada za LED status
  • Inicirajte MPU6050 i postavite vrijednosti pomaka

PID ()

Izračunajte vrijednost PID -a

MotorDriver (PID odgovor)

Koristite PID vrijednost za kontrolu brzine i smjera motora

Petlja ()

  • Dobijte podatke iz DMP -a
  • Nazovite PID () funkcijom MotorDriver ()

Korak 6: Postupak podešavanja PID -a

Ovo je najdosadniji dio projekta i zahtijeva malo strpljenja osim ako vam se jako posreći. Evo koraka:

  1. Postavite pojam I i D na 0
  2. Držeći robota, podesite P tako da robot samo počne oscilirati oko položaja ravnoteže
  3. S postavljenim P, povećajte I tako da robot brže ubrzava kada nije u ravnoteži. S ispravnim podešavanjem P i I, robot bi trebao moći samostalno balansirati barem nekoliko sekundi, uz određene oscilacije
  4. Konačno, povećanje D smanjuje oscilacije

Ako prvi pokušaj ne daje zadovoljavajuće rezultate, ponovite korake s drugom vrijednošću P. Također imajte na umu da možete naknadno fino podesiti vrijednosti PID-a kako biste dodatno povećali performanse. Vrijednosti ovdje ovise o hardveru, nemojte se iznenaditi ako dobijete vrlo velike ili vrlo male PID vrijednosti.

Korak 7: Zaključak

Motori s mikrozupčanikom koji su se koristili sporo su reagirali na velike smetnje, a s obzirom na to da je sustav bio previše lagan, nije bilo dovoljno inercije da bi se postigao željeni učinak njihala, pa bi se, ako se robot nagne naprijed, samo nagnuo pod kutom i jurio prema naprijed. Konačno, kotači s 3D printom bili su loš izbor jer stalno klize.

Prijedlozi za poboljšanje:

  • Brži motori s većim okretnim momentom, tj. Za istosmjerne motore veći je napon veći okretni moment
  • nabavite jaču bateriju ili samo pomaknite masu malo više
  • Zamijenite kotače s 3D printom gumenim kako biste postigli veću vuču

Preporučeni: