Il est préférable pour beaucoup d'application de pouvoir identifier un contact ou une collision avant que celle-ci ne se produise, pour justement éviter la collision. Un capteur de distance / anticollision  sera donc efficace dès lors qu'il peut indiquer la présence d'un objet ou d'un mur et sa distance. Un type de capteur fréquemment utiliser pour ce type de mesure est le capteur par ultrason. Il est simple à mettre en place, peu contraignant dans un environnement sain et peu couteux.

Mesure de distance par ultrason: principe physique

Au travers d'un transducteur piézoélectrique, le capteur émet une onde ultrasonore brève dite "Burst". Pour se faire l'électronique du capteur crée le plus souvent un signal carré oscillant d'une dizaine de période à une fréquence proche de 40kHz (ultrason -> Il est important de travailler dans un range de fréquence spécifique où le transducteur piézoélectrique a une bonne réponse). A partir du moment où il émet l'onde, le capteur va mesurer le temps qu'il doit attendre pour en recevoir l'écho. C'est à dire que l'onde rebondisse sur un objet et lui revienne. Le rebond sera écouté au travers d'un transducteur piézoélectrique monté en récepteur avec une chaine d'amplification et de filtrage derrière.

L'onde sonore se déplaçant à environ 340m/s, l'onde devant parcourir deux fois le chemin la séparant de l'obstacle (le chemin aller et le chemin retour après le rebond), la distance entre le capteur et l'obstacle devient aisément calculable : temps entre l'émission et la réception (en seconde) x 340 (mètres par seconde) / 2.

Le système repose donc sur une onde ulra-sonore qui est émise et dont on attend l'écho. Ce qui implique plusieurs limitations:

  • La distance maximum mesurable: de par l'atténuation dans l'air de l'onde, il deviendra difficile de mesurer au-delà de quelques mètres la distance qui nous sépare de l'obstacle (3-4 mètres pour un système simple)
  • L'angle: une onde sonore ne se déplace pas en ligne droite, il faut donc s'attendre à ce que l'on mesure la présence d'objet dans un certain angle (ceci peut également être un avantage)
  • La présence d'obstacle absorbant le son: la mesure sera peu précise ou impossible sur un obstacle qui absorbe les ondes sonores.

Démonstration

Je ne recommande pas de fabriquer soi-même le capteur, le système n'est pas compliqué, mais le coût des différents composants serait plus cher que d'en acheter directement un (souvent moins de 2-3€ avec les frais de port!): Recherchez directement sur e-bay un capteur neuf au meilleur prix!

Pour la démonstration, je me suis retourné vers un modèle low cost fréquemment utilisé dans le domaine de la robotique amateur : HC-SR04.

hc-sr04 capteur de distance par ultrason

Le module à 4 Pin:

  • VCC : pour l'alimenter en 5V
  • Trig : pour lui envoyer une impulsion de minimum 10µs afin de demander une mesure
  • Echo : Une fois qu'une mesure est demandée, un signal carré dont la durée équivaut au temps mis par l'onde pour aller et revenir de l'obstacle apparait sur cette pin
  • GND : la masse

Données techniques:

  • Plage de mesure : de 2cm à 4m
  • Consommation max : 15mA
  • Angle : <15°
  • Précision théorique : 3mm

Pour le test, je l'ai monté sur un support éloigné à environ 80cm d'une plaque de contre-plaqué. J'ai envoyé dans l'entrée trigger une impulsion et regardé à  l'oscilloscope la réponse:

Test du HC-SR04, banc de test

A l'oscilloscope, en bleu le signal trigger (qui était beaucoup plus long que 10µs) sur lequel j'ai placé le trigger de l'oscilloscope (front descendant). En rouge le signal sortant de la broche echo du HC-SR04 et qui représente le temps pris par l'onde pour aller du capteur vers la plaque de contre-plaqué et revenir.

Résultat a l'oscilloscope du HC-SR04

Au travers des deux curseurs, on mesure un temps de 4.56ms. Soit une distance mesurée de :

  • 0.00456 (sec) * 340 (m/sec) / 2 = 77.52cm

Interfaçage avec un microcontrôleur

Si la précision souhaitée est de l'ordre du centimètre, on peut déterminer la précision de la mesure dans un microcontrôleur. Pour mesurer une distance de 1 cm, on mesure le double (l'aller et le retour) soit 2 cm. L'onde parcourt 2 cm en : 0.02 (m) / 340 (m/s) = 60µs. On pourrait dès lors dire que mesurer la longueur de l'écho avec une précision de 30µs (60/2) serait suffisant. Pour une question de simplicité dans les calculs, dans le schéma fonctionnel ci-dessous j'utilise 20µs car 1000 et 60 en sont multiples. Le schéma est une proposition d'interfaçage.

HC-SR04 interface MCU Microcontroleur