Comandare una caldaia a pellet con Arduino

Buonasera a tutti

Sto cercando di scrivere un codice per comandare una caldaia a legna e pellet composta da quattro motori a 220 volt , di cui due per far girare le cocle e due per la ventilazione

Volevo sapere se qualcuno già usato una scheda relè in input al posto di un pulsante?

il relai viene gestito tramite un termostato con una sonda inserita all'interno di un pozzetto della caldaia per rilevare la temperatura dell'acqua interna

Quando il termostato chiude il contatto fa scattare il rellè che anche lui a sua volta al circuito chiuso è Arduino deve far partire il programma

Prova a mettere il codice sotto

int rele1 = 2; //Pin arduino 2 collegato a pn IN1 Rele
int rele2 = 3; //Pin arduino 3 collegato a pn IN2 Rele
const int termostatoPin = 7;

void setup() {
  pinMode(rele1, OUTPUT);  //Imposta il pin 2 (ora chiamato rele1) come uscita
  pinMode(rele2, OUTPUT);  //Imposta il pin 3 (ora chiamato rele2) come uscita
  digitalWrite(rele1, HIGH);  //Inizialmente disattiva il
  digitalWrite(rele2, HIGH);  //Inizialmente Disattiva il Rele (logica invertita)
  pinMode(termostatoPin, INPUT_PULLUP);  // INPUT_PULLUP significa: contatto chiuso → LOW
   // - contatto aperto → HIGH
  
  Serial.begin(9600);
}
void loop(){
  int stato = digitalRead(termostatoPin);

  if (stato == LOW) {
    // Contatto CHIUSO → esegue il programma
    Serial.println("Termostato attivo: avvio programma...");

    // ----- Qui dentro metti il tuo programma -----
    avviaProgramma();
  //attiva il primo rele
  digitalWrite(rele1, LOW); //Attiva rele
  delay(3000); //Rele acceso per 3 secondi
  digitalWrite(rele1, HIGH); //Disattiva rele
  delay(1500); //Rele spento per 1,5 secondi
  //attiva il secondo rele
  digitalWrite(rele1, LOW); //Attiva rele
  delay(3000); //Rele acceso per 3 secondi
  digitalWrite(rele1, HIGH); //Disattiva rele
  delay(1500); //Rele spento per 1,5 secondi
  }
  else {
    // Contatto APERTO → non fa nulla
    Serial.println("Contatto aperto: in attesa...");
  }

  delay(500); // per evitare saturazione della seriale
}

void avviaProgramma() {
  // Qui inserisci le istruzioni reali del tuo programma.
  // Esempio:
  Serial.println("Eseguo operazioni...");
  delay(2000);
}

:slight_smile: Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato.
Grazie.

A quanto detto da UKHeliBob aggiungo ...

... cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO della sezione Italiana del forum, (... e, per evitare future possibili discussioni/incomprensioni, prestando sempre molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE (... quello che vedi in blu è un link, fai click su di esso per raggiungere la discussione) spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. :wink:

P.P.S.: ribadisco, visto quello che chiedi, leggi attentamente il punto 15 del REGOLAMENTO e tutti i suoi sottopunti. Vedrai perché probabilmente dovrò chiudere la tua discussione.

P.P.P.S.: Evitate di utilizzare la traduzione automatica fatta dal browser ... vi impedisce di capire la lingua della sezione dove andate a scrivere ...