Talaan ng mga Nilalaman:

Self Balancing Robot - Algorithm ng Control ng PID: 3 Mga Hakbang
Self Balancing Robot - Algorithm ng Control ng PID: 3 Mga Hakbang

Video: Self Balancing Robot - Algorithm ng Control ng PID: 3 Mga Hakbang

Video: Self Balancing Robot - Algorithm ng Control ng PID: 3 Mga Hakbang
Video: PID demo 2024, Nobyembre
Anonim
Self Balancing Robot - Algorithm ng Control ng PID
Self Balancing Robot - Algorithm ng Control ng PID

Ang proyektong ito ay naisip dahil interesado akong matuto nang higit pa tungkol sa Mga Control Algorithm at kung paano mabisang ipatupad ang mga functional PID loop. Ang proyekto ay nasa yugto pa rin ng pag-unlad dahil ang isang module ng Bluetooth ay hindi pa maidaragdag na magpapahintulot sa kontrol sa robot mula sa isang smartphone na pinagana ng Bluetooth.

Ang N20 DC na mga motor na ginamit ay medyo mura, at samakatuwid ay mayroong isang malaking halaga ng pag-play sa kanila. Ito ay humahantong sa isang maliit na halaga ng haltak habang ang mga motor ay nagtagumpay sa 'slack' dahil naglalapat ito ng metalikang kuwintas sa mga gulong. Samakatuwid, ito ay susunod sa imposible upang makamit ang perpektong makinis na paggalaw. Ang code na isinulat ko ay makatuwirang simple ngunit mabisang ipinapakita ang mga kakayahan ng PID algorithm.

Buod ng proyekto:

Ang chassis ng robot ay naka-print sa 3D gamit ang isang Ender 3 na printer at idinisenyo upang magkakasama sa pagpindot.

Ang robot ay kinokontrol ng isang Arduino Uno na kumukuha ng data ng sensor mula sa MPU6050 at kinokontrol ang mga DC motor sa pamamagitan ng isang panlabas na driver ng motor. Nagpapatakbo ito ng isang 7.4V, 1500mAh na baterya. Ang motor driver ay kinokontrol ito sa 5V upang mapatakbo ang Arduino at maghahatid ng 7.4V sa mga motor.

Ang software ay isinulat mula sa simula sa tulong ng 'Arduino-KalmanFilter-master' at 'Arduino-MPU6050-master' na mga aklatan mula sa gitHub.

Mga Pantustos:

  • Mga Naka-print na Bahaging 3D
  • Arduino UNO
  • MPU6050 6-Axis Sensor
  • D. C Motor Driver
  • N20 D. C Motors (x2)
  • 9V Baterya

Hakbang 1: Bumuo ng Robot

Bumuo ng Robot
Bumuo ng Robot
Bumuo ng Robot
Bumuo ng Robot
Bumuo ng Robot
Bumuo ng Robot

I-print at Assembly

Ang buong build ay dapat na press-fit ngunit gumamit ako ng superglue upang ma-secure ang mga sangkap upang matiyak na ang robot ay ganap na matigas kapag nagbabalanse.

Dinisenyo ko ang mga bahagi sa Fusion 360 at na-optimize ang bawat bahagi upang mai-print nang walang mga suporta upang payagan ang mas mahigpit na pagpapaubaya at isang mas malinis na tapusin sa ibabaw.

Ang mga setting na ginamit sa Ender 3 Printer ay: 0.16mm Layer Heights @ 40% infill para sa lahat ng mga bahagi.

Hakbang 2: 3D Print Robot

3D Print Robot
3D Print Robot

Chassis (x1)

Kaliwang Gulong (x2)

Kaliwang Pabahay ng Motor (x2)

Kaso ng Arduino (x1)

Hakbang 3: Algorithm ng PID Control

Algorithm ng Control ng PID
Algorithm ng Control ng PID

Nagsulat ako ng isang PID Control Algorithm mula sa simula gamit ang 'Arduino-KalmanFilter-master' at 'Arduino-MPU6050-master' na mga aklatan mula sa gitHub.

Ang saligan ng Algorithm ay ang mga sumusunod:

  • Basahin ang hilaw na data mula sa MPU6050
  • Gumamit ng Kalman Filter upang pag-aralan ang data mula sa parehong Gyroscope at Accelerometer upang kanselahin ang mga pagkakamali sa mga pagbasa ng gyroscope dahil sa pagbilis ng sensor. Ibinabalik nito ang isang medyo smoothed na halaga para sa pitch ng sensor sa degree hanggang dalawang decimal na lugar.
  • Kalkulahin ang E rror sa anggulo, ibig sabihin: Ang anggulo sa pagitan ng sensor at ng setpoint.
  • Kalkulahin ang proportional error bilang (Constant of Proportionality x error).
  • Kalkulahin ang Integral Error bilang tumatakbo na kabuuan ng (Constant of Integration x error).
  • Kalkulahin ang Derivative Error bilang Patuloy bilang [(Constantity ng Pagkakaiba) x (Pagbabago sa error / Pagbabago sa Oras)]
  • Ibigay ang lahat ng mga error upang maibigay ang bilis ng output upang maipadala sa mga motor.
  • Kalkulahin kung aling direksyon ang magpapasara ng mga motor batay sa pag-sign ng anggulo ng error.
  • Tumatakbo ang loop nang walang katiyakan at bumuo sa output habang nag-iiba ang input. Ito ay isang loop ng feedback, gamit ang mga halaga ng output bilang bagong mga halaga ng pag-input para sa susunod na pag-ulit.

Ang pangwakas na Hakbang ay upang Tune ang mga parameter ng PID loop Kp, Ki & Kd.

  1. Ang isang mahusay na panimulang punto ay dahan-dahang taasan ang Kp hanggang sa ang robot ay mag-oscillate sa paligid ng punto ng balanse at mahuli ang isang pagkahulog.
  2. Susunod, simulan ang Kd sa humigit-kumulang na 1% ang halaga ng Kp at dagdagan nang dahan-dahan hanggang sa mawala ang mga oscillation at ang robot ay dumulas ng maayos kapag tinulak.
  3. Panghuli, magsimula sa Ki sa paligid ng 20% ng Kp at mag-iba hanggang sa "overshoots" ng robot ang setpoint upang aktibong mahuli ang isang pagkahulog at bumalik sa patayo.

Inirerekumendang: