Capteur de distance

Le capteur à ultrasons HC-SR04 permet de détecter la distance qui le sépare d'un obstacle en émettant des ultrasons.

Ultrasonic Sensor

DéfinitionPrincipe

La broche Trig (trigger) reçoit la demande d'émettre des ultrasons. Le capteur émet un signal d'ultrasons assez court qui rebondit sur un obstacle et revient au capteur. Le capteur passe la broche Echo à l’état haut à partir de la fin de l'émission de son signal jusqu'à ce qu'il détecte le retour.

Ultrasonic sensor Principe

La distance entre le capteur et l'obstacle dépend du temps pendant lequel la broche echo était à l'état haut ainsi que de la vitesse des ultrasons.

Distance = Temps * Vitesse

Les ultrasons ayant fait un allé-retour, il faudra diviser par deux pour obtenir la distance jusqu'à l'obstacle.

Distance = Temps * Vitesseson / 2

Vitesseson = 340 m/s = 0,034 cm/μs

DéfinitionExemple

Pour lancer une demande de distance, il faut envoyer un signal de 10μs sur la broche TRIG avec les fonctions

digitalWrite() et delayMicroseconds(). On met TRIG à LOW pendant 5μs puis à HIGHT pendant 10μs puis à LOW.

Ensuite on écoute la broche ECHO en mesurant la longueur du signal avec la fonction pulseIn(ECHO, HIGH).

Circuit Capteur Ultrasons
1
const int TRIG = 6;
2
const int ECHO = 5;
3
4
void setup()
5
{
6
  pinMode(TRIG, OUTPUT);
7
  pinMode(ECHO, INPUT);
8
  Serial.begin(9600);
9
}
10
void loop()
11
{
12
  // Émission d'un signal de durée 10 microsecondes
13
  digitalWrite(TRIG, LOW);
14
  delayMicroseconds(5);
15
  digitalWrite(TRIG, HIGH);
16
  delayMicroseconds(10);
17
  digitalWrite(TRIG, LOW);
18
19
  // Écoute de l'écho
20
  long temps = pulseIn(ECHO, HIGH);
21
22
  // Calcul de la distance
23
  int distance = temps * 0.034 / 2;
24
25
  // Affichage de la distance
26
  Serial.print("Distance : ");
27
  Serial.print(distance);
28
  Serial.println("cm");
29
}

DéfinitionNewPing.h

Pour simplifier la programmation, on peut utiliser une bibliothèque.

Il en existe une multitude (ultrasonic, HCSR04, ...).

Nous utilisons ici NewPing.h

Circuit Capteur Ultrasons
1
#include <NewPing.h>
2
3
const int TRIG = 6;
4
const int ECHO = 5;
5
const int MAX_DISTANCE 200
6
7
NewPing signal(TRIG, ECHO, MAX_DISTANCE);
8
9
void setup()
10
{
11
  Serial.begin(9600);
12
}
13
14
void loop()
15
{
16
  int distance = signal.ping_cm();
17
  Serial.print("Distance: ");
18
  Serial.print(distance);
19
  Serial.println("cm");
20
}

signal : nom de la variable contenant l'instance de la classe NewPing

ping_cm : méthode qui retourne la distance en cm