INHOUDSOPGAWE:

Selfbalanserende robot - PID -beheeralgoritme: 3 stappe
Selfbalanserende robot - PID -beheeralgoritme: 3 stappe

Video: Selfbalanserende robot - PID -beheeralgoritme: 3 stappe

Video: Selfbalanserende robot - PID -beheeralgoritme: 3 stappe
Video: Основные ошибки при возведении перегородок из газобетона #5 2024, November
Anonim
Selfbalanserende robot - PID -beheeralgoritme
Selfbalanserende robot - PID -beheeralgoritme

Hierdie projek is bedink omdat ek belangstel om meer te wete te kom oor beheeralgoritmes en hoe om funksionele PID -lusse effektief te implementeer. Die projek is nog in die ontwikkelingsfase, aangesien 'n Bluetooth -module nog nie bygevoeg moet word nie, wat beheer oor die robot moontlik maak vanaf 'n Bluetooth -slimfoon.

Die N20 DC -motors wat gebruik is, was relatief goedkoop en bevat dus 'n aansienlike mate van spel. Dit lei tot 'n klein ruk as die motors die 'slack' oorkom, aangesien dit wringkrag op die wiele toedien. Daarom is dit byna onmoontlik om perfek gladde beweging te verkry. Die kode wat ek geskryf het, is redelik eenvoudig, maar toon effektief die vermoëns van die PID -algoritme aan.

Projekopsomming:

Die onderstel van die robot is 3D-gedruk met 'n Ender 3-drukker en is ontwerp om saam te druk.

Die robot word beheer deur 'n Arduino Uno wat sensordata van die MPU6050 neem en die GS -motors deur 'n eksterne motorbestuurder beheer. Dit werk met 'n 7.4V, 1500mAh battery. Die motorbestuurder reguleer dit na 5V om die Arduino van krag te voorsien en lewer 7,4V aan die motors.

Die sagteware is van nuuts af geskryf met behulp van die biblioteke 'Arduino-KalmanFilter-master' en 'Arduino-MPU6050-master' van gitHub.

Benodighede:

  • 3D -gedrukte onderdele
  • Arduino UNO
  • MPU6050 6-as sensor
  • D. C motorbestuurder
  • N20 DC motore (x2)
  • 9V battery

Stap 1: Robotbou

Robotbou
Robotbou
Robotbou
Robotbou
Robotbou
Robotbou

Druk en monteer

Die hele konstruksie moet pers pas, maar ek het superlijm gebruik om die komponente vas te maak om te verseker dat die robot heeltemal styf is tydens die balansering.

Ek het die onderdele in Fusion 360 ontwerp en elke onderdeel geoptimaliseer om te druk sonder steun om strenger toleransies en 'n skoner oppervlakafwerking moontlik te maak.

Die instellings wat op Ender 3 -drukker gebruik is, was: 0,16 mm laaghoogtes @ 40% invul vir alle dele.

Stap 2: 3D -afdrukrobot

3D -afdruk -robot
3D -afdruk -robot

Onderstel (x1)

Linkerwiel (x2)

Motorhuis links (x2)

Arduino -tas (x1)

Stap 3: PID -beheeralgoritme

PID -beheeralgoritme
PID -beheeralgoritme

Ek het 'n PID-beheeralgoritme van nuuts af geskryf met behulp van die 'Arduino-KalmanFilter-master' en 'Arduino-MPU6050-master' biblioteke van gitHub.

Die uitgangspunt van die algoritme is soos volg:

  • Lees rou data van MPU6050
  • Gebruik Kalman -filter om data van beide die gyroscoop en die versnellingsmeter te ontleed om onakkuraathede in die gyroscooplesings te kanselleer as gevolg van die versnelling van die sensor. Dit gee 'n relatief gladde waarde vir die toonhoogte van die sensor in grade tot twee desimale plekke terug.
  • Bereken die Error in die hoek, dit wil sê: die hoek tussen die sensor en die setpoint.
  • Bereken proporsionele fout as (konstante proporsionaliteit x fout).
  • Bereken die integrale fout as die som van (Konstant van integrasie x fout).
  • Bereken afgeleide fout as konstant as [(differensiasie konstante) x (verandering in fout / verandering in tyd)]
  • Som alle foute op om die snelheidsuitset wat na motors gestuur moet word, te gee.
  • Bereken watter rigting motors moet draai op grond van die teken van die fouthoek.
  • Die lus sal onbepaald loop en voortbou op die uitset namate die insette wissel. Dit is 'n terugvoerlus, wat die uitsetwaardes gebruik as die nuwe insetwaardes vir die volgende iterasie.

Die laaste stap is om die parameters van die PID -lus Kp, Ki & Kd af te stem.

  1. 'N Goeie beginpunt is om Kp stadig te verhoog totdat die robot om die balanspunt ossilleer en kan val.
  2. Begin dan Kd teen ongeveer 1% van die waarde van Kp en verhoog stadig totdat die ossillasies verdwyn en die robot glad gly as dit gestoot word.
  3. Begin laastens met Ki ongeveer 20% van Kp en wissel totdat die robot die setpoint "oorskiet" om aktief te val en terug te keer na vertikaal.

Aanbeveel: