En 2016, J'arrive à programmer une arduino uno avec un écran lcd 4 lignes et quatre sondes de température. L'idée réalisée est d'afficher la température haute du ballon tampon, de connaître la température de l'eau chaude sanitaire et les températures du départ / retour du chauffage.
Mon installation est constituée d'une chaudière bois 28.5kw à tirage naturel et d'un ballon de 1m3. Au plus fort de l'hiver, quand la chaudière tourne beaucoup, je bascule l'ecs du cumulus sur un ballon à serpentin commandé par un aquastat. Comme le bois demande beaucoup de maintenance et de manutention, l'amélioration des performances s'est super important.
Maintenant, je connais mon delta T ( différence de température entre l'aller et le retour). Je sais à quelle température j'envois dans mon installation, surtout à quel moment. Enfin, je pense pouvoir améliorer les débits de l'installation par ce biais.
Photos :
Bon, cela m'est contraignant de faire un tuto dans les règles et je me sens pas assez bon pour ça, alors j'vous donne le code et puis s'est tout :
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x3F,2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
const byte sbus1 = 7;
const byte sbus2 = 12;
const byte sbus3 = 4;
const byte sbus4 = 3;
OneWire oneWire1(sbus1) ;
OneWire oneWire2(sbus2) ;
OneWire oneWire3(sbus3);
OneWire oneWire4(sbus4);
DallasTemperature sensors1(&oneWire1);
DallasTemperature sensors2(&oneWire2);
DallasTemperature sensors3(&oneWire3);
DallasTemperature sensors4(&oneWire4);
DeviceAddress Sonde01={0x28,0x88,0x9A,0x2A,0x07,0x00,0x00,0x4E};
DeviceAddress Sonde02={0x28,0xFE,0x9C,0x2A,0x07,0x00,0x00,0xF8};
DeviceAddress Sonde03={};
DeviceAddress Sonde04={0x28,0x17,0x82,0x2A,0x07,0x00,0x00,0x99};
void setup(void)
{
Serial.begin(9500);
sensors1.begin();
sensors1.setResolution(Sonde01, 10);
sensors2.setResolution(Sonde02, 10);
sensors3.setResolution(Sonde03, 10);
sensors4.setResolution(Sonde04, 10);
lcd.begin (20,4);
}
void loop(void)
{
lcd.home();
sensors1.requestTemperatures();
lcd.setCursor(0,0);
lcd.print("BT.haut:");
lcd.print(sensors1.getTempCByIndex(0));
lcd.print("C");
sensors2.requestTemperatures();
lcd.setCursor(0,1);
lcd.print("Depart:");
lcd.print(sensors2.getTempCByIndex(0));
lcd.print("C");
sensors3.requestTemperatures();
lcd.setCursor(0,2);
lcd.print("Retour:");
lcd.print(sensors3.getTempCByIndex(0));
lcd.print("C");
sensors4.requestTemperatures();
lcd.setCursor(0,3);
lcd.print("Eau chaude:");
lcd.print(sensors4.getTempCByIndex(0));
lcd.print("C");
delay(2000);
}
Voilà, on peut voir une coquille sur l'écran COC au lieu du C de Celsius programmé. J'sais pas, il me semble que la communication en I2C ( 4 fils au lieu d'une dizaine) rend plus fragile l'ensemble lcd/carte i2c. Ou, l'autre hypothèse, l'alimentation via un chargeur de 9V, 500 mA (de tête, à vérifier) serait insuffisante.L'essai de brancher une sonde d'humidité/température supplémentaire n'a pas été concluant, les valeurs étaient tronquées.
Bref, j'en suis là avec l'arduino, ce microprocesseur bien pratique, pas cher (10 euros), qui vous apprends pleins de trucs, la nuit, quand vous arrivez pas à dormir. Après, l'hiver prochain,peut-être des relais sur les pompes ? un travail sur la température extérieure et la vanne trois voie ?