Pages: 1 ... 3 4 [5] 6   Go Down
Author Topic: incubatrice per uova  aiutoooo  (Read 5057 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Full Member
***
Karma: 0
Posts: 185
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@kokiua
quoto

@emanuele
ora che ci guardo, così com'è hai una risoluzione di circa 0,5°C (il che non aiuta). Intanto cambia inserendo nel setup()
Code:
analogReference(INTERNAL);
e modificando la conversione dell'ADC in °C come segue
Code:
tempC = (tempC * 110.0)/1024.0;  //convert the analog data to temperature
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 102
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si andava meglio perche era piu stabile e il led non impazziva..
ho inserito la correzione mi sbaglia di 1° ed il led arrivato a soglia lampeggia sempre
mi sa che era meglio che mi compravo un termostato cosi non vi scocciavo


Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 185
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

allora, un passetto alla volta. proviamo con le letture distanziate l'una dall'altra
Code:
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#define RIT_TEMP   (unsigned int)(0x00FF)  /*costante di ritardo lettura temperatura */
unsigned int    RitTemp;   /* variabile conteggio ritardo lettura temperatura */

float tempC;
float umiditaC;
float buffer_tempC[] = {0, 0, 0, 0, 0, 0 ,0, 0, 0, 0};
float tamporanea_media = 0;
byte  indice_buffer = 0;


int tempPin = 0;
int umiditaPin = 1;
int DigitalPin =  13;
int DigitalPin1 = 6;      // imposta il pin 6 per attivazione macchina umidita'
float TemperaturaMinima  = 22;
float UmiditaMinima = 57;           //soglia di umidita

int buttonPin_inc = 7;
int buttonPin_dec = 9;
int buttonPin_inc_umidita = 8; // imposta il pin 8 per incremento pulsanti umidita'
int buttonPin_dec_umidita = 10; // imposta il pin 10 per diminuzione pulsante umidita'
char stato_pulsanti = 0;
char stato_pulsanti_umidita = 0;
int lettura_pulsante = 0;
int lettura_pulsante_umidita = 0;
int isteresi = 0.5;

void setup()
{
  RitTemp = 0;
  lcd.begin(3,20);

  pinMode(DigitalPin, OUTPUT);
  pinMode(DigitalPin1, OUTPUT);
  pinMode(buttonPin_inc, INPUT);
  pinMode(buttonPin_dec, INPUT);
  pinMode(buttonPin_inc_umidita, INPUT);
  pinMode(buttonPin_dec_umidita, INPUT);
}

void loop()
{
  //gestione della pressione del pulsante collegato al pin 7 per incrementare l'isteresi
  lettura_pulsante = digitalRead(buttonPin_inc);
  if((lettura_pulsante == HIGH) && !(stato_pulsanti & 0x01))
  {
    TemperaturaMinima += 0.5;
    stato_pulsanti |= 0x01;
  }
  else
  {
    if(lettura_pulsante == LOW)
    {
      stato_pulsanti &= ~0x01;
    }
  }

  //gestione della pressione del pulsante collegato al pin 9 per decrementare l'isteresi
  lettura_pulsante = digitalRead(buttonPin_dec);
  if((lettura_pulsante == HIGH) && !(stato_pulsanti & 0x02))
  {
    TemperaturaMinima -= 0.5;
    stato_pulsanti |= 0x01;
  }
  else
  {
    if(lettura_pulsante == LOW)
    {
      stato_pulsanti &= ~0x01;
    }
  }
  //gestione della pressione del pulsante collegato al pin 8 per incrementare l'isteresi d'umidita'
  lettura_pulsante_umidita = digitalRead(buttonPin_inc_umidita);
  if((lettura_pulsante_umidita == HIGH) && !(stato_pulsanti_umidita & 0x01))
  {
    UmiditaMinima += 0.5;
    stato_pulsanti_umidita |= 0x01;
  }
  else
  {
    if(lettura_pulsante_umidita == LOW)
    {
      stato_pulsanti_umidita &= ~0x01;
    }
  }
  //gestione della pressione del pulsante collegato al pin 10 per decrementare l'isteresi d'umidita'
  lettura_pulsante_umidita = digitalRead(buttonPin_dec_umidita);
  if((lettura_pulsante_umidita == HIGH) && !(stato_pulsanti_umidita & 0x02))
  {
    UmiditaMinima -= 0.5;
    stato_pulsanti_umidita |= 0x01;
  }
  else
  {
    if(lettura_pulsante_umidita == LOW)
    {
      stato_pulsanti_umidita &= ~0x01;
    }
  }
  
  if( ++RitTemp == RIT_TEMP )
  { /* incrementa il conteggio e verifica se raggiunto il ritardo */
    RitTemp = 0;    /* se raggiunto azzera il contatore */
  
    //calcolo dela temperatura attuale
    tempC = analogRead(tempPin);           //read the value from the sensor
    tempC = (tempC * 500.0)/1024.0;  //convert the analog data to temperature
  
    //calcolo dell'umidita attuale
    umiditaC = analogRead(umiditaPin);           //read the value from the sensor
    umiditaC = (5.0 * umiditaC * 100.0)/1024.0;  //convert the analog data to temperature
  
    //visualizzazione a display
    lcd.clear();
    lcd.print ( "Temp. Int.   +" );
  
    lcd.setCursor  (14,0);
    lcd.print(tempC);
  
    lcd.setCursor  (14,3);
    lcd.print(umiditaC);
  
    lcd.setCursor (0,3);
    lcd.print ("Umidita Int. %");
  
    lcd.setCursor (0,1);
    lcd.print ( "Temp. Set    +" );
  
    lcd.setCursor (14,1);          //sposta i gradi di soglia sull'lcd
    lcd.print(TemperaturaMinima); // scrive temperatura di soglia
  
    lcd.setCursor (14,2);          //sposta i gradi di soglia sull'lcd
    lcd.print(UmiditaMinima); // scrive umidita' di soglia
  
    lcd.setCursor (0,2);
    lcd.print ("Umidita Set  %");
  
    //gestione dell'attivazione/disattivazione dell'uscita in base alla temperatura letta
    if (tempC < TemperaturaMinima)
    {
      digitalWrite(DigitalPin, HIGH);   // set the LED on
      delay(40);                      // wait for a second
    }
    else
    {
      if (tempC > (TemperaturaMinima + isteresi))
      {
        digitalWrite(DigitalPin, LOW);  // set the LED off
        delay(40);
      }
    }
    delay(200);
  
    //gestione dell'attivazione/disattivazione dell'uscita in base all'umidita' letta
    if (umiditaC < UmiditaMinima)
    {
      digitalWrite(DigitalPin1, HIGH);   // set the LED on
      delay(40);                      // wait for a second
    }
    else
    {
      if (umiditaC > (UmiditaMinima + isteresi ))
      {
        digitalWrite(DigitalPin1, LOW);  // set the LED off
        delay(40);
      }
    }
    delay(200);
  }
}

per aumentare la distanza fra le letture aumenta il #define RIT_TEMP, ad esempio con 0x02FF

mi scocci? ma va là! questa sera non avevo niente da fare  smiley-wink
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 102
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie smiley
e impossibile provarlo perche appena sposto la temp di soglia invece di varialmela di 0,5° varia 405.50°
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 185
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

questo problema è nato con questa ultima versione?
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 102
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 185
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho visto un errorino nell'ultima versio del codice che hai postato. ecco l acorrezione, dimmi se si risolve qualcosa
Code:
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#define RIT_TEMP   (unsigned int)(0x00FF)  /*costante di ritardo lettura temperatura */
unsigned int    RitTemp;   /* variabile conteggio ritardo lettura temperatura */

float tempC;
float umiditaC;
float buffer_tempC[] = {0, 0, 0, 0, 0, 0 ,0, 0, 0, 0};
float tamporanea_media = 0;
byte  indice_buffer = 0;


int tempPin = 0;
int umiditaPin = 1;
int DigitalPin =  13;
int DigitalPin1 = 6;      // imposta il pin 6 per attivazione macchina umidita'
float TemperaturaMinima  = 22;
float UmiditaMinima = 57;           //soglia di umidita

int buttonPin_inc = 7;
int buttonPin_dec = 9;
int buttonPin_inc_umidita = 8; // imposta il pin 8 per incremento pulsanti umidita'
int buttonPin_dec_umidita = 10; // imposta il pin 10 per diminuzione pulsante umidita'
char stato_pulsanti = 0;
char stato_pulsanti_umidita = 0;
int lettura_pulsante = 0;
int lettura_pulsante_umidita = 0;
int isteresi = 0.5;

void setup()
{
  RitTemp = 0;
  lcd.begin(3,20);

  pinMode(DigitalPin, OUTPUT);
  pinMode(DigitalPin1, OUTPUT);
  pinMode(buttonPin_inc, INPUT);
  pinMode(buttonPin_dec, INPUT);
  pinMode(buttonPin_inc_umidita, INPUT);
  pinMode(buttonPin_dec_umidita, INPUT);
}

void loop()
{
  //gestione della pressione del pulsante collegato al pin 7 per incrementare l'isteresi
  lettura_pulsante = digitalRead(buttonPin_inc);
  if((lettura_pulsante == HIGH) && !(stato_pulsanti & 0x01))
  {
    TemperaturaMinima += 0.5;
    stato_pulsanti |= 0x01;
  }
  else
  {
    if(lettura_pulsante == LOW)
    {
      stato_pulsanti &= ~0x01;
    }
  }

  //gestione della pressione del pulsante collegato al pin 9 per decrementare l'isteresi
  lettura_pulsante = digitalRead(buttonPin_dec);
  if((lettura_pulsante == HIGH) && !(stato_pulsanti & 0x02))
  {
    TemperaturaMinima -= 0.5;
    stato_pulsanti |= 0x02;
  }
  else
  {
    if(lettura_pulsante == LOW)
    {
      stato_pulsanti &= ~0x02;
    }
  }
  //gestione della pressione del pulsante collegato al pin 8 per incrementare l'isteresi d'umidita'
  lettura_pulsante_umidita = digitalRead(buttonPin_inc_umidita);
  if((lettura_pulsante_umidita == HIGH) && !(stato_pulsanti_umidita & 0x04))
  {
    UmiditaMinima += 0.5;
    stato_pulsanti_umidita |= 0x04;
  }
  else
  {
    if(lettura_pulsante_umidita == LOW)
    {
      stato_pulsanti_umidita &= ~0x04;
    }
  }
  //gestione della pressione del pulsante collegato al pin 10 per decrementare l'isteresi d'umidita'
  lettura_pulsante_umidita = digitalRead(buttonPin_dec_umidita);
  if((lettura_pulsante_umidita == HIGH) && !(stato_pulsanti_umidita & 0x08))
  {
    UmiditaMinima -= 0.5;
    stato_pulsanti_umidita |= 0x08;
  }
  else
  {
    if(lettura_pulsante_umidita == LOW)
    {
      stato_pulsanti_umidita &= ~0x08;
    }
  }
  
  if( ++RitTemp == RIT_TEMP )
  { /* incrementa il conteggio e verifica se raggiunto il ritardo */
    RitTemp = 0;    /* se raggiunto azzera il contatore */
  
    //calcolo dela temperatura attuale
    tempC = analogRead(tempPin);           //read the value from the sensor
    tempC = (tempC * 500.0)/1024.0;  //convert the analog data to temperature
  
    //calcolo dell'umidita attuale
    umiditaC = analogRead(umiditaPin);           //read the value from the sensor
    umiditaC = (5.0 * umiditaC * 100.0)/1024.0;  //convert the analog data to temperature
  
    //visualizzazione a display
    lcd.clear();
    lcd.print ( "Temp. Int.   +" );
  
    lcd.setCursor  (14,0);
    lcd.print(tempC);
  
    lcd.setCursor  (14,3);
    lcd.print(umiditaC);
  
    lcd.setCursor (0,3);
    lcd.print ("Umidita Int. %");
  
    lcd.setCursor (0,1);
    lcd.print ( "Temp. Set    +" );
  
    lcd.setCursor (14,1);          //sposta i gradi di soglia sull'lcd
    lcd.print(TemperaturaMinima); // scrive temperatura di soglia
  
    lcd.setCursor (14,2);          //sposta i gradi di soglia sull'lcd
    lcd.print(UmiditaMinima); // scrive umidita' di soglia
  
    lcd.setCursor (0,2);
    lcd.print ("Umidita Set  %");
  
    //gestione dell'attivazione/disattivazione dell'uscita in base alla temperatura letta
    if (tempC < TemperaturaMinima)
    {
      digitalWrite(DigitalPin, HIGH);   // set the LED on
      delay(40);                      // wait for a second
    }
    else
    {
      if (tempC > (TemperaturaMinima + isteresi))
      {
        digitalWrite(DigitalPin, LOW);  // set the LED off
        delay(40);
      }
    }
    delay(200);
  
    //gestione dell'attivazione/disattivazione dell'uscita in base all'umidita' letta
    if (umiditaC < UmiditaMinima)
    {
      digitalWrite(DigitalPin1, HIGH);   // set the LED on
      delay(40);                      // wait for a second
    }
    else
    {
      if (umiditaC > (UmiditaMinima + isteresi ))
      {
        digitalWrite(DigitalPin1, LOW);  // set the LED off
        delay(40);
      }
    }
    delay(200);
  }
}
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 102
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

adesso si imposta bene, la lettura sembra piu' stabile pero quando arriva a soglia fa lo stesso difetto .
ma se lo taglio e lo butto quel led smiley-grin
forse e meglio se preparo il contenitore e lo testo in condizioni reali

digitalWrite(DigitalPin, HIGH);   // set the LED on
      delay(40);   potrebbe essere questa la causa che allorigine era di 4000 e poi lo tolto perche dovevo aspettare 4+4+4+4 secondi per impostare 0.5° di soglia
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 102
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

quell'errore che mi hai correttonella prima versione andava bene nell'ultima no
lo avevo fatto io di proposito perche cosi non dovevo premere ripetutamente il pulsante per aumentare il livello di soglia con quello basta che tenevo premuto e aumentava di 0,5° per volta fino a che non lasciavo
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 185
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma no! piuttosto di togliere "quel led" cambia pin per abilitare il relè (ma secondo me non centra)

ma la simulazione che fai è di cambiare la soglia tramite i pulsanti? puoi provare a impostare una sogli a di 25°C e scaldare il sensore con le dita?

ci aggiorniamo a domani che mi butto in branda (domani sono in trasferta per lavoro)
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 102
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

"ma la simulazione che fai è di cambiare la soglia tramite i pulsanti?"      si la metto a temperatura ambiente
prova fatta soglia 25° scaldato con le mani ma appena arriva al traguardo il led e intermittente
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 185
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

allora, ci ho un po' pensato e sono giunto alla conclusione che potrebbe essere colpa del fatto che così com'è il sistema ha una risoluzione di poco inferiore a 0.5°C e l'isteresi è proprio di 0.5°C il che è un po' rischioso. proverei a fare così:
1) aumento della risoluzione del sistema (circa 0.1°C)
2) ampiamento dell'isteresi (1.0°C)
3) diminuzione degli incrementi della soglia di temperatura in seguito alla pressione del pulsante (0.3°C)
di seguito il codice

Code:
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#define RIT_TEMP   (unsigned int)(0x00FF)  /*costante di ritardo lettura temperatura */
unsigned int    RitTemp;   /* variabile conteggio ritardo lettura temperatura */

float tempC;
float umiditaC;
float buffer_tempC[] = {0, 0, 0, 0, 0, 0 ,0, 0, 0, 0};
float tamporanea_media = 0;
byte  indice_buffer = 0;


int tempPin = 0;
int umiditaPin = 1;
int DigitalPin =  13;
int DigitalPin1 = 6;      // imposta il pin 6 per attivazione macchina umidita'
float TemperaturaMinima  = 22;
float UmiditaMinima = 57;           //soglia di umidita

int buttonPin_inc = 7;
int buttonPin_dec = 9;
int buttonPin_inc_umidita = 8; // imposta il pin 8 per incremento pulsanti umidita'
int buttonPin_dec_umidita = 10; // imposta il pin 10 per diminuzione pulsante umidita'
char stato_pulsanti = 0;
#define PULSANTE_TEMPERATURA_INC_PREMUTO  0x01
#define PULSANTE_TEMPERATURA_DEC_PREMUTO  0x02
#define PULSANTE_UMIDITA_INC_PREMUTO      0x04
#define PULSANTE_UMIDITA_DEC_PREMUTO      0x08

#define STEP_TEMPERATURA                  0.3
#define STEP_UMIDITA                      0.5

char stato_pulsanti_umidita = 0;
int lettura_pulsante = 0;
int lettura_pulsante_umidita = 0;
int isteresi = 1.0;

void setup()
{
  RitTemp = 0;
  lcd.begin(3,20);
  
  analogReference(INTERNAL);
  
  pinMode(DigitalPin, OUTPUT);
  pinMode(DigitalPin1, OUTPUT);
  pinMode(buttonPin_inc, INPUT);
  pinMode(buttonPin_dec, INPUT);
  pinMode(buttonPin_inc_umidita, INPUT);
  pinMode(buttonPin_dec_umidita, INPUT);
}

void loop()
{
  //gestione della pressione del pulsante collegato al pin 7 per incrementare l'isteresi
  lettura_pulsante = digitalRead(buttonPin_inc);
  if((lettura_pulsante == HIGH) && !(stato_pulsanti & PULSANTE_TEMPERATURA_INC_PREMUTO))
  {
    TemperaturaMinima += STEP_TEMPERATURA;
    stato_pulsanti |= PULSANTE_TEMPERATURA_INC_PREMUTO;
  }
  else
  {
    if(lettura_pulsante == LOW)
    {
      stato_pulsanti &= ~PULSANTE_TEMPERATURA_INC_PREMUTO;
    }
  }

  //gestione della pressione del pulsante collegato al pin 9 per decrementare l'isteresi
  lettura_pulsante = digitalRead(buttonPin_dec);
  if((lettura_pulsante == HIGH) && !(stato_pulsanti & PULSANTE_TEMPERATURA_DEC_PREMUTO))
  {
    TemperaturaMinima -= STEP_TEMPERATURA;
    stato_pulsanti |= PULSANTE_TEMPERATURA_DEC_PREMUTO;
  }
  else
  {
    if(lettura_pulsante == LOW)
    {
      stato_pulsanti &= ~PULSANTE_TEMPERATURA_DEC_PREMUTO;
    }
  }
  //gestione della pressione del pulsante collegato al pin 8 per incrementare l'isteresi d'umidita'
  lettura_pulsante_umidita = digitalRead(buttonPin_inc_umidita);
  if((lettura_pulsante_umidita == HIGH) && !(stato_pulsanti & PULSANTE_UMIDITA_INC_PREMUTO))
  {
    UmiditaMinima += STEP_UMIDITA;
    stato_pulsanti |= PULSANTE_UMIDITA_INC_PREMUTO;
  }
  else
  {
    if(lettura_pulsante_umidita == LOW)
    {
      stato_pulsanti &= ~PULSANTE_UMIDITA_INC_PREMUTO;
    }
  }
  //gestione della pressione del pulsante collegato al pin 10 per decrementare l'isteresi d'umidita'
  lettura_pulsante_umidita = digitalRead(buttonPin_dec_umidita);
  if((lettura_pulsante_umidita == HIGH) && !(stato_pulsanti & PULSANTE_UMIDITA_DEC_PREMUTO))
  {
    UmiditaMinima -= STEP_UMIDITA;
    stato_pulsanti |= PULSANTE_UMIDITA_DEC_PREMUTO;
  }
  else
  {
    if(lettura_pulsante_umidita == LOW)
    {
      stato_pulsanti &= ~PULSANTE_UMIDITA_DEC_PREMUTO;
    }
  }
  
  if( ++RitTemp == RIT_TEMP )
  { /* incrementa il conteggio e verifica se raggiunto il ritardo */
    RitTemp = 0;    /* se raggiunto azzera il contatore */
  
    //calcolo dela temperatura attuale
    tempC = analogRead(tempPin);           //read the value from the sensor
    tempC = (tempC * 107.421875L)/1000.0;  //convert the analog data to temperature
  
    //calcolo dell'umidita attuale
    umiditaC = analogRead(umiditaPin);           //read the value from the sensor
    umiditaC = (5.0 * umiditaC * 100.0)/1024.0;  //convert the analog data to temperature
  
    //visualizzazione a display
    lcd.clear();
    lcd.print ( "Temp. Int.   +" );
  
    lcd.setCursor  (14,0);
    lcd.print(tempC);
  
    lcd.setCursor  (14,3);
    lcd.print(umiditaC);
  
    lcd.setCursor (0,3);
    lcd.print ("Umidita Int. %");
  
    lcd.setCursor (0,1);
    lcd.print ( "Temp. Set    +" );
  
    lcd.setCursor (14,1);          //sposta i gradi di soglia sull'lcd
    lcd.print(TemperaturaMinima); // scrive temperatura di soglia
  
    lcd.setCursor (14,2);          //sposta i gradi di soglia sull'lcd
    lcd.print(UmiditaMinima); // scrive umidita' di soglia
  
    lcd.setCursor (0,2);
    lcd.print ("Umidita Set  %");
  
    //gestione dell'attivazione/disattivazione dell'uscita in base alla temperatura letta
    if (tempC < TemperaturaMinima)
    {
      digitalWrite(DigitalPin, HIGH);   // set the LED on
      delay(40);                      // wait for a second
    }
    else
    {
      if (tempC > (TemperaturaMinima + isteresi))
      {
        digitalWrite(DigitalPin, LOW);  // set the LED off
        delay(40);
      }
    }
    delay(200);
  
    //gestione dell'attivazione/disattivazione dell'uscita in base all'umidita' letta
    if (umiditaC < UmiditaMinima)
    {
      digitalWrite(DigitalPin1, HIGH);   // set the LED on
      delay(40);                      // wait for a second
    }
    else
    {
      if (umiditaC > (UmiditaMinima + isteresi ))
      {
        digitalWrite(DigitalPin1, LOW);  // set the LED off
        delay(40);
      }
    }
    delay(200);
  }
}
se così facendo il led pazzerino mette la testa a posto possiamo cominciare ad affinare le cose
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 102
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

