Home
Accesso / Registrazione
 di 

Termometro con Arduino + LM35cz + multiplex a 4 cifre + visualizza temperature sotto zero

6 risposte [Ultimo post]
ritratto di RobertoZ
Offline
Titolo: User
Utente
Ultima visita:
23 settimane 1 giorno fa
Utente dal: 16/02/2013
Messaggi: 5

Ciao a tutti, sto cominciando a fare i primi passi nel mondo embedded e programmazione.

Come da manuale, cerco di realizzare il mio primo progettino: un termometro digitale.

Sono ai primi rudimenti di C e del linguaggio di Arduino, ci provo . . .

Diciamo che sono riuscito a trovare uno sketch per Arduino che visualizza la temperatura ma, purtroppo, solo su LCD (o mandarli su seriale) e riproduce valori di temperatura da zero in poi (niente da fare per i valori sotto zero).

Lo sketch l’ho capito, adesso sto cercando di adattarlo con varie prove sperimentali se non mi blocco prima. . .

Io vorrei che la temperatura venisse riportata su un multiplex (catodo comune), quindi non LCD, e che riporti anche i dati delle temperature negative (sotto zero).

Come potete aiutarmi? C’é già qualche listato adatto al mio scopo? oppure, quali istruzioni fondamentali.

Vi ringrazio in anticipo
Roberto

ritratto di Piero Boccadoro
Offline
Titolo: Moderator
Moderatore
Ultima visita:
19 ore 59 min fa
Utente dal: 28/06/2011
Messaggi: 880
Utente PREMIUM
Qualcosa di questo
ritratto di RobertoZ
Offline
Titolo: User
Utente
Ultima visita:
23 settimane 1 giorno fa
Utente dal: 16/02/2013
Messaggi: 5
Grazie Piero per la tua

Grazie Piero per la tua risposta. Ho letto il post che hai linkato ma purtroppo non sono stato in grado di "legarlo" alle necessità dello sketch su cui sto sbattendo.

Diciamo che sono arrivato a comporre, con vari pezzi, il segunte listato che, come dicevo prima, visualizza i dati su LCD (li vorrei su multiplex 4 cifre). Per ora però mi basterebbe visualizare i dati sui display a 7-seg senza ricorrere integrati per il loro pilotaggio:

#define LM35_TEMP 0 // Pin analogico 0
#define LM35_REF 1 // Pin analogico 1
#include //include la libreria per il funzionamento dell'lcd

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //setta le uscite di arduino per lcd
float temperatura; // variabile in cui viene salvata la temperatura in gradi centigradi
float prev_temperatura = 0; // temperatura precendente
int ref; // valore della tensione di riferimento dei due diodi
int ref_medio = 0; // valore della tensione di riferimento medio
int sensoreTemperatura; // valore di tensione letto dal pin OUT del sensore
int sensoreTemperatura_medio = 0; // valore sensoreTemperatura medio
int cont; //contatore usato per ottenere un valore medio
void setup()
{
lcd.begin(16, 2); // setta del numero delle colonne e delle righe
}
void loop()
{
// vengono sommati 10 valori di temperatura per poi farne la media
for( cont = 0; cont < 10; cont++)
{
sensoreTemperatura = analogRead(LM35_TEMP); // lettura della tensione del pin OUT LM35
sensoreTemperatura_medio += sensoreTemperatura; //sommatoria dei valori
ref = analogRead(LM35_REF); // lettura della tensione di riferimento
ref_medio += ref; // sommatoria dei valori
delay(500); // intervallo di campionamento
//la lettura durera' 10 (numero di camoioni) x 500ms (intervallo tra due campioni) = 5000ms
}
if(cont == 10) // quando ho sommato i dieci valori campionati si esegue:
{
cont = 0; // azzeramento contatore, per far ripartire il successivo campionamento
// media della sommatoria dei dieci valori campionati di ref e sensoreTemperatura
sensoreTemperatura_medio = sensoreTemperatura_medio / 10;
ref_medio = ref_medio / 10;
// conversione dei valori medi misurati in una temperatura in gradi centigradi
temperatura = (sensoreTemperatura_medio - ref_medio) * 100/2.56;
temperatura = temperatura * 5/1024;
// valore di temperatura che verra' mostrato quando si e' in fase di campionamento
//e non c'e' una temperatura disponibile
prev_temperatura = temperatura;
sensoreTemperatura_medio = 0;
ref_medio = 0;
}
else{
temperatura = prev_temperatura;
}
lcd.clear(); //pulisce lo schermo
lcd.print("Temperatura: "); // stampa della prima riga sull'lcd
lcd.setCursor(0, 1); //setta il cursore sulla seconda riga al primo carattere
lcd.print("gradi "); //stampa la temperatura su lcd
lcd.print(temperatura); //valore della temperatura media calcolata
delay(1000); //attende un secondo
}

Ecco, ritengo che su quest’ultime righe occorrerebbe “agganciare” le istruzioni per pilotare il multiplex

Non so se sono stato chiaro, scusatemi
grazie ancora
Roberto

ritratto di Vittorio Crapella
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
28 settimane 2 giorni fa
Utente dal: 21/09/2011
Messaggi: 281
Ma oltre il listato bisogna

Ma oltre il listato bisogna anche vedere che circuito di condizionamento hai usato esternamente con LM35CZ..
Io avrei tentato con qualcosa di simile
http://www.webalice.it/crapellavittorio/schemivari/adc_pic.html
poi avrei adattato il listato con i calcoli indicati

ritratto di Boris L.
Offline
Titolo: User+
Utente+
Ultima visita:
3 settimane 2 giorni fa
Utente dal: 08/11/2012
Messaggi: 47
Utente PREMIUM
Devo dire che anche a me

Devo dire che anche a me sembrava mancasse questo pezzo alla discussione… Non abbiamo ancora visto uno schematico…
Come si può pensare di programmare un sistema che non si sa com'è fatto?

ritratto di RobertoZ
Offline
Titolo: User
Utente
Ultima visita:
23 settimane 1 giorno fa
Utente dal: 16/02/2013
Messaggi: 5
Si, in effetti avete ragione,

Si, in effetti avete ragione, scusatemi, manca il riferimento al circuito che gestirà LM35cz per le temperature anche negative. Io avevo trovato questo:

http://cinquetau.altervista.org/blog/wp-content/uploads/2010/02/Tutorial-lm35.pdf

ma il listato che presenta, non prevede l'uscita su multiplex.

Per il resto non ho altri schemi se non quello di avere Arduino uno ed i suoi pin da programmare per gestire l'LM35 ed il multiplex a 4 cifre.
vi ringrazio tutti
ciao

ritratto di taraschi.nicola
Offline
Ultima visita:
43 settimane 23 ore fa
Utente dal: 14/11/2012
Messaggi: 1
arduino

ho messo oggi un articolo sui sensori di temperatura ed arduino

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 18 utenti e 85 visitatori collegati.

Ultimi Commenti