Hashtag più usati
1 | #include |
2 | #drone |
3 | #dlcitalia |
4 | #ets2 |
5 | #eurotrucksimulator2 |
6 | #arduino |
7 | #farmingsimulator |
8 | #youtube |
9 | #aukey |
Ultimi argomenti attivi
» Comunicazione termine servizio Arduino BT ControlDa Admin Mar Mag 10, 2022 12:55 pm
» Robot aspirapolvere per Alexa: Dreame D9
Da Admin Mar Feb 09, 2021 9:42 am
» Come costruire un robot smart con Arduino
Da Admin Mar Nov 17, 2020 12:15 pm
» TOPPS Trading Cards Match Attax Champsion League/Europa League 2020/21
Da Admin Mar Nov 10, 2020 3:21 pm
» Guida per utilizzare Arduino BT Control v1.2
Da Admin Gio Lug 09, 2020 12:01 pm
» Recensione Umidigi A3 Pro - Smartphone sotto i 100€
Da Admin Gio Apr 04, 2019 12:22 pm
» [Arduino] aiuto programma
Da Glak Mar Mar 12, 2019 9:30 am
» ERRORE NELLA COMPILAZIONE NEXTION
Da papat Mar Feb 26, 2019 7:11 am
» Comandare la Smart TV con Alexa senza broadlink (gratis)
Da Admin Mar Feb 19, 2019 4:31 pm
I postatori più attivi del mese
Nessun utente |
Come posso fare la media della temperatura con LM35?
2 partecipanti
Pagina 1 di 1
Come posso fare la media della temperatura con LM35?
Ciao a tutti
Avendo a disposizione un display 1602 e un sensore di temperatura LM35 ,ho provato leggere sul display la temperatura di casa confrontandola con alcuni termometri digitali in mio possesso. Tutti i termometri rilevano la stessa temperatura con uno scarto di due decimi di grado,purtroppo il mio LM35 mi fornisce una temperatura superiore di un grado e tre decimi. Dopo essermi informato mi suggeriscono di sommare la lettura del sensore per 10 volte per poi dividere per 10 e poi applicare la formula,vorrei sapere anche il vostro parere. Leggere per 10 volte e dividere per 10 penso si saperlo fare ma non riesco a sommare ogni lettura su una variabile, qualcuno mi può dare una dritta?
Vi ringrazio in anticipo.
Guido
Avendo a disposizione un display 1602 e un sensore di temperatura LM35 ,ho provato leggere sul display la temperatura di casa confrontandola con alcuni termometri digitali in mio possesso. Tutti i termometri rilevano la stessa temperatura con uno scarto di due decimi di grado,purtroppo il mio LM35 mi fornisce una temperatura superiore di un grado e tre decimi. Dopo essermi informato mi suggeriscono di sommare la lettura del sensore per 10 volte per poi dividere per 10 e poi applicare la formula,vorrei sapere anche il vostro parere. Leggere per 10 volte e dividere per 10 penso si saperlo fare ma non riesco a sommare ogni lettura su una variabile, qualcuno mi può dare una dritta?
Vi ringrazio in anticipo.
Guido
- Codice:
/*
Questo sketch stampa sul display LCD il valore di temperatura misurata dal sensore LM35
The circuit:
* LCD pin 1 GND
* LCD pin 2 +5v
* LCD pin 3 potenziometro 10k
* LCD RS pin 4 pin 12 arduino
* LCD R/W pin 5 GND
* LCD Enable pin 6 pin 11 arduino
* LCD D4 pin 11 pin 5 arduino
* LCD D5 pin 12 pin 4 arduino
* LCD D6 pin 13 pin 3 arduino
* LCD D7 pin 14 pin 2 arduino
* LCD pin 15 220 homm +5v
* LCD pin 16 GND
*/
int sensore = A0; // sensore LM35 collegato al pin analogico A0
int sensorValue = 0; // variabile per lettura sensore
float celsius = 0; // temperatura variabile
float millivolt = 0; // dichiarazione di variabile tensione (float è per i numeri con la virgola)
#include <LiquidCrystal.h> // Includo il codice della libreria :
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Inizializzo la libreria con i numeri dei pin dell'interfaccia
void setup() {
lcd.begin(16, 2); // Imposto il numero del display LCD di colonne e righe :
lcd.print("TEMPERATURA"); // visualizzo il messaggio TEMPERATURA sul display
}
void loop() {
sensorValue=analogRead(sensore); // lettura valore del sensore LM35 messo sull'ingresso analogico A0
millivolt=(sensorValue/1024.0)*5000; // formula per ottenere la tensione di uscita dell'LM35 in millivolts
celsius = millivolt/10; // valore espresso in gradi Celsius (l'out del sensore è 10mv per grado)
lcd.setCursor(0,1); // Imposto il cursore sulla colonna 0 , linea 1
lcd.print("C."); // stampa sul display C.
lcd.setCursor(2,1); // Imposto il cursore sulla colonna 2 , linea 1
lcd.print(celsius); // stampa sul display il valore di temperatura in gradi Celsius
delay(1000);
}
Guido Laferrari- Livello due
- Messaggi : 34
Crediti : 54
Reputazione : 2
Data d'iscrizione : 30.04.16
Re: Come posso fare la media della temperatura con LM35?
Ciao Guido,
il suggerimento che ti propongono è una buona scelta per avere una migliore precisione. Per fare questa media hai la possibilità di utilizzare gli array oppure una semplice variabile. Quest'ultima scelta a mio parere è la più semplice da comprendere.
Per fare la somma di 10 valori all'interno di una variabile, ti basta fare in questo modo. Ovviamente te lo propongo in modo generale per cercarti di far comprendere il ragionamento:
Facciamo un test:
Al primo ciclo del loop, si entra nel "for" e nel primo ciclo del "for" si legge dal sensore "5", quindi "val" varrà 5. Aggiungo nel totale il valore di "val", quindi tot=0+5 e "tot" varrà anche lui "5". Nel secondo ciclo del "for", viene letto "6" quindi "val" varrà 6. Ora si aggiunge questo valore in "tot" quindi tot=5+6 e "tot" varrà 11. Alla fine del ciclo for farà la media di "tot" facendo, come indicato "tot=tot/10;". Trattandosi di una variabile float, ci restituirà un valore con la virgola.
Spero di essere stato chiaro. Fammi sapere
Saluti
il suggerimento che ti propongono è una buona scelta per avere una migliore precisione. Per fare questa media hai la possibilità di utilizzare gli array oppure una semplice variabile. Quest'ultima scelta a mio parere è la più semplice da comprendere.
Per fare la somma di 10 valori all'interno di una variabile, ti basta fare in questo modo. Ovviamente te lo propongo in modo generale per cercarti di far comprendere il ragionamento:
- Codice:
int val=0; //variabile che legge il sensore
float tot=0; //variabile che servirà per la media
void setup() {
pinMode(A0, INPUT); //il sensore lo imposto come INPUT
}
void loop() {
for (int i=0; i<10; i++) { //ripeto x 10 volte..
val=analogRead(A0); //.. la lettura dal sensore
//qui faccio calcoli per la conversione di val in gradi
tot=tot+val; //aggiungo questa lettura al totale
}
tot=tot/10; //alla fine delle 10 letture, faccio la media
}
Facciamo un test:
Al primo ciclo del loop, si entra nel "for" e nel primo ciclo del "for" si legge dal sensore "5", quindi "val" varrà 5. Aggiungo nel totale il valore di "val", quindi tot=0+5 e "tot" varrà anche lui "5". Nel secondo ciclo del "for", viene letto "6" quindi "val" varrà 6. Ora si aggiunge questo valore in "tot" quindi tot=5+6 e "tot" varrà 11. Alla fine del ciclo for farà la media di "tot" facendo, come indicato "tot=tot/10;". Trattandosi di una variabile float, ci restituirà un valore con la virgola.
Spero di essere stato chiaro. Fammi sapere
Saluti
Re: Come posso fare la media della temperatura con LM35?
Ciao , il test che hai fatto è chiarissimo e l'ho capito , ho solo una piccolo chiarimento: nel "for" ho visto che non hai dichiarato la variabile " int i " è giusto così?
Guido
Guido
Guido Laferrari- Livello due
- Messaggi : 34
Crediti : 54
Reputazione : 2
Data d'iscrizione : 30.04.16
Re: Come posso fare la media della temperatura con LM35?
Scritto in quel modo è dichiarato mentre se avessi messo semplicemente "i=0" ti avrebbe dato errore (fai un piccolo test ). Mettendo invece "int i=0" o sopra o in mezzo al codice, è indifferente
Re: Come posso fare la media della temperatura con LM35?
Grazie mille , durante la elaborazione del codice mi sono domandato: alla fine del ciclo "for" fa la media di "tot", mà quando si resettano le variabili "tot" e "val" per ricominciare da zero il ciclo "for" ? si resettano in automatico? grazie ancora.
Guido
Guido
Guido Laferrari- Livello due
- Messaggi : 34
Crediti : 54
Reputazione : 2
Data d'iscrizione : 30.04.16
Re: Come posso fare la media della temperatura con LM35?
No, non si resettano da soli. In realtà ti interessa solo che "tot" si resetti dopo la media.
Penso ti basti impostare "tot=0;" dopo che hai stampato sul display LCD (o Serial Monitor) il valore della temperatura .
Penso ti basti impostare "tot=0;" dopo che hai stampato sul display LCD (o Serial Monitor) il valore della temperatura .
Re: Come posso fare la media della temperatura con LM35?
OK questo è il mio codice definitivo, dimmi cosa ne pensi. grazie ancora.
- Codice:
/*
Questo sketch stampa sul display LCD il valore di temperatura misurata dal sensore LM35
The circuit:
* LCD pin 1 GND
* LCD pin 2 +5v
* LCD pin 3 potenziometro 10k
* LCD RS pin 4 pin 12 arduino
* LCD R/W pin 5 GND
* LCD Enable pin 6 pin 11 arduino
* LCD D4 pin 11 pin 5 arduino
* LCD D5 pin 12 pin 4 arduino
* LCD D6 pin 13 pin 3 arduino
* LCD D7 pin 14 pin 2 arduino
* LCD pin 15 220 homm +5v
* LCD pin 16 GND
*/
int sensore = A0; // sensore LM35 collegato al pin analogico A0
int sensorValue = 0; // variabile per lettura sensore
float totalValue = 0; // totale di 10 letture del sensore
float celsius = 0; // temperatura celsius
float millivolt = 0; // dichiarazione di variabile tensione (float è per i numeri con la virgola)
#include <LiquidCrystal.h> // Includo il codice della libreria :
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Inizializzo la libreria con i numeri dei pin dell'interfaccia
void setup() {
lcd.begin(16, 2); // Imposto il numero del display LCD di colonne e righe :
lcd.print("TEMPERATURA"); // visualizzo il messaggio TEMPERATURA sul display
}
void loop() {
for (int i = 0;i < 10 ; i ++){
sensorValue=analogRead(sensore); // lettura valore del sensore LM35 messo sull'ingresso analogico A0
totalValue = totalValue + sensorValue; // sommo per 10 volte la letura del sensore
}
totalValue = totalValue / 10; // divido per 10
millivolt=(totalValue/1024.0)*5000; // formula per ottenere la tensione di uscita dell'LM35 in millivolts
celsius = millivolt/10; // valore espresso in gradi Celsius (l'out del sensore è 10mv per grado)
lcd.setCursor(0,1); // Imposto il cursore sulla colonna 0 , linea 1
lcd.print("C."); // stampa sul display C.
lcd.setCursor(2,1); // Imposto il cursore sulla colonna 2 , linea 1
lcd.print(celsius); // stampa sul display il valore di temperatura in gradi Celsius
delay(100); // tempo ciclo
totalValue = 0; // resetto la variabile
}
Guido Laferrari- Livello due
- Messaggi : 34
Crediti : 54
Reputazione : 2
Data d'iscrizione : 30.04.16
Argomenti simili
» Stazione meteo con relè: Accendere/Spegnere in base alla temperatura. Come posso fare?
» Imparare Arduino: Come posso fare un impianto di birra?
» che cosa posso fare? non mi arriva euro truck simulator 2?!
» La mia tartaruga ha una macchia bianca sul muso, cosa posso fare?
» Come posso condividere il video di The Museum of Me della Intel con i miei amici?
» Imparare Arduino: Come posso fare un impianto di birra?
» che cosa posso fare? non mi arriva euro truck simulator 2?!
» La mia tartaruga ha una macchia bianca sul muso, cosa posso fare?
» Come posso condividere il video di The Museum of Me della Intel con i miei amici?
Pagina 1 di 1
Permessi in questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum.