ciao a tutti,
poichè tramite il sensore di temperatura LM35, nel range tipico di funzionamento (10-90 °C), corrisponde un range di tensione limitato (100-900 mV), mentre Arduino mi fa leggere fino a 5000 mV, come posso fare per utilizzare appieno i 5000 mV, ma nel range di cui sopra (10-90 °C) ?
Basta "shiftare" il range con un amplificatore operazionale magari rail-to-rail così si può provare ad utilizzare gli stessi 5V di arduino
potresti spegare meglio ?
Certo! In pratica quello che vuoi fare tu è un piccolo circuito di condizionamento: vuoi portare un range di 100-900 mV a 0-5 V giusto? Il modo migliore sarebbe quello di sfruttare un semplicissimo amplificatore operazionale in configurazione differenziale. Ho simulato il circuito su PSpice con un ua741 a 6V di alimentazione duale con all'ingresso non invertente la tua tensione dal sensore e sull'ingresso invertente una tensione di 100mV da ottenere esternamente, poi ci sono quattro resistenze per ladeterminazione del guadagno: due da 1K e due da 6.25k (da realizzare con una resistenza con in serie un trimmer multigiri in modo da "tarare" il circuito per avere lo 0 in uscita) .
La pecca di tale circuito è l'alimentazione duale che non ottieni da arduino ma da un alimentatore esterno... Per utilizzare una singola alimentazione devi affidarti a un altro amp op con un circuito un po' più complesso
In allegato hai le simulazioni con il range desiderato
la soluzione é mooolto piú semplice e senza cirsuiti di amplificazione:
Basta settare il riferimento di 1,1V interno.
Ciao Uwe
Be se lui intendeva utilizzare un range completo per il suo sensore allora il reference è la cosa migliore, ma dalla domanda capivo che voleva portare il range a 0-5V
uwefed:
la soluzione é mooolto piú semplice e senza cirsuiti di amplificazione:
Basta settare il riferimento di 1,1V interno.
Sicuramente si, però è una operazione praticamente inutile con un sensore "scrauso" come il LM35 visto che la sua precisione è +/- 0.5°.
Correggetemi se sbaglio: se utilizzo una scala di 1.1 V, con una risoluzione a 10 bit (=1024) ho la possibilità di apprezzare:
1.1 / 1024 = 1.07 mV
ma l'LM35 è preciso (dal punto di vista termico) +-0.5 °C, ed essendo il guadagno del sensore di 10 mv/°C, risulta una precisione (elettrica) di circa 5 mV.
Quindi come dice astrobeed, è inutile spingersi tanto nella capacità di apprezzare 1.07 mv, se il sensore è scrauso di circa 5 mV.
Per cui la domanda diviene: esiste un sensore di temperatura, che mi permette di spingere a questo livello di precisione ?
solman:
Per cui la domanda diviene: esiste un sensore di temperatura, che mi permette di spingere a questo livello di precisione ?
Ci sono NTC molto precise, ma anche abbastanza costose, però serve diversa elettronica analogica per poterle usare bene.
Tutto dipende da quanta precisione reale ti serve, se è solo per lo "sfizio" di vedere la temperatura con i decimi di grado, ben sapendo che l'errore è tale da annullare questa risoluzione, puoi benissimo usare il LM35 con Aref settata al riferimento interno a 1.1V del 328, tensione comunque da verificare con un multimetro, è presente sul pin Aref, perché è soggetta ad una elevata tolleranza nel suo valore, in compenso è molto stabile e pulita.
Ci sono questi
--> http://ww1.microchip.com/downloads/en/DeviceDoc/22203a.pdf
--> http://media.digikey.com/pdf/Data%20Sheets/U.S.Sensors/USP11493.pdf
Ma perché non utilizzi un sensore digitale?
Il DS18B20, ad esempio, ha una accuratezza di 0.5°C nel range tra -10°C e +85°C e ti può fornire risoluzioni da 9 a 12 bit.
e, cosa fondamentale visti i tempi di conversione, la libreria e' asincrona
dai datasheet dell'LM35 e del DS18b20, risultano i seguenti valori:
LM35 |
LM35A |
LM35C |
LM35CA |
LM35D |
DS18b20 |
||
---|---|---|---|---|---|---|---|
Tmin |
-55 |
-55 |
-40 |
-40 |
0 |
-55 |
|
Tmax |
150 |
150 |
110 |
110 |
100 |
125 |
|
accuracy | Ta=25 °C |
0,4 |
0,2 |
0,4 |
0,2 |
0,6 |
0,5 |
Ta=-10 °C |
0,5 |
0,3 |
0,5 |
0,3 |
0,9 |
0,5 |
|
Ta=Tmax |
0,8 |
0,4 |
0,8 |
0,4 |
0,9 |
2 |
|
Ta=Tmin |
0,8 |
0,4 |
0,8 |
0,4 |
0,9 |
2 |
ovvero rispetto alla precisione ("accuracy") a varie temperature, sembrerebbe che l'LM35A sia più prestante.
Perchè allora usare il DS18B20 ?
solman:
ovvero rispetto alla precisione ("accuracy")
Attento a non confondere la "precisione" con l'"accuratezza" ... ti consiglio di verificare il significato tecnico dei due termini
Guglielmo
P.S. : Puoi guardare, ad esempio, QUI
per l'LM35 parlano di:
"Accuracy is defined as the error between the output voltage and 10 mv/°C times the case temperature of the device, at specified conditions of voltage, current, and temperature (expressed in °C)."
mentre per il DS18B20 si parla di:
"Thermometer Error"
penso che in ambo i casi si parli di precisione.
Probabilmente SI ... mal usando il termine "accuratezza" (... potevano benissimo usare "precision") ]
Guglielmo
solman:
dai datasheet dell'LM35 e del DS18b20, risultano i seguenti valori:
LM35 LM35A LM35C LM35CA LM35D DS18b20 Tmin -55 -55 -40 -40 0 -55
Tmax150 150 110 110 100 125 accuracy Ta=25 °C 0,4 0,2 0,4 0,2 0,6 0,5 Ta=-10 °C 0,5 0,3 0,5 0,3 0,9 0,5 Ta=Tmax 0,8 0,4 0,8 0,4 0,9 2 Ta=Tmin 0,8 0,4 0,8 0,4 0,9 2 ovvero rispetto alla precisione ("accuracy") a varie temperature, sembrerebbe che l'LM35A sia più prestante.
Perchè allora usare il DS18B20 ?
Il DB18B20 e l'LM35 sono i due sensori più utilizzati per il rilevamento della temperatura con arduino e sono essenzialmente diversi, innanzittutto perchè uno, il primo, è digitale con una temperatura che si ottiene attraverso dei metodi di un'apposita libreria e settando la sua risoluzione in termini di bit (più è alta la risoluzione , il massimo è 12 bit se non erro, più la temperature è precisa in termini di decimali e minore però è la velocità), il secondo è puramente analogico, indubbiamente più semplice da utilizzare ma allo stesso tempo presenta degli inconvenienti come la tensione di alimentazione che deve essere di esattamente 5V pena la riduzione del range, non deve trovarsi lontano da arduino ecc... Inoltre il DS18B20 comunica con arduino attraverso un bus costituito da un unico filo DQ (One-Wire Bus) che attraverso una resistenza da 4.7kOhm va portato anche ai 5V. Allo stesso pin puoi collegare anche diversi DS18b20 ognuno identificato con il suo indirizzo ( un codice seriale univocodi 64 bit contenuto nella sua ROM) in modo da non consumare pin di arduino. Su internet trovi un sacco di informazioni a riguardo
esatto, la differenza principale e' proprio l'analogico vs il digitale.
mettiamola cosi', anche il vinile puo' essere meglio del cd, ma il cd ti da una certezza fissa, il vinile si degrada, gracchia, suona molto diverso da un impianto ad un altro
con l'lm dovrai stare ben attento alla tensione di alimentazione, con il digitale ci giri la casa intera su un solo filo
insomma, anche se meno preciso dell'LM35, conviene il DS18B20 ?
imho si,
non dimenticare la possibilita' di usane in quantita' su un solo filo, occupando un solo pin, mentre se ti servono 10 misure occupi 10 pin con gli analogici (che non hai nemmeno visto che nessun arduino ha 10 ingressi analogici)