Sensor ultrasònic HC-SR04

A molts dels nostres projectes, tenim la necessitat de sensar el nostre entorn, saber si al davant hi ha un obstacle i al fet que distància es troba, el sensor HC-SR04 ens permet fer això.

El seu funcionament consisteix a emetre un so ultrasònic per un dels seus transductors (TRIGGER), i esperar que el so reboti d’algun objecte present, el ressò és captat pel segon transductor (ECHO). La distància és proporcional al temps que triga a arribar el ressò.

Connexions del sensor ultrasònic

Recorda: Totes les connexions es realitzen amb l’Arduino APAGADA (desconnectat del PC o de qualsevol font externa)

PROGRAMACIÓ

Primer configurem els pins i la comunicació serial a 9800 bauds

const int Trigger = 2;   //Pin digital 2 pel Trigger del sensor 
const int Echo = 3; //Pin digital 3 pel echo del sensor
void setup() {   
Serial.begin(9600);//iniciem la comunicació  
pinMode(Trigger, OUTPUT); //el Trigger és un OUTPUT perquè envia el so
pinMode(Echo, INPUT); //l'echo és INPUT perquè rep el so  
digitalWrite(Trigger, LOW);//Comencem sense emetre cap senyal
}

Ara en el bucle void loop() comencem enviant una polsació de 10 microsegons al Trigger del sensor

digitalWrite(Trigger, HIGH);   
delayMicroseconds(10);   
digitalWrite(Trigger, LOW);

Seguidament rebem la polsació de resposta del sensor. Per a mesurar la polsació farem servir la funció pulseIn(pin, value) i la GUARDAREM en una variable de tipus LONG, que serveix per emmagatzemar números molt llargs.

long  t = pulseIn(Echo, HIGH); //obtenim el temps que triga el so en tornar al Echo

Ara només cal calcular la distància que equival el temps, partint de la velocitat del so (34300 cm/s) i que haurem de passar a segons perquè recordem que estavem treballant am microsegons.

float d =t * 0.000001 * 34300 / 2;   

Per últim, mostrem els resultats per la pantalla de l’ordinador:

Serial.print("Distància: ");   
Serial.print(d);  
Serial.println("cm");  
delay(100);
}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.