Sadržaj:
- Pribor
- Korak 1: Izgradnja
- Korak 2: Ožičenje
- Korak 3: Teorija kontrole
- Korak 4: Korištenje MPU 6050
- Korak 5: Kodiranje
- Korak 6: Postupak podešavanja PID -a
- Korak 7: Zaključak
Video: Samobalansirajući robot na dva kotača: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:32
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:
- Arduino Pro Mini 3.3V 8 sa 8 Mhz ATMEGA328
- FT232RL 3.3V 5.5V FTDI Modul serijskog adaptera USB na TTL
- Modul GY-521 s MPU-6050
- Par N20 mikro zupčaničkog motora 6V - 300rpm
- Vozač motora L298N
- LM2596S Pretvarač istosmjernog u istosmjerni napon
- Baterija (punjiva litij-ionska baterija od 9,7 V)
- Remen za bateriju
- Dvije prototipne ploče za tiskane ploče
- Žice za spajanje muških i ženskih zaglavlja
Alati:
- Lemilica i lemljenje
- Odstupanje od najlonskog šesterokutnog razmaka
- Set preciznih odvijača
- 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
- Donji sloj povezuje motore i ima montažne točke za modul pogona motora L298N
- Sljedeći sloj sadrži prototipnu ploču s Arduino pro mini i zaglavljima zalemljenim na nju
- Treći sloj postavlja IMU
- 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
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:
- Postavite pojam I i D na 0
- Držeći robota, podesite P tako da robot samo počne oscilirati oko položaja ravnoteže
- 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
- 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:
Samobalansirajući robot - PID kontrolni algoritam: 3 koraka
Self Balancing Robot - PID Control Algorithm: Ovaj je projekt zamišljen jer me zanimalo saznati više o upravljačkim algoritmima i kako učinkovito implementirati funkcionalne PID petlje. Projekt je još uvijek u fazi razvoja jer se Bluetooth modul tek treba dodati što će omogućiti
Samobalansirajući robot iz Magicbita: 6 koraka
Samobalansirajući robot iz Magicbita: Ovaj vodič prikazuje kako napraviti samo balansirajućeg robota pomoću Magicbit dev ploče. Koristimo magicbit kao razvojnu ploču u ovom projektu koji se temelji na ESP32. Stoga se u ovom projektu može koristiti bilo koja razvojna ploča ESP32
Proyecto Laboratorio De Mecatrónica (Robot za ravnotežu na dva kotača): 6 koraka
Proyecto Laboratorio De Mecatrónica (Robot za ravnotežu na dva kotača): En este proyecto se mostrara, el funcionamiento y el como hacer para elaborar un " Robot za ravnotežu na dva kotača " paso a paso y con explicación y concejos. Este es un sistem que consiste en que el robot no se debe caer, se debe de mantener en el
Jednostavna automatizirana željeznička linija od dva do dva vlaka: 13 koraka (sa slikama)
Jednostavni automatizirani model željeznice od točke do točke koja vozi s dva vlaka: Arduino mikrokontroleri odličan su način za automatiziranje rasporeda modela željeznica zbog svoje jeftine dostupnosti, hardvera i softvera otvorenog koda te velike zajednice koja vam može pomoći. Za modele željeznica, Arduino mikrokontroleri mogu se pokazati kao gr
Robot za balansiranje / Robot na 3 kotača / STEM robot: 8 koraka
Robot za balansiranje / Robot na tri kotača / STEM robot: Izgradili smo kombiniranog robota za balansiranje i 3 kotača za obrazovnu uporabu u školama i posliješkolskim obrazovnim programima. Robot se temelji na Arduino Uno, prilagođenom štitu (svi detalji o konstrukciji navedeni), bateriji Li -Ion baterije (sve izgrađene