Vues : 164 Auteur : Grace Heure de publication : 2021-07-26 Origine : Site
Le Le capteur à ultrasons HC-SR04 est l'un des modules de mesure de distance les plus populaires pour les projets Arduino. Il est largement utilisé dans les robots d'évitement d'obstacles, les capteurs de stationnement, la détection de niveau, les poubelles intelligentes, les télémètres et d'autres applications de détection sans contact.
Le module émet des ondes ultrasonores de 40 kHz via un émetteur. Lorsque l’onde sonore rencontre un objet, elle est réfléchie vers le récepteur. En mesurant le temps d'écho et en utilisant la vitesse du son, Arduino peut calculer la distance entre le capteur et l'objet.
| Paramètre | Valeur |
| Tension de fonctionnement typique | 5 V CC |
| Courant de travail statique | Moins de 5 mA sur certaines versions de module |
| Fréquence de fonctionnement | Onde ultrasonique de 40 kHz |
| Distance de détection | Plage commune : 2 cm à 400 cm ; certaines versions à gain ajusté peuvent prendre en charge une portée plus longue. |
| Angle de détection | Généralement à moins de 15 degrés ; certaines versions avec un gain plus élevé peuvent atteindre environ 30 degrés. |
| Précision | Jusqu'à environ 0,3 cm dans des conditions de test appropriées |
| Zone aveugle | Distance de mesure minimale d'environ 2 cm |
Le module ultrasonique HC-SR04 dispose de quatre broches : VCC, TRIG, ECHO et GND. Arduino envoie une courte impulsion de déclenchement à la broche TRIG, puis lit l'impulsion de retour de la broche ECHO.
| Broche HC-SR04 | Connexion Arduino | Fonction |
| VCC | 5V | Alimentation du module à ultrasons. |
| TRIGONOMÉTRIE | Broche numérique 9 | Entrée de déclenchement. Arduino applique une impulsion de 10 us pour commencer à mesurer. |
| ÉCHO | Broche numérique 10 | Sortie écho. Arduino lit la largeur d'impulsion pour calculer la distance. |
| GND | GND | Connexion à la terre. |
Le HC-SR04 fonctionne par mesure du temps de vol. Arduino envoie un signal de déclenchement de haut niveau d'au moins 10 microsecondes à la broche TRIG. Le module envoie alors automatiquement huit impulsions ultrasoniques de 40 kHz et attend l'écho réfléchi.
Lorsque le signal ultrasonique réfléchi est détecté, la broche ECHO émet une impulsion de haut niveau. La durée de cette impulsion est le temps de trajet aller-retour de l'onde ultrasonore.
Distance = Temps d'écho de haut niveau × Vitesse du son / 2
Dans le code Arduino, la formule simplifiée courante est :
Distance en cm = durée × 0,0343 / 2
Le processus de synchronisation est simple : Arduino maintient TRIG bas brièvement, envoie une impulsion élevée de 10 us, puis ramène TRIG au niveau bas. Le HC-SR04 envoie une rafale ultrasonique et règle ECHO à un niveau élevé jusqu'à ce que le signal réfléchi revienne ou que la mesure expire.
Pour éviter des lectures instables, laissez un court délai entre les mesures. Un cycle de mesure d'environ 60 ms est couramment utilisé afin que l'écho ultrasonore précédent ait le temps de disparaître avant le prochain déclenchement.
La fonction Arduino pulseIn() est utilisée pour mesurer la durée pendant laquelle une broche numérique reste ÉLEVÉE ou FAIBLE. Pour le HC-SR04, Arduino utilise pulseIn(echoPin, HIGH) pour lire la largeur d'impulsion de haut niveau à partir de la broche ECHO.
| Syntaxe | Signification |
| pulseIn (broche, valeur) | Lit la durée d’une impulsion ÉLEVÉE ou FAIBLE. |
| pulseIn (broche, valeur, délai d'attente) | Lit l'impulsion avec une valeur de délai d'attente en microsecondes. |
L'utilisation d'un délai d'attente est recommandée. Si aucun écho n'est renvoyé, la fonction peut arrêter d'attendre et renvoyer 0 au lieu de bloquer le programme trop longtemps.
Le câblage est simple. Connectez VCC à 5 V, GND à GND, TRIG à une broche de sortie numérique Arduino et ECHO à une broche d'entrée numérique Arduino. L'exemple suivant utilise Arduino Uno, TRIG sur la broche 9 et ECHO sur la broche 10.
Le programme Arduino typique suivant envoie une impulsion de déclenchement de 10us, lit la largeur d'impulsion ECHO, calcule la distance en centimètres et imprime le résultat sur le moniteur série.
const int trigPin = 9 ; const int echoPin = 10 ; longue durée; distance de flottementCm ; void setup() { pinMode(trigPin, SORTIE); pinMode(echoPin, INPUT); Série.begin(9600); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, ÉLEVÉ); delayMicroseconds(10); digitalWrite(trigPin, FAIBLE); durée = pulseIn (echoPin, HIGH, 30000); if (durée == 0) { Serial.println('Hors plage'); } else { distanceCm = durée * 0,0343 / 2 ; Serial.print('Distance : '); Serial.print(distanceCm); Serial.println(' cm'); } délai (60); }
Si vous voyez des valeurs de distance sur le moniteur série, le capteur à ultrasons HC-SR04 et le câblage Arduino fonctionnent correctement. Vous pouvez ensuite utiliser les données de distance pour la détection d'obstacles, le contrôle des mouvements du robot, les portes automatiques, les rappels de stationnement ou les projets de niveau de liquide.
Gardez l'objet mesuré dans la plage de distance recommandée et en dehors de la zone aveugle de 2 cm.
Utilisez une surface cible plate et solide pour une meilleure réflexion des ultrasons.
Évitez de mesurer des matériaux mous, inclinés, poreux ou insonorisants.
Utilisez une alimentation 5 V stable et gardez le câblage court et sécurisé.
Ajoutez un délai d'attente à pulseIn() pour éviter un blocage prolongé lorsqu'aucun écho ne revient.
Filtrez la moyenne ou la médiane de plusieurs lectures pour réduire le bruit.
Pour une plus grande précision, compensez la température car la vitesse du son change avec la température de l'air.
| Application | Comment le HC-SR04 est utilisé |
| Robot d'évitement d'obstacles | Détecte les objets à proximité et aide le robot à changer de direction. |
| Capteur d'aide au stationnement | Mesure la distance entre le véhicule et un obstacle. |
| Détection du niveau de liquide | Mesure la distance entre le capteur et la surface du liquide sans contact. |
| Poubelle intelligente | Détecte une main ou un objet à proximité et déclenche l'ouverture automatique du couvercle. |
Pour utiliser un capteur à ultrasons HC-SR04 avec Arduino, connectez VCC à 5 V, GND à GND, TRIG à une broche de sortie numérique et ECHO à une broche d'entrée numérique. Envoyez une impulsion de déclenchement de 10 us, lisez la durée de l'écho avec pulseIn() et calculez la distance avec la formule de temps de vol.
Le HC-SR04 est peu coûteux, facile à utiliser et adapté à de nombreux projets de mesure de distance Arduino. Pour de meilleurs résultats, faites attention à la surface cible, à l'angle de mesure, à la zone aveugle, à la puissance stable, à la gestion du délai d'attente et aux effets de la température.
Arduino envoie une impulsion de 10us à la broche TRIG. Le HC-SR04 émet huit impulsions ultrasoniques de 40 kHz et règle la broche ECHO à un niveau élevé jusqu'à ce que le son réfléchi revienne. Arduino mesure ce temps d'impulsion et calcule la distance.
La formule est distance = durée × vitesse du son / 2. En centimètres, une formule Arduino courante est distanceCm = durée × 0,0343 / 2, où la durée est mesurée en microsecondes.
Le temps d'écho mesuré est le temps aller-retour du capteur à l'objet et retour au capteur. La division par 2 donne la distance aller simple entre le capteur et l'objet.
Vous pouvez utiliser la plupart des broches numériques Arduino. Dans de nombreux exemples, TRIG est connecté à la broche numérique 9 et ECHO est connecté à la broche numérique 10. Le code doit correspondre aux broches utilisées dans votre câblage.
Les causes courantes incluent un câblage desserré, une alimentation 5 V instable, des numéros de broches TRIG ou ECHO erronés, aucun objet à portée, des surfaces cibles inclinées, des matériaux souples, des têtes de capteur bloquées ou l'absence de délai d'attente dans la fonction pulseIn().
La zone aveugle est la distance minimale sur laquelle le module ne peut pas mesurer de manière fiable. Pour le HC-SR04, la zone aveugle est généralement d'environ 2 cm. Des objets plus proches que cela peuvent produire des lectures instables.
Oui, le HC-SR04 peut être utilisé pour des projets simples de niveau d'eau sans contact si le capteur est protégé de l'humidité et monté au-dessus de la surface du liquide. Pour les réservoirs humides, extérieurs ou industriels, un capteur à ultrasons étanche est recommandé.
Utilisez une alimentation stable, maintenez le capteur perpendiculaire à la cible, évitez les surfaces molles ou inclinées, ajoutez un délai d'attente pulseIn, effectuez plusieurs lectures, utilisez un filtrage médian et attendez environ 60 ms entre les mesures.