Turinys:

PID pagrįstas linijos sekimo robotas su POLOLU QTR 8RC jutikliu: 6 žingsniai (su nuotraukomis)
PID pagrįstas linijos sekimo robotas su POLOLU QTR 8RC jutikliu: 6 žingsniai (su nuotraukomis)

Video: PID pagrįstas linijos sekimo robotas su POLOLU QTR 8RC jutikliu: 6 žingsniai (su nuotraukomis)

Video: PID pagrįstas linijos sekimo robotas su POLOLU QTR 8RC jutikliu: 6 žingsniai (su nuotraukomis)
Video: Unleash the Power of RAID: Elevate Your Server Skills 2024, Liepa
Anonim
PID pagrįstas linijos sekimo robotas su POLOLU QTR 8RC jutiklio bloku
PID pagrįstas linijos sekimo robotas su POLOLU QTR 8RC jutiklio bloku

Sveiki!

tai pirmas mano užrašas apie instrukcijas, ir šiandien aš jus nuvesiu kelyje ir paaiškinsiu, kaip panaikinti PID pagrįstą liniją po roboto, naudojant QTR-8RC jutiklių masyvą.

Prieš pradėdami kurti robotą, turime suprasti, kas vadinama PID,

1 žingsnis: darbo principas

Kas yra PID ??

Sąvoka PID reiškia proporcingą, vientisą, išvestinę. Taigi, ką mes darome įtraukdami PID su eilučių sekimu, mes duodame robotui komandą sekti liniją ir aptikti posūkius, apskaičiuodami klaidą, apsvarstydami, kaip toli jis nukrypo nuo kelio.

pagrindiniai terminai, paminėti polalu dokumentuose

Proporcinė vertė yra maždaug proporcinga jūsų roboto padėčiai linijos atžvilgiu. Tai yra, jei jūsų robotas yra tiksliai centre ties linija, mes tikimės, kad proporcinga vertė bus lygi 0

Integruota reikšmė įrašo jūsų roboto judesio istoriją: tai visų proporcinio termino verčių, užfiksuotų nuo tada, kai robotas pradėjo veikti, suma

Išvestinė priemonė yra proporcingos vertės pasikeitimo greitis

Šioje pamokoje kalbėsime tik apie Kp ir Kd terminus, tačiau rezultatus galima pasiekti ir naudojant Ki terminą. Rodmenys, kuriuos gauname iš jutiklio, yra ne tik analoginiai, bet ir roboto padėties rodmenys.taip iš esmės Jutiklis pateikia vertes nuo 0 iki 2500, pradedant nuo maksimalaus atspindžio iki minimalaus atspindžio, tačiau tuo pat metu taip pat pateikia informaciją apie tai, kiek robotas yra nutolęs nuo linijos.)

Dabar turime apsvarstyti klaidos terminą. Tai yra dviejų verčių nustatytos vertės ir dabartinės vertės skirtumas. (Nustatytoji vertė yra rodmuo, atitinkantis „tobulą“jutiklių išdėstymą ant eilučių. reikšmė yra momentiniai jutiklio rodmenys. Pvz.: jei naudojate šį masyvo jutiklį ir naudojate 8 jutiklius, jūs gausite 3500 padėties rodmenis, jei esate vietoje, ir maždaug 0, jei esate per toli nuo linija ir apie 7000, jei esate per daug teisus.). Mūsų tikslas yra padaryti klaidą nulį. Tik tada robotas gali sklandžiai sekti liniją.

Tada ateina skaičiavimo dalis,.

1) apskaičiuoti klaidą.

Klaida = nustatytoji vertė - dabartinė vertė = 3500 - padėtis

Aš naudoju 8 jutiklius. jutiklis duoda 3500 padėties rodmenis, kai robotas yra idealiai pastatytas. Dabar, kai mes apskaičiavome savo klaidą, ribą, kuria mūsų robotas slenka per trasą, mums laikas išnagrinėti klaidą ir atitinkamai sureguliuoti variklio greitį

2) nustatyti sureguliuotus variklių sūkių dažnius.

MotorSpeed = Kp * Klaida + Kd * (Klaida - paskutinė klaida);

LastError = Klaida;

RightMotorSpeed = RightBaseSpeed + MotorSpeed;

LeftMotorSpeed = LeftBaseSpeed - MotorSpeed;

Logiškai mąstant, klaida 0 reiškia, kad mūsų robotas yra kairėje, o tai reiškia, kad mūsų robotas turi pasukti šiek tiek į dešinę, o tai savo ruožtu reiškia, kad dešinysis variklis turi sulėtėti, o kairysis - pagreitėti. TAI PIDAS!

„MotorSpeed“vertė nustatoma iš pačios lygties. „RightBaseSpeed“ir „LeftBaseSpeed“yra greitis (bet kokia PWM 0–255 vertė), kuriuo robotas veikia, kai klaida yra lygi nuliui.

Pridėtas kodas taip pat apima tai, kaip patikrinti jutiklio padėties vertes, kad galėtumėte atidaryti serijinį monitorių ir įkelti kodą ir patys pamatyti eilutę, kaip varikliai sukasi, kai padėtis keičiasi.

Jei įgyvendindami savo robotą susiduriate su problemomis, tiesiog patikrinkite, ar ir pamatysite, pakeisdami lygčių ženklus !!!

O dabar pati sudėtingiausia dalis - KAD IR KD RASTI, aš turėjau praleisti daugiau nei 1 valandą, kad puikiai suderinčiau savo robotą. Vietoj atsitiktinių verčių pateikimo radau paprastesnį metodą tai nustatyti.

  1. Pradėkite nuo kp ir Kd, lygaus 0, ir pradėkite nuo Kp, pirmiausia pabandykite nustatyti Kp į 1 ir stebėkite robotą, mūsų tikslas yra sekti liniją, net jei ji svyruoja, jei robotas viršija ir praranda liniją, sumažinkite kp reikšmę. Jei robotas negali pereiti posūkio ir yra vangus, padidina Kp vertę.
  2. Kai atrodo, kad robotas šiek tiek laikosi linijos, koreguokite Kd reikšmę (Kd vertė> Kp reikšmė), pradėkite nuo 1 ir didinkite, kol pamatysite sklandų važiavimą su mažesniu svyravimu.
  3. Kai robotas pradės sekti liniją, padidinkite greitį ir pažiūrėkite, ar jis gali išlaikyti ir sekti liniją.

Atminkite, kad greitis turi tiesioginį poveikį PID derinimui ir kartais gali tekti sureguliuoti, kad atitiktų jūsų roboto greitį.

Dabar galime pradėti kurti savo robotą.

2 žingsnis: Sukurkite

Statyti
Statyti
Statyti
Statyti
Statyti
Statyti

„Arduino atmega 2560“su USB kabeliu - tai yra pagrindinis naudojamas mikrovaldiklis.

Važiuoklė- roboto važiuoklei aš naudoju 2 apskritas akrilo plokštes, kurios naudojamos kitam tam puikiai tinkančiam projektui. Naudodama veržles ir varžtus sukūriau 2 aukštų važiuoklę, kad galėčiau pritvirtinti kitus modulius prie viršutinės plokštės. Arba galite naudoti paruoštą važiuoklę.

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

Mikrometaliniai pavarų varikliai- robotui reikėjo greitai besisukančių variklių, kad galėtų susidoroti su PID rutina, todėl naudojau 6V 400 aps./min. Variklius ir tinkamus sukibimo ratus.

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

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

QTR 8Rc jutiklių masyvas - tai gali būti naudojama linijoms sekti, kaip minėta anksčiau sukurti greitą linijos pasekėją.

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

TB6612FNG Variklio vairuotojas-norėjau naudoti variklio tvarkyklę, kuri gali greitai valdyti posūkius ir pakeisti kryptį, kuri gali efektyviai stabdyti variklius, kai PWM signalas sumažėjo.

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

„Lipo“baterija- 11,1 V „lipo“baterija naudojama tiekti robotui energiją. lipo baterija arba 6V Ni-MH akumuliatorius bus tobulas. dėl šios priežasties aš turiu naudoti back konverterį, kad įtampą paversčiau 6V.

11.1V-

7.4 V-

Buck konverterio modulis-https://www.ebay.com/itm/1PCS-DC-DC-LM2596-power-…

Be to, kad įsitikintumėte, jog viskas yra vietoje, jums reikia jungiamųjų laidų, veržlių ir varžtų, atsuktuvų ir elektros juostų, taip pat užtrauktukų.

3 žingsnis: Surinkimas

Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas

pritvirtinkite variklius ir mažą ratuko ratą prie plokštės, naudodami veržles ir varžtus, tada pritvirtinkite QTR jutiklį, variklio tvarkyklę, arduino plokštę ir galiausiai akumuliatorių prie važiuoklės.

Čia yra tobula schema, kurią radau internete, kurioje nurodoma, kaip reikia užmegzti ryšius.

4 žingsnis: suprojektuokite linijos takelį

Sukurkite savo linijos takelį
Sukurkite savo linijos takelį

Dabar atrodo, kad jūsų projektas beveik baigtas. Paskutiniame etape turite turėti nedidelę areną, kad galėtumėte išbandyti savo robotą. Aš panaudojau atsitiktinę 3 cm pločio baltos linijos liniją juodame fone. Įsitikinkite, kad viską gerai įklijavote. Ir kol kas venkite 90 degees kampinių kryžių ir skerspjūvių, nes kodavimo atveju tai sudėtinga.

5 veiksmas: užprogramuokite kodą

1. Atsisiųskite ir įdiekite „Arduino“

Stalinis IDE

· Langai -

· „Mac OS X“-

· „Linux“-

2. Atsisiųskite ir įklijuokite QTR 8 RC jutiklio masyvo failą į aplanką „Arduino“bibliotekos.

·

· Įklijuokite failus į kelią - C: / Arduino / bibliotekos

3. Atsisiųskite ir atidarykiteLINEFOLLOWING.ino

4. Įkelkite kodą į arduino plokštę per USB kabelį

6 žingsnis: ATLIKTA

Image
Image

dabar jūs turite savo sukurtą eilės sekimo robotą.

Tikiuosi, kad ši pamoka buvo naudinga. Nedvejodami susisiekite su manimi per [email protected], jei turite kokių nors problemų.

iki greito susitikimo su kitu nauju projektu.

Mėgaukitės statymu !!

Rekomenduojamas: