Tutoriel inspiré de http://tiptopboards.free.fr

Capteur de distance à ultrasons HC SR-04, utilisation avec Arduino

lh3.googleusercontent.com_-vfypnrn4ngc_ussrgnrawii_aaaaaaaabea_h1jm3uczvim_w600-h400-no_ultrason_montage_leds.jpg

Composants utilisés


lh3.googleusercontent.com_-0m9epqifjgi_ussrifcymei_aaaaaaaabeq_vtl1s4fclew_w600-h450-no_ultrason_composants_kit.jpg

Principe de fonctionnement
Le capteur émet une salve d’ultra-sons, le récepteur chronomètre leur temps d’aller/ retour.
On en déduit la distance précise entre le capteur et l’obstacle qui réfléchit le son :
lh3.googleusercontent.com_-kpgd7ianwyk_us3d6iiej3i_aaaaaaaabfw_qoi84vvb9es_w565-h248-no_ultrason_timing.jpg

Le module HC SR-04 est monté, prêt à l’emploi.
lh3.googleusercontent.com_-2dwneiomx94_ussrjj3lnki_aaaaaaaabey_t-6t3fpbqoe_w400-h250-no_ultrason_tranmetteur.jpg

Caractéristiques
Le module à ultra-sons permet de détecter automatiquement un obstacle dans un angle de visée étroit de 15°, et de mesurer une distance sans contacts, sur une portée de 2 cm à 450 cm.

lh5.googleusercontent.com_-nyetknwvtlc_ussrjqslr2i_aaaaaaaabeg_s3wbz_0jjqs_w400-h250-no_ultrason_verso.jpg

Calcul de la distance
La vitesse du son est de 340 m/s (il faut 29,4 microsecondes pour parcourir 1 cm).
En 1 ms, l’onde ultrasonore se déplace de 340 mm = 34 cm.
Le capteur fournit une sortie de durée proportionnelle à la distance .

Câblage
Capteur –> Arduino


On rajoute dans ce montage deux Leds (rouge et verte) sur les pin 10 et 11 (en série avec 470 ohm).
Elles servent de témoins de distance trop près / trop loin.
lh6.googleusercontent.com_-dglwapizhqu_ussse6ho3hi_aaaaaaaabe0_f_usprmc0a_w600-h400-no_ultrason_montage.jpg

Programmation Arduino
Il n’y a pas besoin d’installer de librairie spécialisée.
On peut éventuellement se servir de #include <Ultrasonic.h>


#define trigPin 13 Trig Ultrasons (sortie)
#define echoPin 12 Echo Ultrasons (entrée)
#define ledVerte 11
Led verte
#define ledRouge 10 Led rouge

void setup() {
Serial.begin (9600);
pinMode(trigPin, OUTPUT);
Trig est une sortie
pinMode(echoPin, INPUT); Echo est le retour, en entrée
pinMode(ledVerte, OUTPUT);
pinMode(ledRouge, OUTPUT);
}

void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
Trig déclenché 10ms sur HIGH
digitalWrite(trigPin, LOW);

Calcul de l’écho
duration = pulseIn(echoPin, HIGH);

Distance proportionnelle à la durée de sortie
distance = duration*340/(2*10000); Vitesse du son théorique

if (distance < 4) {
Distance trop près
digitalWrite(ledVerte,HIGH); Vert éclairé seulement
digitalWrite(ledRouge,LOW);
}
else {
Trop loin
digitalWrite(ledVerte,LOW);
digitalWrite(ledRouge,HIGH);
}
Hors de portée (duration)
if ( distance ⇐ 0){

Serial.print(duration);
Serial.println(“Hors de portee”);
}
else {
Serial.print(distance);
Serial.print(“ cm ”);
Serial.print(duration);
Serial.println(“ ms”);
}
delay(100); 0.1 sec entre deux mesures
}
’’

Le code envoie une impulsion de 10us sur Trig pour déclencher la mesure (séquence de 8 pulses carrés sur la fréquence 40 kHz).
En réponse, la durée d’impulsion en sortie est proportionnelle à la distance (aller/retour), avec Distance = Durée de l’impulsion * Vitesse du son / 2

Vidéo de démo<html><iframe width=“853” height=“480” src=“www.youtube-nocookie.com/embed/Le_4Nfwxntg?rel=0&amp;showinfo=0” frameborder=“0” allowfullscreen></iframe></html> Références
En anglais http://www.instructables.com/id/Simple- ... he-sketch/
Le capteur HCSR04 http://www.micropik.com/PDF/HCSR04.pdf
http://wiki.tetrasys-design.net/HCSR04Ultrasonic