Sisukord:

Isetasakaalustav robot - PID -juhtimisalgoritm: 3 sammu
Isetasakaalustav robot - PID -juhtimisalgoritm: 3 sammu

Video: Isetasakaalustav robot - PID -juhtimisalgoritm: 3 sammu

Video: Isetasakaalustav robot - PID -juhtimisalgoritm: 3 sammu
Video: Как использовать акселерометр и гироскоп MPU-6050 с кодом Arduino 2024, November
Anonim
Isetasakaalustav robot - PID -juhtimisalgoritm
Isetasakaalustav robot - PID -juhtimisalgoritm

See projekt loodi, kuna olin huvitatud rohkem juhtimisalgoritmide tundmaõppimisest ja funktsionaalsete PID -ahelate tõhusast rakendamisest. Projekt on alles arendusfaasis, kuna Bluetooth -moodul on veel lisamata, mis võimaldab robotit juhtida Bluetooth -toega nutitelefonist.

Kasutatud N20 alalisvoolumootorid olid suhteliselt odavad ja seetõttu on neil märkimisväärne mäng. See toob kaasa väikese tõmbluse, kuna mootorid ületavad "lõtku", kuna see rakendab ratastele pöördemomenti. Seega on peaaegu võimatu saavutada täiesti sujuvat liikumist. Minu kirjutatud kood on suhteliselt lihtne, kuid demonstreerib tõhusalt PID -algoritmi võimalusi.

Projekti kokkuvõte:

Roboti šassii on 3D-trükitud, kasutades Ender 3 printerit ja see on mõeldud kokku pressimiseks.

Robotit juhib Arduino Uno, mis võtab MPU6050 andurite andmed ja juhib alalisvoolumootoreid välise mootoridraiveri kaudu. See töötab 7,4 V, 1500 mAh akuga. Mootorijuht reguleerib seda Arduino toiteks 5 V -ni ja toidab mootoreid 7,4 V -ga.

Tarkvara kirjutati nullist gitHubi raamatukogude Arduino-KalmanFilter-master ja Arduino-MPU6050-master abil.

Tarvikud:

  • 3D trükitud osad
  • Arduino UNO
  • MPU6050 6-teljeline andur
  • DC mootorijuht
  • N20 DC mootorid (x2)
  • 9V aku

Samm: robotite ehitamine

Roboti ehitamine
Roboti ehitamine
Roboti ehitamine
Roboti ehitamine
Roboti ehitamine
Roboti ehitamine

Trükkimine ja kokkupanek

Kogu konstruktsioon peaks olema pressitud, kuid komponentide kinnitamiseks olen kasutanud superliimi, et robot oleks tasakaalustamisel täiesti jäik.

Olen projekteerinud osad Fusion 360 -s ja optimeerinud iga osa ilma toeta printimiseks, et võimaldada rangemaid tolerantse ja puhtamat pinnaviimistlust.

Ender 3 printeris kasutati järgmisi sätteid: 0,16 mm kihi kõrgused ja kõigi osade täitmine 40%.

Samm: 3D -printimisrobot

3D -printimisrobot
3D -printimisrobot

Šassii (x1)

Vasak ratas (x2)

Vasak mootorikorpus (x2)

Arduino ümbris (x1)

3. samm: PID -i juhtimisalgoritm

PID juhtimisalgoritm
PID juhtimisalgoritm

Olen nullist kirjutanud PID-juhtimisalgoritmi, kasutades gitHubi raamatukogusid 'Arduino-KalmanFilter-master' ja 'Arduino-MPU6050-master'.

Algoritmi eeldus on järgmine:

  • Lugege lähteandmeid MPU6050 -st
  • Kasutage Kalmani filtrit, et analüüsida nii güroskoobi kui ka kiirendusmõõturi andmeid, et kõrvaldada güroskoobi näitude ebatäpsused anduri kiirenduse tõttu. See tagastab anduri sammu suhteliselt silutud väärtuse kraadides kahe kümnendkoha täpsusega.
  • Arvutage E rror nurga all, st: nurk anduri ja seadepunkti vahel.
  • Arvutage proportsionaalne viga järgmiselt (Proportsionaalsuse konstant x viga).
  • Arvutage integraalviga (Integratsiooni konstant x viga) jooksva summana.
  • Arvuta tuletusviga konstantsena kui [(diferentseerimiskonstant) x (vea muutus / aja muutus)]
  • Summeerige kõik vead, et anda mootoritele saadetav kiiruse väljund.
  • Arvutage veanurga märgi põhjal, millises suunas mootoreid pöörata.
  • Tsükkel töötab lõputult ja põhineb väljundil, kuna sisend varieerub. See on tagasisideahel, mis kasutab väljundväärtusi uue sisendväärtusena järgmiseks iteratsiooniks.

Viimane samm on häälestada PID -ahela Kp, Ki & Kd parameetrid.

  1. Hea lähtepunkt on aeglaselt suurendada Kp -d, kuni robot võngub tasakaalupunkti ümber ja suudab kukkuda.
  2. Seejärel alustage Kd umbes 1% Kp väärtusest ja suurendage aeglaselt, kuni võnkumised kaovad ja robot libiseb tõrgeteta.
  3. Lõpuks alustage Ki -ga umbes 20% Kp -st ja muutke, kuni robot "ületab" seadepunkti, et aktiivselt kukkumist tabada ja naasta vertikaali.

Soovitan: