Kazalo:

Samoizravnalni robot - PID nadzorni algoritem: 3 koraki
Samoizravnalni robot - PID nadzorni algoritem: 3 koraki

Video: Samoizravnalni robot - PID nadzorni algoritem: 3 koraki

Video: Samoizravnalni robot - PID nadzorni algoritem: 3 koraki
Video: Автоматическая кормушка для кошек и собак. Автокормушка Automatic Pet Feeder 4PLDH5001 с таймером. 2024, December
Anonim
Self -Balancing Robot - PID Control Algorithm
Self -Balancing Robot - PID Control Algorithm

Ta projekt je bil zasnovan, ker me je zanimalo več o kontrolnih algoritmih in o tem, kako učinkovito implementirati funkcionalne zanke PID. Projekt je še v fazi razvoja, saj bo še dodan modul Bluetooth, ki bo omogočal nadzor nad robotom s pametnega telefona, ki podpira Bluetooth.

Uporabljeni enosmerni motorji N20 so bili razmeroma poceni in imajo zato veliko prostora. To vodi do majhnega sunka, saj motorji premagajo "ohlapnost", saj navor nanese na kolesa. Zato je nemogoče doseči popolnoma gladko gibanje. Koda, ki sem jo napisal, je dokaj preprosta, vendar učinkovito dokazuje zmogljivosti algoritma PID.

Povzetek projekta:

Ohišje robota je 3D-tiskano s tiskalnikom Ender 3 in je zasnovano tako, da se stisne skupaj.

Robota upravlja Arduino Uno, ki vzame podatke senzorjev iz MPU6050 in krmili enosmerne motorje preko zunanjega gonilnika motorja. Poganja ga baterija 7,4 V, 1500 mAh. Voznik motorja to regulira na 5V za napajanje Arduina in napaja motorje 7.4V.

Programska oprema je bila napisana iz nič s pomočjo knjižnic 'Arduino-KalmanFilter-master' in 'Arduino-MPU6050-master' iz gitHub-a.

Zaloge:

  • 3D natisnjeni deli
  • Arduino UNO
  • 6-osni senzor MPU6050
  • DC voznik motorja
  • N20 DC motorji (x2)
  • 9V baterija

1. korak: Robot Build

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

Tiskanje in sestavljanje

Celotna konstrukcija bi morala biti pritrjena, vendar sem uporabil superlepilo za pritrditev komponent, da bi zagotovil, da je robot pri uravnoteženju popolnoma tog.

Deli sem oblikoval v Fusion 360 in vsak del optimiziral za tiskanje brez podpor, kar omogoča strožje tolerance in čistejšo površino.

Nastavitve, uporabljene na tiskalniku Ender 3, so bile: 0,16 mm višine plasti pri 40% polnitvi za vse dele.

Korak: Robot za 3D tiskanje

Robot za 3D tiskanje
Robot za 3D tiskanje

Podvozje (x1)

Levo kolo (x2)

Levo ohišje motorja (x2)

Arduino etui (x1)

3. korak: Algoritem nadzora PID

Algoritem nadzora PID
Algoritem nadzora PID

Algoritem nadzora PID sem napisal iz nič z uporabo knjižnic 'Arduino-KalmanFilter-master' in 'Arduino-MPU6050-master' iz gitHub-a.

Predpostavka algoritma je naslednja:

  • Preberite neobdelane podatke iz MPU6050
  • S Kalmanovim filtrom analizirajte podatke iz žiroskopa in merilnika pospeška, da prekličete napake v odčitkih žiroskopa zaradi pospeška senzorja. To vrne sorazmerno zglajeno vrednost nagiba senzorja v stopinjah na dve decimalni mesti.
  • Izračunajte napako v kotu, tj.: kot med senzorjem in nastavljeno vrednostjo.
  • Izračunajte proporcionalno napako kot (konstanta sorazmernosti x napaka).
  • Izračunajte integralno napako kot tekočo vsoto (konstanta integracije x napaka).
  • Izračunaj napako pri izpeljavi kot konstanto kot [(razlika konstante) x (sprememba napake / sprememba časa)]
  • Seštejte vse napake, da dobite izhodno hitrost, ki jo želite poslati motorjem.
  • Izračunajte, v katero smer zavrtite motorje na podlagi znaka kota napake.
  • Zanka bo delovala v nedogled in se bo spreminjala glede na vhod. To je povratna zanka, ki uporablja izhodne vrednosti kot nove vhodne vrednosti za naslednjo iteracijo.

Zadnji korak je nastavitev parametrov Kp, Ki & Kd zanke PID.

  1. Dobro izhodišče je, da počasi povečujete Kp, dokler robot ne zaniha okoli ravnotežne točke in lahko ujame padec.
  2. Nato zaženite Kd pri približno 1% vrednosti Kp in počasi naraščajte, dokler nihanja ne izginejo in robot pri pritisku gladko drsi.
  3. Končno začnite s Ki okoli 20% Kp in se spreminjajte, dokler robot "ne preseže" nastavljene vrednosti, da aktivno ujame padec in se vrne v navpično smer.

Priporočena: