====== Thermorégulateur ====== * Porteur du projet : http://reso-nance.org/wiki/user/clement * Date : 23/06/2016 * Licence : libre ! * Contexte : * Fichiers : lien * Lien : lien vers un site éventuellement {{tag>Arduino Fraiseuse CNC Découpeuse laser}} ===== Description ===== {{ http://reso-nance.org/wiki/_media/projets/thermoregulateur/photo/thermoregulateur.jpg?400 }} \\ Ce projet a pour but une régulation sommaire des températures de deux étuves diy pour des projets de fermentation. Deux capteurs DHT22 mesurent la température dans leurs enceintes respectives. L'arduino compare ces températures aux valeurs de consigne. Pour chaque enceinte, si la température mesurée est inférieure à celle de la consigne, alors l'arduino active les relais électriques sur lesquels sont branchées des lampes à incandescence sources de chaleur douce. Lorsque la température mesurée correspond à celle de la consigne, l'arduino ouvre le relai et la lampe s'éteint. ===== Matériaux ===== * Arduino uno + alimentation \\ * 2 DHT22 \\ * 4 boutons poussoirs \\ * 1 LCD 16×2 \\ * 2 relais \\ * 3 prises électriques femelles \\ * 1 prise électrique mâle \\ * Fil électrique \\ * Bornes de connexion rapide \\ * Divers circuits imprimés (plaque de cuivre et fraiseuse cnc) \\ * Jumpers \\ * Résistances \\ * Boîte en bois (découpeuse laser, plaque 3mm A3) \\ * Vis et boulons 2,5×8 mm et 3×8 mm \\ * Fer à souder et étain \\ * Colle à bois \\ ===== Arduino ===== [[http://reso-nance.org/wiki/_media/projets/thermoregulateur/thermoregulateur-t_t.svg|Schéma Fritzing du montage]] \\ ++++ Code | // Régulateur de deux températures #include // Pour stocker les consignes et les retrouver // en cas de défaut d'alimentation // Déclaration des capteurs // Boutons poussoirs const char pin_p1 = A0 ; const char pin_m1 = A1 ; const char pin_p1h = A2; const char pin_m1h = A3; // Capteur DHT22 température/humidité #include const int dhtpin1 = 11 ; // what pin we're connected to const char dhttype = DHT22 ; // DHT 22 (AM2302) DHT dht1(dhtpin1, dhttype, dhtpin1); // Premier capteur de température const int dhtpin2 = 12 ; // what pin we're connected to DHT dht2(dhtpin2, dhttype, dhtpin2); // Second capteur de température // Déclaration des actionneurs // Déclaration LCD #include const int rs = 7 ; const int enable = 6 ; const int d4 = 5 ; const int d5 = 4 ; const int d6 = 3 ; const int d7 = 2 ; LiquidCrystal lcd(rs, enable, d4, d5, d6, d7) ; // Déclaration des pin de relais const int chauffe = 8; // Relai 1 const int vapeur = 9; // Relai 2 // Déclaration diode de chauffe const int diode = 13 ; // Déclaration des variables et des constantes unsigned long previousMillis = 0; // Pour compter le temps long intervalle = 2000; // ms, intervalle de mesure du capteur int tc;// = EEPROM.read(0); // température de consigne. Maximum pour le pain : 43°C int hc;// = EEPROM.read(1); // humidité de consigne. Maximum pour le pain : 95% float t = 20; // T1 instantanée int h = 20; // T2 instantanée int delai = 200; // (ms) délai pour les boutons poussoir int p1 = 0; // +1°C int m1 = 0; // -1°C int p1h = 0; // +1°C T2 int m1h = 0; // -1°C T2 void setup() { // Déclarer les broches // pinMode(dhtpin1, INPUT); // pinMode(dhtpin2, INPUT); dht1.begin(); dht2.begin(); // Boutons poussoirs pour le réglage de la consigne de température pinMode(pin_m1, INPUT); // - 1 °C T1 pinMode(pin_p1, INPUT); // + 1 °C T1 // Boutons poussoirs pour le réglage de la consigne d'humidité pinMode(pin_m1h, INPUT); // -1°C T2 pinMode(pin_p1h, INPUT); // +1°C T2 // Écran LCD lcd.begin(16, 2); // taille de l'écran : (16, 2) lcd.clear(); // Diode de chauffe pinMode(diode, OUTPUT); // Relais pinMode(chauffe, OUTPUT); pinMode(vapeur, OUTPUT); tc=EEPROM.read(0); hc=EEPROM.read(1); } void loop() { // Réglage de la température de consigne 1 p1 = digitalRead(pin_p1); m1 = digitalRead(pin_m1); if (p1==HIGH) { tc +=1; delay(delai); } if (m1==HIGH) { tc -=1; delay(delai); } // Réglage de la température de consigne 2 p1h = digitalRead(pin_p1h); m1h = digitalRead(pin_m1h); if (p1h==HIGH) { hc +=1; delay(delai); } if (m1h==HIGH) { hc -=1; delay(delai); } // Stockage des consignes en EEPROM if (tc!=EEPROM.read(0)) { EEPROM.write(0,tc); } if (hc!=EEPROM.read(1)) { EEPROM.write(1,hc); } // Mesure de température et d'humidité, // toutes les deux secondes unsigned long currentMillis = millis(); if (currentMillis - previousMillis > intervalle) { previousMillis = currentMillis; // Mesure du capteur t = dht1.readTemperature(); h = dht2.readTemperature(); Serial.println(t); Serial.println(h); /* // en cas de pb de lecture du capteur while (isnan(h) || isnan(t)) { delay(2000); t = dht1.readTemperature(); h = dht2.readTemperature(); Serial.println(t); Serial.println(h); } */ } // Chauffe et diode : if (t"); lcd.print(tc); lcd.print("*C >"); lcd.print(hc); lcd.print("*C"); lcd.setCursor(0,0); lcd.print("T="); lcd.print(int(t*10)/10); lcd.print("*C"); lcd.print(" T2="); lcd.print(h); lcd.print("*C"); } ++++ ===== Fichiers ===== [[http://reso-nance.org/wiki/_media/projets/thermoregulateur/boite_thermoregulateur.svg|svg boîtier]] \\ [[http://reso-nance.org/wiki/_media/projets/thermoregulateur/fichier_cuivre_thermoregulateur.svg|svg circuits imprimés]]