Activer le mode zen
Ressource au format PDF
Mots-clés
Classification
Mesure de la température à l'aide d'un montage Arduino et représentation graphique des données avec python
24/01/2022
Résumé
Dans ce document, nous proposons un montage permettant de mesurer une température, d'afficher un retour visuel de la température à l'aide de 4 DELs et de transmettre les données numérisées pour un traitement informatique.
Table des matières
Pour une première prise en main avec Arduino, on pourra consulter l'article « Débuter avec Arduino ». On trouvera des informations sur le matériel, l'alimentation, l'utilisation de la plaquette ou breadboard, l'installation du logiciel et le téleversement des programmes dans la carte. L'article « Détection de 3 niveaux de luminosité et pilotage de sorties d'un micro-contrôleur Arduino » propose les premiers pas de programmation pour le pilotage d'une ou plusieurs sorties en fonction de la réponse d'un composant analogique en entrée.
1. Introduction et fonctionnement
1.1 Introduction
Nous présentons dans cet article la réalisation d'un capteur de température piloté par Arduino. Une visualisation grossière de la température est effectuée par des diodes électroluminescentes ou LEDs. Les données sont numérisées et envoyées à un ordinateur via un port série (les informations sont portées par la connectique matérielle USB).
Ce montage est simple, il met en jeu de faibles tensions et ne pose aucun problème de sécurité.
1.2 Fonctionnement du montage
Le micro-contrô̂leur Arduino doit ê̂tre alimenté soit en 5 V via son câble USB, soit via son entré́e « power jack » avec une tension continue entre 7 et 12 V.
Le modèle exact du capteur thermique n’est pas très important, tant qu’il peut fournir un signal entre 0 et 5 V que l’Arduino pourra mesurer. Ici nous utilisons un TMP36, produit par Analog Device, qui a l’avantage d’être peu coûteux (moins de 2€/pièce) et de fournir un signal directement proportionnel à la température. Lorsque l’on tient la partie plate de ce capteur en face de soi, la masse (GND) est portée par la patte de droite, le signal (OUT) par la patte centrale, et l’alimentation (VCC) par la patte de gauche.
Les quatre LEDs vont s’allumer respectivement lorsque la température au niveau du capteur dépassera : 24°C (LED bleue), 26°C (LED verte), 28°C (LED jaune) et 30°C (LED rouge). Il est donc assez facile de faire s’allumer les lumières en prenant le capteur dans ses mains.
Le capteur et les LEDs sont reliées à une plaquette d’essai (« breadboard ») via des connecteurs de prototypage (« jumpers wires »). Toutes les connexions à l’Arduino se font via la plaquette d’essai, sans soudure.
Les masses (GND) sont reliées entre elles, et l’alimentation (VCC) du capteur est directement assurée par la sortie régulée à 5 V de l’Arduino.
La sortie (OUT) du capteur est branchée sur une entrée analogique de l’Arduino. Les quatre LEDs sont branchées sur les sorties numériques 2 à 5 de l’Arduino, et reliées à la masse via des résistances d’une centaine d’Ohms (pour éviter de les griller en leur imposant un courant trop important).
Le montage est schématisé figure 2.
2. Description du code Arduino
Le micro-contrôleur Arduino est programmable facilement dans un langage ressemblant à du C, via le logiciel spécifique et libre, Arduino[1].
Il suffit de le brancher en USB à un ordinateur sur lequel le logiciel est installé pour qu’il soit reconnu. On peut ensuite (après avoir sélectionné le modèle de carte utilisée et le port COM sur lequel on est branché) lui « téléverser » un script qu’il gardera en mémoire même hors tension.
Les scripts suivent en général la structure suivante : une définition des constantes et variables utilisées, une boucle d’initialisation (qui sera exécutée une fois à chaque démarrage de l’Arduino) et une boucle de fonctionnement (qui sera exécutée en boucle jusqu’à l’arrêt de l’Arduino).
Le script utilisé ici est disponible au téléchargement à la fin de cet article, il est commenté et présenté dans les figures 3 à 5 (la plupart des fonctions ont des noms transparents, mais vous pouvez trouver leur description détaillée sur la page de référence des fonctions Arduino [2]).
La température ambiante est définie à cet endroit (on peut modifier la valeur si besoin). Ici nous avons choisi une température de 22°C (cette fiche ayant été rédigée un jour de printemps à Lyon), figure 3.
Dans la boucle d’initialisation (figure 4), on définit les broches ou sorties numériques sur lesquelles sont branchées les LEDs. On s’assure que les LEDs sont initialement éteintes. Et on débute également une communication via le port série (l’utilisation du port série sera décrite dans la section 4).
Dans la boucle de fonctionnement (figure 5), on relève la température mesurée en fonction du temps écoulé depuis le démarrage de l’Arduino (en ms) pour l'envoyer sur le port série. On actualise aussi l’état (allumé ou éteint) des LEDs en fonction de la température mesurée.
Ici, on a choisi arbitrairement que les LEDs s’allument respectivement pour des températures de +2°C, +4°C, +6°C et +8°C par rapport à la température ambiante définie au début du script. À la fin de la boucle, on impose un temps de pause de 10 ms, pour que deux mesures de températures successives ne soient pas trop rapprochées (on peut modifier cette valeur si besoin).
3. Manipulations
Une fois le script téléversé dans la mémoire de l’Arduino, celui-ci peut fonctionner de façon autonome (tant qu’il est alimenté). Lorsque la température est comprise entre 24°C et 26°C, on observe, en effet que la première LED s'allume, figure 6.
En faisant chauffer le capteur entre ses doigts, on mesure maintenant une température comprise entre 28°C et 30°C, figure 7.
4. Exploitation des mesures
Il est également possible d’utiliser l’Arduino pour envoyer des données numérisées (la mesure de température ici) vers un ordinateur. Pour cela, nous utilisons la fonction Serial.print()[3] qui permet d’envoyer des chaînes de caractères via le port série. Le logiciel Arduino dispose d’un moniteur série qui permet de visualiser toutes les chaînes de caractères envoyées par l’Arduino (voir figures 8 et 9). Le port série matériel relie l'Arduino à l'ordinateur via la connectique USB, il est aussi partagé sur les broches 0 et 1 de l'Arduino (par exemple pour connecter deux Arduino).
La colonne de gauche contient le temps (en ms) écoulé depuis le démarrage de l’Arduino, la colonne de droite contient la température (en °C) mesurée à chaque itération de la boucle de fonctionnement. Ici on constate que la température oscille entre 20 et 21°C.
Ce moniteur série est assez limité : il ne permet que la visualisation en temps réel d’une série de valeurs. Pour aller plus loin, nous proposons l’utilisation d’un script Python, qui aura pour rôle de récupérer sur le port série les données envoyées par l’Arduino, et de les représenter graphiquement.
Le script Python est disponible au téléchargement à la fin de cet article. Il est commenté et présenté sur la figure 10.
On peut maintenant faire une représentation graphique des mesures, figure 11.
Remarque : Le code Python présenté ici est minimaliste, il se contente de lire ligne par ligne les données envoyées sur le port série par l’Arduino et de stocker les valeurs dans un tableau, pour les exploiter ultérieurement. Une version plus élaborée et détaillée est disponible sur git-hub et permet de faire de la visualisation de signal en temps réel (comme sur un oscilloscope) : https://github.com/aberut/arduino-oscillo, [4].
Programmes python :
Télécharger le programme arduino pour la mesure de température « sketch_mesure_temperature_timing.ino »
Télécharger le programme python pour l'exploitation des mesures « Mesure_temperature_arduino_python.py »
Télécharger le programme python pour l'exploitation des mesures au format Jupyter Notebook « Mesure_temperature_arduino_python.ipynb »
5. Références
- [1] Arduino
- [2] Langage Arduino, Arduino.cc
- [3] Script python pour importer les librairies utiles, définir les paramètres et importer les données transmises par l'Arduino : Fonction Serial.print()
- [4] github Arduino d'Antoine Bérut
Pour citer cet article :
Mesure de la température à l'aide d'un montage Arduino et représentation graphique des données avec python, Antoine Bérut, janvier 2022. CultureSciences Physique - ISSN 2554-876X, https://culturesciencesphysique.ens-lyon.fr/ressource/TP-Arduino-temperature-berut.xml