Mesfavorisitescom- Banière image
Mesure de distances à ultrasons Arduino( test)


implantation-capteur-HC-SR04


Salut à tous, aujourd'hui je vous propose un petit tutoriel sur l' interface Arduino avec ultrasons de mesure de distance comme le HC-SR04.
Tout d' abord, la théorie:
Vous est-il déjà arrivé de vouloir mesurer une distance, ou de savoir si votre robot va foncer tout droit dans un mur ?


En principe Je ne vais pas m’attarder sur le côté théorique de la chose. Pour faire simple, tout est basé sur la vitesse du son. On envoie tout simplement une impulsion sonore puis on mesure le temps nécessaire avant d’avoir un écho. Et histoire d’éviter d’avoir un bip désagréable à chaque mesure, on émet une onde sonore dans la gamme des ultrasons pour ne pas pouvoir l’entendre. Il serait difficile de faire plus simple.

HC-SR04

Le capteur se contrôle au moyen de deux broches : une broche « TRIGGER » et une broche « ECHO ». Une mesure de distance est démarrée en envoyant une impulsion de niveau « 1 » pendant 10µs sur la broche « TRIGGER ». À la suite de ces 10µs le capteur envoie une série de 8 impulsions ultrasoniques et attend de recevoir un écho. Durant toute la durée de l’attente de l’écho, la broche « ECHO » reste à « 1 ». On pourra ainsi déterminer plus tard la distance en fonction de la durée du temps haut sur la broche « ECHO » et de la vitesse du son. Au final on se rend compte que le capteur est très simple à contrôler. L’algorithme de mesure se résume à trois instructions : 1) émettre une impulsion « 1 » de 10µs 2) attendre que « ECHO » passe à « 0 » et mesure le temps passé à « 1 » 3) faire un petit calcul pour obtenir la distance à partir du temps entre émission et écho.

Pour commencer à mesurer la distance il vous suffit de télécharger ce code à l'Arduino
ci-dessous

 
int trigPin = 2;
int echoPin = 4;

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

void loop(){
  long duration;
  float cm;
  pinMode(echoPin, INPUT);
  pinMode(trigPin, OUTPUT);
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  cm = microsecondsToCentimeters(duration);
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();
  delay(100);

float microsecondsToCentimeters(long microseconds){
  return (microseconds*0.034029)/2;
}

Vous pouvez voir le résultat sur la vidéo
 

 


Vous souhaitez faire un don pour soutenir le site.Merci.