[Clôturé] Arduino Starter Kit Projects 05 revisité - Mesure de température très instable

Bonjour à toutes et à tous,

Je suis nouveau dans le domaine de l’électrique, et j’ai décidé de me lancer dans ce vaste sujet via le kit de démarrage Arduino Starter Pack.

J’en suis au 5ème projet qui consiste à commander un servomoteur via un potentiomètre.

J’ai réalisé le montage et fait fonctionner le tout sans difficulté particulière. J’ai bien compris l’intérêt du condensateur en parallèle du servomoteur afin de limiter les fluctuations que ce dernier pourrait provoquer (je n'ai par contre pas compris s'il avait un rôle de protection de la carte arduino uno). Le servomoteur était cependant très bruyant (il semble vibrer) même sans recevoir la moindre commande, et faisait de petites fluctuations sans avoir déplacé le potentiomètre. Le schéma du montage est exactement celui du poste n°855392

J’ai ensuite décidé de modifier mon montage pour commander le servomoteur en fonction de la température de la pièce – en somme faire une jauge de température – plus la température est élevée plus le servomoteur s’approche des 180°.
Et là c’est le drame :skull_and_crossbones:

Je remplace mon potentiomètre par une sonde de température (référence TMP36GZ), je modifie mon code pour déterminer la température et déplacer le servomoteur en conséquence (les calculs de température fonctionnent, les calculs d’angle à appliquer fonctionnent).

Je voulais avoir le déplacement linéaire suivant
22°C => 0° ; 28°C => 180°
Résultat : les mesures de ma sonde de température deviennent erratiques, et en conséquence les mouvements de mon servomoteur également.

Analyse :

  • J’ai testé en retirant physiquement mon servomoteur => les mesures de ma sonde de température sont stables, cf Note 1
  • j’ai testé en laissant physiquement mon servomoteur mais en ne faisait pas « monServo.attach(9) » => les mesures de ma sonde de température sont stables, cf Note 1
  • j’ai testé en laissant physiquement mon servomoteur et en faisant uniquement le « monServo.attach(9) » => les mesures de ma sonde deviennent loufoques, sans le moindre déplacement du servomoteur, cf Note 2

Note 1 : Ma température calculée oscille entre 23,2422°C et 24,2187°C
Note 2 : Ma température calculée oscille entre 20,3125°C et 48,1445°C

Je ne comprends pas trop ce qu’il se passe. J’ai deux condensateurs de 100µF. Je ne sais pas où je me suis trompé ni ce qu'il se passe.
Ai-je fais un mauvais usage de ma sonde de température ?
Les condensateurs sont-ils mal placés ?
Le servomoteur qui vibre, c'est normal ?
Toute piste d'explication sera la bienvenue.

Le (presque) schéma de mon montage est disponible ici

A la seule différence que j’ai remplacé le potentiomètre par la sonde de température TMP36GZ.

Merci d'avoir consacré du temps à la lecture de mon message. J'espère avoir été suffisamment exhaustif dans mes informations et j'attends avec impatience tout retour.

Bonjour et Bienvenue !!

Voilà un problème technique bien exposé !! :+1:

Il manque toutefois une information : comment est alimenté l'ensemble ? Pile 9V ? autre ?
Les symptômes évoqués font penser à une instabilité de la tension d'alimentation en raison du courant absorbé par le servo.

Bonjour al1fch,

Merci d'avoir pris le temps de lire mon message.

Mon montage est actuellement alimenté en +5V via la carte arduino uno, cf schéma de montage donné dans le poste principal.

La sonde de température a besoin d'un voltage entre 2.7V et 5.5V, cf sa documentation..

Le servomoteur ainsi que la sonde de température sont alimentés via ce +5V en provenance de la carte arduino uno.

Je dispose également d'une pile 9V, si cette dernière peut être utile pour des éventuels tests.

PIle 9V ? surtout pas , c'est une fréquente source de problèmes et j'imaginais que le souci venait de son utilisation

Est-il possible d'alimenter à part le servo, tout en lui faisant faire 'masse commune' avec le reste du montage ?

je reste sur l'hypothèse que les appels de courant dans le servo font chuter la tension d'alimentation au point de perturber la conversion analogique/numérique nécessaire au capteur de température.

