Talaan ng mga Nilalaman:

PID Batay sa Linya na Sumusunod sa Robot Sa POLOLU QTR 8RC-sensor Array: 6 na Hakbang (na may Mga Larawan)
PID Batay sa Linya na Sumusunod sa Robot Sa POLOLU QTR 8RC-sensor Array: 6 na Hakbang (na may Mga Larawan)

Video: PID Batay sa Linya na Sumusunod sa Robot Sa POLOLU QTR 8RC-sensor Array: 6 na Hakbang (na may Mga Larawan)

Video: PID Batay sa Linya na Sumusunod sa Robot Sa POLOLU QTR 8RC-sensor Array: 6 na Hakbang (na may Mga Larawan)
Video: КАК НАСТРОИТЬ L4D2 2024, Hulyo
Anonim
PID Batay sa Linya na Sumusunod sa Robot Sa POLOLU QTR 8RC-sensor Array
PID Batay sa Linya na Sumusunod sa Robot Sa POLOLU QTR 8RC-sensor Array

Kamusta!

ito ang aking unang pagsulat sa mga itinuturo, at ngayon ay dadalhin ka namin sa kalsada, at ipaliwanag tungkol sa kung paano i-bulid ang isang linya na batay sa PID sumusunod na robot gamit ang QTR-8RC sensor array.

Bago magpatuloy sa pagbuo ng robot, kailangan nating maunawaan kung ano ang tinatawag na PID,

Hakbang 1: Prinsipyo sa Paggawa

Ano ang PID ??

Ang term na PID ay nangangahulugang proporsyonal, integral, derivative. Kaya simple, kung ano ang ginagawa namin na kinasasangkutan ng PID na may sumusunod na linya ay, nagbibigay kami ng isang utos sa robot na sundin ang linya at upang makita ang mga liko sa pamamagitan ng pagkalkula ng error sa pamamagitan ng pagsasaalang-alang kung paano malayo na ito ay lumipat sa track.

pangunahing mga termino tulad ng nabanggit sa mga dokumento ng polalu

Ang proporsyonal na halaga ay humigit-kumulang na proporsyonal sa posisyon ng iyong robot patungkol sa linya. Iyon ay, kung ang iyong robot ay tiyak na nakasentro sa linya, inaasahan namin ang isang proporsyonal na halaga na eksaktong 0

Itinatala ng integral na halaga ang kasaysayan ng paggalaw ng iyong robot: ito ay isang kabuuan ng lahat ng mga halaga ng proporsyonal na termino na naitala mula nang magsimulang tumakbo ang robot

Ang derivative ay ang rate ng pagbabago ng proporsyonal na halaga

Sa tutorial na ito, pag-uusapan lamang natin ang tungkol sa Kp at mga term ng Kd, gayunpaman, ang mga resulta ay maaaring magawa gamit ang terminong Ki din. Ang mga pagbabasa na nakukuha natin mula sa sensor ay hindi lamang mga pagbasa sa analog kundi pati na rin ang mga posisyong pagbasa ng robot.so karaniwang Ang sensor ay nagbibigay ng mga halaga mula 0 hanggang 2500 mula sa maximum na pagsasalamin hanggang sa pinakamaliit na pagsasalamin, ngunit, sa parehong oras, nagbibigay din ng impormasyon tungkol sa kung gaano kalayo na napalayo ang robot mula sa linya.)

Ngayon kailangan nating isaalang-alang ang term ng error, Ito ang pagkakaiba ng dalawang halaga ng setpoint na halaga at ang kasalukuyang halaga. (Ang halaga ng setpoint ay ang pagbabasa na tumutugma sa "perpektong" paglalagay ng mga sensor sa tuktok ng mga linya. At Ang kasalukuyang Ang halaga ay ang mga instant na pagbabasa ng sensor. Para sa hal: Kung gumagamit ka ng array sensor na ito at gumagamit ng 8 sensor, makakatanggap ka ng isang posisyong pagbabasa ng 3500 kung nakakita ka, sa paligid ng 0 kung malayo ka rin sa kaliwa mula sa ang linya at sa paligid ng 7000 kung ikaw ay masyadong tama.). Ang aming layunin ay gawing zero ang error. Pagkatapos ay maaari lamang ang robot na maayos na sundin ang linya.

Pagkatapos ay dumating ang bahagi ng pagkalkula,.

1) kalkulahin ang error.

Error = Halaga ng Setpoint - Kasalukuyang Halaga = 3500 - posisyon

Tulad ng paggamit ko ng 8 sensor. nagbibigay ang sensor ng isang posisyong pagbabasa ng 3500 kapag ang robot ay perpektong inilagay. Ngayon na nakalkula namin ang aming error, ang margin kung saan ang aming robot ay naaanod sa track, oras na para sa amin upang suriing mabuti ang error at ayusin ang mga bilis ng motor alinsunod dito

2) matukoy ang nababagay na bilis ng mga motor.

MotorSpeed = Kp * Error + Kd * (Error - LastError);

LastError = Error;

RightMotorSpeed = RightBaseSpeed + MotorSpeed;

LeftMotorSpeed = LeftBaseSpeed - MotorSpeed;

Sa lohikal na pagsasalita, ang isang error ng 0 ay nangangahulugang ang aming robot ay nasa kaliwa, na nangangahulugang ang aming robot ay kailangang lumakad nang kaunti, na nangangahulugang, ang tamang motor ay kailangang bumagal at ang kaliwang motor ay kailangang bumilis. ITO ANG PID!

Ang halaga ng MotorSpeed ay natutukoy mula sa equation mismo. Ang RightBaseSpeed at LeftBaseSpeed ay ang mga bilis (anumang halaga ng PWM 0-255) kung saan tumatakbo ang robot kapag ang error ay zero.

Ang code na na-attach ko ay nagsasama rin kung paano suriin ang mga posisyonal na halaga ng sensor, upang mabuksan mo ang serial monitor at mai-upload ang code at makita para sa iyong sarili sa isang linya kung paano paikutin ang mga motor kapag nag-iiba ang posisyon.

Kung nagkakaroon ka ng problema kapag ipinapatupad ang iyong robot, suriin lamang kung at tingnan sa pamamagitan ng pagbabago ng mga palatandaan ng mga equation !!!

At ngayon ang trickest part FINDING Kp AND Kd, kinailangan kong gumastos ng higit sa 1 oras upang ganap na mabago ang aking robot. Sa halip na maglagay ng mga random na halaga ay natagpuan ko ang isang mas madaling pamamaraan upang matukoy ito.

  1. Magsimula sa kp at Kd na katumbas ng 0, at magsimula sa Kp, subukan muna ang pagtatakda ng Kp sa 1 at obserbahan ang robot, ang aming hangarin ay sundin ang linya kahit na ito ay wobbly, kung ang robot ay nag-overhoot at nawala ang linya bawasan ang halaga ng kp.kung ang robot ay hindi maaaring mag-navigate sa isang pagliko at pagiging tamad dagdagan ang halaga ng Kp.
  2. Kapag ang robot ay tila medyo sundin ang linya na ayusin ang halaga ng Kd (Halaga ng Kd> Halaga ng Kp) magsimula mula sa 1 at taasan ang halaga hanggang sa makita mo ang isang makinis na drive na may mas kaunting pag-alog.
  3. Kapag ang robot ay nagsisimulang sundin ang linya, dagdagan ang bilis at tingnan kung makapanatili nito at sundin ang linya.

Tandaan na ang bilis ay may direktang epekto sa pag-tune ng PID at maaaring kailanganin mong mag-retune muli upang maitugma ang bilis ng iyong robot.

Ngayon ay maaari na tayong makapunta sa pagbuo ng aming robot.

Hakbang 2: Ang Build

Ang Build
Ang Build
Ang Build
Ang Build
Ang Build
Ang Build

Arduino atmega 2560 na may USB cable –ito ang pangunahing ginamit na microcontroller.

Chassis- para sa robot chassis Gumamit ako ng 2 pabilog na acrylic plate na ginagamit para sa isa pang proyekto na perpekto para dito. Gamit ang mga nut at turnilyo na binuo ko ng isang 2 storied chassis, upang mailakip ko ang iba pang mga module sa itaas na plato. O maaari mong gamitin ang handa na ginawang magagamit na chassis.

www.ebay.com/itm/2WD-DIY-2-Wheel-Drive-Rou…

Ang mga micrometal gear motor- ang robot ay nangangailangan ng mabilis na umiikot na mga motor upang makaya ang nakagawiang PID, para sa na ginamit ko ang mga motor na na-rate sa 6V 400rpm at angkop na mga grippy wheel.

www.ebay.com/itm/12mm-6V-400RPM-Torque-Gea…

www.ebay.com/itm/HOT-N20-Micro-Gear-Motor-…

Ang array ng sensor ng QTR 8Rc –maaari itong magamit para sa pagsubaybay sa linya, tulad ng nabanggit kanina na sa palagay ko nakakuha ka na ng isang malinaw na pag-unawa sa kung paano patakbuhin ang sensor array na may PID. Ang code ay napaka-simple at gamit ang umiiral na mga library ng arduino magagawa mong upang bumuo ng isang mabilis na tagasunod sa linya.

www.ebay.com/itm/Pololu-QTR-8RC-Reflectanc…

TB6612FNG Motor driver-Nais kong gumamit ng isang driver ng motor na maaaring hawakan ang mga liko at baguhin ang mga direksyon sa isang iglap, na may kakayahang mabisang pagpepreno ng mga motor kapag mababa ang signal ng PWM.

www.ebay.com/itm/Pololu-Dual-DC-Motor-Driv…

Ang baterya ng Lipo- 11.1V na baterya ng lipo ay ginagamit upang magbigay ng lakas sa robot. Kahit na gumamit ako ng isang 11.1 V lipo na baterya, ang kapasidad na ito ay higit pa sa kung ano ang kinakailangan para sa arduino at mga motor.kung makakahanap ka ng isang may timbang na 7.4V lipo baterya o 6V Ni-MH baterya pack ito ay magiging perpekto. dahil sa kadahilanang ito kailangan kong gumamit ng isang buck converter upang ma-convert ang boltahe sa 6V.

11.1V-

7.4 V-

Module ng Buck converter-

Bilang karagdagan sa kailangan mo ng mga jumper wires, nut at bolts, distornilyador at mga electrical tape at gayundin ang mga kurbatang zip upang matiyak na ang lahat ay nasa lugar na.

Hakbang 3: Pagtitipon

Pagtitipon
Pagtitipon
Pagtitipon
Pagtitipon
Pagtitipon
Pagtitipon
Pagtitipon
Pagtitipon

ikabit ang mga motor at isang maliit na caster wheel sa isang plato gamit ang mga nut at screws at pagkatapos ay i-mount ang sensor ng QTR, driver ng motor, board ng arduino at sa wakas ay baterya na ang chassis.

Narito ang isang perpektong diagram na nakita ko sa internet, na nagsasabi sa iyo kung paano dapat gawin ang mga koneksyon.

Hakbang 4: Idisenyo ang Iyong Track sa Linya

Idisenyo ang Iyong Track sa Linya
Idisenyo ang Iyong Track sa Linya

Ngayon ang iyong proyekto ay tila halos tapos na. Bilang para sa huling yugto kailangan mong magkaroon ng isang maliit na arena upang subukan ang iyong robot. Gumamit ako ng isang random na linya ng lapad na 3cm puting linya sa isang itim na background. Siguraduhing na-paste mo nang maayos ang lahat. At sa pansamantala maiiwasan ang 90 degees na mga anggulo ng krus at mga tawiran, sapagkat ito ay isang kumplikadong kaso sa punto ng pag-coding.

Hakbang 5: I-program ang Iyong Code

1. I-download at I-install ang Arduino

Desktop IDE

· Windows -

· Mac OS X -

· Linux -

2. I-download at i-paste ang QTR 8 RC sensor array file sa folder ng Arduino library.

·

· I-paste ang mga file sa path - C: / Arduino / mga aklatan

3. I-download at buksan angLINEFOLLOWING.ino

4. I-upload ang code sa arduino board sa pamamagitan ng isang USB cable

Hakbang 6: TAPOS NA !

Image
Image

ngayon mayroon kang isang sumusunod na linya ng robot na ginawa ng iyong sarili.

Inaasahan kong ang tutorial na ito ay kapaki-pakinabang. Huwag mag-atubiling makipag-ugnay sa akin sa pamamagitan ng [email protected] kung mayroon kang anumang problema.

magkita tayo muli sa isang bagong proyekto.

Masaya sa pagbuo !!

Inirerekumendang: