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, Decembar
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 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:

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

Alati:

  1. Lemilica i lemljenje
  2. Odstupanje od najlonskog šesterokutnog odstojnika
  3. Set preciznih odvijača
  4. 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

  1. Donji sloj povezuje motore i ima montažne tačke za modul pokretača 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č

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

Ožičenje
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:

  1. Postavite I i D pojam na 0
  2. Držeći robota, podesite P tako da robot samo počne oscilirati oko položaja ravnoteže
  3. 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
  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 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: