Défi 7 – Créer un indicateur de température
Défi : Orienter un servo moteur selon la température.
Programmation : Inclure une librairie supplémentaire (servo.h), gestion d’une sonde pour trouver la température.
PFEQ : Température. Condensateur. Servo moteur.
Le présent défi va nous permettre de mieux comprendre ce qu’est une sonde et comment gérer les mesures prises par elle. Pour ce faire, nous utiliserons la sonde de température TMP36.
Un peu de théorie
Cette sonde fait varier la différence de potentiel (sur la broche du centre) selon la température mesurée. Donc, la sortie n’est pas une température, mais bien une DDP. Voici comment calculer (selon les spécifications de cette sonde) la température mesurée.
- Si X est la valeur (entre 0 et 1023) lue à la broche du centre de la sonde.
- La DDP maximale est de 5V (donc la lecture sera de 1023).
- Le rapport entre X et 1024 (le nombre de valeurs différentes possibles) multiplié par 5V nous donnera la DDP de sortie -> DDP = (X/1024)*5
La température, selon la «datasheet» du capteur se calcule comme ceci (voir cette page pour plus de détails) : T = (DDP -0,5)*100
Nous utiliserons ici un servo moteur pour indiquer la température. Ce type de moteur ne tourne pas en rond, mais peut prendre différentes positions (entre 0° et 180°).
Un servo moteur demande plus de courant pour démarrer que pour continuer à bouger ce qui cause des variations de courant, potentiellement dommageables, dans le circuit. Pour protéger le circuit, nous utiliserons un condensateur en parallèle avec le moteur.
Un condensateur, tout comme une DEL, doit être connecté d’une certaine façon (sens) dans le circuit. ATTENTION! La cathode (côté noir du condensateur, petite patte) doit être connectée à la mise à la terre (négatif) de votre circuit.
Montage
Schéma électrique
Le programme place le servo moteur à 2 angles différents selon la température.
Voici le programme Blockly@rduino (version xml) :
Note : La saisie d'écran ci-dessus est celle de Blockly@rduino. À vous de traduire si vous utilisez Ardublockly!
Pour aller plus loin
On pourrait tenter de programmer Arduino pour que le servo moteur prenne plus de 2 positions à l’aide de la fonction MAP (bloc : «Faire la transposée de…» dans les entrées de Blockly@rduino).