Radar et distance

Un des capteurs souvent utilisés en robotique est le radar. Pour un robot qui se déplace, pouvoir connaître la distance des objets devant lui est un avantage certain.

Avec Arduino, le capteur utilisé ici est le HC-SR04.

radar.resized

Note : En cherchant un peu sur le Web, vous trouverez plusieurs tutoriels qui expliquent le fonctionnement (avec plus de détails qu’ici) de ce capteur. 

Montage

La connexion est relativement simple :

Radar

Les broches «trig» et «echo» doivent être connectées sur une entrée/sortie numérique.

Calcul de la distance

Un des avantages pour le domaine de la mathématique, de la science et technologie de ce type de capteur est qu’il n’est pas «encapsulé», c’est-à-dire qu’il ne donne pas la mesure sans travail. En effet, nous devons comprendre le fonctionnement de ce capteur pour pouvoir «programmer» le calcul de la distance entre le capteur et l’objet.

Le capteur est activé en envoyant un signal à la broche «trig» (au moins 10 microsecondes). Par la suite, le capteur met la broche «echo» à «HIGH» (+ 5 V) pour une durée équivalant au temps qu’a pris le signal sonore pour se rendre à l’objet et revenir au capteur. C’est ce temps qui nous servira à calculer la distance de l’objet.

Les formules nécessaires.

  • v=d/t
  • Vitesse du son = 340 m/s ou 0.034 cm/µs

On vous laisse travailler un peu pour en arriver à programmer votre radar comme suit (source du petit programme) :

/* Utilisation du capteur Ultrason HC-SR04 */
//Source : http://www.locoduino.org/spip.php?article52
// définition des broches utilisées 
int trig = 11; //on peut utiliser n'importe quelle broche numérique
int echo = 10; 
//https://www.arduino.cc/en/Reference/Long
long lecture_echo; //durée de l'aller-retour du signal
long cm;

void setup() 
{ 
 pinMode(trig, OUTPUT); //sortie vers la broche trig pour démarrer le capteur
 digitalWrite(trig, LOW); 
 pinMode(echo, INPUT); //broche d'entrée pour l'echo
 Serial.begin(9600); //démarre la connexion avec le moniteur série
}
void loop() 
{ 
 digitalWrite(trig, HIGH); //on démarre le signal
 delayMicroseconds(10); // durée du signal trig de 10 microsecondes
 digitalWrite(trig, LOW); //On arrête le signal
 lecture_echo = pulseIn(echo, HIGH); //la durée de cette lecture est proportionnelle au temps d'aller-retour du signal
 cm = lecture_echo / 58; // comment on arrive à cette formule?
 Serial.print("Distance en cm : "); 
 Serial.println(cm); 
 delay(1000); //on attend 1 s avant la prochaine mesure
}

Question : Si on veut la mesure en mètre, quel serait le calcul?

On peut maintenant ajouter ce capteur à nos différents robot Arduino pour leur permettre de mesurer des distances.

Programmation Blockly@rduino

À tester et retester mais ça pourrait ressembler à ceci (version xml) :

radar_distance_v2

Voici le fichier pour Ardublockly : radar_ardublockly.xml

5 commentaires sur “Radar et distance

  1. Pierre Lachance Auteur d'articleRépondre

    Bonjour,
    j’ai ajouté à la fin de l’article une image de ce que ça pourrait ressembler en Blockly@rduino.

    Au plaisir.

  2. Ping : Deguillage (pascaldeguillage) | Pearltrees

  3. Guillaume Répondre

    Bonjour,

    pourquoi diviser par 58 la valeur de la durée de l’echo ?

    Merci par avance et félicitations pour votre remarquable travail !

    Guillaume

    • Pierre Lachance Auteur d'articleRépondre

      Bonjour,
      la division par 58 se trouve en «jouant» avec la formule de vitesse, avec la vitesse du son, le temps en microsecondes de l’écho. Je ne donen pas ici le détail car nous demandons aux élèves ici de trouver la chose.

      Au plaisir.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *