Le télémètre à ultrasons HC-SR04 permet de mesurer la distance du plus proche obstacle se trouvant devant lui. Par exemple, il peut servir de capteur pour un robot qui évite les obstacles, pour un dispositif d'aide au stationnement d'un véhicule, pour un système d'alarme détectant la présence d'un intrus, etc.
Dans ce court article, nous branchons un télémètre HC-SR04 à une carte STM32 Nucleo.
Si vous préférez, d'autres articles expliquent comment utiliser le HC-SR04 avec un Arduino ou avec un Raspberry Pi.
Principe de fonctionnement
Le télémètre HC-SR04 est un sonar: il émet des ultrasons, et capte leur écho. Plus l'obstacle est éloigné, plus le délai entre l'émission de l'ultrason et la réception de l'écho sera long.
Lorsque la pin "Trig" du module est brièvement soumise à un signal logique haut, une brève impulsion ultrasonore est émise.
Lorsqu'un écho est capté, la pin "Echo" prend l'état logique haut pendant une durée égale à la durée du trajet aller-retour de l'ultrason.
Le circuit
Le module HC-SR04 fonctionne à 5 V, mais il interprétera correctement le signal numérique de 3,3 V que lui enverra le Nucleo sur la pin "Trig". Par contre, j'ai préférer utiliser un 4050 pour abaisser à 3,3 V le signal de 5 V émis par la sortie "Echo" (il semble que les entrées du Nucleo sont conçues pour tolérer les tensions de 5 V, cette précaution est peut-être donc superflue).
En résumé, il faut brancher les choses de cette façon:
Pin Vcc du HC-SR04 ------- Pin 5 V du Nucleo
Pin Trig du HC-SR04 ------- Pin D8 du Nucleo
Pin Echo du HC-SR04 ------Pin 3 du CD4050
Pin Gnd du HC-SR04 ------ Pin GND du Nucleo
Pin 1 du CD4050 ------- Pin 3V3 du Nucleo
Pin 2 du CD4050 ------ Pin PWM/D9 du Nucleo
Pin 8 du CD4050 ------- Pin GND du Nucleo
Un petit script à utiliser sur mbed
Voici finalement un script qui affichera dans un moniteur série (celui de l'IDE Arduino, par exemple), la distance d'un obstacle, en centimètres.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/******************************************************************* | |
Utilisation d'un télémètre HC-SR04 avec une carte STM32 Nucleo | |
https://electroniqueamateur.blogspot.com/2017/04/telemetre-ultrasons-hc-sr04-et-stm32.html | |
********************************************************************/ | |
#include "mbed.h" | |
Serial pc(USBTX,USBRX); // pour envoi de données par communciation série 9600 bauds | |
DigitalOut trig(D8); // pin trigger du HC-SR04 branchée à D8 | |
DigitalIn echo(D9); // pin echo du HC-SR04 branché à D9 | |
Timer t; //chronomètre | |
#define vitesse_son 343.595*100; // vitesse du son en cm/s | |
int main() { | |
double time, distance; | |
while(1) { | |
t.reset(); //chronomètre à zéro | |
trig = 1; // émission de l'ultrasons | |
time = 0; | |
wait_us(10); | |
trig = 0; | |
if (echo == 1) { //réception d'un écho | |
t.start(); // démarrage du chronomètre | |
while(1){ | |
if(echo == 0) { | |
t.stop(); // arrêt du chronomètre | |
time = t.read(); // lecture du chronomètre | |
distance = time / 2.0 * vitesse_son; // conversion en cm | |
pc.printf("%1.1f cm\n\r",distance); // envoie sur résultat par communication série | |
t.reset(); // chronomètre à zéro | |
wait(1); // une mesure par seconde | |
break; | |
} | |
} | |
} | |
} | |
} |
(Basé sur un script par T Nara.)
À lire également:
Vous trouverez aussi sur ce blog des conseils pour utiliser le télémètre HC-SR04 avec un Arduino Uno, avec un Raspberry Pi, avec un ATTiny85, avec un microcontrôleur PIC et avec un micro:bit.
Yves Pelletier (Twitter, Facebook)
Aucun commentaire:
Enregistrer un commentaire