Un impianto solare termico, utilizza l’irraggiamento solare per riscaldare dell’acqua da immettere dentro casa. Quando, però, la sua temperatura non è sufficiente, questi impianti utilizzano un supporto al riscaldamento come una caldaia a gas. La richiesta di supporto alla caldaia, viene solitamente inviata da una valvola solare termica, ovvero una valvola meccanica che ha al suo interno un bulbo costituito da un materiale che reagisce al calore dell’acqua facendo alzare o abbassare una valvola di flusso.

La Valvola Solare Termica è un elemento però delicato che subisce alterazioni soprattutto in presenza di acqua dura che comporta spesso il blocco dei meccanismi interni.

Avendo avuto più volte questo problema, ho deciso di provare a realizzare una valvola solare termica motorizzata con Arduino. Questa è in grado di rilevare la temperatura dell’acqua e ruotare la valvola a seconda che ci sia bisogno o meno dell’intervento della caldaia.

 

Occorrente:

 

Collegamenti:

Per collegare l’impianto occorre:

La valvola motorizzata deve essere collegata

  • al negativo della batteria (o dell’alimentatore quanto in funzione),
  • il cavo blu e marrone agli estremi di uscita del relè,
  • mentre il connettore centrale sarà alimentato dal polo positivo della batteria (o alimentatore).

L’altro capo del relè sarà invece connesso:

  • sul primo pin uniremo il segnale digitale 8 dell’Arduino
  • sul secondo pin collegheremo l’alimentazione sul positivo a 5V di arduino
  • sul terzo pin collegheremo l’alimentazione sul negativo di arduino

Il sensore di temperatura DS18B20 dovrà invece essere collegato con il

  • rosso al positivo 5V di arduino
  • nero al negativo di arduino
  • giallo al segnale digitale 10 di arduino
  • è necessario inoltre ponticellare il positivo di arduino ed il cavo di segnale giallo del sensore con una resistenza a 4,7K

Programma Arduino Sketch

/********************************************************************/
// First we include the libraries
#include <OneWire.h>
#include <DallasTemperature.h>
/********************************************************************/
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 10
/********************************************************************/
// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
/********************************************************************/
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
/********************************************************************/

int relay_pin = 8;

void setup(void)
{
// start serial port
Serial.begin(9600);
Serial.println(“Dallas Temperature IC Control Library Demo”);
// Start up the library
sensors.begin();
pinMode(relay_pin,OUTPUT);
}
void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
/********************************************************************/
Serial.print(” Requesting temperatures…”);
sensors.requestTemperatures(); // Send the command to get temperature readings
Serial.println(“DONE”);
/********************************************************************/
Serial.print(“Temperature is: “);
Serial.print(sensors.getTempCByIndex(0));

if (sensors.getTempCByIndex(0)>30){
Serial.print(” Diretta “);
digitalWrite(relay_pin,HIGH);

}
else{
Serial.print(” Verso Caldaia “);
digitalWrite(relay_pin,LOW);
}
// You can have more than one DS18B20 on the same bus.
// 0 refers to the first IC on the wire
delay(1000);
}

Per rendere il tutto più user friendly ho aggiunto 2 led per segnalare lo status dell’impianto ed un buzzer per segnalare un allarme quando l’impianto solare raggiunge i 90°. Inscatolato il progetto ultimato diventa così:

Hai bisogno di una consulenza o assistenza?
Apri un ticket di richiesta, ti risponderò in brevissimo tempo! Chiedere non costa nulla 😉

Lascia un commento