Sadržaj:
- Supplies
- Korak 1: Izgradnja
- Korak 2: Ožičenje
- Korak 3: Teorija kontrole
- Korak 4: Upotreba 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 izmjena: 2024-01-30 08:04
Ova instrukcija će proći kroz proces projektiranja i izgradnje samobalansirajućeg robota. Kao napomenu, samo želim reći da samobalansirajući roboti nisu novi koncept i da su ih drugi izgradili i dokumentirali. Želim iskoristiti ovu priliku da s vama podijelim svoje tumačenje ovog robota.
Šta je samobalansirajući robot?
Samobalansirajući robot je sistem koji koristi inercijalne mjerne podatke, prikupljene od ugrađenog senzora, za stalno prilagođavanje svog položaja kako bi ostao uspravan.
Kako to radi?
Jednostavnu analogiju koju treba razmotriti je obrnuto klatno. Gdje je centar mase iznad tačke zakretanja. Međutim, u našem slučaju ograničavamo klatno na 1 stepen slobode tako što imamo jednu osu rotacije, u našem slučaju osu rotacije dva točka. Budući da će zbog bilo kakvog poremećaja robot pasti, potrebna nam je metoda aktivnog održavanja ravnoteže robota. Ovdje se javlja naš algoritam zatvorene petlje (PID kontroler), znajući u kojem smjeru naš robot pada možemo prilagoditi smjer rotacije naših motora kako bi sistem bio uravnotežen.
Kako funkcionira algoritam zatvorene petlje?
Osnovni princip održavanja ravnoteže robota je, ako robot pada prema 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 inercijalnu mjernu jedinicu. Ovi moduli uključuju akcelerometar i žiroskop.
- Akcelerometar je elektromagnetski uređaj koji mjeri odgovarajuće ubrzanje, ovo je ubrzanje tijela u okviru za trenutni 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 dosljedan s vremenom, kut varira s naglim horizontalnim pokretima
- S druge strane, vrijednost žiroskopa će se mijenjati s vremenom, ali u početku je prilično točna
Za ovu instrukciju neću implementirati filter, umjesto toga ću koristiti ugrađenu Digital Motion Processing (DMP). Drugi su koristili komplementarni filter za dobijanje glatkog signala, možete odabrati koju god metodu želite. pošto robot balansira s bilo kojom implementacijom.
Supplies
Dijelovi:
- Arduino Pro Mini 3.3V 8 sa ATMEGA328 od 8 Mhz
- FT232RL 3.3V 5.5V FTDI Modul serijskog adaptera USB na TTL
- GY-521 modul sa MPU-6050
- Par mikro zupčastih motora N20 6V - 300rpm
- Vozač motora L298N
- LM2596S Pretvarač istosmjernog u istosmjerni napon
- Baterija (punjiva litijum-jonska baterija od 9,7 V)
- Traka za bateriju
- Dve prototipirane štampane ploče
- Žice za spajanje muških i ženskih zaglavlja
Alati:
- Lemilica i lemljenje
- Odstupanje od najlonskog šesterokutnog odstojnika
- Set preciznih odvijača
- 3D štampač
Korak 1: Izgradnja
S obzirom da sam imao pristup 3D štampaču, odlučio sam da 3D štampam šasiju i upotrebim prekidače da povežem sve zajedno.
Robot se sastoji od 4 sloja
- Donji sloj povezuje motore i ima montažne tačke za modul pokretača 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č
Moj glavni princip dizajna bio je da sve bude 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 drugi projekt, mogu je lako uzeti bez brige da više neću moći koristiti sustav.
Korak 2: Ožičenje
Lemio sam neke pinte ženskog zaglavlja na perf-ploču kako bi se slagao sa Arduino pro mini zaglavljima zaglavlja. Nakon toga, lemio sam muške zaglavlje na ploči kako bih omogućio pristup U/I. Ostatak komponenti montiran je na 3D štampani 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 kontrolne petlje poznat kao PID kontroler. Kao što akronim sugeriše da postoje tri izraza za ovaj kontroler, to su proporcionalni, integralni i izvedeni termini. Svaki od njih popraćen je koeficijentima koji određuju njihov utjecaj na sistem. Često dio implementacije kontrolera koji oduzima najviše vremena je podešavanje dobitaka za svaki jedinstveni sistem kako bi se dobio najoptimalniji odgovor.
- Proporcionalni izraz direktno množi grešku da bi dao izlaz, pa što je veća greška, to je veći odgovor
- Integralni pojam generiše odgovor na osnovu akumulacije greške radi smanjenja stacionarne greške. Što je sistem duže neuravnotežen, motor će brzo reagovati
- Izvedeni izraz je izvedenica greške koja se koristi za predviđanje budućeg odgovora i na taj način 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 greška. Zatim koristi ove vrijednosti greške i izračunava zbroj proporcionalnih, integralnih i izvedenih odgovora kako bi dobio izlaz, a to su upravljački signali koji se šalju na motore. Kao rezultat toga, ako je greška velika, upravljački signal koji se šalje motorima rotirat će motore velikom brzinom kako bi došli do uravnoteženog stanja. Slično, ako je greška mala, upravljački signal će rotirati motore male brzine kako bi robot bio uravnotežen.
Korak 4: Upotreba MPU 6050
Biblioteka 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 konstantan pomak ugla, moramo slaviti svaki senzor koji koristimo. Pokretanje ove skripte:
www.i2cdevlib.com/forums/topic/96-arduino-…
napisao Luis Rodenas, dobit ćemo pomake. Greške pomaka mogu se ukloniti definiranjem vrijednosti pomaka u rutini setup ().
Korištenje digitalnog procesora pokreta
MPU6050 sadrži DMP (digitalni procesor kretanja).
Šta 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 algoritme fuzije kretanja. Istovariti obradu koju bi inače obavio Arduino
Kako ga koristiti? Da biste shvatili kako koristiti DMP, prođite kroz 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 funkcionira li vaš senzor 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: Da bismo koristili MPU6050 senzor, morat ćemo preuzeti Je2 Rowberg biblioteku za razvojne programere I2C i dodati je u Arduino fasciklu „biblioteke“koja se nalazi u programskim datotekama na vašem računaru.
- Wire: Također nam je potrebna i Wire knjižnica koja nam omogućava komunikaciju s I2C uređajima.
Pseudo kod
Uključite biblioteke:
- Wire.h
- MPU6050
- I2Cdev.h
Inicirajte 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 PID vrijednost
MotorDriver (PID odgovor)
Koristite PID vrijednost za kontrolu brzine i smjera motora
Petlja ()
- Nabavite podatke iz DMP -a
- Pozovite PID () kao funkciju 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 I i D pojam na 0
- Držeći robota, podesite P tako da robot samo počne oscilirati oko položaja ravnoteže
- Sa postavljenim P, povećajte I tako da robot brže ubrzava kada nije u ravnoteži. S pravilnim podešavanjem P i I, robot bi trebao biti u stanju da se uravnoteži barem nekoliko sekundi, uz određenu oscilaciju
- 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 kasnije možete fino podesiti PID vrijednosti, 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
Korišteni motori sa malim zupčanikom sporo su reagirali na velike smetnje, a s obzirom na to da je sistem bio previše lagan, nije bilo dovoljno inercije da bi se postigao željeni učinak klatna, pa bi se, ako se robot nagne naprijed, samo nagnuo pod kutom i jurio prema naprijed. Konačno, 3D štampani točkovi su loš izbor jer stalno klize.
Prijedlozi za poboljšanje:
- Brži motori s većim okretnim momentom, odnosno za istosmjerne motore veći napon ima veći okretni moment
- nabavite jaču bateriju ili samo pomerite masu malo više
- Zamijenite 3D printane kotače gumenim za bolje prianjanje
Preporučuje se:
Samobalansirajući robot - PID kontrolni algoritam: 3 koraka
Samobalansirajući robot - PID kontrolni algoritam: Ovaj projekt je zamišljen jer sam bio zainteresiran za saznanje više o kontrolnim algoritmima i kako učinkovito implementirati funkcionalne PID petlje. Projekt je još uvijek u fazi razvoja jer Bluetooth modul tek treba biti dodat, što će omogućiti
Samobalansirajući robot iz Magicbita: 6 koraka
Samobalansirajući robot iz Magicbita: Ovaj vodič prikazuje kako napraviti samobalansirajućeg robota koristeći Magicbit dev ploču. 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
HeadBot-samobalansirajući robot za STEM učenje i Outreach: 7 koraka (sa slikama)
HeadBot-samobalansirajući robot za učenje i informiranje o STEM-u: Headbot-robot sa samo balansom visok dva metra-zamisao je tima South Eugene Robotics Team (SERT, FRC 2521), takmičarskog tima za robotiku u srednjim školama Robotics Competition, iz Eugene, Oregon. Ovaj popularni terenski robot čini
Samobalansirajući robot sa 2 kotača: 4 koraka
Robot za samo balansiranje na 2 kotača: Po mom skromnom mišljenju niste pravi tvorac, osim ako ne izgradite svog vlastitog robota za uravnoteženje na 2 kotača. :-) Dakle, evo ga … i, što je najvažnije, radi !!! Ovaj projekt izgleda vrlo jednostavno. Umjesto toga, potreban je dobar nivo znanja o
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 rotiranje na 3 kotača za obrazovnu upotrebu u školama i posliješkolskim obrazovnim programima. Robot je zasnovan na Arduino Uno, prilagođenom štitu (svi detalji o konstrukciji navedeni), Li -Ion bateriji (svi izgrađeni