Il serait utile de publier ici le code actuel (pour cela faire l'indentation péralable et utiliser le balisage approprié comme indiqué dans les 'bonnes pratiques' mises en évidence en tête de la partie principale du forum francophone.

En élargissant ma recherche aux sujets en anglais et à d'autres projets incluant le servomoteur dans le kit arduino, je suis tombé sur plusieurs postes qui alertent sur le mauvais montage proposé dans le kit.

Il est toujours conseillé dans ces discussions d'alimenter le servomoteur sans utiliser l'alimentation de la carte arduino, et d'utiliser un pack de 4 piles AA.

cf les sujets 625752, 602721, 876571, 693418, 691661

Servo Motor is behaving weird - #4 by jremington

A cet effet, je vais commander un pack de 4 piles AA, et recommencer mes essais.

J'ai juste besoin d'aide sur

en lui faisant faire 'masse commune' avec le reste du montage

Je ne sais pas ce que cela veut dire ni comment cela se traduit.

Est-ce que je dois brancher le fil "moins" de mon pack de batterie sur le bus d'alimentation de ma breadboard sur la partie "moins" ?

Oui , la réunion des 'fils moins' forme un point de référence pour l'ensemble des tensions du montage = la 'masse', la référence.

Bonsoir,

Je reviens poster les résultats de mes essais.

J'ai acheté un bloc permettant de mettre 4 piles AA en série.
Je m'en suis servi pour alimenter mon servomoteur, tout en faisant "masse commune".
N'ayant que des piles rechargeables, je n'ai atteint que 5,3V.

Résultat:

  • le moteur ne broute / vibre plus du tout !
  • le servomoteur semble se déplacer normalement
  • la mesure de la sonde de température est beaucoup plus stable, mais continue à faire des variations dès que le servomoteur est "attaché", la température calculée variant entre 20°C et 28°C (comparé à des valeurs entre 20°C et 48°C) et ces variations sont bien moins régulières.

Je me demande donc si, dans ma situation actuelle ( 4 piles rechargeables pour alimenter mon servomoteur), dès que le servomoteur est "attaché" à la sortie digitale, il tire sur le circuit intégré pour récupérer la tension / courant qui lui manque, et continue d'impacter la sonde de température, et qu'avec une vraie alimentation bien dimensionnée il n'y aurait plus d'impacte.

@al1fch Je pense clôturer ce sujet lorsque j'aurai eu un retour sur cette dernière hypothèse. J'ai malheureusement passé beaucoup de temps sur ce sujet à cause d'une raison futile.

Bonsoir

L'idée d'une 'récuperation de courant' par prélèvement sur le circuit intégré ne m'inspire pas ....

Le bruit électrique engendré par le moteur du servo suffit encore à perturber la mesure de la tension issue du TMP36 :

8°C d'écart entre les valeurs extrèmes de température calculée c'est seulement 80mV d'écart entre les valeurs extrèmes de la tension à mesurer (capteur @10mV/°C)

On arrive vite a de tels niveaux de bruit en fonction de la qualité du câblage en présence d'un moteur en activité permanente. Une photo du montage permetrait de se faire une idée de la manière dont les élemnts sont reliés effectivement (longeur des liaisons, trajets des divers fils, points de raccordement.....)

Comment sont actuellement réunies le GND de la carte Arduino, le moins du servo et celui de l'alimentation du servo ? Si le point de rencontre n'est pas une broche GND de la carte Arduino (masse en étoile en ce point) alors le courant traversant le moteur sans cesse a nécessairement une petite influence sur la mesure analogique de température, mesure qui est très sensible.

autres idées (mesures d'évitement) en vrac à part une amélioration du câblage :

-remplacer le capteur analogique par un capteur numérique (DS18B20 , DHTxxx) (pas de capteur anlogique sensible dans un environnement bruité)

-garder le TMP36 mais détacher brièvement le servo (servo.detach) pendant la mesure de température, le réattacher ensuite (= couper la nuisance le temps de la mesure)

J'ai malheureusement passé beaucoup de temps sur ce sujet à cause d'une raison futile.

alimentation, qualité du câblage, bruit... ne sont pas des sujets futiles

Comme proposé, je joins une photo du montage réalisé.

  • L'astérisque correspond à ma mise en commun des masses.
    Je ne sais pas si, au lieu de faire un pont sur la breadboard, je ne pourrai pas mettre la sortie "moins" de mon pack de piles directement sur une fiche "GND" de l'arduino uno ? En effet la carte Arduino Uno dispose de 3 fiches marquées GND.

  • Le A0 correspond à l'entrée analogique qui lit la température

  • Le 9 correspond à la sortie digitale qui contrôle le servomoteur

  • J'ai +5.7V mesuré aux bornes de mon pack de piles AA (non rechargeables cette fois)

Conclusion avec de vraies piles => les mesures de température sont nettement plus stables qu'avec les piles rechargeables !

@al1fch Je me suis mal exprimé. Ce projet n'était absolument pas un vrai projet.
C'était censé être un essai de modification de montage qui devait prendre 10 minutes, et ensuite je passais à autre chose.
La proposition d'utiliser une sonde numérique est assurément une solution, mais le cœur du sujet était de savoir pourquoi ma sonde me renvoyait de mauvaises valeurs, et je suis convaincu d'avoir eu une explication suffisante, et je t'en remercie pour le temps passé.

Ce sujet aura également été formateur car il m'a appris à ne pas faire confiance aveuglément aux montages proposés dans le kit de démarrage !

Je laisse le sujet ouvert pour te permettre d'intervenir une dernière fois si tu le souhaites, et ensuite je le marquerai comme résolu.