In articolul Senzorul ultrasonic de distanta HC-SR04 si Arduino, am afisat datele pe un ecran alfanumeric cu 16 coloane si 2 randuri. De data asta am conectat un ecran de Nokia 5110 pentru a avea si o reprezentare grafica a variatiei distantei masurate. Schema de conectare este:
Primele teste, in care am folosit sketch-ul ultrasonic_5110_ver1m0.ino, imi arata urmatoarele informatii pe ecran:
apoi am modificat sketch-ul, care devine ultrasonic_5110_ver1m2.ino, si am o reprezentare grafica prin puncte:
care nu mi-a placut, asa ca am memorat masurarea anteriar, realizand un grafic cu linii (sketch-ul devine ultrasonic_5110_ver1m3.ino):
Pentru a se intelege mai bine modul de prezentare pe ecran, am facut 2 filmulete:
Am facut (si primit dupa 5 saptamani) o comanda-test de 7,70$ la chinezii de la DealExtreme (dx.com) pentru 3 produse, dintre care si un senzor ultrasonic de distanta HC-SR04, care poate masura distanta intre senzor si un obiect intre 2cm si 4m (4,5-5m dupa alte surse) la un unghi de maxim 15 grade, cu o precizie de 3mm.
Modulul HC-SR04 are 4 pini: - alimentare +5V - initiere semnal (TRIGGER) - raspuns semnal (ECHO) - masa (GND)
Am gasit 2 variante de fisa tehnica (datasheet): una la http://www.micropik.com/PDF/HCSR04.pdf si una la http://jaktek.com/wp-content/uploads/2011/12/HC-SR04.pdf. Din cele 2 am extras ca dupa trimiterea unui semnal pe terminalul TRIGGER cu durata de 10us (zece microsecunde), se asteapta raspunsul pe terminalul ECHO, iar durata acestui impuls obtinut impartit la 38 va da distanta pana la un obiect in cm; daca nu este nici un obstacol, timpul de raspuns este de 58ms. Durata impulsului obtinut la terminaul ECHO are durata intre 150us, corespunzatoare distantei de 2,58cm, si 25ms, corespunzatoare distantei de 4,31m=431cm. La o prima cautare a unui articol despre modulul HC-SR04 si Arduino, am dat de How to interface the HC-SR04 ultrasonic ranging module to Arduino in care este prezentat si un sketch, pentru afisarea pe ecranul calculatorului a distantei. /* * Define the pins you want to use as trigger and echo. */ #define ECHOPIN 2 // Pin to receive echo pulse
#define TRIGPIN 3 // Pin to send trigger pulse/* * setup function * Initialize the serial line (D0 & D1) at 115200. * Then set the pin defined to receive echo in INPUT * and the pin to trigger to OUTPUT. */voidsetup()
{
Serial.begin(115200);
pinMode(ECHOPIN, INPUT);
pinMode(TRIGPIN, OUTPUT);
}
/* * loop function. * */voidloop()
{
// Start RangingdigitalWrite(TRIGPIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGPIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGPIN, LOW);
// Compute distancefloat distance = pulseIn(ECHOPIN, HIGH);
distance= distance/58;
Serial.println(distance);
delay(200);
}
Schema se conectare a modului la Arduino fiind:
Aceasta schema se poate completa cu un afisaj LCD cu 2 randuri a 16 coloane. Va recomand sa studiati si articolul Ping Ultrasonic Range Finder de pe site-ul oficial ARDUINO este prezentat un senzor cu 3 pinii, adica e un terminal comun pentru trimitere si primire date despre distanta.
miercuri, 20.03.2013 Dupa ce am realizat realizat montajul, am incarcat sketch-ul putin modificat deoarece eu am conectat terminalul TRIG la terminalul digital 9 (D9) al lui Arduino, iar pe ECHO la D8, deoarece eu am si partea de afisaj conectata:
#define ECHOPIN 8 // Pin to receive echo pulse #define TRIGPIN 9 // Pin to send trigger pulse
Dupa incarcarea sketch-ului am constat ca pe ecranul de monitorizare seriala am numai ciudatenii, datorita diferentei dintre viteza de transfer pe serial, in sketch de 115200bps, iar la monitorizare de 9600bps. Dupa ce am modificat la ecranul de monitorizare la 115200bps valorile au inceput sa arate normal.
Am verificat distanta cu o rigla pentru o distanta mica de cca. 40cm si a fost ok, apoi o distanta de cca. 2m cu un telemetru si eroarea a fost de cca. 2mm, deci e ok. Am adaptat sketch-ul pentru a afisa distanta pe afisajul LCD 16x2:
M-am gandit ca un indicator al gamei de masura poate fi mai sugestiv, asa ca ma considerat ca 4m este suficient, asa ca din cele 16 coloane ale unui rand pe ecranul LCD, pasii sunt de 250mm (25cm). Sketch-ul este: