LM35
- Meteo Arduino partiamo da zero - n° 2m -
Segue dal post precedente la sperimentazione per costruire la nostra stazione meteo.
Qui troverete lo Sketch per Arduino che permette la misura di temperature sotto zero.
Follows from the previous post experimentation to build our weather station.
Here you will find the sketch for Arduino that allows the measurement of sub-zero temperatures.
Questo è lo schema elettrico utilizzato:
Materiale occorrente:
Arduino
n. 1_ LM35.
n. 2 _diodi 1N914 o 1N4148 o 1N40xx
n. 1_ resistenza da 15Komm.
Facoltativo lettore LCD, trimmer 10Komm.
Lo schema già visto nel post precedente è ora collegato ad arduino (Pin A0 per Vout) e (Pin A1 per Vref) la differenza fra le due tensioni ci darà la tensione corrispondente alla temperatura del sensore.
Ecco qui sotto lo sketch:
/* Sergio & Adriano Prenleloup Misura temperature positive e negative con LM35 ***** Versione 1.01 ****** ***** 07/01/2014 ****** ************************** Per lo schema di collegamento Lcd vedi post su http://avventurarduino.blogspot.it Utilizzo del LCD ACM1602B Per utilizzare questo lcd seguite le indicazioni di Mauro Alfieri www.mauroalfieri.it Ho collegato il mio lcd nel modo da lui suggerito ed ha funzionato subito Voglio segnalare che ho utilizzato i pin digitali 0 e 1 nel collegare il mio LCD Questo da problemi per l'uso della seriale ************************** Prova sensore di temperatura LM35 misura temperature positive e negative, si collega il sensore come indicato nel datasheet della Texas ( Pag. 11, fig 18). Le due tensioni prelevate Vref a monte dei diodi sul pin GND del sensore, e Vout a monte della resistenza da 18 K sul pin Out del sensore. Le due tensioni vengono inviate ai Pin Analog 0 = Vout e Pin Analog 1 = Vref Lo sketch esegue la diffenza fra le due e successivamente le trasforma in Temperature moltiplicandole per fatt In fatt metteremo una costante o una formula a seconda del caso, vedere sul blog incato sopra. Ho utilizzato l'istruzione analogReference (); leggere sulla guida di arduino le varie opzioni. In questa prova ho utilizzato l'opzione analogReference(EXTERNAL); ed ho fornito come tensione di riferimento i 3,3V dal Pin di arduino stesso. Se non si desidera utilizzare questa opzione si può omettere l'istruzione il filo di collegamento dal pin AREF al pin 3,3V , e bisogna sostriture la formula per calcolre fatt float fatt = (3.3/1024)*100; // sostituire questa in questa float fatt = (5.0/1024)*100; */ #include (liquidcrystal .h="")//correggere se necessario // initialize the library with // the numbers of the interface pins // Pin utilizzati // pin 5 --- RS ( tipo di comando da inviare) // pin 4 --- Enable // pin 0,1,2,3 --- Dati si utilizzano 4 bit LiquidCrystal lcd(5, 4, 3, 2, 1, 0); float fatt = (3.3/1024)*100; // moltiplicando per questo fattore si convertono // i dati ricavati pal pin analog in Temperature float temp; // Temperatura misurata int Vref; // Lettura Vref dal piedino LM35 con i diodi int Vout; // lettura sensore LM35 int tempPin0 = 0; // pin che rileva il valore della tensione sul pin LM35 Vout int tempPin1 = 1; // pin che rileva il valore di tensione di riferimento Vref void setup() { // Serial.begin(9600); analogReference(EXTERNAL); // Ho collegato il 3.3V sul pin AEREF } void loop() { //lettura sensori Vout = (analogRead(tempPin0)); // lettura Vout LM35 //lettura secondo sensore Vref = analogRead(tempPin1); // lettura Vref (a monte dei diodi) temp = ((Vout - Vref)* fatt); // trasformazione delle letture in Temperatura // temp = round (temp,1); // Serial.print("Temp_= "); // Serial.print(temp); // Serial.print("*C"); //Serial.println(); // Serial.println(); lcd.clear (); lcd.print("Temp"); lcd.setCursor(6, 1); lcd.print ( temp,1); delay(2000); }
Questo lo schema da utilizzare
Il collegameto LCD dovrete adattarlo al modello in Vostro possesso.
Potrete usare lo sketch utilizzando la seriale e visualizzando i risultati sul monitor, oppure con un LCD.
Dovrete apportare le modifiche togliendo le "//" rem alle istruzioni ed inserendo invece le "//" sulle istruzioni riguardanti LCD.
La resistenza R1 indicata nello schema è da 15Komm, nelle istruzioni della Texas è invece di 18Komm.
L' istruzione analogReference() è facoltativa basterà non collegare il ponticello fra il Pin 3,3V ed il Pin AERF di Arduino, e cambiare la formula
da questa float fatt = (3.3/1024)*100; a questa float fatt = (5.0/1024)*100;
Lo sketch è commentato e descritto in tutti i particolari, se avete domande o dubbi chiedete.
Vedremo prossimamente eventuali aggiunte e miglioramenti.
Il sensore nel congelatore:
grazie per l'attenzione
nel prossimo post misureremo l'umidità relativa.
In the next post we will measure the relative humidity.
lo sketch:
/* Sergio & Adriano Prenleloup
Misura temperature positive e negative con LM35
***** Versione 1.02 ******
***** 08/01/2014 ******
**************************
Per lo schema di collegamento Lcd vedi post su http://avventurarduino.blogspot.it
Utilizzo del LCD ACM1602B
Per utilizzare questo lcd seguite le indicazioni
di Mauro Alfieri www.mauroalfieri.it
Ho collegato il mio lcd nel modo da lui suggerito ed ha funzionato subito
Voglio segnalare che ho utilizzato i pin digitali 0 e 1 nel collegare il mio LCD
Questo da problemi per l'uso della seriale
**************************
NOTA BENE questo sketch è utilizzabile sia per l'son con display LCD
sia con l'utilizzo della porta seriale visualizzando sul monitor le temperature
Basterà tolgliere le rem "//" alle istruzioni riguardanti la seriale ed
aggiungere le rem "//" alle istruzioni riguardanti il display LCD.
****************************
Prova sensore di temperatura LM35 misura temperature positive e negative,
si collega il sensore come indicato nel datasheet della Texas ( Pag. 11, fig 18).
Le due tensioni prelevate Vref a monte dei diodi sul pin GND del sensore,
e Vout a monte della resistenza da 18 K sul pin Out del sensore.
Le due tensioni vengono inviate ai Pin
Analog 0 = Vout e Pin Analog 1 = Vref
Lo sketch esegue la diffenza fra le due e successivamente le trasforma in
Temperature moltiplicandole per "fatt"
In fatt metteremo una costante o una formula a seconda del caso,
vedere sul blog indicato sopra.
Ho utilizzato l'istruzione analogReference (); leggere sulla guida
di arduino le varie opzioni.
In questa prova ho utilizzato l'opzione analogReference(EXTERNAL); ed
ho fornito come tensione di riferimento i 3,3V dal Pin di arduino stesso.
Se non si desidera utilizzare questa opzione si può omettere l'istruzione
il filo di collegamento dal pin AREF al pin 3,3V.
e bisogna sostriture la formula per calcolare " fatt "
float fatt = (3.3/1024)*100; // sostituire questa
con questa float fatt = (5.0/1024)*100;
*/
#include <LiquidCrystal.h>
// initialize the library with
// the numbers of the interface pins
// Pin utilizzati
// pin 5 --- RS ( tipo di comando da inviare)
// pin 4 --- Enable
// pin 0,1,2,3 --- Dati si utilizzano 4 bit
LiquidCrystal lcd(5, 4, 3, 2, 1, 0);
float fatt = (3.3/1024)*100; // moltiplicando per questo fattore si convertono
// i dati ricavati pal pin analog in Temperature
float temp; // Temperatura misurata
int Vref; // Lettura Vref dal piedino LM35 con i diodi
int Vout; // lettura sensore LM35
int tempPin0 = 0; // pin che rileva il valore della tensione sul pin LM35 Vout
int tempPin1 = 1; // pin che rileva il valore di tensione di riferimento Vref
void setup()
{
// Serial.begin(9600); // se non viene utilizzato LCD
// possiamo visualizzare sul monitor i risultati
analogReference(EXTERNAL); // Ho collegato il 3.3V sul pin AEREF
// questa istruzione si può eliminare facendo le correzioni descritte
}
void loop()
{
//lettura sensore
Vout = (analogRead(tempPin0)); // lettura Vout LM35
Vref = analogRead(tempPin1); // lettura Vref (a monte dei diodi)
temp = ((Vout - Vref)* fatt); // trasformazione delle letture in Temperatura
// senza LCD si possono utilizzare le seguenti istruzioni
// per visualizzare i risultati sul monitor
// temp = round (temp,1);
// Serial.print("Temp_= ");
// Serial.print(temp);
// Serial.print("*C");
//Serial.println();
// Serial.println();
lcd.clear ();
lcd.print("Temp");
lcd.setCursor(6, 1);
lcd.print ( temp,1);
delay(2000); // tempo di attesa fra le letture
}
Nessun commento:
Posta un commento
Vi ringrazio per la lettura e vi invito al prossimo post.
Se il post vi è stato utile, vi è piaciuto oppure no, scrivete un commento.
Un saluto a tutti.
Sergio
Copyright - Condizioni d’uso - Disclaimer
http://avventurarduino.blogspot.it/2012/10/inizia-lavventura-arduino-12-settembre.html