Le capteur de distance HC-SR04
Connexion à la carte Arduino
Ce capteur se compose d'un émetteur d'ultrasons de fréquence 40 kHz. Il peut être utilisé comme élément principal d'un télémètre ou utilisé pour déterminer la vitesse du son.
Le brochage est le suivant :
VCC : +5V de la platine.
GND : Masse.
Trig : borne de déclenchement de la mesure, connectée à un PIN numérique de l'Arduino réglé en sortie.
Echo : borne de récupération du signal de mesure, connectée à un PIN numérique de l'Arduino réglé en entrée.
Fonctionnement
La mesure s'effectue en deux temps :
Le pin E/S connecté à la broche Trig doit être configuré en mode Sortie (OUTPUT). Il est utilisé pour déclencher la mesure en appliquant une impulsion (état haut) d'une durée au moins égale à \(10\ \mu s\).
Le pin E/S connecté à la broche Echo doit être configuré en mode Entrée (INPUT) de façon à recueillir le signal. Ce signal reste à l'état Haut tant que l'écho n'est pas reçu par le capteur, donc pendant la durée d'un aller-retour.
Ci-contre l'oscillogramme correspondant à une mesure réelle.
Base de temps : \(200\ {\mu s /div}\)
La mesure de l'écho commence environ \(450\ \mu s\) après l'impulsion de déclenchement.
Dans le cas présent, la durée de l'aller-retour correspond à la durée de l'impulsion Echo, soit \(816\ \mu s\).
On a donc :
\(D=\dfrac{340 \times 816\times 10^{-6}}{2}\simeq0{,}139\ \mathrm{m}\)
C'est cohérent avec le résultat renvoyé par le programme, en médaillon sur la capture d'écran.
Ci-contre, on vérifie la coïncidence entre le passage à l'état haut de la borne Echo et l'émission de la salve d'ultrasons :
en jaune, le signal recueilli sur la borne Echo du capteur télémètre ;
en vert, le signal recueilli par un récepteur d'ultrasons collé à l'émetteur du télémètre.
Méthode : Calcul de la distance
D'après la fiche technique du module [pdf], la durée de l'impulsion Echo back est liée à la distance par la relation \(D(cm)=\dfrac{t_{\text{impulsion}}(\mu s)}{58}\).
Pour une activité élève, on peut s'affranchir de cette relation directe et les faire travailler à partir de la durée de l'aller-retour de la salve d'ultrasons qui est égale à la durée de l'état haut de la borne Echo.
On préfère donc faire utiliser aux élèves la relation \(D = \dfrac{v_{son} \times t_{\text{impulsion}}}{2}\), en effectuant les conversions nécessaires.
Le langage de programmation de l'Arduino possède une instruction qui renvoie la durée d'une impulsion : pulseIn()
.
Sa syntaxe ci-dessous stocke cette durée dans une variable temps préalablement définie :
temps = pulseIn(Pin , État , TimeOut);
Pin est le numéro de l'entrée/sortie connectée à la borne Echo du module.
État est soit HIGH (1) ou LOW (0) selon qu'on mesure la durée d'un état haut ou bas.
TimeOut est optionnel, c'est la durée en microsecondes au-delà de laquelle la mesure cesse.
pulseIn()
renvoie la durée en microsecondes. Au-delà de la durée définie par la valeur de TimeOut, et en tout état de cause après 38 ms, la valeur renvoyée est 0.