Sadržaj:

Samobalansirajući robot - PID kontrolni algoritam: 3 koraka
Samobalansirajući robot - PID kontrolni algoritam: 3 koraka

Video: Samobalansirajući robot - PID kontrolni algoritam: 3 koraka

Video: Samobalansirajući robot - PID kontrolni algoritam: 3 koraka
Video: Overview of Syncopal Disorders 2024, Studeni
Anonim
Samo balansirajući robot - PID kontrolni algoritam
Samo balansirajući robot - PID kontrolni algoritam

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 kontrolu nad robotom s pametnog telefona s omogućenim Bluetoothom.

Korišteni istosmjerni motori N20 bili su relativno jeftini i stoga imaju znatnu količinu igre. To dovodi do male količine trzanja jer motori prevladavaju "popuštanje" jer primjenjuje okretni moment na kotače. Stoga je gotovo nemoguće postići savršeno glatko kretanje. Kod koji sam napisao razumno je jednostavan, ali učinkovito pokazuje sposobnosti PID algoritma.

Sažetak projekta:

Podvozje robota 3D je tiskano pomoću pisača Ender 3 i dizajnirano je za međusobno uklapanje.

Robotom upravlja Arduino Uno koji uzima senzorske podatke iz MPU6050 i kontrolira istosmjerne motore putem vanjskog upravljačkog programa motora. Radi na 7,4V, 1500mAh bateriji. Vozač motora to regulira na 5V za napajanje Arduina i napaja 7.4V motore.

Softver je napisan od nule uz pomoć biblioteka 'Arduino-KalmanFilter-master' i 'Arduino-MPU6050-master' iz gitHub-a.

Pribor:

  • 3D ispisani dijelovi
  • Arduino UNO
  • MPU6050 6-osni osjetnik
  • DC vozač motora
  • N20 DC motori (x2)
  • 9V baterija

Korak 1: Izrada robota

Robot Build
Robot Build
Robot Build
Robot Build
Robot Build
Robot Build

Ispis i montaža

Cijela konstrukcija trebala bi biti uklopljena pritiskom, ali koristio sam super ljepilo za pričvršćivanje komponenti kako bi robot bio potpuno čvrst pri balansiranju.

Dizajnirao sam dijelove u Fusion 360 i optimizirao svaki dio za ispis bez nosača kako bi se omogućila stroža odstupanja i čistija površina.

Postavke korištene na pisaču Ender 3 bile su: 0,16 mm visine slojeva @ 40% ispune za sve dijelove.

Korak 2: Robot za 3D ispis

Robot za 3D ispis
Robot za 3D ispis

Šasija (x1)

Lijevi kotač (x2)

Lijevo kućište motora (x2)

Arduino kućište (x1)

Korak 3: Algoritam PID kontrole

Algoritam PID kontrole
Algoritam PID kontrole

Napisao sam PID kontrolni algoritam od nule koristeći biblioteke 'Arduino-KalmanFilter-master' i 'Arduino-MPU6050-master' iz gitHub-a.

Pretpostavka Algoritma je sljedeća:

  • Očitajte neobrađene podatke s MPU6050
  • Upotrijebite Kalmanov filter za analizu podataka i sa žiroskopa i sa akcelerometra kako biste poništili netočnosti u očitanjima žiroskopa zbog ubrzanja senzora. Time se vraća relativno zaglađena vrijednost koraka senzora u stupnjevima na dvije decimale.
  • Izračunajte grešku u kutu, tj.: kut između senzora i zadane vrijednosti.
  • Izračunajte proporcionalnu pogrešku kao (Konstanta proporcionalnosti x pogreška).
  • Izračunajte integralnu pogrešku kao tekući zbroj (konstanta integracije x pogreška).
  • Izračunaj pogrešku izvedenice kao konstantu kao [(Diferencijalna konstanta) x (Promjena pogreške / Promjena vremena)]
  • Zbrojite sve pogreške kako biste dobili izlaznu brzinu koja se šalje motorima.
  • Izračunajte smjer okretanja motora na temelju predznaka kuta pogreške.
  • Petlja će raditi neograničeno dugo i nadograđivati se na izlazu kako ulaz varira. To je povratna sprega, koja koristi izlazne vrijednosti kao nove ulazne vrijednosti za sljedeću iteraciju.

Posljednji korak je podešavanje parametara Kp, Ki & Kd PID petlje.

  1. Dobro polazište je polako povećavati Kp sve dok robot ne oscilira oko točke ravnoteže i ne uhvati pad.
  2. Zatim pokrenite Kd na oko 1% vrijednosti Kp i polako povećavajte dok oscilacije ne nestanu i robot glatko klizi kad se pritisne.
  3. Konačno, počnite s Ki oko 20% Kp i mijenjajte se sve dok robot "ne prekorači" zadanu vrijednost kako bi aktivno uhvatio pad i vratio se u okomicu.

Preporučeni: