Cuprins:

Robot de urmărire a liniei bazate pe PID cu matrice senzor POLOLU QTR 8RC: 6 pași (cu imagini)
Robot de urmărire a liniei bazate pe PID cu matrice senzor POLOLU QTR 8RC: 6 pași (cu imagini)

Video: Robot de urmărire a liniei bazate pe PID cu matrice senzor POLOLU QTR 8RC: 6 pași (cu imagini)

Video: Robot de urmărire a liniei bazate pe PID cu matrice senzor POLOLU QTR 8RC: 6 pași (cu imagini)
Video: Au Uitat Să Oprească Camera De FILMAT! Momente Incredibile Filmate În LIVE 2024, Iulie
Anonim
Robot de urmărire a liniei bazate pe PID cu matrice de senzori POLOLU QTR 8RC
Robot de urmărire a liniei bazate pe PID cu matrice de senzori POLOLU QTR 8RC

Buna!

aceasta este prima mea scriere pe instructabile și astăzi vă voi duce pe drum și vă voi explica cum să bulidați o linie bazată pe PID după robot folosind matricea de senzori QTR-8RC.

Înainte de a continua la construirea robotului, trebuie să înțelegem ceea ce se numește PID,

Pasul 1: Principiul de lucru

Ce este PID ??

Termenul PID înseamnă proporțional, integral, derivat. Deci, pur și simplu, ceea ce facem cu implicarea PID cu urmarea liniei este, îi dăm o comandă robotului să urmeze linia și să detecteze ture prin calcularea erorii, luând în considerare cum departe s-a mutat de pe pistă.

termeni cheie, așa cum se menționează în documentele polalu

Valoarea proporțională este aproximativ proporțională cu poziția robotului dvs. față de linie. Adică, dacă robotul dvs. este centrat exact pe linie, ne așteptăm la o valoare proporțională exact 0

Valoarea integrală înregistrează istoricul mișcării robotului dvs.: este o sumă a tuturor valorilor termenului proporțional care au fost înregistrate de când robotul a început să ruleze

Derivatul este rata de schimbare a valorii proporționale

În acest tutorial, vom vorbi doar despre Kp și termenii Kd, cu toate acestea, rezultatele pot fi obținute folosind și termenul Ki. Citirile pe care le obținem de la senzor nu sunt doar citiri analogice, ci și poziții ale robotului. Așadar, senzorul oferă valori de la 0 la 2500, de la reflectanța maximă la reflectanța minimă, dar, în același timp, oferă și informații despre cât de mult s-a blocat robotul de linie.)

Acum trebuie să luăm în considerare termenul de eroare, Aceasta este diferența dintre valoarea de referință a celor două valori și valoarea curentă. (Valoarea de referință este citirea care corespunde plasării „perfecte” a senzorilor deasupra liniilor. valoarea este citirile instantanee ale senzorului. De exemplu: Dacă utilizați acest senzor matrice și utilizați 8 senzori, veți primi o citire pozițională de 3500 dacă sunteți la fața locului, în jur de 0 dacă sunteți mult prea stâng de linia și în jur de 7000 dacă aveți mult prea multă dreptate.). Scopul nostru este de a face eroarea zero. Atunci robotul poate urma linia fără probleme.

Apoi vine partea de calcul,.

1) calculați eroarea.

Eroare = Valoare de referință - Valoare curentă = 3500 - poziție

Deoarece folosesc 8 senzori. senzorul oferă o citire pozițională de 3500 atunci când robotul este perfect plasat. Acum că ne-am calculat eroarea, marja cu care robotul nostru se deplasează peste pistă, este timpul să examinăm eroarea și să ajustăm turațiile motorului în consecință

2) determinați turațiile reglate ale motoarelor.

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

LastError = Eroare;

RightMotorSpeed = RightBaseSpeed + MotorSpeed;

LeftMotorSpeed = LeftBaseSpeed - MotorSpeed;

În mod logic vorbind, o eroare de 0 înseamnă că robotul nostru este în stânga, ceea ce înseamnă că robotul nostru trebuie să meargă puțin spre dreapta, ceea ce înseamnă, la rândul său, că motorul drept trebuie să încetinească și motorul stâng trebuie să accelereze. ASTA ESTE PID!

Valoarea MotorSpeed este determinată din ecuația însăși. RightBaseSpeed și LeftBaseSpeed sunt viteza (orice valoare PWM 0-255) la care rulează robotul atunci când eroarea este zero.

Codul pe care l-am atașat include, de asemenea, modul de verificare a valorilor poziționale ale senzorului, astfel încât să puteți deschide monitorul serial și să încărcați codul și să vedeți singur cu o linie cum se rotesc motoarele atunci când poziția variază.

Dacă întâmpinați probleme atunci când vă implementați robotul, verificați dacă și vedeți schimbând semnele ecuațiilor !!!

