El sensor d'ultrasons (HC-SR04) mesura distàncies entre 3 cm i 3 m, amb una precisió de ± 3 mm.
L'emissor (Trig) emet un pols d'ultrasó que rebota en els obstacles i torna al receptor del sensor (Echo), el qual emet un senyal d'entrada proporcional al temps que ha trigat en rebre el pols.
Càlcul de la distància
Segons el temps que triga el pols des que s'emet fins que retorna al sensor:
velocitat del so = 343 m/s = 34.300 cm/s. Per tant, en recòrrer 1 cm triga 29,4 µs
distància total (cm) recorreguda pel pols (anada i tornada) = temps (µs) / 29,4
distància a l'obstacle (cm) = distància total / 2 = temps / (29,4/2) = temps / 58,2
Connexió a Arduino
Per muntar-lo en robots val la pena utilitzar aquest suport i cables agrupats
Monitorització de les distàncies mesurades pel sensor
Valors amb que treballem:
int EchoPin = 2; // pin de connexió receptor del sensor int TrigPin = 3; // pin de connexió emissor del sensor int temps, distancia; // variables per al càlcul de la distànciaConfiguració:
void setup() { Serial.begin (9600); // iniciem la comunicació Serial per visualitzar les dades pinMode (TrigPin,OUTPUT); // el pin Trig és una sortida digital pinMode (EchoPin,INPUT); // el pin Echo és una entrada digital }Definició de les accions:
void loop() { // cal començar generant un pols pel pin Trig d'una amplada de 10 µs: digitalWrite (TrigPin,LOW); delayMicroseconds (2); digitalWrite (TrigPin,HIGH); delayMicroseconds (10); digitalWrite (TrigPin,LOW); // mesura del temps en µs des que s'executa la instrucció // fins que es rep un pols pel pin especificat: temps = pulseIn (EchoPin,HIGH); // conversió del temps mesurat en distància (cm): distancia = temps / 58.2; // visualització de la distància calculada (en cm) pel monitor Serial: Serial.println (distancia); delay(50); // petita pausa abans de tornar a començar el bucle }
Exemple 2. Encesa d'un LED en funció de la distància
int echoPin = 2; // pin connexió emissor del sensor int trigPin = 3; // pin connexió receptor del sensor int ledpin = 13; // pin connexió LED int consigna = 20; // distància a partir de la que s'ha d'encendre el LED long temps, distancia; // variables per al càlcul de la distància void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(ledpin, OUTPUT); } void loop() { digitalWrite(trigPin, LOW); // emissió i recepció d'ultrasons delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); temps = pulseIn(echoPin, HIGH); // càlcul de la distància distancia = temps/58.2; if (distancia < consigna) // condició d'encesa del LED { digitalWrite(ledpin,HIGH); } else { digitalWrite(ledpin,LOW); } delay(50); // petita pausa abans de tornar a començar el bucle }
Hem utilitzat el sensor d'ultrasons:
Cap comentari:
Publica un comentari a l'entrada