Capteur de distance à ultrasons HC SR-04 et Arduino

Utilisation de capteurs et composants électroniques avec Arduino.
Une fiche de tutoriel pour chaque.

Capteur de distance à ultrasons HC SR-04 et Arduino

Messagepar tiptop » Lun 6 Jan 2014 23:53

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

Image

Composants utilisés

Image

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.
Image

Le module HC SR-04 est monté, prêt à l'emploi.
Image

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.
  • On peut mesurer une distance jusqu'à 0.3 cm près.
  • Courant de repos moins de 2 mA
  • Signal de sortie : signal électrique 5V haut niveau, 0V niveau bas.
  • Un quartz produit une onde inaudible de fréquence 40 kHz de forme carrée.
  • Taille 45 x 20 x 15 mm
Image

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.

Exemples d'utilisations :
  • Télémétrie
  • Capteur de présence
  • Robotique, détection d'obstacles
    Sur un robot, monter de préférence deux capteurs orientés à gauche et à droite.
  • Sonar à balayage, en montant le capteur sur un servomoteur qui tourne.

Câblage
Capteur --> Arduino
  • pin 1 Alimentation Vcc --> +5V Arduino
  • pin 2 Emission d'ultrasons (Trig) --> pin de sortie p13
  • pin 3 Réception du signal Echo (signal de sortie TTL en largeur d'impulsion modulée)--> pin d'entrée p12
  • pin 4 Gnd --> Masse 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.
Image

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

Charger le code suivant
Code: Tout sélectionner
//**********************************************************
//  Capteur de distance à ultrasons HC-SR04 avec Arduino Uno
//  TipTopBoards.com  06 01 2014  Rolland
//  Càabler +5V et GND du détecteur sur l'arduino
//
// Trig -> pin 13
// Echo -> pin 12
// Led verte + 470R  -> pin 10
// Led rouge + 470R  -> pin 11
// Les leds s'allument selon la distance trop près / trop loin
//**********************************************************
#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


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
tiptopboards - admin
Avatar de l’utilisateur
tiptop
Administrateur du site
 
Messages: 88
Inscription: Mar 13 Aoû 2013 20:38
Localisation: 38

Re: Capteur de distance à ultrasons HC SR-04 et Arduino

Messagepar fbedon » Jeu 29 Mai 2014 21:47

Salut,
c'est bien expliqué il n'y rien à redire.

Aurais-tu une idée de la façon de faire pour des mesures de distances sous l'eau ?
J'aimerais mesurer la distance à la surface d'un objet se déplaçant rapidement sous l'eau, un foil.
mes premiers essais buttent sur 2 soucis,
1 La vitesse du son sous l'eau étant plus rapide, si on utilise du 40 kHz le signal retour arrive avant la fin d'un train d'impulsion de 8-10 périodes, pour une distance de de quelques dm, il faudrait donc utiliser 2 capteurs et un programme adapté, mais ce n'est pas le plus problématique.
2 L'eau semble plus diffusante que l'air, le récepteur placé à proximité de l'émetteur parallèle à celui ci est complètement saturé par le signal transmis.

Des idées ?
Fred
Avatar de l’utilisateur
fbedon
 
Messages: 14
Inscription: Mer 21 Mai 2014 19:56
Localisation: Grenoble

Re: Capteur de distance à ultrasons HC SR-04 et Arduino

Messagepar didiersee » Lun 19 Fév 2018 21:15

Bonjour super les explications pour le capteur ultrason. Pourriez-vous m'expliquer comment je peux allumer une led à une distance de 2mètres précisément pas avant pas après? Le problème bien sûr c'est le code pour y arriver. Merci pour votre aide. :geek:
didiersee
 
Messages: 1
Inscription: Mar 5 Juil 2016 09:14


Retourner vers Capteurs et composants

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités