Arduino Mega - Capteur Ultrasonique

Ce guide vous montre comment utiliser un capteur ultrasonique et un Arduino Mega pour mesurer la distance d'un objet. Voici ce que nous allons apprendre :

Arduino Mega capteur ultrasonique

Matériel Requis

1×Arduino Mega
1×Câble USB 2.0 type A/B
1×Capteur Ultrasonique
1×Fils de Connexion
1×Recommandé: Screw Terminal Block Shield for Arduino Uno/Mega
1×Recommandé: Breadboard Shield for Arduino Mega
1×Recommandé: Enclosure for Arduino Mega

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (30 capteurs/écrans)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À Propos du Capteur Ultrasonique

Le capteur ultrasonique HC-SR04 indique la distance des objets en utilisant des ondes sonores. Il émet une onde sonore inaudible pour l'oreille humaine, puis attend l'écho lorsque l'onde sonore rebondit sur un objet. En mesurant le temps que met le son à revenir, le capteur peut calculer la distance.

Brochage

Le capteur ultrasonique HC-SR04 possède quatre broches.

  • Broche VCC : connecter à 5 volts.
  • Broche GND : connecter à la masse (0 volt).
  • Broche TRIG : connecter à l'Arduino Mega pour envoyer des signaux de contrôle (impulsions).
  • Broche ECHO : cette broche renvoie des impulsions à l'Arduino Mega. L'Arduino Mega mesure la durée de ces impulsions pour déterminer la distance.
Brochage du Capteur Ultrasonique
image source: diyables.io

Schéma de Câblage

Schéma de Câblage Arduino Mega Capteur Ultrasonique

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Code Arduino Mega

#define TRIG_PIN 9 // The Arduino Mega pin connected to the ultrasonic sensor's TRIG pin #define ECHO_PIN 8 // The Arduino Mega pin connected to the ultrasonic sensor's ECHO pin float duration_us, distance_cm; void setup() { // begin serial port Serial.begin (9600); // configure the trigger pin to output mode pinMode(TRIG_PIN, OUTPUT); // configure the echo pin to input mode pinMode(ECHO_PIN, INPUT); } void loop() { // generate 10-microsecond pulse to TRIG pin digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // measure duration of pulse from ECHO pin duration_us = pulseIn(ECHO_PIN, HIGH); // calculate the distance distance_cm = 0.017 * duration_us; // print the value to Serial Monitor Serial.print("distance: "); Serial.print(distance_cm); Serial.println(" cm"); delay(500); }

Étapes Rapides

Suivez ces étapes une par une.

  • Connectez les composants comme indiqué dans le schéma.
  • Connectez l'Arduino Mega à votre ordinateur avec un câble USB.
  • Ouvrez l'IDE Arduino sur votre ordinateur.
  • Choisissez la carte Arduino Mega et le port COM correct.
  • Copiez le code ci-dessus et ouvrez-le dans l'IDE Arduino.
  • Cliquez sur le bouton Téléverser dans l'IDE Arduino pour téléverser le code vers l'Arduino Mega.
IDE Arduino - Comment Téléverser le Code
  • Ouvrez le Moniteur Série.
  • Agitez votre main devant le capteur ultrasonique.
  • Observez la distance de votre main par rapport au capteur sur le Moniteur Série.
COM6
Send
distance: 29.4 cm distance: 27.6 cm distance: 26.9 cm distance: 17.4 cm distance: 16.9 cm distance: 14.3 cm distance: 15.6 cm distance: 13.1 cm
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Explication du Code

L'explication se trouve dans les commentaires du code Arduino présenté ci-dessus.

Comment Filtrer le Bruit des Mesures de Distance du Capteur Ultrasonique

La lecture du capteur ultrasonique contient du bruit. Parfois, ces données bruitées peuvent provoquer un dysfonctionnement du système. Nous pouvons éliminer le bruit avec cette méthode :

  • Effectuer plusieurs mesures et les sauvegarder dans une liste.
  • Trier la liste du plus petit au plus grand.
  • Éliminer le bruit des données :
    • Ignorer les plus petites valeurs car elles sont du bruit.
    • Ignorer les plus grandes valeurs car elles sont du bruit.
    • Calculer la moyenne en utilisant les valeurs centrales restantes.

    Le code ci-dessous collecte 20 mesures.

    • Ignorer les cinq plus petits et les cinq plus grands échantillons car ils sont du bruit. Puis calculer la moyenne des dix échantillons du milieu, du 5ème au 14ème.
    /* * Ce code Arduino Mega a été développé par newbiely.fr * Ce code Arduino Mega est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino-mega/arduino-mega-ultrasonic-sensor */ #define TRIG_PIN 9 // The Arduino Mega pin connected to the ultrasonic sensor's TRIG pin #define ECHO_PIN 8 // The Arduino Mega pin connected to the ultrasonic sensor's ECHO pin float filterArray[20]; // array to store data samples from sensor float distance; // store the distance from sensor void setup() { // begin serial port Serial.begin (9600); // configure the trigger and echo pins to output mode pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); } void loop() { // 1. TAKING MULTIPLE MEASUREMENTS AND STORE IN AN ARRAY for (int sample = 0; sample < 20; sample++) { filterArray[sample] = ultrasonicMeasure(); delay(30); // to avoid untrasonic interfering } // 2. SORTING THE ARRAY IN ASCENDING ORDER for (int i = 0; i < 19; i++) { for (int j = i + 1; j < 20; j++) { if (filterArray[i] > filterArray[j]) { float swap = filterArray[i]; filterArray[i] = filterArray[j]; filterArray[j] = swap; } } } // 3. FILTERING NOISE // + the five smallest samples are considered as noise -> ignore it // + the five biggest samples are considered as noise -> ignore it // ---------------------------------------------------------------- // => get average of the 10 middle samples (from 5th to 14th) double sum = 0; for (int sample = 5; sample < 15; sample++) { sum += filterArray[sample]; } distance = sum / 10; // print the value to Serial Monitor Serial.print("distance: "); Serial.print(distance); Serial.println(" cm"); } float ultrasonicMeasure() { // generate 10-microsecond pulse to TRIG pin digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); // measure duration of pulse from ECHO pin float duration_us = pulseIn(ECHO_PIN, HIGH); // calculate the distance float distance_cm = 0.017 * duration_us; return distance_cm; }

Vidéo

Applications du Capteur Ultrasonique

  • Prévention des collisions
  • Détection de niveau plein
  • Vérification de niveau
  • Mesure de proximité

Tutoriels connexes

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !