Vous êtes sur la page 1sur 16

Fonctionnement du capteur à

ultrasons HC-SR04 et interface


avec Arduino

Donnez à votre prochain projet Arduino des pouvoirs de chauve-souris avec un capteur
de distance à ultrasons HC-SR04 qui peut signaler la portée des objets jusqu'à 13 pieds
de distance. Ce qui est vraiment une bonne information à avoir si vous essayez d'éviter
que votre robot ne pénètre dans un mur! Ils sont de faible puissance (adaptés aux
appareils alimentés par batterie), peu coûteux, faciles à interfacer et sont incroyablement
populaires parmi les amateurs. Et en prime, il a même l'air cool, comme une paire d'yeux
Wall-E Robot pour votre dernière invention robotique!

Qu'est-ce que l'échographie?

Les ultrasons sont des ondes sonores aiguës dont les fréquences sont supérieures à la
limite audible de l'audition humaine.
Les oreilles humaines peuvent entendre des ondes sonores qui vibrent dans une plage
allant d'environ 20 fois par seconde (un grondement profond) à environ 20 000 fois par
seconde (un sifflement aigu). Cependant, l'échographie a une fréquence supérieure à 20
000 Hz et est donc inaudible pour l'homme.

Présentation du matériel HC-SR04


À la base, le capteur de distance à ultrasons HC-SR04 se compose de
deux transducteurs à ultrasons . L'un agit comme un émetteur qui convertit le signal
électrique en impulsions sonores ultrasoniques de 40 KHz. Le récepteur écoute les
impulsions transmises. S'il les reçoit, il produit une impulsion de sortie dont la largeur
peut être utilisée pour déterminer la distance parcourue par l'impulsion. Aussi simple
qu'une tarte!

Le capteur est petit, facile à utiliser dans tout projet de robotique et offre une excellente
détection de portée sans contact entre 2 cm et 400 cm (soit environ un pouce à 13
pieds) avec une précision de 3 mm. Puisqu'il fonctionne sur 5 volts, il peut être connecté
directement à un Arduino ou à tout autre microcontrôleur logique 5V.

Voici les spécifications complètes:

Tension de fonctionnement DC 5 V

Courant de fonctionnement 15 mA

Fréquence de fonctionnement 40 KHz

Gamme Max 4m

Gamme Min 2 cm

Précision de portée 3 mm

Angle de mesure 15 degrés


Signal d'entrée de déclenchement Impulsion TTL 10µS

Dimension 45 x 20 x 15 mm

Brochage du capteur à ultrasons HC-SR04


Jetons un coup d'œil à son Pinout.

VCC est l'alimentation du capteur de distance à ultrasons HC-SR04 auquel nous


connectons la broche 5V sur l'Arduino.
Déclenchement (déclenchement) la broche est utilisée pour déclencher les impulsions
sonores ultrasoniques.
Échopin produit une impulsion lorsque le signal réfléchi est reçu. La longueur de
l'impulsion est proportionnelle au temps qu'il a fallu pour que le signal émis soit détecté.
GND doit être connecté à la terre d'Arduino.

Comment fonctionne le capteur de distance


à ultrasons HC-SR04?
Tout commence, lorsqu'une impulsion d'au moins 10 µS (10 microsecondes) de durée
est appliquée à la broche de déclenchement. En réponse à cela, le capteur émet une
salve sonore de huit impulsions à 40 KHz. Ce motif à 8 impulsions rend la «signature
ultrasonique» de l'appareil unique, permettant au récepteur de différencier le motif
transmis du bruit ultrasonique ambiant.

Les huit impulsions ultrasonores voyagent dans l'air loin de l'émetteur. Pendant ce


temps, la broche d'écho passe à HAUT pour commencer à former le début du signal de
retour d'écho.

Dans le cas où, si ces impulsions ne sont pas réfléchies, le signal d'écho expirera après
38 ms (38 millisecondes) et reviendra à l'état bas. Ainsi, une impulsion de 38 mS
n'indique aucune obstruction dans la portée du capteur.

Si ces impulsions sont réfléchies, la broche Echo devient basse dès que le signal est
reçu. Cela produit une impulsion dont la largeur varie entre 150 µS et 25 mS, en fonction
du temps nécessaire à la réception du signal.
La largeur de l'impulsion reçue est ensuite utilisée pour calculer la distance à l'objet
réfléchi. Cela peut être résolu en utilisant une simple équation distance-vitesse-temps,
nous avons appris au lycée. Au cas où vous auriez oublié, un moyen facile de se souvenir
des équations de distance, de vitesse et de temps est de mettre les lettres dans un
triangle.

