top of page

Folosirea unui senzor IR de obstacole cu Arduino

Updated: Mar 14, 2020

Ce este si cum functioneaza un senzor IR de obstacole?


Folosirea unui senzor IR de obstacole este o metoda usoara pentru depistarea suprafetelor solide in orice proiect (de exemplu roboti),fiind ieftin si usor de folosit in comparatie cu alte solutii existente pe piata. De asemenea,poate fi folosit și pentru a detecta linia albă sau neagră de către roboți,radiatia IR fiind reflectata in moduri diferite in functie de culoarea suprafetei.


Senzorul de obstacole se bazează pe reflexia radiației IR (infrarosu) de către obstacol. Radiația IR (approx. 940 nm)este emisă de către un LED ("beculetul" transparent din stanga) și este recepționată de către un fototranzistor ("beculetul" negru din dreapta). Fototranzistorul converteste radiatia IR receptionata in semnale electrice(daca detecteaza ceva trimite semnal HIGH/1,daca nu ramane LOW/0),care sunt amplificate si trimise catre Arduino prin pinul OUT.


Montajul


Modulul are trei pini:VCC (se conecteaza la 5V),GND (se conecteaza la GND) si OUT (se conecteaza la orice pin digital al Arduino;eu am folosit pinul 2):


De asemenea,trebuie sa conectam si un LED pentru a afisa rezultatul primit de la senzor (aici am folosit pinul 8):


Programul


Programul este similar cu cel pentru buton:


void setup() {

// put your setup code here, to run once:

pinMode(2,INPUT); // initializare pin 2 pentru citire

pinMode(8,OUTPUT); // initializare pin 8 pentru transmisie

}


void loop() {

// put your main code here, to run repeatedly:

bool stareSenzor=digitalWrite(2); /* creare variabila logica "stareSenzor" care stocheaza rezultatul citirii pinului 2 */

}

if(stareSenzor==1) // daca stareSenzor = 1

{

digitalWrite(8,HIGH); // trimite semnal HIGH prin pinul 8

}

else // altfel

{

digitalWrite(8,LOW); // trimite semnal LOW prin pinul 8

}

delay(20); // asteapta 20 ms

}


O alta varianta mai simpla,dar mai imprevizibila in executare:


void setup() {

// put your setup code here, to run once:

pinMode(2,INPUT); // initializare pin 2 pentru citire

pinMode(8,OUTPUT); // initializare pin 8 pentru transmisie

}


void loop() {

// put your main code here, to run repeatedly:

bool stareSenzor=digitalRead(2); /* creare variabila logica "stareSenzor" care stocheaza rezultatul citirii pinului 2 */

digitalWrite(8,stareSenzor); // trimite rezultatul citirii pinului 2 (HIGH sau LOW) prin pinul 8

}


Acestea sunt variantele folosite de mine,dar exista nenumarate modalitati de programare. Daca gasiti o varianta mai usoara,astept cu nerabdare in sectiunea de comentarii.

26 views0 comments

Recent Posts

See All

Comments


bottom of page