LOCODUINO

Forum de discussion
Dépôt GIT Locoduino
Flux RSS

jeudi 14 décembre 2017

12 visiteurs en ce moment

Détecteurs à ultrasons

HC-SR04 ou SRF05

. Par : Dominique, Guillaume

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 :

  1. /* Utilisation du capteur Ultrason HC-SR04 */
  2.  
  3. // définition des broches utilisées
  4. int trig = 12;
  5. int echo = 11;
  6. long lecture_echo;
  7. long cm;
  8.  
  9. void setup()
  10. {
  11. pinMode(trig, OUTPUT);
  12. digitalWrite(trig, LOW);
  13. pinMode(echo, INPUT);
  14. Serial.begin(9600);
  15. }
  16.  
  17. void loop()
  18. {
  19. digitalWrite(trig, HIGH);
  20. delayMicroseconds(10); // envoi d'une impulsion sur trig de 10 microsecondes
  21. digitalWrite(trig, LOW);
  22. lecture_echo = pulseIn(echo, HIGH);
  23. cm = lecture_echo / 58; // lecture_echo*340/(2*10000)
  24. Serial.print("Distance en cm : ");
  25. Serial.println(cm);
  26. delay(1000);
  27. }

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.

1 Message

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 »

Fonctionnement et pilotage d’une DEL

Qu’est ce qu’une carte Arduino ?

Amplifier le signal de sortie d’un ARDUINO avec un ULN 2803

Résistances, kézako ?

Relais électromagnétique

Les diodes classiques

Détecteurs à ultrasons

La carte Arduino Uno

Bouton poussoir

Les différents types de mouvements d’un servomoteur

Les encodeurs en quadrature

Les écrans LCD alphanumériques

Des bus de communication pour l’Arduino

Les interrupteurs

Le microcontrôleur ATtiny45 (1)

Le microcontrôleur ATtiny45 (2)

Le microcontrôleur ATtiny45 (3)

Le microcontrôleur ATtiny45 (4)

Le microcontrôleur ATtiny45 (5)

Le microcontrôleur ATtiny45 (6)

Le microcontrôleur ATtiny45 (7)

Le microcontrôleur ATtiny45 (8)

Signaux lumineux et Arduino

Les shields de prototypage et de connexion

Commande de moteur à courant continu

Les derniers articles

Le microcontrôleur ATtiny45 (8)


Christian

Le microcontrôleur ATtiny45 (7)


Christian

Commande de moteur à courant continu


Christian

Le microcontrôleur ATtiny45 (6)


Christian

Les shields de prototypage et de connexion


Christian

Le microcontrôleur ATtiny45 (5)


Christian

Signaux lumineux et Arduino


Christian

Le microcontrôleur ATtiny45 (4)


Christian

Le microcontrôleur ATtiny45 (3)


Christian

Le microcontrôleur ATtiny45 (2)


Christian

Les articles les plus lus

La carte Arduino Uno

Les diodes classiques

Commande de moteur à courant continu

Les écrans LCD alphanumériques

Des bus de communication pour l’Arduino

Qu’est ce qu’une carte Arduino ?

Fonctionnement et pilotage d’une DEL

Bouton poussoir

Les encodeurs en quadrature

Amplifier le signal de sortie d’un ARDUINO avec un ULN 2803