Prototipo gestione impianto climatizzazione

Grazie Gugliemo, hai ragione. Mi spiace perdere tempo così, non è il mio scopo.
Per quanto riguarda la parte "collettore solare" del prototipo che vorrei realizzare mi servirebbero 2 ingressi che leggano la temperatura del collettore solare, 2 ingressi che leggano la temperatura del/dei puffer, un contacalorie e 2 uscite che simulino le pompe, possibilmente "proporzionali", cioè che aumentino o diminuiscano la potenza in base alla richiesta.
Per quanto riguarda il puffer, 5 sonde temperatura.
Occorrebbe trovare qualcosa che simuli la caldaia, in quanto di questa dobbiamo gestire questi parametri: temperatura di mandata, temperatura di ritorno, temperatura di set point della stessa, controllo dei numero di giri della pompa e accensione e spegnimento della stessa.
Per la zona di riscaldamento dobbiamo sapere la temperatura di mandata, temperatura di ritorno, controllo valvola miscelatrice, accensione e spegnimento pompa e modulazione del numero di giri della stessa.
Poi serve sonda esterna, per temperatura ed umidità.
Inizierei con questo. In seguito, se è fattibile, aggiungiamo PdC, VMC e fotovoltaico.

Nulla di difficile

Ma pompa proporzionale che comando vuole?

Standardoil:
Nulla di difficile

Ma pompa proporzionale che comando vuole?

Dobbiamo regolare il numero di giri tramite o comando PWM o0-10v.

Utilizzare pt1000 è abbastanza problematico con Arduino, meglio le ds18b20, o sbaglio..

Molto meglio

barolik:
Utilizzare pt1000 è abbastanza problematico con Arduino ...

... perché ? ? ? ... basta avere la schedina giusta, ad esempio QUESTA :smiley:

Guglielmo

Con il costo di quella singola scheda compri direttamente tutti i ds18b20 che ti servono, già in esecuzione stagna

E ti sei levato le rogne di sonde analogiche
Per l'uso ACS e riscaldamento non serve altro

Piuttosto bisogna pensare a rendere il più possibile parametrizzabile il sistema

Mica di dover sempre riprogrammare arduino solo per aggiungere in opera un secondo accumulo...

Secondo me si può descrivere l'accumulo come una struct (o classe per gli uomini C++) e parametrizzare su una SD piedini di I/O e similia

Standardoil:
Con il costo di quella singola scheda compri direttamente tutti i ds18b20 che ti servono, già in esecuzione stagna

... certo ... ma lo voglio vedere il DS18B20 ad andare da -200° a +850° (e oltre) che è il range di lavoro di una PT1000 :stuck_out_tongue_closed_eyes:

Guglielmo

P.S.: ... comunque era solo per segnalare che le PT1000 si collegano ed anche facilmente ... ovvio che devono "servire" altrimenti si fa in modo più semplice. :wink:

Certo sarebbe bello avere a disposizione più logiche di funzionamento in base all'impianto che ci troviamo davanti, pronte all'uso!

Ora passerei a dare una logica di funzionamento al solare, se siete d'accordo.
Chiamerei:
-S1 sonda 1 collettore solare;
-S2 sonda 2 collettore solare;
-S3 sonda parte bassa 1 puffer;
-S4 sonda parte bassa 2 puffer/piscina;
-P1 pompa 1;
-P2 pompa 2/pompa piscina;
-Ct1 controllo potenza pompa1;
-Ct2 controllo potenza pompa2;
-Ccs contabilizzatore kw (servirebbe un contatore lancia impulsi e sonda mandata/ritorno);

Il funzionamento classico con 1 campo solare e 1 puffer sarebbe così:
Leggi S1;
Leggi S3;
Se T°C S1- T°C S3 >= di X°C fai partire la pompa P1

Come ho detto la parte 'importante' è prevedere da subito le estensioni/modifiche/tarature/configurazioni in opera

Per quello che hai citato servono poche righe di programma

Collettore solare 2 sonde? Parte alta e parte bassa?

Concordo con il ragionamento.
La seconda sonda(S2) ci serve per un secondo campo solare. Mi spiego: mi capita, non di rado, che ci siano 2 campi solari, vuoi perchè la superficie del tetto non permette di posizionanarli sulla stessa falda, vuoi perchè scaldano la piscina.
Quindi le sonde in più e la pompa devono gestire un ulteriore collettore.
Ora inizierei le "finezze" di funzionamento. Ora spiego perchè serve la modulazione sulla pompa.
Quando il famoso differenziale termico dice che la pompa deve partire, questa dovrebbe partire sì ma al minimo e per un tot di tempo, poi fermarsi per un tot di tempo, ripartire e fermarsi di nuovo. Questo serve a 2 cose: 1 evitare di innescare il ciclo contrario, 2 dare tempo al pannello di salire di temperatura, soprattutto nei mesi più freddi. Il ciclo contrario può capitare in particolari casi ma è già capitato! E lì per lì non te ne accorgi.
Dopodichè più la temperatura del collettore si alza più la pompa deve spingere.
Occorre pure dare un set point di massima alla S3, cioè ipotizziamo che il nostro puffer ha come impostazione sanitaria 50°C, noi dobbiamo arrivare almeno a 55°C. Poi se il sole spinge dovremmo impostare un altro set point, sempre su S3, a 70°C. Qui usiamo un'altra "malizia". Monitorando tanti impianti, ho notato che questa condizione si presenta prevalentemente d'estate, quindi avere l'accumulo a 70°C, in teoria, sarei a posto per la giornata. Ora si pone un problema più ostico: evitare la ristagnazione del pannello. La maggioranza delle centraline sposta il set point a 90°C e continua a far lavorare il pannello a manetta. Io vorrei adottare un'altra tecnica: ridurre al minimo la pompa e lasciare che il collettore arrivi a 100°C, dopodichè aumentare la velocità per abbassarlo a 95°C, poi di nuovo al minimo. Questo è il programma per il 99% dei puffer in commercio. Esiste un 1% che sono particolarissimi e sono a stratificazione totale, ma sono un altro mondo. Con quest'ultima tipologia serve un'altra logica.

Oltre a Standardoil e Guglielmo, c'è nessuno che vuole partecipare o dire la propria?

quindi una sonda per ogni pannello

ma anche una pompa?

mi sa di sì, dato che altrimenti il pannello "freddo" raffredderebbe....

e tutti e due alimentano lo stesso accumulo?

in realtà poco importa, si tratta di poterlo lasciare configurabile

non capisco la gestione on-off-minimo delle pompe, ma tant'è, la prendo per buona

capisco ancora meno la storia del pannello che arriva a 100° in estate ma teniamo la pompa ferma...

secondo me basta tenere in circolo il fluido primario, che ci pensa la valvola antiscottatura a evitare danni

comunque tu scrivi le specifiche che alla parte SW ci penso io

quindi ogni pannello avrà una sonda e una pompa, e dovrà confrontarsi con la sonda di uno degli accumuli...

ma l'integrazione nelle mezze stagioni come la prevedi?

Ti ringrazio per le domande Standardoil!
Ho spiegato a grandi linee la logica senza entrare nel dettaglio, altrimenti non finivo più! Poi considera che con le chiavi me la cavo, ma digitare sulla tastiera è un altro paio di maniche! :roll_eyes: ;D

Standardoil:
quindi una sonda per ogni pannello

ma anche una pompa?

mi sa di sì, dato che altrimenti il pannello "freddo" raffredderebbe....

e tutti e due alimentano lo stesso accumulo?

in realtà poco importa, si tratta di poterlo lasciare configurabile

Hai capito al volo, ma pensavo di procedere con le varie configuarazioni d'impianto dopo aver fatto il programma"classico". Ma se viene un problema posso esporre le varie logiche.

Standardoil:
non capisco la gestione on-off-minimo delle pompe, ma tant'è, la prendo per buona

Il discorso on- minimo-off iniziale serve, soprattutto dove ho tubazioni molto lunghe. Se la pompa parte a manetta, tutto il glicole freddo della tubazione finisce nel puffer come una marea, la conseguenza è raffreddo il puffer invece di scaldarlo. Io voglio dare tempo alla tubazione di scaldarsi senza abbassarmi di colpo la temperatura del puffer.

Standardoil:
capisco ancora meno la storia del pannello che arriva a 100° in estate ma teniamo la pompa ferma...

secondo me basta tenere in circolo il fluido primario, che ci pensa la valvola antiscottatura a evitare danni

Hai ragione sulla valvola antiscottatura, e, non è detto che la mia logica ti ripari dall'ebollizione del glicole, perchè se il campo solare è sovvradimensionato rispetto allo stoccaggio, la cottura dei pannelli è garantita lo stesso! La mia logica tti ripara nelle ore più calde, cerco di far dissipare più calore possibile al pannello stesso e mantenere sempre un margine di accumulo nel puffer, tutto qui.

Per l'integrazione scrivo a parte perchè viene un discorso lungo. Come avrai capito, sono contrario ad utilizzareil solare termico per la mera produzione di acs. Io prediligo i sistemi che gestico io dove va la produzione solare, Quindi un puffer di acqua tecnica, scaldata da, oltre il solare, qualsiasi cosa: caldaia a gas, pdc, caldaia a biomassa, resistenza elettrica, teleriscaldamento ecc., ecc.

Qui inizia il bello! Quello che voglio fare, è rendere "intelligente" il sistema. Per me non ha senso far partire una caldaia se il solare, dimensionato bene, è a 70°C alle 10 di mattino. Concordi?

ma certo, ma le caldaie moderne hanno l'esclusione per questo

e quindi non servirebbe nemmeno la valvola a 5 vie...

in pratica tu lasci la caldaia istantanea sempre accesa, ma se il boiler è caldo la caldaia ACS è automaticamente esclusa

altrimenti puoi farla escludere da arduino

