LOCODUINO

Détecteurs à ultrasons

HC-SR04 ou SRF05

.
Par : Dominique, Guillaume

DIFFICULTÉ :

Qu’est-ce ?

Composant bon marché, les capteurs HC-SR04 et SRF05 sont des émetteurs récepteurs d’ultrasons (40KHz) qui permettent de mesurer la distance entre le capteur et le premier élément situé sur sa trajectoire, qui lui renvoie les ultrasons.
 Au contraire d’autres moyens de détection, il n’est pas très discret au vu de sa taille (approximativement 4,5*2*1,7 cm). 
De part sa nature, une vision dégagée est requise devant lui pour permettre une bonne détection.

La portée du SR04 et du SRF05 est de 2cm à 3 m environ. La précison de l’ordre d’1/3 cm.
Sa consommation est de 30 à 50 milliampères.

Le principe de mesure de distance avec ce type de capteur repose sur le temps que met une onde sonore émise pour aller vers un objet, rebondir puis revenir vers le récepteur.
Le capteur fournit une sortie de durée proportionnelle à la distance.
Ce temps (t) est récupéré par l’Arduino et nous pouvons en déduire une distance en multipliant par la vitesse du son (340 m/s) et en divisant par 2 ( le son faisant un aller/retour) soit :
d = (340 x t) / 2 mètres.

Comment le brancher à l’Arduino ?

Le détecteur SR04 possède 4 broches : 2 pour l’alimentation avec VCC pour le 5V et le GND pour la masse de l’Arduino. Les autres broches trig et echo sont à brancher sur des broches numériques disponibles de l’Arduino.

Le détecteur SRF05 possède 5 broches, l’une n’étant pas utilisée, les autres ayant les même fonctions que celles du SR04.

Voici un exemple de branchement sur un UNO :

Comment récupérer la distance ?

Voici un code très simple. Il existe sur internet des bibliothèques permettant d’éliminer des valeurs extrêmes afin d’éviter les erreurs. Il sera de votre ressort de voir si une exactitude est nécessaire ou pas.
Les branchements sont situés dans le programme et les schémas ci-dessus :

/* Utilisation du capteur Ultrason HC-SR04 */

// définition des broches utilisées 
int trig = 12; 
int echo = 11; 
long lecture_echo; 
long cm;

void setup() 
{ 
  pinMode(trig, OUTPUT); 
  digitalWrite(trig, LOW); 
  pinMode(echo, INPUT); 
  Serial.begin(9600); 
}

void loop() 
{ 
  digitalWrite(trig, HIGH); 
  delayMicroseconds(10); // envoi d'une impulsion sur trig de 10 microsecondes
  digitalWrite(trig, LOW); 
  lecture_echo = pulseIn(echo, HIGH); 
  cm = lecture_echo / 58; // lecture_echo*340/(2*10000)
  Serial.print("Distance en cm : "); 
  Serial.println(cm); 
  delay(1000); 
}

Le programme effectue une mesure à peu près toutes les secondes et envoie le résultat sur la voie série (le terminal de l’IDE Arduino).

Utilisation

Ce capteur peut être utilisé de plein de façons, entre autres :

  • visualiser sur un TCO la présence d’un convoi ou non sur une portion de voie
  • connaître la position de quelque chose
  • arrêter un train en gare à une position précise

Dans ces utilisations, il s’agit de tester une condition de distance. Si la distance est inférieure à une valeur, un convoi est présent ou si supérieur, la voie est vide. Afin de connaître cette valeur au plus juste, faites votre montage dans les conditions réelles et même fixez le capteur à son emplacement réel. Lancer ensuite le programme donné ci-dessus avec et sans obstacle pour trouver la meilleure valeur.

Pour ma part, après tests, il s’avère que le détecteur que je possède a un pourcentage d’erreur constant. Il rajoute environ 20% de la distance à la mesure, paramètre que l’on peut donc incorporer dans le programme pour avoir une bonne mesure.
Je considère que pour le prix dépensé, la qualité est au rendez-vous, surtout quand l’erreur peut être corrigée au niveau logiciel.

6 Messages

  • Détecteurs à ultrasons 10 janvier 2016 19:37, par christian Bézanger

    L’avantage de l’électronique programmable est justement de pouvoir compenser les erreurs instrumentales des capteurs par un petit traitement des informations. Il ne faut donc pas s’en priver.
    Le plus délicat dans l’utilisation d’un tel capteur sur un réseau est de savoir où et comment le monter (fiabilité de la mesure et intégration au décor).

    Répondre

  • Détecteurs à ultrasons 22 novembre 2018 12:02, par perron

    Bravo pour ce tuto
    exemplaire !!

    bonne journée

    Monsieur Perron

    Répondre

  • Détecteurs à ultrasons 1er juin 2021 18:48, par ikkache housna

    http://www.osenon-ultrasonicsensor-...slm comment je peux programmer un capteur a ultrason double usage (2pin)
    avec un arduino nano

    Répondre

  • Détecteurs à ultrasons 1er juin 2021 21:16, par msport

    Bonjour,

    ce composant 112E26TR-1 peut assurer le rôle d’émetteur ou de capteur mais nécessite une électronique que le module présenté dans l’article comporte mais qu’un Arduino ne peut pas remplacer.

    Cordialement

    Répondre

  • Détecteurs à ultrasons 7 octobre 2021 16:30, par Emeline

    Bonjour et merci pour cet article.
    Je me demandais s’il était possible de récupérer le signal analogique du capteur.
    Bonne journée,
    Emeline

    Répondre

  • Détecteurs à ultrasons 7 octobre 2021 19:22, par Dominique

    Si vous étudiez la spécification de SFR05. Vous pourrez obtenir une information sur la distance
    https://www.pishrobot.com/files/pro...

    Répondre

Réagissez à « Détecteurs à ultrasons »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Matériel »

Les derniers articles

Les articles les plus lus