Système de Contrôle de Température par Hystérésis avec Arduino
Composants et fournitures
| Composant | Description | Quantité |
|---|---|---|
| Arduino 101 | Microcontrôleur | 1 |
| Capteur de température DHT22 | Mesure température et humidité | 1 |
| Fils de liaison (jumper wires) génériques | Connexions | 1 |
| LED générique | Indicateurs (vert/rouge) | 2 |
| Résistance 10 kΩ | Pour capteur DHT22 | 1 |
| Résistance 330 Ω | Pour LEDs | 2 |
| Shield LCD à boutons DFRobot | Affichage et interface utilisateur | 1 |
| Plaque d'essai (breadboard) générique | Montage | 1 |
Applications et services en ligne
- Arduino IDE
À propos du projet
Le projet
Ce projet démontre le fonctionnement d'un système de contrôle de température utilisant l'hystérésis.
Composants
La liste complète des composants utilisés est illustrée ci-dessus.
Contrôle de température
Le système modélise la situation suivante :
- Au démarrage, la température est affichée.
- Si la température atteint 25 °C, la LED verte s'allume (simulant la climatisation) et la pièce refroidit.
- Lorsque la température redescend à 23 °C, la climatisation s'arrête (LED rouge allumée) jusqu'à ce que la température remonte à nouveau.
Ce comportement à deux seuils (25 °C pour l'activation, 23 °C pour la désactivation) évite les oscillations rapides autour d'un point de consigne unique, caractéristique du contrôle par hystérésis.
Une vidéo montre le fonctionnement en temps réel.
Code
/* Par Alexis Santiago Allende */ /* Dernière mise à jour: 12/03/2017 */
#include "DHT.h"
#include <LiquidCrystal.h>
#define DHTPIN 12
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
boolean a=LOW, b=HIGH;
float h=0, t=0;
const int ledPin = 3;
const int ledPin2 = 2;
long previousMillis = 0;
long interval = 2000;
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0,0);
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
dht.begin();
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin, LOW);
lcd.print("Tempera:");
lcd.setCursor(0,1);
lcd.print("Humedad:");
}
void loop() {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
h = dht.readHumidity();
t = dht.readTemperature();
lcd.setCursor(10,0);
lcd.print(t);
lcd.setCursor(10,1);
lcd.print(h);
if(t >= 25 && a==LOW) {
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin2, LOW);
a=HIGH; b=LOW;
} else if(t <= 23 && b==LOW) {
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin, LOW);
a=LOW; b=HIGH;
}
}
}
Schémas
Schéma de câblage : capteur DHT22 sur broche 12, LEDs sur broches 2 et 3, shield LCD sur broches 8,9,4,5,6,7, résistances de pull-up et limitation de courant.
Processus de fabrication
- Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
- Stores intelligents : contrôle automatisé de la lumière avec Arduino et énergie solaire
- Construire une Tirelire Intelligente : Contrôler un Accepteur de Pièces avec Arduino Nano
- Centre de contrôle d'alimentation Arduino : N-FET, P-FET, Relais et RTC
- Enregistreur de Température et Humidité Arduino avec DHT11 et Shield Ethernet
- Contrôler une LED par Bluetooth avec Arduino et MIT App Inventor
- Construire un Iron Man animé avec Arduino : capteurs, sons et relais
- Capteur d'obstacle IR simple avec Arduino — LED IR + Photodiode
- Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth