Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Capteur à ultrasons HC-SR04 et Arduino – Guide complet

Dans ce didacticiel, nous allons apprendre comment le capteur à ultrasons HC-SR04 fonctionne et comment l'utiliser avec Arduino . C'est le capteur le plus populaire pour mesurer la distance et créer des robots évitant les obstacles avec Arduino.

J'ai déjà utilisé le capteur à ultrasons HC-SR04 pour construire plusieurs projets Arduino sympas et vous pouvez les consulter ici :

  • Radar Arduino (Sonar)
  • Gamme de mesure et niveau à bulle numérique
  • Projet de système de sécurité et d'alarme
  • Robot hexapode Fourmi Arduino

Vous pouvez regarder la vidéo suivante ou lire le tutoriel écrit ci-dessous. Il contient des informations supplémentaires et des exemples pour le capteur, y compris les spécifications, les brochages, les schémas de câblage, les codes et plus encore.

Présentation du matériel HC-SR04

Le HC-SR04 est un capteur de mesure de distance abordable et facile à utiliser qui a une portée de 2 cm à 400 cm (environ un pouce à 13 pieds).

Le capteur est composé de deux transducteurs à ultrasons. L'un est un émetteur qui émet des impulsions sonores ultrasonores et l'autre est un récepteur qui écoute les ondes réfléchies. Il s'agit essentiellement d'un SONAR qui est utilisé dans les sous-marins pour détecter des objets sous-marins.

Voici ses principales caractéristiques :

Tension de fonctionnement 5V CC
Courant de fonctionnement 15 mA
Fréquence de fonctionnement 40KHz
Plage minimale 2cm / 1 pouce
Plage maximale 400cm / 13 pieds
Précision 3mm
Mesure de l'angle <15°
Dimension 45 x 20 x 15 mm

Broche du capteur à ultrasons HC-SR04

Voici le brochage du capteur :

Le capteur a 4 broches. VCC et GND aller à 5V et GND broches sur l'Arduino, et le Trig et Écho aller à n'importe quelle broche Arduino numérique. Utilisation du Trig broche nous envoyons l'onde ultrasonore de l'émetteur, et avec le Echo broche nous écoutons le signal réfléchi.

Comment fonctionne le capteur de distance à ultrasons HC-SR04 ?

Il émet un ultrason à 40 000 Hz qui se déplace dans l'air et s'il y a un objet ou un obstacle sur son chemin, il rebondira vers le module. Compte tenu du temps de trajet et de la vitesse du son, vous pouvez calculer la distance.

Afin de générer les ultrasons, nous devons régler la broche Trig sur un état élevé pendant 10 µs. Cela enverra une rafale ultrasonique de 8 cycles qui se déplacera à la vitesse du son. Les broches Echo montent immédiatement après l'envoi de cette rafale ultrasonique à 8 cycles, et elles commencent à écouter ou à attendre que cette onde soit réfléchie par un objet.

S'il n'y a pas d'objet ou d'impulsion réfléchie, la broche Echo expirera après 38 ms et reviendra à l'état bas.

Si nous recevons une impulsion réfléchie, la broche Echo descendra plus tôt que ces 38 ms. Selon le temps pendant lequel la broche Echo était HIGH, nous pouvons déterminer la distance parcourue par l'onde sonore, donc la distance entre le capteur et l'objet.

À cette fin, nous utilisons la formule de base suivante pour calculer la distance :

Distance =Vitesse x Temps

En fait, nous connaissons à la fois la vitesse et les valeurs de temps. Le temps est la durée pendant laquelle la broche Echo était HIGH, et la vitesse est la vitesse du son qui est de 340 m/s. Il y a une étape supplémentaire que nous devons faire, et c'est diviser le résultat final par 2. Et c'est parce que nous mesurons la durée dont l'onde sonore a besoin pour se rendre à l'objet et rebondir.

Disons que la broche Echo était HIGH pendant 2 ms. Si nous voulons obtenir le résultat de la distance en cm, nous pouvons convertir la valeur de la vitesse du son de 340 m/s à 34 cm/ms.

Distance =(Vitesse x Temps) / 2 =(34cm/ms x 1,5ms) / 2 =25,5cm.

Donc, si la broche Echo était HIGH pendant 2 ms (ce que nous mesurons à l'aide de pulseIn() fonction), la distance entre le capteur et l'objet est de 34 cm.

Comment connecter le capteur à ultrasons HC-SR04 à Arduino

Voici comment nous devons connecter le capteur HC-SR04 à une carte Arduino.

La masse et les broches VCC du module doivent être connectées respectivement à la masse et aux broches 5 volts de la carte Arduino et les broches trig et écho à n'importe quelle broche d'E/S numérique de la carte Arduino.

Vous pouvez obtenir les composants nécessaires à ce didacticiel sur l'un des sites ci-dessous :

  • Capteur à ultrasons HC-SR04 ………… 
  • Carte Arduino ……………………………
  • Breadboard et Jump Wires ……… 

Code Arduino du capteur à ultrasons HC-SR04

Voici un code pour mesurer la distance à l'aide du capteur à ultrasons HC-SR04 et d'Arduino.



/*
  Ultrasonic Sensor HC-SR04 and Arduino Tutorial

  by Dejan Nedelkovski,
  www.HowToMechatronics.com

*/
// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;
// defines variables
long duration;
int distance;
void setup() {
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
  Serial.begin(9600); // Starts the serial communication
}
void loop() {
  // Clears the trigPin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  // Sets the trigPin on HIGH state for 10 micro seconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);
  // Calculating the distance
  distance = duration * 0.034 / 2;
  // Prints the distance on the Serial Monitor
  Serial.print("Distance: ");
  Serial.println(distance);
}Code language: Arduino (arduino)

Explication du code

Nous devons d'abord définir les broches Trig et Echo. Dans ce cas, ce sont les broches numéro 9 et 10 sur la carte Arduino et elles sont nommées trigPin et echoPin. Ensuite, nous avons besoin d'une variable longue, nommée "durée" pour le temps de trajet que nous obtiendrons du capteur et d'une variable entière pour la distance.

// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;

// defines variables
long duration;
int distance;Code language: Arduino (arduino)

Dans la configuration, nous devons définir le trigPin comme sortie et l'échoPin comme entrée et également démarrer la communication série pour afficher les résultats sur le moniteur série.

void setup() {
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
  Serial.begin(9600); // Starts the serial communication
}Code language: Arduino (arduino)

Dans la boucle, nous devons d'abord nous assurer que le trigPin est clair, vous devez donc définir cette broche sur un état BAS pendant seulement 2 µs. Maintenant, pour générer l'onde sonore Ultra, nous devons régler le trigPin sur HIGH State for 10 µs.

// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);Code language: Arduino (arduino)

Utilisation de pulseIn() fonction nous lisons le temps de trajet et mettons cette valeur dans la variable "durée". Cette fonction a 2 paramètres, le premier est le nom de la broche Echo et le second est l'état de l'impulsion que nous lisons, High ou Low.

// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);Code language: Arduino (arduino)

Dans ce cas, nous avons besoin de ce réglage sur HIGH, car les capteurs HC-SR04 règlent la broche Echo sur High après avoir envoyé la rafale ultrasonique à 8 cycles de l'émetteur. Cela démarre en fait le chronométrage et une fois que nous recevons l'onde sonore réfléchie, la broche Echo ira à Low, ce qui arrête le chronométrage. À la fin, la fonction renverra la durée de l'impulsion en microsecondes.

Pour obtenir la distance, nous allons multiplier la durée par 0,034 et la diviser par 2 comme nous l'avons expliqué précédemment.

// Calculating the distance
distance= duration*0.034/2;

// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);Code language: Arduino (arduino)

À la fin, nous imprimerons la valeur de la distance sur le moniteur série.

Exemple de capteur à ultrasons Arduino et d'écran LCD

Voici un autre exemple d'utilisation du capteur à ultrasons avec Arduino et d'affichage des résultats sur un écran LCD.

Vous pouvez connecter le capteur à ultrasons et le LDC comme suit :

Le code mesurant la distance est à peu près le même que l'exemple de base. Ici, au lieu d'imprimer les résultats sur le moniteur série, nous les imprimons sur l'écran LCD. Si vous avez besoin de plus de détails sur l'utilisation et la connexion d'un écran LCD avec Arduino, vous pouvez consulter mon tutoriel particulier.

/*
  Ultrasonic Sensor HC-SR04 and Arduino Tutorial

  by Dejan Nedelkovski,
  www.HowToMechatronics.com

*/
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distanceCm, distanceInch;
void setup() {
  lcd.begin(16, 2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}
void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distanceCm = duration * 0.034 / 2;
  distanceInch = duration * 0.0133 / 2;
  lcd.setCursor(0, 0); // Sets the location at which subsequent text written to the LCD will be displayed
  lcd.print("Distance: "); // Prints string "Distance" on the LCD
  lcd.print(distanceCm); // Prints the distance value from the sensor
  lcd.print(" cm");
  delay(10);
  lcd.setCursor(0, 1);
  lcd.print("Distance: ");
  lcd.print(distanceInch);
  lcd.print(" inch");
  delay(10);
}Code language: Arduino (arduino)

Exemple de code utilisant la bibliothèque NewPing

Il existe en fait un moyen plus simple et meilleur de programmer l'Arduino pour mesurer la distance à l'aide du capteur à ultrasons HC-SR04, et c'est en utilisant la bibliothèque NewPing.

Dans le code expliqué précédemment, nous avons déclenché manuellement le capteur et mesuré la durée d'impulsion du signal reçu. Ensuite, en fonction de ces résultats, nous avons calculé la distance en fonction de cela. En utilisant la bibliothèque NewPing, nous pouvons obtenir la distance avec une seule ligne de code.

Voici un exemple de code :

#include <NewPing.h>

#define TRIGGER_PIN  9
#define ECHO_PIN     10
#define MAX_DISTANCE 400 // Maximum distance we want to measure (in centimeters).


NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

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

void loop() {
  delay(50);                    // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.

  int distance = sonar.ping_cm(); // Send ping, get distance in cm and print result (0 = outside set distance range)

  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println("cm");
}Code language: Arduino (arduino)

C'est beaucoup plus simple que l'exemple précédent. Nous utilisons simplement l'appel ping_cm() méthode sur l'objet sonar NewPing et nous obtenons la distance en centimètres. Si nous voulons la distance en pouces, nous pouvons utiliser le ping_in() à la place.

La bibliothèque a également quelques autres fonctionnalités utiles. Par exemple, avec le ping_median(itérations [, max_cm_distance]) méthode, nous pouvons obtenir des résultats plus précis, car elle renvoie une médiane ou la valeur médiane de plusieurs mesures. Avec les itérations paramètre, nous définissons le nombre d'échantillons que le programme prendra pour calculer la valeur médiane. La valeur par défaut est de 5 itérations. Le ping_median() renvoie la durée d'impulsion reçue en microsecondes.

Néanmoins, pour plus d'informations et de détails, vous pouvez consulter la page wiki NewPing.

Amélioration de la précision du capteur de distance HC-SR04 avec le capteur de température DHT22

Le capteur HC-SR04 est assez précis, mais comme son fonctionnement dépend de la vitesse du son, pour des résultats plus précis, nous devons également prendre en compte la température de l'air. La vitesse du son peut varier considérablement lorsque la température de l'air change. Par exemple, à 20°C, la vitesse du son est d'environ 340m/s, mais à -20°C la vitesse du son est d'environ 315m/s. L'humidité relative affecte également la vitesse.

Donc, si nous utilisons ce capteur pour mesurer des distances à différentes températures, nous devons implémenter une compensation de température, et nous pouvons le faire avec la formule suivante :

Vitesse =331,4 + 0,6 x Température + 0,0124 x Relative_Humidity

Voici un exemple :

Avec le capteur à ultrasons HC-SR04, nous utiliserons le capteur DHT11 / DHT22 pour mesurer la température et l'humidité de l'environnement, et ajusterons la vitesse du son en conséquence.

Code Arduino

/*
  Example made by Dejan, How To Mechatronics,
  https://howtomechatronics.com/

*/

#include <NewPing.h>  // https://bitbucket.org/teckel12/arduino-new-ping/wiki/Home
#include "dht.h"      // https://github.com/RobTillaart/DHTlib

#define TRIGGER_PIN  9
#define ECHO_PIN     10
#define MAX_DISTANCE 400
#define dht22 5 // DHT22 temperature and humidity sensor

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
dht DHT; // Creats a DHT object

int readDHT, temp, hum;
float speedOfSound, distance, duration;

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

void loop() {
  delay(100);

  // Read temperature and humidity from DHT22 sensor
  readDHT = DHT.read22(dht22); // Reads the data from the sensor
  temp = DHT.temperature; // Gets the values of the temperature
  hum = DHT.humidity; // Gets the values of the humidity


  speedOfSound = 331.4 + (0.6 * temp) + (0.0124 * hum); // Calculate speed of sound in m/s

  duration = sonar.ping_median(10); // 10 interations - returns duration in microseconds
  duration = duration/1000000; // Convert mircroseconds to seconds
  distance = (speedOfSound * duration)/2;
  distance = distance * 100; // meters to centimeters

  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println("cm");

}Code language: Arduino (arduino)

Donc, nous lisons d'abord les valeurs de température et d'humidité du capteur DHT22, puis utilisons ces valeurs pour calculer la vitesse du son. Ensuite, nous obtenons la durée du trajet de l'onde sonore en microsecondes, les convertissons en secondes et calculons la distance entre le capteur et les objets en centimètres.

Dimensions et modèle 3D du HC-SR04

J'ai fait un modèle 3D du capteur à ultrasons HC-SR04 au cas où vous en auriez besoin lors de votre prochain projet avec. Vous pouvez le télécharger à partir du lien ci-dessous.

Vous pouvez trouver et télécharger ce modèle 3D sur Thangs.

Voici les dimensions du capteur HC-SR04 :

Veuillez garder à l'esprit qu'ils peuvent parfois différer un peu selon le fabricant.

Conclusion

Nous avons donc couvert à peu près tout ce que nous devons savoir sur l'utilisation du capteur à ultrasons HC-SR04 avec Arduino. C'est un excellent capteur pour de nombreux projets électroniques de bricolage où nous avons besoin d'une mesure de distance sans contact, d'une détection de présence ou d'objets, d'un niveau ou d'une position, etc.

J'ai déjà évoqué les projets que j'ai réalisés avec ce capteur en début de post. Voici quelques autres projets intéressants utilisant le capteur HC-SR04 et Arduino :

  • Poubelle à capteur de mouvement automatique sans contact
  • Contrôle intelligent de la lumière par geste de la main
  • Mini lévitation acoustique
  • Robot évitant les obstacles

J'espère que vous avez apprécié ce tutoriel et appris quelque chose de nouveau. N'hésitez pas à poser des questions dans la section des commentaires ci-dessous et n'oubliez pas de consulter ma collection complète de plus de 30 projets Arduino.


Processus de fabrication

  1. Qu'est-ce que le capteur à ultrasons HC-SR04 :Fonctionnement et ses applications
  2. Capteur Arduino - Types et applications
  3. Capteur à ultrasons (HC-SR04) + Raspberry Pi
  4. Capteur de portée à ultrasons HC-SR04 sur le Raspberry Pi
  5. Capteur DHT11 avec LED et haut-parleur piézo
  6. FlickMote
  7. IOT - Smart Jar utilisant ESP8266, Arduino et capteur à ultrasons
  8. Mini radar avec Arduino
  9. Détecteur de portée à ultrasons avec Arduino