Prenons un exemple pour le rendre plus clair. Supposons que nous ayons un objet
devant le capteur à une distance inconnue et que nous recevions une impulsion de
largeur 500 µS sur la broche Echo. Calculons maintenant la distance entre l'objet et le
capteur. Nous utiliserons l'équation ci-dessous.
Distance = Vitesse x Temps

Ici, nous avons la valeur du temps soit 500 µs et nous connaissons la vitesse. Quelle
vitesse avons-nous? La vitesse du son, bien sûr! Ses 340 m / s. Nous devons convertir la
vitesse du son en cm / µs pour calculer la distance. Une recherche rapide sur Google
pour «vitesse du son en centimètres par microseconde» dira qu'elle est de 0,034 cm /
µs. Vous pouvez faire le calcul, mais la recherche est plus facile. Quoi qu'il en soit, avec
ces informations, nous pouvons calculer la distance!

Distance = 0,034 cm / µs x 500 µs

Mais ce n'est pas fait! N'oubliez pas que l'impulsion indique le temps qu'il a fallu pour
que le signal soit envoyé et réfléchi, donc pour obtenir la distance, vous devrez diviser
votre résultat en deux.

Distance = (0,034 cm / µs x 500 µs) / 2

Distance = 8,5 cm

Donc, maintenant, nous savons que l'objet est à 8,5 centimètres du capteur.

Câblage - Connexion de HC-SR04 à Arduino


Uno
Maintenant que nous avons une compréhension complète du fonctionnement du capteur
de distance à ultrasons HC-SR04, nous pouvons commencer à le connecter à notre
Arduino!

La connexion du HC-SR04 à l'Arduino est assez facile. Commencez par placer le capteur


sur votre maquette. Connectez la broche VCC à la broche 5V sur l'Arduino et connectez
la broche GND à la broche de terre sur l'Arduino.

Lorsque vous avez terminé, vous devriez avoir quelque chose qui ressemble à
l'illustration ci-dessous.
Câb

lage du capteur à ultrasons HC-SR04 à Arduino UNO - Mode normal

Alors maintenant que nous avons connecté notre capteur de distance à ultrasons, il est
temps d'écrire du code et de le tester.

Code Arduino - Utilisation de la bibliothèque


NewPing
Au lieu de déclencher le capteur à ultrasons et de mesurer manuellement la largeur
d'impulsion du signal reçu, nous utiliserons une bibliothèque spéciale. Il y en a pas mal
de disponibles, le plus polyvalent est celui appelé « NewPing ».

Téléchargez d'abord la bibliothèque, en visitant le repo Bitbucket ou, cliquez simplement


sur ce bouton pour télécharger le zip:

NewPing_v1.9.0.zip

Pour l'installer, ouvrez l'IDE Arduino, accédez à Sketch> Inclure la bibliothèque> Ajouter
une bibliothèque .ZIP, puis sélectionnez le fichier ZIP NewPing que vous venez de
télécharger. Si vous avez besoin de plus de détails sur l'installation d'une bibliothèque,
visitez ce tutoriel sur l'installation d'une bibliothèque Arduino.
La bibliothèque NewPing est assez avancée et améliore considérablement la précision
de notre croquis d'origine. Il prend également en charge jusqu'à 15 capteurs à ultrasons
à la fois et peut émettre directement en centimètres, en pouces ou en durée.

Voici notre croquis réécrit pour utiliser la bibliothèque NewPing:

// This uses Serial Monitor to display Range Finder distance readings

// Include NewPing Library


#include "NewPing.h"

// Hook up HC-SR04 with Trig to Arduino Pin 9, Echo to Arduino pin 10


#define TRIGGER_PIN 9
#define ECHO_PIN 10

// Maximum distance we want to ping for (in centimeters).


#define MAX_DISTANCE 400

// NewPing setup of pins and maximum distance.


NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
float duration, distance;

void setup()
{
Serial.begin(9600);
}

void loop()
{
// Send ping, get distance in cm
distance = sonar.ping_cm();

// Send results to Serial Monitor


Serial.print("Distance = ");

if (distance >= 400 || distance <= 2)


{
Serial.println("Out of range");
}
else
{
Serial.print(distance);
Serial.println(" cm");
}
delay(500);
}

Sortie sur

moniteur série

Explication du code:
L'esquisse ci-dessus est simple et fonctionne bien, mais elle n'a qu'une résolution
inférieure à un centimètre. Si vous souhaitez ramener les valeurs de la virgule décimale,
vous pouvez utiliser NewPing en mode durée plutôt qu'en mode distance. Vous devez
remplacer cette ligne

// Send ping, get distance in cm


distance = sonar.ping_cm();

avec les lignes ci-dessous

duration = sonar.ping();
distance = (duration / 2) * 0.0343;

Pour améliorer la précision de votre HC-SR04 au niveau supérieur, il existe une autre
fonction dans la bibliothèque NewPing appelée «itérations». Itérer signifie parcourir
quelque chose plus d'une fois, et c'est précisément ce que fait le mode d'itération. Il
prend plusieurs mesures de durée au lieu d'une seule, rejette toutes les lectures non
valides, puis fait la moyenne des autres. Par défaut, il faut 5 lectures, mais vous pouvez
en spécifier autant que vous le souhaitez.

int iterations = 5;
duration = sonar.ping_median(iterations);

Projet Arduino

Recherche de distance sans contact


Créons un projet rapide pour démontrer comment un simple capteur à ultrasons peut
être transformé en un détecteur de distance sans contact sophistiqué . Dans ce projet,
nous utiliserons un écran LCD de 16 × 2 caractères pour afficher une barre horizontale
pour représenter graphiquement la distance à l'objet avec la valeur sur la ligne du bas.

Si vous n'êtes pas familier avec les écrans LCD 16 × 2 caractères, envisagez de lire (au
moins en survolant) le didacticiel ci-dessous.

Interfaçage du module LCD 16 × 2 caractères avec Arduino


Vous voulez que vos projets Arduino affichent des messages d'état ou des lectures de capteur? Alors
ces écrans LCD pourraient être la solution idéale. Ils sont extrêmement courants et ...

Ensuite, nous devons établir les connexions à l'écran LCD comme indiqué ci-dessous.
Câblage du capteur à ultrasons HC-SR04 et de l'écran LCD 16 × 2 à Arduino UNO

Avant de télécharger du code et de jouer avec le capteur, nous devons installer la


bibliothèque appelée LCDBarGraph . Cette bibliothèque permet de dessiner un bargraph
horizontal sur l'écran LCD, où la longueur de la barre est proportionnelle aux valeurs
fournies.

Téléchargez d'abord la bibliothèque, en visitant l' Arduino Playground ou, cliquez


simplement sur ce bouton pour télécharger le zip:

LcdBarGraph-1.5.zip

Une fois que vous avez installé la bibliothèque, essayez le croquis ci-dessous.

// includes the LiquidCrystal Library


#include <LiquidCrystal.h>

// includes the LcdBarGraph Library


#include <LcdBarGraph.h>

// Maximum distance we want to ping for (in centimeters).


#define max_distance 200

// Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
LcdBarGraph lbg(&lcd, 16, 0, 1); // Creates an LCD Bargraph object.

const int trigPin = 9;


const int echoPin = 10;
long duration;
int distance;

void setup()
{
lcd.begin(16,2); // Initializes the interface to the LCD screen

pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}

void loop()
{
// Write a pulse to the HC-SR04 Trigger Pin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

// Measure the response from the HC-SR04 Echo Pin


duration = pulseIn(echoPin, HIGH);

// Determine distance from duration


// Use 343 metres per second as speed of sound
distance= duration*0.034/2;

// Prints "Distance: <value>" on the first line of the LCD


lcd.setCursor(0,0);
lcd.print("Distance: ");
lcd.print(distance);
lcd.print(" cm");

// Draws bargraph on the second line of the LCD


lcd.setCursor(0,1);
lbg.drawValue(distance, max_distance);
delay(500);
}

Voici à quoi ressemble la sortie.

Sortie graphique à barres sur écran LCD 16 × 2 caractères

Explication du code:
Vous devez d'abord configurer la bibliothèque LiquidCrystal comme d'habitude. Après
cela, vous pouvez créer une instance LcdBarGraph avec l'instance LiquidCrystal qui vient
d'être créée. Vous devez passer la référence de LiquidCrystal au constructeur de
LcdBarGraph.

Le constructeur de LcdBarGraph prend trois paramètres supplémentaires. Le deuxième


est le nombre de colonnes de caractères sur l'écran LCD (dans notre cas, il s'agit de
16). Les deux derniers paramètres sont facultatifs et permettent un positionnement
personnalisé de la barre.

// creating bargraph instance


LcdBarGraph lbg(&lcd, 16, 0, 1);

Maintenant, une fois que nous calculons la distance du capteur, nous pouvons utiliser la
fonction drawValue (value, maxValue) pour afficher le bargraph. Cela dessine un
bargraph avec une valeur comprise entre 0 et maxValue.

//display bargraph
lbg.drawValue(distance, max_distance);
Interfaçage du HC-SR04 avec le mode 3 fils
Le mode 3 fils est quelque chose dont vous n'avez besoin que d'une seule connexion à
une seule broche d'E / S numérique Arduino au lieu de deux. Si vous ne le savez pas, il
existe de nombreux capteurs à ultrasons qui ne fonctionnent qu'en mode 3 fils, comme
un impressionnant capteur de parallaxe ping))) .

En mode 3 fils, la broche d'E / S unique est utilisée à la fois comme entrée et comme
sortie. Cela est possible car il n'y a jamais de moment où l'entrée et la sortie sont
utilisées. En éliminant l'exigence d'une broche d'E / S, nous pouvons enregistrer une
connexion à notre Arduino et l'utiliser pour autre chose. Il est également utile lors de
l'utilisation d'une puce comme l'ATtiny85 qui a un nombre limité de broches d'E / S.

Voici comment connecter le capteur HC-SR04 à l'Arduino en mode 3 fils.

Câb

lage du capteur à ultrasons HC-SR04 à Arduino UNO - Mode 3 fils

Comme vous pouvez le voir, tout ce que vous avez à faire est de connecter à la fois le
déclencheur et l'écho à la broche Arduino 9. Notez que la seule différence que vous
devez faire dans l'esquisse est de définir la broche 9 pour les valeurs des broches
Trigger et Echo. Le reste de l'esquisse est identique.

#define TRIGGER_PIN 9 // Trigger and Echo both on pin 9


#define ECHO_PIN 9
Quelles sont les limites?
En termes de précision et d'utilité globale, le capteur de distance à ultrasons HC-SR04
est vraiment génial, en particulier par rapport à d'autres capteurs de détection de
distance à faible coût. Cela ne veut pas dire que le capteur HC-SR04 est capable de
mesurer «tout». Les schémas suivants montrent quelques situations que le HC-SR04
n'est pas conçu pour mesurer:

a) La distance entre le capteur et l'objet / l'obstacle est supérieure à 13 pieds.

b) L'objet a sa surface réfléchissante à un angle peu profond afin que le son ne soit pas
réfléchi vers le capteur.

c) L'objet est trop petit pour renvoyer suffisamment de son vers le capteur. De plus, si
votre capteur HC-SR04 est monté bas sur votre appareil, vous pouvez détecter le son se
reflétant sur le sol.

d) En expérimentant avec le capteur, nous avons découvert que certains objets avec des
surfaces molles et irrégulières (comme les animaux en peluche) absorbent plutôt que
réfléchissent le son et peuvent donc être difficiles à détecter pour le capteur HC-SR04.
Effet de la température sur la mesure de
distance
Bien que le HC-SR04 soit raisonnablement précis pour la plupart de nos projets tels que
la détection d'intrus ou les alarmes de proximité; Mais il y a des moments où vous
voudrez peut-être concevoir un appareil qui doit être utilisé à l'extérieur ou dans un
environnement exceptionnellement chaud ou froid. Si tel est le cas, vous voudrez peut-
être prendre en compte le fait que la vitesse du son dans l'air varie en fonction de la
température, de la pression atmosphérique et de l'humidité.

Étant donné que la vitesse du son est prise en compte dans notre calcul de distance HC-
SR04, cela pourrait affecter nos lectures. Si la température (° C) et l'humidité sont déjà
connues, considérez la formule ci-dessous:

Vitesse du son m / s = 331,4 + (0,606 * Temp) + (0,0124 * Humidité)

 Avertissement
 Politique de confidentialité

Copyright ©

Vous aimerez peut-être aussi