woww il led si e calmato ma che cera un po di valeriana nel codice

dati attuali
temperatura di soglia 23.20
resta acceso  fino a 24.20   (no dovrebe staccare a23.20)( e ripartire appena arriva a 22.20)

e riparte nuovamente a 23.20
lettura umidita(che per il momento ce un lm35)   mi segna +106.42° credo sia sballato

temperatura con srumento di precisione 22.25
temperatura con arduino 22.34/22.45
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 185
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

yuppi! ci ho preso  8-)

resta acceso fino a 24.2 perché è così nel codice
Code:
//gestione dell'attivazione/disattivazione dell'uscita in base alla temperatura letta
    if (tempC < TemperaturaMinima)
    {
      digitalWrite(DigitalPin, HIGH);   // set the LED on
      delay(40);                      // wait for a second
    }
    else
    {
      if (tempC > (TemperaturaMinima + isteresi))
      {
        digitalWrite(DigitalPin, LOW);  // set the LED off
        delay(40);
      }
    }
per avere lo stacco a 23.2 e attivazione sotto i 22.2 si deve cambiare con
Code:
//gestione dell'attivazione/disattivazione dell'uscita in base alla temperatura letta
    if (tempC < (TemperaturaMinima - isteresi))
    {
      digitalWrite(DigitalPin, HIGH);   // set the LED on
      delay(40);                      // wait for a second
    }
    else
    {
      if (tempC > TemperaturaMinima)
      {
        digitalWrite(DigitalPin, LOW);  // set the LED off
        delay(40);
      }
    }
per avere una lettura corretta anche sul secondo sensore va modificata la formula di conversione da
Code:
umiditaC = (5.0 * umiditaC * 100.0)/1024.0;  //convert the analog data to temperature
in
Code:
umiditaC = (umiditaC * 107.421875L)/1000.0;  //convert the analog data to temperature
lo strumento di precisione di cui parli misura la temperatura ambiente o la tensione di uscita del sensore (che converti in temperatura)?
Logged

0
Offline Offline
Full Member
***
Karma: 0
Posts: 102
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

perche avevi dubbi che ci prendevi  smiley-wink


che pensi e meglio cosi ho farlo scendere


lo strumento misura la temperatura ambiente li ho affiancati

ok funziona anche umidita'
Logged

Pages: 1 ... 3 4 [5] 6   Go Up
Jump to: