Ce capteur est utilisé pour la mesure de la distance par ultrasons. Si un signal (front descendant) est entré à l'entrée de déclenchement, une mesure de distance est effectuée et émise comme un signal PWM-TTL à la sortie d'écho.

Données techniques

Distance mesurable 2cm-300cm
Résolution de mesure 3mm
min. Temps entre les mesures 50µs

Principe de fonctionnement

Ce module montre comment un haut-parleur à ultrasons et un microphone peuvent être utilisés pour mesurer la distance d'un objet sans contact. Le principe repose sur le fait que la vitesse du son dans l'air reste presque constante à température constante - à 20°C, elle est de 343,2m/s. Cela signifie que la distance peut être mesurée en un temps.

Ce fait peut être utilisé pour convertir la mesure de la distance en une mesure de temps, qui peut ensuite être facilement reprise par les microcontrôleurs.

Dans le module de détection présenté ici, le haut-parleur à ultrasons émet huit signaux de 40KHz, qui sont ensuite réfléchis par un objet et peuvent être captés par le microphone. Les ultrasons sont utilisés parce qu'ils se situent en dehors de la gamme audible du sens de l'audition humaine (environ 20 Hz à 22 000 Hz).

La transmission du signal ultrasonore est lancée par la réception d'un signal de démarrage long de 10µs (ActiveHigh) sur la "Trigger Input Pin". Après la transmission, le signal est activé sur la "broche de signal de sortie de l'écho" (ActiveHigh). Si le signal réfléchi est à nouveau capté par le microphone, le signal d'écho est à nouveau désactivé après détection. Le temps entre l'activation et la désactivation du signal d'écho peut être mesuré et converti en distance, car il correspond également au temps nécessaire au signal ultrasonique pour franchir la distance entre le haut-parleur->la paroi réfléchissante ->le microphone dans l'air. La conversion se fait alors par approximation d'une vitesse d'air constante - la distance est alors par conséquent la moitié de la distance parcourue.

Affectation des broches

Exemple de code Arduino

Affectation des broches Arduino

Arduino Capteur
Pin 7 Echo
5V +V
Masse GND
Pin 8 Déclencheur

Le programme d'exemple active la mesure de distance selon le principe ci-dessus et mesure le temps pendant lequel le signal ultrasonique reste dans l'air à l'aide de la fonction Arduino pulseIn. Ce temps est ensuite pris comme base pour convertir la distance - le résultat est ensuite émis dans la sortie série. Si le signal est en dehors de la plage de mesure, un message d'erreur correspondant est émis.

#define Echo_EingangsPin 7
#define Trigger_AusgangsPin 8

int maximumRange = 300; 
int minimumRange = 2; 
long Abstand;
long Dauer;
 
void setup() {
 pinMode(Trigger_AusgangsPin, OUTPUT);
 pinMode(Echo_EingangsPin, INPUT);
 Serial.begin (9600);
}
 
void loop() {

 digitalWrite(Trigger_AusgangsPin, HIGH);
 delayMicroseconds(10); 
 digitalWrite(Trigger_AusgangsPin, LOW);

 Dauer = pulseIn(Echo_EingangsPin, HIGH);
  
 Abstand = Dauer/58.2;

 if (Abstand >= maximumRange || Abstand <= minimumRange)
 {
      Serial.println("Abstand außerhalb des Messbereichs");
      Serial.println("-----------------------------------");
 }  
  
 else
 {
      Serial.print("Der Abstand betraegt:");
      Serial.print(Abstand);
      Serial.println("cm");
      Serial.println("-----------------------------------");
 }
 delay(500);
}

Téléchargement d'un exemple de programme

KY050-Arduino.zip

Exemple de code Raspberry Pi

Affectation des broches Raspberry Pi

Raspberry Pi Capteur
5V [Pin 2] +V
Masse [Pin 6] GND
Capteur KY-051
Déclencheur B1
Echo B2
Raspberry Pi KY-051
3,3V [Pin 1] Vcca
5V [Pin 2] Vccb
Masse [Pin 6] GND
Raspberry Pi KY-051
GPIO 17 [Pin 11] A1
Gpio 27 [Pin 13] A2

Exemple de programmation dans le langage de programmation Python

Niveau de tension de 5V, il faut donc respecter ce qui suit.

Le Raspberry Pi avec son processeur ARM, contrairement à l'Arduino basé sur Atmel Atmega, fonctionne à un niveau de tension de 3,3V au lieu de 5V - cependant, ce capteur ne fonctionne qu'au niveau de tension le plus élevé. Si vous deviez faire fonctionner le capteur sans restriction sur le Raspberry Pi sans précautions, cela pourrait causer des dommages permanents aux entrées du Raspberry Pi.

Pour de tels cas, ce kit de capteurs avec le KY-051 dispose d'un traducteur de tension qui ajuste les niveaux de tension et garantit ainsi un fonctionnement sûr. Celui-ci doit être connecté entre le Rasperry Pi et le capteur.

Pour plus d'informations, consultez la page d'information sur le KY-051.

Le programme d'exemple active la mesure de distance selon le principe ci-dessus et mesure le temps pendant lequel le signal ultrasonique reste dans l'air à l'aide d'une sorte de chronomètre. Ce chronomètre est réalisé en lisant l'heure actuelle du système à partir de time.time() au moment de l'enclenchement du signal d'écho ; la différence entre l'heure d'enclenchement et l'heure de déclenchement est le temps recherché pendant lequel le signal est en route. Ce temps est ensuite pris comme base pour la conversion de la distance - le résultat est alors édité dans la cosnole. Si le signal est en dehors de la plage de mesure, un message d'erreur correspondant est émis.

# coding=utf-8
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)

Trigger_AusgangsPin = 17
Echo_EingangsPin    = 27

sleeptime = 0.8

GPIO.setup(Trigger_AusgangsPin, GPIO.OUT)
GPIO.setup(Echo_EingangsPin, GPIO.IN)
GPIO.output(Trigger_AusgangsPin, False)

try:
    while True:
        GPIO.output(Trigger_AusgangsPin, True)
        time.sleep(0.00001)
        GPIO.output(Trigger_AusgangsPin, False)

        EinschaltZeit = time.time()
        while GPIO.input(Echo_EingangsPin) == 0:
            EinschaltZeit = time.time()
 
        while GPIO.input(Echo_EingangsPin) == 1:
            AusschaltZeit = time.time()

        Dauer = AusschaltZeit - EinschaltZeit
        Abstand = (Dauer * 34300) / 2

        if Abstand < 2 or (round(Abstand) > 300):
            print("Distance hors de la plage de mesure")
            print("------------------------------")
        else:
            Abstand = format((Dauer * 34300) / 2, '.2f')
            print("La distance est de "), Abstand,("cm")
            print("------------------------------")

        time.sleep(sleeptime)

except KeyboardInterrupt:
    GPIO.cleanup()

Exemple de téléchargement de programme

KY050-RPi.zip

Pour commencer avec la commande :

sudo python3 KY050-RPi.py

Exemple de code Micro:Bit

Affectation des connexions Micro:Bit :

Micro:Bit Capteur
3V +V
Masse [externe et Micro:Bit] GND
Capteur KY-051
Déclencheur B1
Echo B2
Micro:Bit KY-051
3V Vcca
5V [externe] Vccb
Masse [externe et Micro:Bit] GND
Micro:Bit KY-051
Pin 2 A1
Pin 1 A2

Ceci est un exemple MakeCode pour Micro:Bit qui fait essentiellement la même chose que les exemples des deux autres variantes. Cependant, cet exemple est plus proche de celui du Raspberry Pi que de celui de l'Arduino.

Une bibliothèque supplémentaire est nécessaire pour l'exemple de code suivant :

pxt-sonar de Microsoft | publié sous la licence MIT

Vous devez ajouter cette bibliothèque à votre IDE avant de pouvoir utiliser le code.

Pour ce faire, allez dans Extensions dans votre IDE et utilisez l'URL suivante https://github.com/microsoft/pxt-sonar.git pour rechercher la bibliothèque et l'ajouter.

Téléchargement d'un exemple de programme

microbit-KY-050.zip