Se sei già registrato           oppure    

Orario: 28/04/2024 10:24:08  

 

Energia Alternativa ed Energia Fai Da Te > Arduino

VISUALIZZA L'ALBUM

Pagine: (10)   1   2   3   4   5   6   7   8   9   [10]    (Ultimo Msg)


Controllo termocamino
FinePagina

dani9191

Avatar
GigaWatt


Gruppo:Utente
Messaggi:780

Stato:



Inviato il: 23/09/2017 18:44:17

Il calcolo che faccio è giusto? Sapendo che il diodo assorbe 20ma e una tensione di 1.2volt e io sul pin di arduino ho 5volt,
5-1.2=3.8volt
3.8/0.02=190ohm.
è giusto?
Io ho usato una da 330ohm quindi non riesco a capire come si sono bruciati visto che non dovrebbe essere un problema di sovratensione



---------------
Non è impossibile se è fattibile!

 

Vincent
GigaWatt


Gruppo:Utente
Messaggi:1902

Stato:



Inviato il: 23/09/2017 20:16:20

Ciao dani dal disegno precedente sembrano fotoaccoppiatori per isolamento e giusto?
Non mi va di sparare sentenze senza conoscere la teoria del circuito

Comunque come li alimenti ?
E a che tensione massima possono lavorare?
dove colleghi arduino?



---------------
SuperSolar
http://forum.saturnoprezzi.com/

 

dani9191

Avatar
GigaWatt


Gruppo:Utente
Messaggi:780

Stato:



Inviato il: 23/09/2017 20:49:19

Ciao Vincent, esatto è un fotoaccoppiatore. I pin digitali di arduino sono collegati alla resistenza da 330 ohm.il diodo è alimentato appunto dal pin di arduino e il lato del transistor con 5 volt forniti dal convertitore. Mentre il rele lo alimento a 10v. La tensione tipica dice 1.2v e massima 1.4volt.si e bruciato prima quello dove cera piu carico,collegata la candeletta di accensione e dopo un po anche gli altri due. La cosa strana e che tutto ieri sera andava tutto bene,poi questa mattina ho fatto qualche altro test e sono andati.



Modificato da dani9191 - 23/09/2017, 21:14:51


---------------
Non è impossibile se è fattibile!

 

Vincent
GigaWatt


Gruppo:Utente
Messaggi:1902

Stato:



Inviato il: 24/09/2017 15:10:26

Hai calcolato la corrente massima che regge dalla parte utility?

Arduino lo alimenti a 5 volt

Quindi lato fotoaccoppiatore lo devi alimentare con un altra sorgente mi sembra e la tensione di 10 volt la devi prendere da quel ramo x intenderci

Riassumo il led/diodo lo alimenti con arduino
Il micro e il rele con un altro trasformatore



---------------
SuperSolar
http://forum.saturnoprezzi.com/

 

Vincent
GigaWatt


Gruppo:Utente
Messaggi:1902

Stato:



Inviato il: 24/09/2017 15:13:49

Se ho capito bene devi usare una resistenza sui 10 volt per alimentare i fotoaccopiatori altrimenti mi sembra normale che non vadano bene
La loro alimentazione non deve venire da arduino o precedente solo il diodo puoi accedendere con arduino proprio perche opto isolato



---------------
SuperSolar
http://forum.saturnoprezzi.com/

 

dani9191

Avatar
GigaWatt


Gruppo:Utente
Messaggi:780

Stato:



Inviato il: 24/09/2017 16:26:28

Ho risolto diversamente, ho eliminato i optoisolatori, Sembra funzionare di nuovo. Forze cosi pero e piu a rischio arduino? Vediamo come.si comporta,se mi da ancora problemi,mi tocca comprare una scheda pronta tipo quella della micronova, anche se non mi convince tanto lestetica del display che poi sarà da mettere a muro



---------------
Non è impossibile se è fattibile!

 

Vincent
GigaWatt


Gruppo:Utente
Messaggi:1902

Stato:



Inviato il: 24/09/2017 17:09:18

Se vuoi farlo con arduino usa i relè sono optoisolati



---------------
SuperSolar
http://forum.saturnoprezzi.com/

 

dani9191

Avatar
GigaWatt


Gruppo:Utente
Messaggi:780

Stato:



Inviato il: 27/09/2017 15:01:39

Se serve a qualcuno allego l'ultima versione testata e funzionante,ho aggiunto anche la selezione legna/pellet

#include "DHT.h"                 // DHT & AM2302 library
#include "Nextion.h"             //librearia nextion
#include <SoftwareSerial.h>      //libreria seriale
#include <OneWire.h>             //libreria per ds18b20
#include <DallasTemperature.h>   //libreria per conversione valore
#include "max6675.h"
#include <math.h>
////////////////////////////////////////////////////////////////////////////////////////
int ktcSO = 47;                  //sonda fumi max6675
int ktcCS = 49;
int ktcCLK = 45;
MAX6675 ktcF(ktcCLK, ktcCS, ktcSO);
/////////////////////////////////////////////////////////////////////////////////////////
#define ONE_WIRE_BUS_1 12          // Il terminale data del sensore H2O TERMO è connesso alla porta 12 di Arduino
#define ONE_WIRE_BUS_2 3          // Il terminale data del sensore H2O PUFFER è connesso alla porta 12 di Arduino
#define DHTTYPE DHT22            // DHT 22  (AM2302)
#define aspiratore 4             //imposto il pin 4 per l'aspiratore
#define coclea 5                 //imposto il pin 5 per la coclea
#define circolatore 6            //imposto il pin 6 per il circolatore
#define ventola 7               //imposto il pin 8 per  LA ventola
#define accenditore 8            //imposto il pin 7 per l'accenditore
#define depressostato 21          //imposto il pin 21 per l'ingresso del pressostato
#define termostato 20            //imposto il pin 20 per l'ingresso del termostato
#define pressostato 19            //imposto il pin 19 per l'ingresso del pressostato
#define DHTPIN 9


/////////////////////////////////////////////////////////////////////////////////////////
OneWire oneWire_in(ONE_WIRE_BUS_1);
OneWire oneWire_out(ONE_WIRE_BUS_2);

DallasTemperature sensor_inhouse(&oneWire_in);
DallasTemperature sensor_outhouse(&oneWire_out);
////////////////////////////////////////////////////////////////////////////////////////
DHT dht(DHTPIN, DHTTYPE); 
int val;
int txh2o;                      //temperatura di soglia termocamino
int Th2oMax;                     //temperatura di soglia + 6 si massima
int Tfumi;                      //temperatura rilevata fumi
int Tfumi2;                      //temperatura rilevata fumi
int umidita;                    //umidità rilevata
int tempamb;                    //temperatura rilevata ambiente
int temph2o;                    //temperatura acqua rilevata
int tempPuffer;                 //temperatura rilevata puffer
int allTempFumi=180;            //allarme temperatura fumi
int percentuale;                //percentuale aspiratore
int pwmfumi;                    //variabile per l'aspiratore
int Vcoclea=LOW;                //variabile velocita coclea
int Vstato=0;                   //lettura stato interrutore ON/OFF
int TcocleaOn;                  //variabile per mandata pellet ON MODALITA AUTOMATICA
int TcocleaOff;                 //variabile per mandata pellet Off MODALITA AUTOMATICA
int TcocleaOnM=500;             //variabile per mandata pellet ON MODALITA MANUALE
int TcocleaOffM=500;            //variabile per mandata pellet Off MODALITA MANUALE
int valCoclea=1;                //variabile per capire se in stato di accensione
int TempOk=1;                   //variabile per conoscere lo stato dell'acqua
int spento;
int Tsens=2000;
int depres=HIGH;                //consenso depressostato
int termost=HIGH;           //allarme temperatura
int presso=HIGH;           //allarme manca pressione
int na=1;                       //per capire se la fiamma è presente
int pellet=1;                   //per capire se è finito il pellet
int modalita=0;                 //selezione legna/pellet
unsigned long OldStartSensori= 0;
unsigned long OldStartCoclea = 0;
unsigned long OldStartAccenditore = 0;
unsigned long OldStartAccensione = 0; //per capire se la fiamma è presente
unsigned long sensori=0;
boolean AUTO=true;                     //stato di controllo automatico/manuale tempo della coclea
boolean PrimoCicloON = true;
boolean CocleaCicloON =true ;
boolean PrimaAccensione =true ;        //per capire se la fiamma è presente
boolean Spellet =false ;                //per capire se la fiamma è presente
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void t8PopCallback(void *ptr);   //ambiente page home 0  
void t25PopCallback(void *ptr);   //STATO ON/OFF CANDELETTA
void t26PopCallback(void *ptr);   //STATO ON/OFF VENTOLA
void t27PopCallback(void *ptr);   //STATO ON/OFF POMPA
void t28PopCallback(void *ptr);   //STATO ON/OFF COCLEA
void t29PopCallback(void *ptr);   //STATO ON/OFF ASPIRATORE
void n0PopCallback(void *ptr);   //ambiente page home 0
void n1PopCallback(void *ptr);   //fumi page home 0
void n4PopCallback(void *ptr);   //fumi page home 0
void n2PopCallback(void *ptr);   //T.CAMERA COMBUSTIONE page home 0
void n3PopCallback(void *ptr);   //acqua page home 0
void n5PopCallback(void *ptr);   //UMIDITA page home 0
void n6PopCallback(void *ptr);   //TEMPERATURA RILEVATA PUFFER
void n12PopCallback(void *ptr);   //VISUALIZZO STATO MILLIS
void n13PopCallback(void *ptr);   //VISUALIZZO TEMPO IMPOSTATO TCOCLEA_ON
void n14PopCallback(void *ptr);   //VISUALIZZO TEMPO IMPOSTATO TCOCLEA_OFF
void n30PopCallback(void *ptr);  //bagno page bagno 2
void b31PopCallback(void *ptr);  //bagno - page bagno 2
void b0PopCallback(void *ptr);  //INTERRUTTORE ON/OFF
void b1PopCallback(void *ptr);  //INTERRUTTORE  SELEZIONE LEGNA/PELLET
void b32PopCallback(void *ptr);  //bagno + page bagno 2
void b10PopCallback(void *ptr);  //DIMINUISCO TcocleaON
void b11PopCallback(void *ptr);  //AUMENTO TcocleaON
void b12PopCallback(void *ptr);  //DIMINUISCO TcocleaOFF
void b13PopCallback(void *ptr);  //AUMENTO TcocleaOFF
void b14PopCallback(void *ptr);  //AUTO/MANU SERVE PER FAR IMPOSTARE IL TCOCLEA IN MANUALE

////////////////////////////////////////////////////////////////////////////////////////////

NexNumber n0 = NexNumber(0, 1, "n0"); // ambiente
NexNumber n1 = NexNumber(0, 5, "n1"); // fumi
NexNumber n2 = NexNumber(0, 20, "n2"); // T.CAMERA COMBUSTIONE
NexNumber n3 = NexNumber(0, 3, "n3"); //acqua temp rilevata
NexNumber n4 = NexNumber(0, 8, "n4"); //aspiratore
NexNumber n5 = NexNumber(0, 11, "n5");//UMIDITA
NexNumber n6 = NexNumber(0, 13, "n6");//H2O PUFFER
NexNumber n30 = NexNumber(1, 3, "n30");//acqua temp impostata
NexButton b0 = NexButton(0, 19, "b0");//INTERRUTTORE ON/OFF
NexButton b31 = NexButton(1, 1, "b31");//set acqua
NexButton b32 = NexButton(1, 2, "b32");//set acqua
NexText t8 = NexText(0, 11, "t8"); 
NexText t25 = NexText(2, 6, "t25");//CANDELETTA ON/OFF
NexText t26 = NexText(2, 7, "t26");//VENTOLA ON/OFF
NexText t27 = NexText(2, 8, "t27");//POMPA ON/OFF
NexText t28 = NexText(2, 9, "t28");//COCLEA ON/OFF
NexText t29 = NexText(2, 10, "t29");//aspiratore ON/OFF
NexNumber n12 = NexNumber(2, 17, "n12"); // MILLIS
NexNumber n13 = NexNumber(2, 19, "n13"); // TEMPO COCLEA ON
NexNumber n14 = NexNumber(2, 21, "n14"); // TEMPO COCLEA OFF
NexButton b1 = NexButton(0, 21, "b1");//INTERRUTTORE SELEZIONE PELLET/LEGNA
NexButton b10 = NexButton(2, 12, "b10");//PULSANTE DIMINUISCO TEMPO TCOCLEA_ON
NexButton b11 = NexButton(2, 13, "b11");//PULSANTE AUMENTO TEMPO TCOCLEA_ON
NexButton b12 = NexButton(2, 14, "b12");//PULSANTE DIMINUISCO TEMPO TCOCLEA_OFF
NexButton b13 = NexButton(2, 15, "b13");//PULSANTE AUMENTO TEMPO TCOCLEA_OFF
NexButton b14 = NexButton(2, 23, "b14");//AUTO/MANU SERVE PER FAR IMPOSTARE IL TCOCLEA IN MANUALE
char buffer[100] = {0};
/////////////////////////////////////////////////////////////////////////////////////////
NexTouch *nex_listen_list[] = 
{   &b0,
    &b1,
    &t8,
    &t25,
    &t26,
    &t27,
    &t28,
    &t29,
    &n0,
    &n1,
    &n2,
    &n3,
    &n4,
    &n5,
    &n6,
    &n12,
    &n13,
    &n14,
    &n30,
    &b10,
    &b11,
    &b12,
    &b13,
    &b14,
    &b31,
    &b32,
    NULL
};
//////////////////////////////////////////////////////////////////////////////////////////////////
void t8PopCallback(void *ptr)
{
   
}

void t25PopCallback(void *ptr)
{
   
}
void t26PopCallback(void *ptr)
{
   
}
void t27PopCallback(void *ptr)
{
   
}
void t28PopCallback(void *ptr)
{
   
}
void t29PopCallback(void *ptr)
{
   
}
 void n0PopCallback(void *ptr)
{
    
}
void n1PopCallback(void *ptr)
{
    
}
void n2PopCallback(void *ptr)
{
    
}
 void n3PopCallback(void *ptr)
{
   
}
void n4PopCallback(void *ptr)
{
    
}
void n5PopCallback(void *ptr)
{
    
}
void n6PopCallback(void *ptr)
{
    
}
void n12PopCallback(void *ptr)
{
    
}
void n13PopCallback(void *ptr)
{
    
}
void n14PopCallback(void *ptr)
{
    
}
 void n30PopCallback(void *ptr)
{
  
}
void b0PopCallback(void *ptr)      //accendo/spengo il sistema
{
    dbSerial.flush();
    if(Vstato==0){
    Vstato=1;
    b0.setText("ON");
    }
    else{
    Vstato=0; 
    b0.setText("OFF");  
}

}

void b1PopCallback(void *ptr)      //SELEZIONO LEGNA/PELLET
{
    dbSerial.flush();
    if(modalita==0){
      modalita=1;
      b1.setText("LEGNA");
    }else{
      modalita=0;
      b1.setText("PELLET");
    }
    delay(500); 

}

void b10PopCallback(void *ptr)      //diminuisco tcocleaon
{
    dbSerial.flush();
    TcocleaOnM -= 500;
    n13.setValue(TcocleaOnM);
    delay(500); 

}

void b11PopCallback(void *ptr)      //aumento tcocleaoff
{
    dbSerial.flush();
    TcocleaOnM += 500;
    n13.setValue(TcocleaOnM);
    delay(500); 

}

void b12PopCallback(void *ptr)      //diminuisco tcocleaoff
{
    dbSerial.flush();
    TcocleaOffM -= 500;
    n14.setValue(TcocleaOffM);
    delay(500); 

}

void b13PopCallback(void *ptr)      //aumento tcocleaoff
{
    dbSerial.flush();
    TcocleaOffM += 500;
    n14.setValue(TcocleaOffM);
    delay(500); 

}

void b14PopCallback(void *ptr)      //h2o termocamino
{
    dbSerial.flush();
    if(AUTO==false){
    AUTO=true;
    b14.setText("AUTOMATICO");
    }
    else{
    AUTO=false; 
    b14.setText("MANUALE");
}   
}

void b31PopCallback(void *ptr)      //h2o termocamino
{
    dbSerial.flush();
    txh2o -= 1;
    n30.setValue(txh2o);
    delay(500);   
}
void b32PopCallback(void *ptr)     //h2o termocamino
{ 
    dbSerial.flush();
    txh2o += 1;
    n30.setValue(txh2o);
    delay(500);      
}
//////////////////////////////////////////////////
double Thermister(int RawADC) {  
double Temp;
Temp = log(((10240000/RawADC) - 10000));
Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );
Temp = Temp - 273.15;// Converierte de Kelvin a Celsius
//Para convertir Celsius a Farenheith esriba en esta linea: Temp = (Temp * 9.0)/ 5.0 + 32.0; 
return Temp;
} 
///////////////////////////////////////////////////

void setup(void)
{
    
    
    dht.begin();
    sensor_inhouse.begin(); //AVVIO IL PRIMO DS18B20
    sensor_outhouse.begin(); //AVVIO IL SECONDO DS18B20
    txh2o=65;                               //temperatura di soglia acqua termocamino
    spento=1;
    na=1;
    pellet=1;
    ///////////////////////////////////
    nexInit();
    t8.attachPop(t8PopCallback);
    t25.attachPop(t25PopCallback);
    t26.attachPop(t26PopCallback);
    t27.attachPop(t27PopCallback);
    t28.attachPop(t28PopCallback);
    t29.attachPop(t29PopCallback);
    n0.attachPop(n0PopCallback);   
    n1.attachPop(n1PopCallback);
    n2.attachPop(n2PopCallback); 
    n3.attachPop(n3PopCallback); 
    n4.attachPop(n4PopCallback);
    n5.attachPop(n5PopCallback);
    n6.attachPop(n6PopCallback);
    n12.attachPop(n12PopCallback);
    n13.attachPop(n13PopCallback);
    n14.attachPop(n14PopCallback);
    n30.attachPop(n30PopCallback);
    b0.attachPop(b0PopCallback);
    b1.attachPop(b1PopCallback);
    b10.attachPop(b10PopCallback);
    b11.attachPop(b11PopCallback);
    b12.attachPop(b12PopCallback);
    b13.attachPop(b13PopCallback);
    b14.attachPop(b14PopCallback);
    b31.attachPop(b31PopCallback);
    b32.attachPop(b32PopCallback);
   /////////////////////////////////  
    pinMode(aspiratore,OUTPUT);
    pinMode(coclea,OUTPUT);
    pinMode(circolatore,OUTPUT);
    pinMode(ventola,OUTPUT);
    pinMode(depressostato,INPUT);
    pinMode(termostato,INPUT);
    pinMode(pressostato,INPUT);
    pinMode(accenditore,OUTPUT);
 
    delay(1000);
}

void loop(void){
  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    
  if(Spellet){
    if(Tfumi<50){
      pellet=0;
      t8.setText("MANCA PELLET");
    }else{
      pellet=1;
  }}
  ///////////////////////////////////////////
  nexLoop(nex_listen_list);
  
  depres=digitalRead(depressostato);
  termost=digitalRead(termostato);
  presso=digitalRead(pressostato);
  val=analogRead(0);
  ////////////////////////////////////////////
  if(sensori > millis()){  // se millis si resetta (dopo circa 50 gg)
     sensori = millis();
     OldStartSensori=sensori;
     }
  
  ////////////////////////////////////////////////////////////////////////////////////////////////////
  
  if(temph2o>40){
    digitalWrite(circolatore,HIGH);
    t27.setText("ON");
  }else if(temph2o<=40-2){
    digitalWrite(circolatore,LOW);
    t27.setText("OFF");
  }
    
  
 ///////////////////////////////////////////////////////////////////////////////////////////////////// 
 if(Tfumi>50){
   digitalWrite(ventola,HIGH);
   t26.setText("ON");
 }
 else if(Tfumi<=45){
   digitalWrite(ventola,LOW);
   t26.setText("OFF");
 }
 /////////////////////////////////////////////////////////////////////////////////////////////////////
 
  if((Vstato==1)&&(TempOk==1)&&(depres==HIGH)&&(na==1)&&(termost==HIGH)&&(presso==HIGH)&&(pellet==1)){
    b0.setText("ON");
    spento=1;
   //////////////////////////////////
   if(temph2o<90){
    if(Tfumi<allTempFumi){    // verifica se le condizioni sono vere procedo con:
     
   //////////////////////////////////   
      t28.setText("ON");
      t29.setText("ON");
   //////////////////////////////////   
     if(modalita==0){ 
      b1.setText("PELLET");
      accensione();
      cocleaPrimoCiclo();
     }else{
      b1.setText("LEGNA");
     }
   //////////////////////////////////    
      sensori=millis();
     if(sensori-OldStartSensori>2000){
      OldStartSensori=sensori;
   //////////////////////////////////   
      cocleaPrimoCiclo(); 
      nexLoop(nex_listen_list);
      Tfumi2=ktcF.readCelsius();
      cocleaPrimoCiclo(); 
      nexLoop(nex_listen_list);  
      umidita = dht.readHumidity();           //leggo umidita ambiente
      nexLoop(nex_listen_list);
      cocleaPrimoCiclo(); 
      nexLoop(nex_listen_list);
      tempamb = dht.readTemperature();        //leggo temperatura ambiente
      cocleaPrimoCiclo(); 
      nexLoop(nex_listen_list);
      sensor_inhouse.requestTemperatures(); //AVVIO LETTURA TEMPERATURA DAL PRIMO SENSORE
      cocleaPrimoCiclo();
      nexLoop(nex_listen_list);
      sensor_outhouse.requestTemperatures(); //AVVIO LETTURA TEMPERATURA DAL SECONDO SENSORE
      cocleaPrimoCiclo();
      nexLoop(nex_listen_list);
      temph2o =sensor_inhouse.getTempCByIndex(0);    //leggo il sensore dell'acqua del termocamino
      cocleaPrimoCiclo();
      nexLoop(nex_listen_list);
      tempPuffer=sensor_outhouse.getTempCByIndex(0); 
      cocleaPrimoCiclo();
      nexLoop(nex_listen_list);
      Tfumi=Thermister(val); 
     }   
      
      
      
     ////////////////////////////////////////////////////////////////////
   
      if (temph2o<txh2o){ 
         t8.setText("LAVORO"); 
         TcocleaOn=18000;
         TcocleaOff=19000;
      }
     else if(temph2o>txh2o+6){
         TcocleaOn=2000;
         TcocleaOff=10000;
         t8.setText("RIPOSO");
      }
    else  if(temph2o>txh2o+15){
         TempOk=0;
         t8.setText("STANDBY TEMP");
      }
      
   else{  
         TcocleaOn=10000;
         TcocleaOff=15000;
         t8.setText("LAVORO MODULA");
      }   
   ////////////////////////////////////////////////////////////////////
        if(valCoclea==1){
         pwmfumi=255;
        }else{ 
         pwmfumi=100;
        }
         percentuale = map(pwmfumi,0,255,0, 100);
         analogWrite(aspiratore,pwmfumi);

   ////////////////////////////////////////////////////////////////////
   }else{
       t8.setText("ALLARME TEMP FUMI");
       digitalWrite(aspiratore,LOW);
       digitalWrite(circolatore,HIGH);
       digitalWrite(ventola,HIGH);
       digitalWrite(accenditore,LOW);
       digitalWrite(coclea,LOW);
       percentuale =0;
       
     }
   }
  else{
      t8.setText("ALLARME TEMP H2O");
      digitalWrite(aspiratore,LOW);
      digitalWrite(circolatore,HIGH);
      digitalWrite(accenditore,LOW);
      digitalWrite(coclea,LOW);
      percentuale =0;
  }
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
 else if((Vstato==0) || (TempOk==0)|| (depres==LOW)||(na==0)||(termost==LOW)||(presso==LOW)||(pellet==0)){
        Spellet=false;
         b0.setText("OFF");
         /////////////////////////
         if(depres==LOW){
          t8.setText("MANCA DEPRESSIONE");
         }
         ////////////////////////
         if(presso==LOW){
          t8.setText("MANCA PRESSIONE");
         }
         /////////////////////////
    if(termost==LOW){
       t8.setText("ALLARME TEMPERATURA");
       digitalWrite(aspiratore,LOW);
       digitalWrite(coclea,LOW);
       digitalWrite(accenditore,LOW);
    }else{
        ///////////////////////
      if(Tfumi<40){
        spento=0;
        
        t8.setText("SPENTO");
        t28.setText("OFF");
        t29.setText("OFF");
        digitalWrite(aspiratore,LOW);
        digitalWrite(accenditore,LOW);
        digitalWrite(coclea,LOW);
        PrimoCicloON = true;
        CocleaCicloON = true;
        PrimaAccensione = true;
        TempOk=1;
        percentuale=0;
     }
   else{
       if(spento==1){
       t8.setText("SPEGNIMENTO");
       digitalWrite(accenditore,LOW);
       digitalWrite(coclea,LOW);
       analogWrite(aspiratore,255);
       percentuale=100;
       }
     }
      sensori=millis();
     if(sensori-OldStartSensori>2000){
      OldStartSensori=sensori;
      
      nexLoop(nex_listen_list);

      Tfumi2=ktcF.readCelsius(); 
      nexLoop(nex_listen_list);  
      umidita = dht.readHumidity();           //leggo umidita ambiente
      nexLoop(nex_listen_list);
      tempamb = dht.readTemperature();        //leggo temperatura ambiente
      nexLoop(nex_listen_list);
      sensor_inhouse.requestTemperatures(); //AVVIO LETTURA TEMPERATURA DAL PRIMO SENSORE
      nexLoop(nex_listen_list);
      sensor_outhouse.requestTemperatures(); //AVVIO LETTURA TEMPERATURA DAL SECONDO SENSO
      nexLoop(nex_listen_list);
      temph2o =sensor_inhouse.getTempCByIndex(0);    //leggo il sensore dell'acqua del termocamino
      nexLoop(nex_listen_list);
      tempPuffer=sensor_outhouse.getTempCByIndex(0); 
      nexLoop(nex_listen_list);
      Tfumi=Thermister(val);
   }}}
  
      n0.setValue(tempamb);
      n5.setValue(umidita);
      n6.setValue(tempPuffer);
      n1.setValue(Tfumi);
      n4.setValue(percentuale);
      n3.setValue(temph2o);
      n30.setValue(txh2o);
      n13.setValue(TcocleaOnM);
      n14.setValue(TcocleaOffM);
      
      
      
       
      dbSerial.flush();//pulisci la seriale
      Th2oMax=txh2o+6;
      delay(1000);
      
     }
     
     
     
    
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
void cocleaPrimoCiclo(){
  
  if(OldStartCoclea>millis()) {
   OldStartCoclea=millis();
 }
 
  if(CocleaCicloON){ 
     OldStartCoclea = millis();   //Tiene in memoria l'ultima accensione 
     CocleaCicloON=false;
   }
   //////////////////////////////////////////////////////
   if(valCoclea==1){  //se il termo è in stato di accensione(PrimoCicloON)
   //////////////////////////////////////////////
   
   
    if(AUTO){ //SE è IN MODALITà AUTOMATICA
     if ((millis() - OldStartCoclea) < 5000 ){ 
         Vcoclea=HIGH;
        }else{                                             //MODALITA AUTOMATICO STATO IN ACCENSIONE
          Vcoclea=LOW;
        }
         if((millis() - OldStartCoclea) > 8000){
           CocleaCicloON=true;
         }
         b14.setText("AUTOMATICO");
         
    }else{///////////////////ALTRIMENTI SE è IN MODALITà MANUALE
     
     if ((millis() - OldStartCoclea) < TcocleaOnM ){ 
         Vcoclea=HIGH;
        }else{
         Vcoclea=LOW;                                      //MODALITA MANUALE STATO IN ACCENSIONE
        }
         if((millis() - OldStartCoclea) > TcocleaOffM){
          CocleaCicloON=true;
         }
         b14.setText("MANUALE");
    }
    ///////////////////////////////////////////////   
    
       }else{//ALTRIMENTI SE VALSTATO è UGUALE A 0
       
       
    if(AUTO){ //SE è IN MODALITà AUTOMATICA
     
        if((millis() - OldStartCoclea) < TcocleaOn ){ 
         Vcoclea=HIGH;
        }else{                                                 //MODALITA AUTOMATICA STATO LAVORO MODULA
         Vcoclea=LOW;
        }
        if((millis() - OldStartCoclea) > TcocleaOff){
         CocleaCicloON=true;
        }
        b14.setText("AUTOMATICO");
        
     
         /////////////////////////////////////////////
    }else{  //ALTRIMENTI SE è IN MODALITà MANUALE
          
        if((millis() - OldStartCoclea) < TcocleaOnM ){ 
         Vcoclea=HIGH;
        }else{                                               //MODALITA AUTOMATICA STATO LAVORO MODULA
         Vcoclea=LOW;
        }
        if((millis() - OldStartCoclea) > TcocleaOffM){
         CocleaCicloON=true;
         }
         b14.setText("MANUALE");
       
     }
         ///////////////////////////////////////////////
}    
     digitalWrite(coclea, Vcoclea);
     dbSerial.flush();
}


///////////////////////////////////////////////////////////////////////////////////////////////
void accensione(){
  
  if(OldStartAccenditore > millis()){  // se millis si resetta (dopo circa 50 gg)
    OldStartAccenditore = millis();
     }
      
   if(PrimoCicloON){                   // se è la prima volta che entro nello stato ON
       PrimoCicloON = false;
       OldStartAccenditore = millis();
       valCoclea=1; 
       na=1;
     }
     
   if((millis() - OldStartAccenditore) < 300000){    // se non sono trascorsi 3 minuti
     if(Tfumi<25){
       digitalWrite(accenditore, HIGH);
       t25.setText("ON");
      }else{
      digitalWrite(accenditore, LOW);
       t25.setText("OFF");
}}
 else{
        digitalWrite(accenditore, LOW);
        valCoclea=0;
        t25.setText("OFF");
      }
  ////////////////////////////////    
   if(OldStartAccensione > millis()){  // se millis si resetta (dopo circa 50 gg)
    OldStartAccensione = millis();
    } 
   
   if(PrimaAccensione){                   // se è la prima volta che entro nello stato ON
       PrimaAccensione = false;
       OldStartAccensione = millis(); 
     } 
     
   if((millis() - OldStartAccensione) > 600000){    // se non sono trascorsi 3 minuti
      if (Tfumi<40){
        na=0;
        t8.setText("MANCA FUOCO");
      }else{
        na=1;
        Spellet=true;
        pellet=1;
      }
     }}
////////////////////////////////////////////////////////////////////////////////////////////////////////


e questo è il firmware del display

Scarica allegato

NEXTION_PELLET_LEGNA.tft ( Numero download: 360 )



---------------
Non è impossibile se è fattibile!

 

dani9191

Avatar
GigaWatt


Gruppo:Utente
Messaggi:780

Stato:



Inviato il: 25/10/2017 20:03:30

Ciao ragazzi
Volevo capire un attino i limiti di arduino mega, avrei in mette di gestire anche termistati della casa e qualche altra cosa, facendo due calcoli al volo mi servono circa 15 ds18b20 per le tenperarure e un 15 rele. Eventualmente fin dove mi potrei spingere?



---------------
Non è impossibile se è fattibile!

 

eldrago69

Avatar
GigaWatt


Gruppo:Utente
Messaggi:944

Stato:



Inviato il: 13/11/2017 13:50:14

allora e finita questa centralina??? su che me ne serve una fatta bene



---------------
VOLERE E' POTERE

 

dani9191

Avatar
GigaWatt


Gruppo:Utente
Messaggi:780

Stato:



Inviato il: 13/11/2017 15:54:07

Si Eldrago ad oggi non mi ha dato nessun problema. Se torni indietro nella discussione c'e lo schema e il firmware e quello in questa pagina.
Ad ogni modo come spesato arriveresti ugualmente a una scheda commerciale (io avevo gia a disposizione i pezzi)senza contare tutto il lavoro di assemblaggio,per tanto ti consiglierei una scheda commerciale bella e pronta e dormiresti molto piu tranquillamente.
Poi è questione di gusti...



---------------
Non è impossibile se è fattibile!

 

eldrago69

Avatar
GigaWatt


Gruppo:Utente
Messaggi:944

Stato:



Inviato il: 14/11/2017 12:50:39

ho intenzione di prendermi questa


http://www.coelte.net/portfoliotype/450-top/



se hai un po di tempo guardati le istruzioni e fammi sapere se e' il caso di spendere 160 euro con sensore della tramogia compreso



---------------
VOLERE E' POTERE

 

dani9191

Avatar
GigaWatt


Gruppo:Utente
Messaggi:780

Stato:



Inviato il: 14/11/2017 13:25:48

Mi sembr una buona scheda. Ha anche il tasto per passare da pellet/legna quindi andrebbe benissimo per il tuo caso. La marca pero non la conosco.
Aspetterei comunque il parare di Bio, sicuramente ne sa piu di me



---------------
Non è impossibile se è fattibile!

 
 InizioPagina
 

Pagine: (10)   1   2   3   4   5   6   7   8   9   [10]    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum