mercredi 11 novembre 2015

Capteur ultrason

Je teste actuellement un capteur ultrason. Pas forcément de rapport direct avec Robokite, mais on pourrait imaginer des capteurs sur les oreilles de l'aile afin de détecter la proximité du sol ou pour réguler le vol en bord de fenêtre.

Le capteur utilisé est un HC-SR04, acheté chez Robomanie (environ 5€).

J'ai modifié le programme (lien ci-dessus) afin d'avoir une sortie série au lieu d'une sortie sur un afficheur LCD.

J'ai ainsi pu vérifier et comprendre les caractéristiques annoncées du capteur.

Zone aveugle : le capteur peut ne pas voir un obstacle à moins de 2 à 4cm.

Portée max : la portée annoncée est de 4m, mais on continue à voir jusqu'à 5m.

Bruit : le bruit de la mesure est de l'ordre du cm.

Angle de réflexion : si la surface de réflexion fait un angle de plus de 30° on ne reçoit plus l'écho.

Directivité : le capteur est assez directif. Le cône serait de 15°.

Précision : Par contre, pour 50cm attendu je mesure 65cm (sur du parquet). A creuser pour vérifier si la mesure est bien linéaire.

Consommation : la consommation annoncée du capteur est de 15mA. J'ai vérifié que le capteur marchait si alimenté par une "digital pin"  (40mA).

Fréquence de rafraîchissement : elle dépend de la distance mesurée. En l'absence d'écho la fréquence de rafraîchissement devient faible (de l'ordre de 0.2s, ce qui correspond au temps pour parcourir 60m par le son).

Montage : 4 trous de 1mm de diamètre ont été prévus (4,25x1.75cm). Prévoir 5mm de tube. Plusieurs supports sont disponibles sur Thingiverse

Connections : un connecteur coudé était déjà soudé sur la version que j'ai acheté

La limite sur l'angle de réflexion peut sembler pénalisante car il faut que le flux ultrason soit bien dirigé à la verticale pour être perpendiculaire à l'eau. Mais de toute manière mesurer la distance à une surface inclinée est par nature imprécis, donc cela n'est pas vraiment pénalisant. Cela peut au contraire être un avantage, car cela permet de monter le capteur parallèlement à une surface, sans que la mesure ne soit perturbée.
Une autre solution serait de placer différents capteurs avec des inclinaisons différentes, et de prendre la plus petite des mesures.

J'ai l'impression que la distance dépend également du revêtement de la surface (elle augmente sur un tissu). Pas de problème pour mesurer la surface de l'eau (j'ai testé avec une bassine)
En l'absence d'écho, le capteur donne une distance (variable) de l'ordre de 40m. Peut-être cela correspond-il à un time-out?

Afin d'améliorer la vitesse de rafraîchissement, j'ai modifié la fonction de mesure afin de lui rajouter un time-out de 50ms, qui correspond à la durée pour parcourir 15m (un peu plus de 2 fois 5m). Maintenant je reçois un zéro pour les mesures aberrantes, ce qui est plus facile à détecter. Et surtout, cela tourne beaucoup plus vite.

Cela devient surtout important lorsque j'essaie de lire plusieurs capteurs sur la même carte arduino (3 dans mon cas). Si un capteur ne reçoit pas d'écho, il pourrait bloquer les autres.

Les trois capteurs ultrasons reliés à un arduino uno


A priori, il y a peu de risque d'interférence entre les capteurs, car ils fonctionnent les uns après les autres. Cependant l'ajout du time-out peut créer un problème si les capteurs sont face à face à une quinzaine de mètre.

Voici une courbe montrant les mesures (avec le nouveau serial plotter d'arduino 1.6.6). Au début de l'enregistrement le capteur était collé au sol. je l'ai soulevé d'une quinzaine de cm, puis je l'ai reposé. On peut voir sur la courbe qu'il y a des problème de mesure à moins de 5cm, au début, mais surtout sur la deuxième moitié de la courbe où la distance recommence à augmenter alors que le capteur est presque collé au sol. On peut également voir le bruit sur la mesure qui est de l'ordre du centimètre. La résolution du programme initial était d'un cm ou d'un pouce. J'ai modifié le programme pour avoir moins de bruit de quantification.

Voici le programme final

Pour aller plus loin :
  • trouver un capteur résistant à l'eau et peu cher (où mettre du film plastique alimentaire sur les transduceurs : j'ai testé, ça marche!)
  • regarder s'il est possible de croiser les modules (par exemple pour réaliser un anémomètre sonique, ou ici).






Aucun commentaire:

Enregistrer un commentaire