Și acum cea mai dificilă parte Găsirea Kp și Kd, a trebuit să petrec mai mult de 1 oră pentru a-mi regla perfect robotul. În loc să pun valori aleatorii, am găsit o metodă mai ușoară pentru a determina acest lucru.

  1. Începeți cu kp și Kd egal cu 0 și începeți cu Kp, mai întâi încercați să setați Kp la 1 și observați robotul, scopul nostru este să urmăm linia chiar dacă este oscilant, dacă robotul depășește și pierde linia, reduceți valoarea kp. În cazul în care robotul nu poate naviga pe un viraj și fiind lent, crește valoarea Kp.
  2. Odată ce robotul pare să urmeze oarecum linia de ajustare a valorii Kd (valoarea Kd> valoarea Kp) pornește de la 1 și crește valoarea până când vezi o unitate lină cu o mișcare mai mică.
  3. Odată ce robotul începe să urmeze linia, măriți viteza și vedeți dacă este capabil să rețină și să urmeze linia.

Rețineți că viteza are un impact direct asupra reglării PID și uneori poate fi necesar să reglați pentru a se potrivi cu viteza robotului dvs.

Acum putem ajunge la construirea robotului nostru.

Pasul 2: Construirea

Clădirea
Clădirea
Clădirea
Clădirea
Clădirea
Clădirea

Arduino atmega 2560 cu cablu USB - acesta este principalul microcontroler utilizat.

Șasiu - pentru șasiul robotului am folosit 2 plăci acrilice circulare care sunt folosite pentru un alt proiect perfect pentru acest lucru. Folosind piulițe și șuruburi am construit un șasiu cu 2 etaje, astfel încât să pot atașa alte module pe placa superioară. puteți utiliza șasiuri gata disponibile.

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

Motoare cu angrenaje micrometrice - robotul avea nevoie de motoare rotative rapide pentru a face față rutinei PID, pentru asta am folosit motoare cu o viteză de 6V 400rpm și roți adecvate.

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

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

QTR 8Rc senzor array - acesta poate fi folosit pentru urmărirea liniei, așa cum am menționat mai devreme, cred că aveți acum o înțelegere clară a modului de operare a senzorului cu PID. Codul este foarte simplu și folosind bibliotecile arduino existente, veți putea pentru a construi un liniar rapid.

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

TB6612FNG Driver de motor - Am vrut să folosesc un driver de motor care să poată gestiona viraje și să schimbe direcțiile într-o clipă, care este capabil să frâneze eficient motoarele atunci când semnalul PWM a scăzut.

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

Baterie lipo- Bateria lipo de 11,1 V este utilizată pentru a furniza energie robotului. Deși am folosit o baterie lipo de 11,1 V, această capacitate este mai mare decât cea necesară pentru arduino și motoare. Dacă puteți găsi un 7,4V bateria lipo sau bateria Ni-MH de 6V va fi perfectă.din acest motiv trebuie să folosesc un convertor Buck pentru a converti tensiunea la 6V.

11.1V-

7.4 V-

Modul convertor Buck-

În plus, aveți nevoie de fire jumper, piulițe și șuruburi, șurubelnițe și benzi electrice și, de asemenea, legături cu fermoar pentru a vă asigura că totul este la locul lor.

Pasul 3: Asamblarea

Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare

atașați motoarele și o roată mică cu rotiță într-o placă folosind piulițe și șuruburi și apoi montați senzorul QTR, driverul motorului, placa arduino și, în cele din urmă, bateria pe șasiu.

Iată o diagramă perfectă pe care am găsit-o pe internet, care vă spune cum trebuie făcute conexiunile.

Pasul 4: Proiectați-vă linia

Proiectează-ți linia
Proiectează-ți linia

Acum, proiectul dvs. pare să fie aproape terminat. Ca pentru ultima etapă, trebuie să aveți o mică arenă pentru a testa robotul dvs. Am folosit o linie aleatorie de lățime de 3 cm linie albă pe un fundal negru. Asigurați-vă că lipiți totul bine și, deocamdată, evitați 90 de cruci unghiulare și secțiuni transversale, deoarece este un caz complicat în ceea ce privește codarea.

Pasul 5: Programați-vă codul

1. Descărcați și instalați Arduino

IDE desktop

· Windows -

· Mac OS X -

· Linux -

2. Descărcați și lipiți fișierul matricei senzorului QTR 8 RC în folderul bibliotecilor Arduino.

·

· Lipiți fișiere în calea - biblioteci C: / Arduino

3. Descărcați și deschideți LineFOLLOWING.ino

4. Încărcați codul pe placa arduino printr-un cablu USB

Pasul 6: GATA

Image
Image

acum aveți un robot care urmărește linia realizat de dvs.

Sper că acest tutorial a fost de ajutor. Nu ezitați să mă contactați prin [email protected] dacă aveți vreo problemă.

ne vedem în curând cu un alt proiect nou.

Bucurați-vă de construire !!

Recomandat: