[Troubleshooting] Module à ultrasons HC-SR04

Informations et questions sur les composants tiers de la boutique (émetteur/récepteur RF, capteurs...)

[Troubleshooting] Module à ultrasons HC-SR04

Message non lude Laetitia » Jeu 11 Fév 2016 17:56

Bonjour,

Les capteurs à ultrasons sont pratiques pour déterminer une distance par rapport à un objet, ils sont d'ailleurs souvent présents sur les robots pour leur permettre d'éviter des obstacles.

En traitant un retour sur l'un d'entre eux nous nous sommes aperçus qu'il y avait des erreurs de design qui peuvent être source d'erreurs dans vos montages, je vais donc lister ici tous les problèmes que j'ai pu rencontrer et leur solution :geek:

NOTE : la majorité des solutions présentées ici ont été trouvées sur cette page, un grand merci à l'auteur du reverse engineering.

Pré-requis : Fonctionnement du capteur, voir tutoriel de mise en oeuvre.


    - Mon capteur détecte un obstacle là où il n'y en a pas -

Cela signifie que le récepteur détecte un "faux" écho. C'est dû à la proximité de l'émetteur et du récepteur.

Pour pallier à ce problème il faut dessouder les deux transducteurs et les placer au moins à 10 cm l'un de l'autre. Cette manipulation peut fausser la mesure de distances très courtes (inférieures à 10 cm).


    - Mon capteur ne détecte pas l'obstacle en face de lui -

Deux éléments peuvent être mis en cause : le filtre de réception et le microcontrôleur.

  • Le filtre passe-bande situé après le récepteur est peut-être mal calibré, c'est-à-dire centré sur une autre fréquence que 40 kHz. Cela entraîne un captage de signaux parasites. Il faudrait remplacer certaines résistances pour ajuster la bande passante du filtre, mais la sérigraphie au dos du capteur ne permet pas d'identifier clairement l'emplacement des composants. Suivant le fabricant, le design du circuit peut avoir été altéré, il est donc assez difficile de savoir quel composant remplacer, avec quelles nouvelles valeurs, sans refaire le reverse engineering complet du capteur. Ce schéma présente bien le même circuit que le capteur que j'ai testé mais les valeurs des résistances ne correspondent pas.
  • Le microcontrôleur (µc) qui pilote le capteur est programmé pour vérifier à intervalles réguliers la présence d'une impulsion de retour (signalant la présence d'un écho). A cause du filtre évoqué précédemment, cela peut entraîner des détections "fantômes" dans un environnement parasité, qui ne sont pas filtrables logiciellement. De plus le µc n'est programmable qu'une seule fois et son remplacement n'est pas forcément simple vu le format CMS.
Ici donc, pas de solution clé en main, mais pour les plus courageux il est possible de reproduire le design en remplaçant le µc par un ATtiny84, en prenant soin de laisser les broches nécessaires à la programmation accessibles, pour pouvoir faire des ajustements si besoin. Un exemple de typon ici.


    - De temps en temps la réception s'arrête -
    - Le capteur freeze et indique la distance maximale -

Après avoir atteint le TimeOut, durée maximale pendant laquelle attendre un écho, le µc peut parfois se bloquer, il n'y a pas vraiment d'explication absolue pour ce bug mais ça pourrait venir d'une instabilité dans les signaux, il n'y a pas de condensateur de découplage sur l'alimentation du µc.

On peut y remédier :
  • soit en mettant un petit condensateur (10 nF par exemple) entre l'alimentation du capteur et sa masse,
  • soit en le soudant entre l'alimentation et la broche VCC du micro-contrôleur.
Le schéma ci-dessous montre le câblage de la première solution :

capa_alim_capt.png
capa_alim_capt.png (70.5 Kio) Vu 411 fois

Le schéma et la photo ci-dessous montrent les broches concernées par la seconde solution :

capa_alim_µc.png
capa_alim_µc.png (10.77 Kio) Vu 411 fois

soudure_capa_µc.jpg
soudure_capa_µc.jpg (85.97 Kio) Vu 411 fois

Il y a également un souci au niveau du cristal servant d'horloge au µc, qui peut dériver par rapport à sa fréquence théorique. Lorsque cela arrive, le µc se "perd" et n'arrive pas à retrouver son comportement normal.

Pour le remettre en route il faudrait le redémarrer, mais sa broche de Reset est inaccessible (encore une erreur de conception à corriger en cas de redesign du PCB).

Pour pallier à ces défauts de conception il faudrait remplacer les composants... mêmes remarques que plus haut.


    - J'ai quand même l'impression que ça ne marche pas très bien -

D'autres facteurs peuvent perturber le bon fonctionnement du capteur à ultrasons...

La durée du TimeOut est réglable, il suffit de rajouter un argument dans le constructeur Ultrasonic, voir le wiki de la librairie pour plus de détails. Ceci permet de régler la distance maximale lisible par le capteur, dans la limite bien sûr de ses capacités.

Les fonctions delay(), delayMicroseconds() et autres fonctions temporelles de l'Arduino ne sont pas forcément très précises, surtout sur de petites durées. J'ai sorti l'oscilloscope pour vérifier si le signal envoyé au capteur était conforme aux spécifications de la datasheet : le code indique bien 10 µs comme recommandé par le fabricant, mais en réalité j'ai mesuré 16.80 µs.
Pour obtenir de meilleures performances, il faut aller modifier le fichier .cpp (ligne 38 si vous utilisez la librairie du tutoriel) : dans la fonction Timing() , après la mise à l'état haut de Trig, il faut réduire la durée du delayMicroseconds(). Cette fonction n'étant pas d'une très grand précision, les meilleurs résultats que j'ai obtenus étaient 9.60 et 10.60 µs réels pour, respectivement, 3 et 4 µs dans le code :|

Attention : ce décalage entre la durée demandée et la durée réelle d'exécution dépendent du micro-contrôleur utilisé, j'ai effectué tous mes tests avec un Arduino/Genuino Uno à 16 MHz (même configuration que sorti de la boîte). La durée du cycle machine et donc le temps d'exécution total peuvent varier avec la plateforme utilisée, à tester au cas par cas.
"If it's itchy, scratch it !" - "DIY or die"

RTFM (À lire avant de poster) - ANDb (Arduino Noob Database)
Avatar de l’utilisateur
Laetitia
 
Messages: 284
Inscription: Mar 7 Aoû 2012 15:07
Localisation: Toulouse

Retourner vers Composants tiers

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron