🌡️ Indicateur de Température à LED : Guide Complet (Méthode Arduino/ESP32 & Analogique)
Pourquoi construire un indicateur de température à LED ?
Avoir une indication visuelle immédiate de la température est souvent plus utile qu'un simple chiffre sur un écran. Un indicateur à LED (de type "Bar Graph") permet de voir d'un coup d'œil si un système chauffe trop (zone rouge) ou fonctionne normalement (zone verte), sans avoir à lire un afficheur numérique.
🚀 Méthode 1 : La Version Moderne avec Arduino ou ESP32 (Recommandée)
Cette méthode est la plus flexible. Elle permet de changer facilement la plage de température, d'ajouter des alarmes sonores, ou d'envoyer des données via WiFi (avec ESP32).
📦 Liste des Composants (BOM) :
- Microcontrôleur : Arduino Uno, Nano ou ESP32
- Capteur de température : LM35 (précis et linéaire, 10mV/°C) ou DHT11
- Affichage : Module "LED Bar Graph" (10 segments) ou 5 à 10 LEDs individuelles
- Résistances : 10x 220Ω (pour limiter le courant des LEDs)
- Divers : Breadboard et câbles jumper
🔌 Schéma de Câblage (avec LM35 et LEDs individuelles) :
- LM35 : VCC → 5V, GND → GND, OUT → Broche Analogique A0 (Arduino) ou GPIO 34 (ESP32).
- LEDs : Anodes (patte longue) → Broches numériques 2 à 11 (via résistances 220Ω). Cathodes (patte courte) → GND commun.
💻 Code Arduino Complet :
/*
* Indicateur de Température à LED avec Arduino/ESP32
* TechFix Hub - DIY Electronics & Arduino Projects
* Capteur : LM35 (10mV par degré Celsius)
*/
const int sensorPin = A0; // Broche analogique pour le LM35
const int numLeds = 10; // Nombre total de LEDs
const int startLedPin = 2; // Première broche numérique pour les LEDs
// Définir la plage de température pour l'affichage (ex: 20°C à 40°C)
const float minTemp = 20.0;
const float maxTemp = 40.0;
void setup() {
Serial.begin(9600);
// Configurer toutes les broches des LEDs en sortie
for (int i = 0; i < numLeds; i++) {
pinMode(startLedPin + i, OUTPUT);
}
}
void loop() {
// 1. Lire la valeur analogique
int sensorValue = analogRead(sensorPin);
// 2. Convertir en tension (5V / 1024 pour Arduino, ou 3.3V / 4095 pour ESP32)
// Pour Arduino Uno :
float voltage = sensorValue * (5.0 / 1024.0);
// 3. Convertir la tension en température (LM35 = 10mV/°C, donc 0.01V/°C)
float temperature = voltage / 0.01;
Serial.print("Température : ");
Serial.print(temperature);
Serial.println(" °C");
// 4. Calculer combien de LEDs allumer
// Mapper la température (minTemp à maxTemp) vers le nombre de LEDs (0 à numLeds)
int ledsToLight = map(temperature * 10, minTemp * 10, maxTemp * 10, 0, numLeds);
// Limiter la valeur entre 0 et le nombre max de LEDs
ledsToLight = constrain(ledsToLight, 0, numLeds);
// 5. Allumer/Éteindre les LEDs en conséquence
for (int i = 0; i < numLeds; i++) {
if (i < ledsToLight) {
digitalWrite(startLedPin + i, HIGH); // Allumer
} else {
digitalWrite(startLedPin + i, LOW); // Éteindre
}
}
delay(500); // Mise à jour toutes les 500ms
}
⚡ Méthode 2 : La Version Classique 100% Analogique
Pour les amateurs d'électronique pure sans microcontrôleur, nous utilisons un capteur de précision et un pilote de LED dédié. (Note : Le composant "TL489" mentionné dans les anciens montages est obsolète et difficile à trouver. Nous le remplaçons par le standard industriel LM3914, conçu spécifiquement pour piloter des barres de LEDs).
Composants Clés :
- IC1 : LM335 (Capteur de température précis, sortie 10mV/°K)
- IC2 : LM723 (Régulateur de tension utilisé ici comme amplificateur tampon pour stabiliser la référence)
- IC3 : LM3914 (Pilote de barre de LEDs, détecte le niveau de tension et allume les LEDs correspondantes)
- P1 : Potentiomètre 10kΩ (pour le calibrage de la plage)
Principe de Fonctionnement :
- Le LM335 délivre une tension proportionnelle à la température absolue (2.98V à 25°C, soit 10mV par degré Kelvin).
- Le circuit autour du LM723 agit comme un amplificateur non-inverseur avec un gain réglable (par exemple, un gain de 20). Cela transforme les 10mV/°C du capteur en 200mV/°C, une échelle parfaite pour le LM3914.
- Le LM3914 compare cette tension amplifiée à une référence interne divisée en 10 paliers. Pour chaque augmentation de 200mV (soit 1°C après amplification), une LED supplémentaire s'allume.
- Le potentiomètre P1 permet de décaler le "point zéro" (par exemple, faire commencer l'affichage à 18°C au lieu de 0°C).
🛠️ Dépannage et Bonnes Pratiques
- Les LEDs clignotent : Ajoutez un condensateur de découplage de 100nF entre l'alimentation et la masse de chaque circuit intégré (IC).
- Lecture instable (Version Arduino) : Le LM35 est sensible au bruit. Ajoutez un condensateur de 100nF entre la broche OUT et la masse du LM35, ou faites une moyenne de 10 lectures dans le code.
- Auto-échauffement du LM35 : Ne faites pas passer plus de 1.5mA à travers le LM35, sinon il chauffera lui-même et faussera la mesure. Une résistance de 1kΩ en série avec l'alimentation du capteur peut aider.
Conclusion
Que vous choisissiez la flexibilité infinie d'un ESP32 ou l'élégance d'un montage analogique discret avec le LM3914, la réalisation d'un indicateur de température à LED est un projet fondamental et très satisfaisant. Il combine la gestion des capteurs, le traitement du signal et l'interface utilisateur visuelle.
Prochaine étape : Consultez notre guide sur l'ajout d'un écran OLED à ce montage pour afficher la valeur numérique exacte en plus des LEDs !