Thermomètre Extérieur Arduino avec Tendance, Min/Max et Affichage LCD
Composants et fournitures
| Arduino UNO | 1 |
| Capteur de température de précision TS-NTC-103, 10 kΩ (B+B Thermo Technik) | 1 |
| Écran LCD 16x2 standard (blanc sur bleu) – Adafruit | 1 |
| Alimentation 12V DC 2.0A – RobotGeek | 1 |
| Condensateur 100 nF (0,1 µF) | 2 |
| Condensateur électrolytique 470 µF 16V | 1 |
| Résistance métal 10 kΩ, tolérance 0,1% (pour diviseur de tension) | 1 |
| Bouton poussoir (repos ouvert) | 1 |
| Potentiomètre rotatif 10 kΩ linéaire (contraste LCD) | 1 |
| Résistance 10 kΩ (tolérance standard) | 1 |
À propos de ce projet
Introduction
Ce thermomètre a été réalisé pour le plaisir et pour acquérir de l'expérience en programmation Arduino et en utilisation d'un afficheur LCD. Au fil du développement, des fonctions supplémentaires ont été ajoutées : température maximale, minimale, et une flèche indiquant la tendance (hausse/baisse). Un bouton poussoir permet de réinitialiser les valeurs min/max à la température actuelle.
Construction
Le montage est simple. Connectez les composants selon le schéma : la sortie 5V de l'Arduino Uno alimente toutes les connexions +5V (flèches), et toutes les masses sont reliées. Le thermomètre est alimenté par une alimentation externe 12V DC branchée sur l'Arduino. Téléversez le sketch et c'est prêt.
Liste détaillée du matériel :
- Arduino Uno
- Afficheur LCD 1602A
- Alimentation 12 V DC
- Capteur NTC B+B Thermo Technik TS-NTC-103 (10 kΩ)
- Résistance métal 10 kΩ, tolérance 0,1%, 0,6W, coefficient 25 ppm
- Potentiomètre 10 kΩ linéaire
- Résistance 820 Ω (tolérance 10%, 5% ou mieux)
- Résistance 10 kΩ (tolérance standard)
- Condensateur 0,1 µF (=100 nF) 16V (2 pièces)
- Condensateur électrolytique 470 µF 16V
- Bouton poussoir (normalement ouvert)
- Boîtier (optionnel)
Le capteur : un NTC de haute précision
Le NTC utilisé est un capteur de précision B+B Thermo Technik de 10 kΩ, avec une tolérance de résistance à 25 °C de ±0,5%. La série TS-NTC couvre une plage de -60 à +150 °C, remplaçant avantageusement les sondes platine coûteuses. La résistance de base et la valeur B sont toutes deux dans une tolérance de ±0,5%, permettant une utilisation sans étalonnage et un remplacement sans réajustage. Une simple mesure de résistance atteint une précision de ±0,12 K à 25 °C. Sur la plage -60...+85 °C, l'erreur maximale est d'environ ±0,5 K.
Pour une mesure haute précision, l'autre résistance du diviseur de tension (en série avec le NTC) doit aussi être de faible tolérance. Une résistance métal 10 kΩ, 0,1%, 0,6W, 25 ppm a été utilisée. Toute résistance avec tolérance ≤0,5% convient.
Parasites sur le câble du NTC
Le NTC est placé à l'extérieur, avec plusieurs mètres de câble. Pour éviter les interférences des appareils « bruyants » de la maison, un condensateur de découplage de 0,1 µF a été placé entre l'entrée analogique de l'Arduino (broche A0 / pin 14) et la masse. L'oscilloscope montrait encore du bruit, provenant de l'horloge du LCD 1602. Il a disparu après ajout d'un second condensateur 0,1 µF entre VDD et VSS du LCD, soudé directement sur le circuit imprimé avec fils très courts (≤1 cm).
Pour éliminer le bruit et le ripple de l'alimentation à découpage, un électrolytique 470 µF a été placé entre 5V et GND de l'Arduino.
Positionnement du NTC
Pour éviter les mesures faussées, le NTC et son boîtier ne doivent jamais être au soleil. Placez-le à l'ombre, de préférence sur le mur nord de la maison (sud dans l'hémisphère sud) ou éloigné du bâtiment. Pas collé au mur, mais à quelques millimètres, car le mur peut être plus chaud que l'air ambiant. Idéalement, un mur sans chauffage derrière (ex. garage).


Le logiciel
La bibliothèque LiquidCrystal pilote le LCD 1602. Plusieurs constantes et variables sont déclarées – consultez les commentaires dans le sketch. A, B, C sont les coefficients de Steinhart-Hart pour ce NTC. Pour un autre NTC, modifiez ces coefficients (voir approximation ci-dessous). L'intervalle de mesure (ligne 17) est de 3 secondes. Pour lisser les valeurs, une moyenne glissante sur 30 mesures successives (numReadings ligne 22) est calculée : la température affichée est la moyenne sur les 90 dernières secondes. Un tableau readings[30] (ligne 21) stocke les valeurs brutes (entiers 0-1023).
Approximation de Steinhart-Hart
Un NTC (coefficient de température négatif) voit sa résistance diminuer quand la température augmente. La relation R-T n'est pas linéaire. Deux formules d'approximation sont courantes : la formule Beta et la formule Steinhart-Hart. Cette dernière, plus précise, est utilisée ici.
Le fabricant fournit souvent les coefficients pour les deux modèles. Mais le TS-NTC-103 couvre -60...+150 °C. Pour notre plage d'utilisation (~ -10...+30 °C), on obtient une meilleure approximation en calculant ses propres coefficients pour cette plage restreinte. Trois couples résistance-température ont été pris dans les spécifications du fabricant (-10, 0, +20 °C). Le calculateur en ligne de Stanford Research Systems donne les coefficients. Le graphique ci-dessous montre les données (points rouges), l'approximation Beta et l'approximation Steinhart-Hart. En bas à droite : pour 10 kΩ, Steinhart-Hart donne 25,0035 °C (excellent), Beta donne 25,7716 °C (moins bon – le NTC est 10 kΩ à 25 °C).

Lien vers le calculateur NTC (Stanford Research Systems)
Code
Version 1.4 : corrige un problème de convention dans la déclaration de fonction PrintPG() causant une erreur de compilation dans l'éditeur hors ligne (pas de souci dans l'éditeur web).
Version 1.3 : ajoute un hystérésis pour la flèche de tendance.
Le code complet est disponible dans la section « Code » du projet original.
Schémas
Voir la section « Schematics » du projet original pour le schéma de câblage complet.
Processus de fabrication
- Système de contrôle d'accès intégré QR, RFID et vérification de température
- Connecter plusieurs capteurs DS18B20 1-Wire à un Raspberry Pi pour une surveillance température précise
- Comment lire la température avec un DS18B20 sur Raspberry Pi 2
- Mesure de température sur Raspberry Pi avec capteurs 1‑Wire Maxim et pont I2C DS2482
- Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
- Surveillance transparente température et humidité sur Raspberry Pi avec EzTemp
- Surveillance précise de la température dans un placard serveur avec Raspberry Pi
- Contrôle de température brassage maison DIY : Surveiller et réguler avec Arduino
- Surveillance de température de salle sur Raspberry Pi avec graphiques Gnuplot et alertes email