Esatto! Ti dirò di più: Tutte le caldaie che conosco (ma potrei sbagliarmi... Non le conosco proprio tutte!), cosa fanno quando dal puffer arriva la "chiamata" per la produzione di acs? Sparano per 3-4 minuti a manetta per riportare il set point. Se questo lo fà alle 5 di mattino, può avere un senso, ma alle 10 di mattino con il solare che spinge no. Quindi entra in gioco anche l'orario e l'andamento del pannello stesso. Se deve partire lo fai, ma come ti dico io e non come faresti tu!
Per questo avevo scritto che per la caldaia devo avere 2 uscite per comandare velocità della pompa e gestione della temperatura. :wink:

io ho appena buttato giù questo

mancano ancora le pompe in PWM
la lettura reale delle sonde (me è una banalità)

e la lettura della configurazione da scheda SD, che invece sarà il problema di domani

// di Nelson-StandardOil
// IDE 1.9 Beta, solo per prova
// Progetto: Lakeview Gusher Number One
// California 1910, 1'230'000 tonnellate di greggio
// Scopo: gestione di pannelli solari termici per ACS e Piscine
// Data inizio lavori: 13/1/21


#define PROGETTO "Lakeview Gusher Number One"
#define VERSIONE "0.0 Aringa Ambigua"







// tutte le temperature sono in decimi di grado, per ridurre occupazione di memoria
typedef struct pannello_s
{
   uint8_t sonda; // pin della sonda

   uint8_t pompa; // pin della pompa
   uint8_t accumulo; // numero ordinale dell'accumulo per il quale lavora
   int temperatura; // temperatura misurata, in decimi di grado

} Pannello;

typedef struct accumulo_s
{
   uint8_t sonda; // pin della sonda

   int minimo; // minima temperatura accettabile per il servizio
   int massimo; // massima temperatura accettabile per il servizio (caso piscina)
   byte servizio; // pin che se alto segnala l'accumulo come pronto per il servizio e eventualmente esclude la caldaia
   byte allarme; //pin di allarme per sovratemperatura

   int temperatura; // temperatura interna


} Accumulo;

/*
   // l'array (allocato dinamicamente) dei pannelli
   Pannello * pannelli;

   // l'array (allocato dinamicamente) degli accumuli
   Accumulo * accumuli;


   // per il momento uso array statici
*/

// formato: {sonda, pompa, accumulo servito}
Pannello pannelli[] = {{2, 3, 0}, {4, 5, 0}, {6, 7, 1}}; // tre pannelli, sonde in 2,4,6, pompe in 3,5,7
uint8_t nupannelli = sizeof pannelli / sizeof pannelli[0]; // il numero di pannelli disponibili



// formato: {sonda, minimo, massimo, allarme}
Accumulo accumuli[] = {{8, 500, 950, 10}, {9, 250, 280, 11}};
byte nuaccumuli = sizeof accumuli / sizeof accumuli[0]; // il numero di accumuli attivi

void setup(void)
{
   // avvio la seriale
   Serial.begin(9600);
   Serial.println("Progetto:");
   Serial.println(PROGETTO);
   Serial.println(VERSIONE);
   Serial.println("Filename:");
   Serial.println(__FILE__);
   Serial.println("Programma gestione impianti solari");

   // inizializzo i varii pin
   // prima tutti i pannelli
   for (byte i = 0; i < nupannelli; i++)
   {
      pinMode(pannelli[i].sonda, INPUT);
      pinMode(pannelli[i].pompa, OUTPUT);
   }

   // poi tutti gli accumuli
   for (byte i = 0; i < nuaccumuli; i++)
   {
      pinMode(accumuli[i].sonda, INPUT);
      pinMode(accumuli[i].servizio, OUTPUT);
      pinMode(accumuli[i].allarme, OUTPUT);
   }
}



void loop(void)
{
   // leggo le temperature
   // prima tutti i pannelli
   for (byte i = 0; i < nupannelli; i++)
   {
      pannelli[i].temperatura = leggisonda(pannelli[i].sonda);
   }

   // poi tutti gli accumuli

   for (byte i = 0; i < nuaccumuli; i++)
   {
      accumuli[i].temperatura = leggisonda(accumuli[i].sonda);
   }

   // controllo servizio e allarme

   for (byte i = 0; i < nuaccumuli; i++)
   {
      digitalWrite(accumuli[i].servizio, (accumuli[i].temperatura > accumuli[i].minimo));
      digitalWrite(accumuli[i].allarme, (accumuli[i].temperatura > accumuli[i].massimo));
   }

   // adesso attivo la pompa
   for (byte i = 0; i < nupannelli; i++)
   {
      digitalWrite(pannelli[i].pompa, (pannelli[i].temperatura > accumuli[pannelli[i].accumulo].temperatura));
      //accumuli[i].temperatura = leggisonda(accumuli[i].sonda);
   }
}



int leggisonda(byte sonda)
// legge la sonda in argomento e ne restituisce la temperatura letta
{
   return 0;
   // per il momento faccio solo finta
}

Grande!!!! Come ho scritto nel primo messaggio, sono moltoooo ignorante in programmazione ed elettronica, ma ho a disposizione il materiale per gestire il prototipo.
Ho a disposizione un pannelli solari dismessi, puffer di recupero, ecc.
Chiedo ai moderatori se è possibile creare l'impianto a basso voltaggio e postare i dati.