Urmărirea ușoară și evitarea robotului bazat pe Arduino: 5 pași
Urmărirea ușoară și evitarea robotului bazat pe Arduino: 5 pași
Anonim
Urmărirea ușoară și evitarea robotului bazat pe Arduino
Urmărirea ușoară și evitarea robotului bazat pe Arduino

Acesta este un proiect simplu care urmează sau Evită Lumina.

Am făcut această simulare în Proteus 8.6 pro. Componente necesare: -1) Arduino uno.

2) 3 LDR.

3) 2 motoare cu transmisie de curent continuu.4) Un servomotor.5) Trei rezistențe de 1k.6) un pod H-l290D7) Un comutator de pornire și oprire [pentru schimbarea stării programului]

8) 9v și 5v Battry

Pasul 1: Cod Ardunio

Codul Arduino este modificat o dată mică Data 23 februarie 2016]

Acest cod este foarte comentat, nu vreau să explic, dar dacă aveți nevoie de ajutor, nu ezitați să mă contactați la ([email protected])

Notă: -Utilizez două condiții în acest program prima pentru Light Following.2 una pentru evitarea luminii.

În măsura în care aceste condiții sunt îndeplinite, robotul va urma sau va evita lumina. [Aceasta este valoarea minimă a LDR pe care o aleg. În lumină normală, domeniul său este de la 80 la 95, dar pe măsură ce intensitatea sa crește din ce în ce mai multe tensiuni induse, deoarece funcționează pe principiul divizorului de tensiune int a = 400; // Valoarea tolaranței]

Pasul 2: Fișiere Proteus

Pentru biblioteca Arduino descărcați din acel link

Pasul 3: Cum funcționează podul dvs. H

Cum funcționează podul dvs. H
Cum funcționează podul dvs. H
Cum funcționează podul dvs. H
Cum funcționează podul dvs. H

L293NE / SN754410 este un pod H foarte simplu. Are două punți, unul în partea stângă a cipului și unul în dreapta și poate controla 2 motoare. Poate conduce până la 1 amp de curent și poate funcționa între 4,5V și 36V. Micul motor DC pe care îl utilizați în acest laborator poate funcționa în siguranță la o tensiune scăzută, astfel încât acest pod H funcționează foarte bine. Puntea H are următoarele pini și caracteristici: Pinul 1 (1, 2EN) activează și dezactivează motorul, indiferent dacă este HIGH sau LOW Pin 2 (1A) este un pin logic pentru motorul nostru (intrarea este fie HIGH, fie LOW) Pin 3 (1Y) este pentru unul dintre terminalele motorului Pinul 4-5 este pentru masă Pinul 6 (2Y) este pentru celălalt terminal al motorului Pinul 7 (2A) este un pin logic pentru motorul nostru (intrarea este fie HIGH, fie LOW) Pin 8 (VCC2) este sursa de alimentare pentru motorul nostru, acest lucru ar trebui dat tensiunii nominale a motorului Pin 9-11 sunt neconectate deoarece utilizați un singur motor în acest laborator Pin 12-13 sunt pentru sol Pin 14-15 sunt neconectate Pin 16 (VCC1) este conectat la 5V. De sus este o diagramă a podului H și care pini fac ceea ce în exemplul nostru. Cu diagrama este inclus un tabel de adevăr care indică modul în care motorul va funcționa în funcție de starea pinilor logici (care sunt stabiliți de Arduino).

În acest proiect, pinul de activare se conectează la un pin digital de pe Arduino, astfel încât să îl puteți trimite HIGH sau LOW și să porniți sau să opriți motorul. Pinii logici ai motorului sunt, de asemenea, conectați la pinii digitali desemnați de pe Arduino, astfel încât să îi puteți trimite HIGH și LOW pentru ca motorul să se rotească într-o direcție sau LOW și HIGH pentru a-l întoarce în cealaltă direcție. Tensiunea de alimentare a motorului se conectează la sursa de tensiune a motorului, care este de obicei o sursă de alimentare externă. Dacă motorul dvs. poate funcționa cu 5V și mai puțin de 500mA, puteți utiliza ieșirea Arduino de 5V. Majoritatea motoarelor necesită o tensiune mai mare și un consum de curent mai mare decât acesta, deci veți avea nevoie de o sursă de alimentare externă.

Conectați motorul la podul H Conectați motorul la podul H așa cum se arată în imaginea a doua.

Sau, dacă utilizați o sursă de alimentare externă pentru Arduino, puteți utiliza pinul Vin.

Pasul 4: Cum funcționează LDR

Acum, primul lucru care ar putea necesita explicații suplimentare este utilizarea rezistențelor dependente de lumină. Rezistențele dependente de lumină (sau LDR) sunt rezistențe a căror valoare se schimbă în funcție de cantitatea de lumină ambientală, dar cum putem detecta rezistența cu Arduino? Ei bine, nu puteți, cu toate acestea, puteți detecta nivelurile de tensiune folosind pinii analogici, care pot măsura (în utilizarea de bază) între 0-5V. Acum s-ar putea să întrebați „Ei bine, cum convertim valorile rezistenței în modificări de tensiune?”, Este simplu, facem un divizor de tensiune. Un divizor de tensiune preia o tensiune și apoi scoate o fracțiune din tensiunea respectivă proporțională cu tensiunea de intrare și raportul celor două valori ale rezistențelor utilizate. Ecuația pentru care este:

Tensiune de ieșire = Tensiune de intrare * (R2 / (R1 + R2)) În cazul în care R1 este valoarea primului rezistor și R2 este valoarea celui de-al doilea.

Acum, aceasta încă pune întrebarea „Dar ce valori de rezistență are LDR?”, Întrebare bună. Cu cât este mai mică cantitatea de lumină ambientală, cu atât este mai mare rezistența, cu atât mai multă lumină ambientală înseamnă o rezistență mai mică. Acum, pentru anumite LDR-uri, am folosit rezistența lor de la 200 la 10 kg ohmi, dar acest lucru se schimbă pentru altele, așa că asigurați-vă căutați de unde le-ați cumpărat și încercați să găsiți o foaie tehnică sau ceva de acest fel. cazul R1 este de fapt LDR-ul nostru, așa că haideți să readucem acea ecuație și să facem niște matematică-magie (magie electrică matematică). Acum trebuie mai întâi să convertim acele valori de kilo ohmi în ohmi: 200 kilo-ohmi = 200, 000 ohmi 10 kilo-ohmi = 10, 000 ohmi Deci, pentru a afla care este tensiunea de ieșire atunci când suntem în negru, conectăm următoarele numere: 5 * (10000 / (200000 + 10000)) Intrarea este de 5V, deoarece asta este ceea ce primim din Arduino. Cele de mai sus dau 0.24V (rotunjite). Acum găsim care este tensiunea de ieșire în luminozitatea maximă utilizând următoarele numere: 5 * (10000 / (10000 + 10000)) Și acest lucru ne oferă exact 2,5V. Deci, acestea sunt valorile de tensiune pe care le vom introduce în pinii analogici ai Arduino, dar acestea nu sunt valorile care vor fi văzute în program, „Dar de ce?” s-ar putea să întrebi. Arduino utilizează un cip analog-digital care convertește tensiunea analogică în date digitale utilizabile. Spre deosebire de pinii digitali de pe Arduino, care pot citi doar o stare HIGH sau LOW fiind 0 și 5V, pinii analogici pot citi de la 0-5V și pot converti acest lucru într-un interval numeric de 0-1023.. de fapt, putem calcula ce valori va citi de fapt Arduino.

Deoarece aceasta va fi o funcție liniară putem folosi următoarea formulă: Y = mX + C Unde; Y = Digital ValueWhere; m = panta, (creștere / alergare), (valoare digitală / valoare analogică) Unde; Interceptarea Y = Interceptarea Y este 0, astfel încât ne dă: Y = mXm = 1023/5 = 204,6 Prin urmare: Valoare digitală = 204,6 * Valoare analogică Deci, în negru negru, valoarea digitală va fi: 204,6 * 0,24, ceea ce dă aproximativ 49. Și în luminozitatea de vârf va fi: 204,6 * 2,5 Ceea ce dă aproximativ 511. Acum, cu două dintre acestea instalate pe doi pini analogici putem crea două variabile întregi pentru a stoca valorile lor două și pentru a face operatorii de comparație pentru a vedea care dintre acestea are cea mai mică valoare, rotind robotul în acea direcție.