Indholdsfortegnelse:

Selvbalancerende robot - PID -kontrolalgoritme: 3 trin
Selvbalancerende robot - PID -kontrolalgoritme: 3 trin

Video: Selvbalancerende robot - PID -kontrolalgoritme: 3 trin

Video: Selvbalancerende robot - PID -kontrolalgoritme: 3 trin
Video: regbot balance intro 2024, November
Anonim
Selvbalancerende robot - PID -kontrolalgoritme
Selvbalancerende robot - PID -kontrolalgoritme

Dette projekt blev udtænkt, fordi jeg var interesseret i at lære mere om kontrolalgoritmer og hvordan man effektivt implementerer funktionelle PID -sløjfer. Projektet er stadig i udviklingsfasen, da der endnu ikke skal tilføjes et Bluetooth -modul, som giver mulighed for kontrol over robotten fra en Bluetooth -aktiveret smartphone.

De anvendte N20 DC -motorer var relativt billige og har derfor et betydeligt spil i dem. Dette fører til et lille ryk, da motorerne overvinder 'slakken', da det påfører drejningsmoment på hjulene. Derfor er det næsten umuligt at opnå perfekt jævn bevægelse. Koden, jeg har skrevet, er rimelig enkel, men demonstrerer effektivt PID -algoritmens muligheder.

Projektoversigt:

Robotens chassis er 3D-printet ved hjælp af en Ender 3-printer og er designet til at trykke sammen.

Robotten styres af en Arduino Uno, der tager sensordata fra MPU6050 og styrer DC -motorerne gennem en ekstern motordriver. Det kører på et 7,4V, 1500mAh batteri. Motorføreren regulerer dette til 5V for at drive Arduino og leverer 7,4V til motorerne.

Softwaren blev skrevet fra bunden ved hjælp af bibliotekerne 'Arduino-KalmanFilter-master' og 'Arduino-MPU6050-master' fra gitHub.

Tilbehør:

  • 3D -trykte dele
  • Arduino UNO
  • MPU6050 6-akset sensor
  • D. C motor driver
  • N20 DC motorer (x2)
  • 9V batteri

Trin 1: Robotbygning

Robotbyggeri
Robotbyggeri
Robotbyggeri
Robotbyggeri
Robotbyggeri
Robotbyggeri

Print og samling

Hele konstruktionen skal være pressefit, men jeg har brugt superlim til at sikre komponenterne for at sikre, at robotten er helt stiv, når den balancerer.

Jeg har designet delene i Fusion 360 og har optimeret hver del til at udskrive uden understøtninger for at muliggøre strammere tolerancer og en renere overfladefinish.

Indstillinger, der blev brugt på Ender 3 -printeren var: 0,16 mm laghøjder @ 40% fyldning for alle dele.

Trin 2: 3D Print Robot

3D print robot
3D print robot

Chassis (x1)

Venstre hjul (x2)

Venstre motorhus (x2)

Arduino etui (x1)

Trin 3: PID -kontrolalgoritme

PID -kontrolalgoritme
PID -kontrolalgoritme

Jeg har skrevet en PID-kontrolalgoritme fra bunden ved hjælp af bibliotekerne 'Arduino-KalmanFilter-master' og 'Arduino-MPU6050-master' fra gitHub.

Forudsætningen for algoritmen er som følger:

  • Læs rådata fra MPU6050
  • Brug Kalman -filter til at analysere data fra både gyroskop og accelerometer for at annullere unøjagtigheder i gyroskopaflæsninger på grund af acceleration af sensoren. Dette returnerer en relativt udjævnet værdi for sensorens tonehøjde i grader til to decimaler.
  • Beregn Error i vinklen, dvs.: Vinklen mellem sensoren og setpunktet.
  • Beregn proportionalfejl som (konstant af proportionalitet x fejl).
  • Beregn integralfejl som driftssummen for (konstant af integration x fejl).
  • Beregn afledt fejl som konstant som [(differentieringskonstant) x (ændring i fejl / ændring i tid)]
  • Sum alle fejl for at give den hastighedsoutput, der skal sendes til motorer.
  • Beregn hvilken retning motorerne skal drejes baseret på tegn på fejlvinklen.
  • Sløjfen kører på ubestemt tid og bygger på output, da input varierer. Det er en feedback loop, der bruger output værdierne som de nye input værdier for den næste iteration.

Det sidste trin er at Tune PID loop Kp, Ki & Kd parametre.

  1. Et godt udgangspunkt er langsomt at øge Kp, indtil robotten oscillerer omkring balancepunktet og kan fange et fald.
  2. Start derefter Kd med omkring 1% af værdien af Kp og øg langsomt, indtil svingningerne forsvinder, og robotten glider jævnt, når den skubbes.
  3. Start til sidst med Ki omkring 20% af Kp og varier, indtil robotten "overskyder" setpunktet for aktivt at fange et fald og vende tilbage til lodret.

Anbefalede: