Pages: [1]   Go Down
Author Topic: LM35  (Read 1264 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 4
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve a tutti,
ho cellegato un sensore di temperatura LM35 al pin analogico 1 del mio arduino mega e tutto funzionava benissimo finchè ho aggiunto sul pin analogico 2 un sensore di umidità HIH400 HONEYWELL, il sensore di umidità funzione bene ma l'LM35 ha iniziato a dare i numeri del lotto con sbalzi anche di 20 gradi fra una lettura e la successiva, se commento le righe del sensore di umidità l'LM 35 riprende a funzionare bene...
qualcuno è in grado di aiutarmi?
grazie e saluti
enrico
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 328
Posts: 22733
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho notato anch'io che questi transistor sono molto influenzati dalle correnti assorbite da altri dispositivi presenti nel sistema.
Ad esempio io ho uno shield autocostruito con un LM335Z ed un RTC DS1307. Sopra a questo shield ne ho un altro con un display LCD 3310 della Nuelectronics che mi visualizza l'ora, la data e la temperatura.

Siccome lo shield con l'LCD è retroilluminato, io spengo la retroilluminazione dopo 10 sec. Quando spengo la retroilluminazione, la temperatura letta cala di 2°C! Non appena riaccendo la retroilluminazione, questa risale nuovamente!
Logged


0
Offline Offline
Sr. Member
****
Karma: 1
Posts: 443
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Posso chiederti se mi fai una cortesia di specificare come hai collegato l'LM35?
Ne ho uno anch'io ma non riesco a farlo funzionare smiley-sad
Grazie.
Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 4
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

guardando da sopra, con la parte piatta in basso, a destra i 5v a sinistra il gnd e al centro il pin analogico
Logged

0
Offline Offline
Sr. Member
****
Karma: 1
Posts: 443
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ed è come l'ho collegato io, quindi fin qui sono giusto.
Poi, leggi il valore tramite analogRead giusto?
Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 4
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


ti allego il programma che uso io, alimentando il sensore di umidità con un pin digitale ho risolto il problema degli errori di lettura dell'LM35, anche se non ho ancora capito il perchè... smiley, cmq a te interessa solo la parte relativa all'LM35


int LM35=1; //Assegniamo alla variabile LM35 il pin di ingresso analogico 1
float TEMPERATURA; //Dichiariamo la variabile che conterrà il valore della temperatura
int HIH4000=2; //Assegniamo alla variabile HIH4000 il pin di ingresso analogico 2 del sensore HIH4000
float UR; //Dichiariamo la variabile che conterrà il valore dell'UMIDITA' RELATIVA
void setup()
{
  Serial.begin(9600);
}

void loop()
{
  
  TEMPERATURA= analogRead(LM35)*0.488;
  Serial.println("TEMPERATURA:");
  Serial.println(TEMPERATURA);
  Serial.println();
  delay(3000);
  UR= (analogRead(HIH4000) - 163)/6.0;
  Serial.println("UMIDITA' RELATIVA:");
  Serial.println(UR);
  Serial.println();
  delay(3000);
}
Logged

0
Offline Offline
Sr. Member
****
Karma: 1
Posts: 443
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ti ringrazio, appena ho un secondo riprovo a vedere se ne esco vittorioso smiley-grin
Logged


0
Offline Offline
Sr. Member
****
Karma: 1
Posts: 443
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Perfetto, ora funziona.
Ho scoperto che avevo fatto tutto giusto ma non so il perchè mi si impallava la comunicazione seriale e quindi non riuscivo a vedere i dati sul terminale.

Posso farti un piccolo appunto sul tuo programma?
No?
Beh, te lo faccio lo stesso smiley-grin
Nell'intestazione del programma, hai dichiarato le seguenti variabili:

Code:
int LM35=1;
int HIH4000=2;

Siccome queste ti servono solo come riferimento mnemonico per le porte utilizzate, ti consiglio di non dichiarare delle variabili che occupano memoria per niente, ma di usare la direttiva #define.

per esempio:
Code:
#define   LM35         1
#define   HIH4000   1

Il risultato non cambia, però in questo modo usi meno memoria.
Magari lo sapevi già, ma a me piace fare lo sborone smiley-grin smiley-grin smiley-grin
Ciao.
Logged


cuneo
Offline Offline
God Member
*****
Karma: 3
Posts: 785
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

la misura del lm 35  ipende dalla tensione in ingresso: se quella scende (causa un carico) anche la misura della t scende
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 4
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si però nelle specifiche dell'HIH4000 si parla di un assorbimento max di 500 microA ...
Logged

Pages: [1]   Go Up
Jump to: