Voici les caractéristiques principales du capteur:
- Alimentation : 5v.
- Consommation en utilisation : 15 mA. (c’est OK, l’arduino peut fournir 40mA par pin)
- Gamme de distance : 2 cm à 5 m. (imprécis au delà de 3m)
- Résolution : 0.3 cm.
- Angle de mesure : < 15°.
-Prix: 6€ environ
Le capteur possède 4 broches:
-VCC à connecter au 5V délivré par l’Arduino.
-GND à mettre à la masse
-Eccho à mettre sur un pin digital de l’arduino qui sera définit en entrée.
-Trigger à mettre sur un pin digital de l’arduino que sera définit en sortie.
Mais comment ça fonctionne tout ça ?
Le principe de ce capteur est d’envoyer des salves d’ultrasons et de calculer le temps que mettent ces salves pour effectuer un aller retour.
- Le déclenchement (d’où le nom de trigger en anglais) de cette salve est activé par l’envoi d’un signal TTL (signal carré de 0 à 5V) de 10µs sur la broche trigger du capteur.
- Suite à cela une salve est donc envoyée et un signal TTL de durée proportionnelle au temps d’un aller retour est généré par la broche eccho.
- Pour récupérer la distance en cm qui sépare le capteur de l’objet il faut effectuer la formule suivante:
distance (cm) = durée du signal emis par la broche eccho (µs) / 58
Le code Arduino sera le suivant:
Il faudra connecter des leds vertes,orange,rouge aux pin 9 10 et 11 respectivement avec bien sur une résistance pour limiter le courant dans la led (j’ai pris 560 ohm) .
Trigger sera relié au pin 13 et eccho au pin 12.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# define trigger 13 # define eccho 12 # define led_rouge 11 # define led_orange 10 # define led_verte 9 void setup() { Serial.begin(9600); pinMode(trigger,OUTPUT); pinMode(led_rouge,OUTPUT); pinMode(led_orange,OUTPUT); pinMode(led_verte,OUTPUT); pinMode(eccho,INPUT); } void loop() { long lecture_eccho; long distance; digitalWrite(trigger,HIGH); //debut de la salve du trigger delayMicroseconds(10); digitalWrite(trigger,LOW); // arret de la salve du trigger lecture_eccho=pulseIn(eccho,HIGH); //lecture de la durée du signal émis par la broche eccho distance=lecture_eccho/58; // Conversion de cette durée en centimètre if(distance < 5.0) //si obstacle proche { digitalWrite(led_rouge,HIGH); digitalWrite(led_orange,LOW); digitalWrite(led_verte,LOW); } if(distance > 5.0 && distance < 10.0) //si obstacle moyennement éloigné { digitalWrite(led_rouge,LOW); digitalWrite(led_orange,HIGH); digitalWrite(led_verte,LOW); } if(distance > 15.0) //si obstacle éloigné { digitalWrite(led_rouge,LOW); digitalWrite(led_orange,LOW); digitalWrite(led_verte,HIGH); } if(distance > 200 || distance < 2) //si obstacle trop proche ou trop loin { Serial.println("Hors de portee"); } delay(500); //Délai pour ne pas surcharger le terminal } |