Modul de utilizare a unui senzor ultrasonic de distanță HC-SR04 cu o placă de dezvoltare Arduino. Cod sursă inclus.
Senzorul HC-SR04 este un modul complex care permite aprecierea distanțelor cuprinse între 2 centimetri și 4 metri cu o acuratețe de 3 milimetri. Senzorul se bazează pe principiul reflexiei ultrasunetelor. Astfel, HC-SR04 conține un generator piezoelectric de ultrasunete, pe frecvența de 40 kHz. Semnalul sonor se reflectă pe suprafețele cu care vine în contact, și este apoi preluat de receptorul aflat pe aceeași placă de circuit.
Modulul în sine este un circuit complex, ce conține un microprocesor, un convertor de tensiune pentru alimentarea emițătorului de ultrasunete și mai multe amplificatoare operaționale care amplifică și filtrează semnalul captat de receptorul ultrasonic. Senzorul se alimentează la 5V și necesită un curent de 15 mA, putând fi astfel utilizat cu diverse plăci de dezvoltare (de exemplu, Arduino).
Vom prezenta, în continuare, o schiță Arduino simplă pentru acest senzor. Circuitele modulului se ocupă de emisia semnalului ultrasonic și de recepția lui. După primirea unui impuls de 10 microsecunde pe pinul trig, microcontroller-ul modulului generează tonul ultrasonic. După recepționarea semnalului, microcontroller-ul prezintă pe pinul echo un semnal logic „1”, de durată egală cu timpul parcurs de sunet de la emițător la obiect și înapoi la receptor. În ciuda complexității dispozitivului, utilizarea lui se dovedește a fi mai ușoară decât a altor tipuri de senzori.
Conectarea la o placă de dezvoltare Arduino este foarte simplă.
Conectare senzor HC-SR04 la Arduino Uno
Partea software este foarte simplă. Pe un pin configurat ca ieșire se generează un impuls de 10 microsecunde. Funcția delayMicroseconds este utilă aici. Apoi, folosind pulseIn se măsoară cât timp stă semnalul de la echo pe nivelul logic „1”. Iată și o schiță simplă care trimite măsurătorile către portul serial:
const int trigPin = 9; const int echoPin = 10; long durata; int distanta = 0; void setup() { pinMode(trigPin, OUTPUT); digitalWrite(trigPin, LOW); pinMode(echoPin, INPUT); Serial.begin(9600); Serial.println("Masurare distanta cu HC-SR04"); } void loop() { // generare impuls 10 microsecunde digitalWrite(trigPin, HIGH); // setare trig la 1 delayMicroseconds(10); // se asteapta 10 us digitalWrite(trigPin, LOW); // setare trig la 0 // se masoara durata impulsului trimis de senzor durata = pulseIn(echoPin, HIGH); // pentru calcularea distantei: // produsul dintre durata si viteza sunetului se imparte la 2 // deoarece durata masurata este timpul de la emitator la obiect dar si inapoi // durata * 340 m/s / 2 / 1000000 * 100 // durata este exprimata in int distantaActual = durata * 0.017; // daca masurarea este in limite if ((distantaActual < 2) || (distantaActual > 400)) { Serial.println("Nu se poate aprecia distanta"); } // si daca difera de masurarea precedenta // se trimite la portul serial else if (distantaActual != distanta) { Serial.print(distantaActual, DEC); Serial.println(" cm"); distanta = distantaActual; } delay(100); // intervalul dintre masuratori trebuie sa fie cel putin 60 ms; am ales 100 }
Timpul de la emisie până la recepție a sunetului este citit de Arduino în microsecunde. Pentru conversia la centimetri, se va calcula produsul dintre această durată și viteza sunetului în aer (340 m/s). Se va împărți la 2, deoarece durata măsurată cuprinde atât drumul de la emițător la obiect, dar și drumul de la obiect înapoi la receptor. Apoi, pentru conversia la cm se va împărți la 1000000 și se va înmulți cu 100.
distanța (cm) = durata (us) * 1/1000000 * 340 (m/s) / 2 * 100
distanța (cm) = durata (us) * 0,017
Mai departe, măsurătorile pot fi afișate pe un display, sau se pot acționa LED-uri, relee, motoare etc. în funcție de distanța măsurată. Unghiul de deschidere al senzorului este de 15 grade. Fișa tehnică poate fi descărcată de aici. Schema electrică a senzorului ultrasonic poate fi găsită pe site-ul Emil's Projects. Modulul HC-SR04 poate fi achiziționat de pe Banggood.com.
Niciun comentariu :
Trimiteți un comentariu
Vă recomandăm să citiți regulamentul comentariilor înainte de a scrie un comentariu.