Sonde de température gadget avec un arduino #
Ce TP peut être réalisé en simulation avec TinkerCad (logiciel Circuits) ou bien avec du matériel réel.
L’objectif est d’utiliser :
Test de la plate forme : blink #
On commence par un traditionnel blink pour vérifier que tout marche: faire clignoter la led intégrée, ce qui ne demande aucun composant extérieur.
Le code est issu de la documentation officielle et légèrement modifié:
const int pin = LED_BUILTIN; // 13
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(pin, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(pin, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(pin, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Faites varier les valeurs données à delay
pour en mesurer l’influence.
Dans TinkerCAD, votre travail doit être nommé :
TP1_blink
. Vous ne devez pas le modifier dans la suite. Par contre, vous pouvez dupliquer cet exercice de manière à ne pas tout le temps repartir de 0Avec du matériel réel, pensez à faire vérifier le montage à l’encadrant.
Lecture de la température #
Reliez la sonde à l’entrée analogique A0 de l’Arduino, et alimentez là :
En consultant la documentation (du capteur de température), voyez
comment lire l’entrée analogique, et affichez-la dans la console. Dans
loop
, faites une lecture de température, un affichage, puis une pause
de 1 seconde, de manière à avoir des données en continu.
Prenez le temps de comprendre chaque étape :
- lecture de l’entrée (valeur numérique, sur 10 bits)
- conversion de l’entrée en une grandeur physique en volts (caractéristique de l’Arduino)
- conversion de la grandeur physique en volts en température (caractéristique du capteur)
Dans TinkerCAD, votre travail doit être nommé :
TP1_lecture_temp
. Vous ne devez pas le modifier dans la suite. Par contre, vous pouvez dupliquer cet exercice de manière à ne pas tout le temps repartir de 0.Avec du matériel réel, pensez à faire vérifier le montage à l’encadrant.
Pilotage de la LED #
Avec TinkerCAD, attention à ne pas supprimer ou modifier les modèles des séances précédentes. Pour repartir d’un travail que vous avez déjà fait, vous devez dupliquer le travail, puis travailler sur la copie.
Câblez la LED RVB. Il en existe 2 types : Anode commune ou cathode commune :
- les LEDs RVB sur TinkerCAD sont à cathode commune
- les LEDs RVB disponibles en TP sont à anode commune
Le schéma suivant utilise au contraire une LED RVB à anode commune. Si vous utilisez TinkerCAD vous devrez donc adapter (légèrement) le schéma ci-dessous.
Consultez la documentation pour voir comment piloter la LED. Lors de vos tests, identifiez comment allumer la LED en bleu, rouge, vert, puis cyan (si lorsque vous croyez allumer la led en bleu, vous voyez du jaune, ne passez pas à la suite, et réfléchissez à cette histoire de cathode ou anode commune pour régler le problème).
Vous devez trouver un moyen de convertir un nombre (la température) en une couleur. Pour une température froide, vous devez avoir du vert. Pour une température chaude, vous devez avoir du rouge. Pour une température intermédiaire, vous aurez du jaune…
Avec du matériel réel, le capteur peut être chauffé à la main (la variation reste assez faible). Avec TinkerCad, vous disposez d’un curseur qui permet de régler la température ambiante sur le capteur.
Avec TinkerCAD, réglez les couleurs de manière à avoir :
- du vert pur (0, 255, 0) pour une température de 10°C ou inférieure
- du rouge pur (255, 0, 0) pour une température de 40°C ou supérieure
- un dégradé (passant par le jaune donc) pour des températures entre 10°C et 40°C
Avec du matériel réel, ajustez les réglages de manière à voir passer la LED du vert au rouge, et faites constater à l’encadrant.
Une fois que ça fonctionne, passez à l’exercice suivant, de manière à avoir un programme qui pilote à la fois la LED et le servomoteur.
Utilisation du servomoteur #
Avec TinkerCAD, on se contentera d’observer la variation de l’angle du servomoteur, qui devra donc dépendre de la température : angle 0° pour une température de 10°C ou moins, et angle de 90° pour une température de 40°C ou plus. Vous programmerez un angle intermédiaire pour une température intermédiaire (par exemple pour une température de 25°C (exactement au milieu de 10°C et 40°C), le servo devra faire un angle de 45°.
Si vous faites le TP avec du matériel réel, vous avez d’autres possibilités (dans tous les cas ne mettez rien sur le servomoteur, pour ne pas abîmer l’axe, avant que votre code ne gère correctement les angles.) :
- fabriquer un indicateur à aiguille qui affiche la température. L’aiguille sera fixée sur le servomoteur, et un support en carton permettra d’afficher l’échelle des températures.
- utiliser le maillet (fourni) pour frapper la boîte Ensip en guise d’alerte (température élevée)
Un servomoteur permet d’obtenir un asservissement en position (angle). Pour le piloter, l’arduino lui fournit un signal MLI (modulation à largeur d’impulsion ou PWM en anglais) : c’est à dire un signal carré oscillant entre 2 niveaux, haut et bas, pendant des temps variables. Le rapport des temps passé à niveau haut et niveau bas est la commande envoyée au servomoteur. Tout cela est géré par une bibliothèque. Vous trouverez comment l’utiliser dans la documentation associée au servomoteur.
Dans TinkerCAD, votre travail doit être nommé :
TP1_led_servo
. Vous ne devez pas le modifier dans la suite. Par contre, vous pouvez dupliquer cet exercice de manière à ne pas tout le temps repartir de 0.Avec du matériel réel, faites constater à l’encadrant que le montage fonctionne.
Si vous n’avez pas réussi à faire quelque chose, faites toutefois attention à rendre ou faire valider quelque chose qui marche. Il vaut mieux un programme qui pilote correctement la led, mais pas le servo moteur, plutôt qu’un programme dans lequel vous voulez piloter à la fois la led et le servomoteur, mais qui finalement ne marche pas du tout.
Utilisation de l’afficheur #
Enlevez la led RGB et ajoutez un afficheur LCD et un bouton poussoir (le rétroéclairage n’est pas connecté sur le schéma suivant).
Attention, le bouton poussoir et le potentiomètre ont une forme différente dans TinkerCAD. Lisez les légendes…
Vous pouvez apporter quelques modifications (améliorations) à ce montage:
- La résistance variable qui sert à régler le contraste de l’afficheur peut être enlevée. Dans ce cas, la broche VO de l’afficheur doit être reliée directement à la masse de l’Arduino. Ça économise quelques fils.
- Même en simulation, l’affichage est plus sympa si l’écran est rétroéclairé. Pour qu’il le soit, il faut relier la broche LED+ de l’afficheur au 5V, et la broche LED- à la masse, par l’intermédiaire d’une résistance de 500 Ω.
L’objectif du code est que l’afficheur LCD affiche la température. Le bouton poussoir permettra de passer d’une unité à l’autre (°C, °F, K).
Notez que vous devez ici utiliser la résistance de pullup interne pour le bouton poussoir.
Si vous utilisez du matériel réel, vérifiez le comportement du bouton poussoir. Fonctionne-t-il correctement (pb de rebond) ?
Dans TinkerCAD, votre travail doit être nommé :
TP1_afficheur
.Si vous utilisez du matériel réel, faites constater que tout fonctionne à l’encadrant.