Misurare la Temperatura

Da raspibo.
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

DS18x10

Gli integrati della famiglia ds18x10 (come il ds18s10 o il ds18b10) sembrano dei transistor, ma sono termometri che si collegano al bus 1wire. Il collegamento di questi integrati è già stato decritto nella pagina 1Wire e il sensore di temperatura ds18s10

LM35

Anche l'integrato lm35 sembra un transitor ed e' anch'esso un termometro elettronico pero', a differenza dei ds18x10, e' un componente analogico.

L'uso appare banale.

LM35pinout.gif

Questa immagine (tratta da questa pagina e rilasciate in GNU FDL) mostra come collegare l'LM35.

Potete collegare l'integrato a un alimentatore e leggere con un tester la tensione presente nel pin centralecome mostrato in questa figura.

Lm35tester.jpg

Il valore letto e' la temperatura in gradi celsius, un centesimo di volt (10mV) per ogni grado. Se quindi leggerete 0.203V significa che il termometro misura 20.3 gradi.

Questo sensore potrebbe misurare anche temperature negative ma occorre un circuito piu' complesso, in questa configurazione semplice puo' essere un valido strumento per misurare temperature interne di locali, per esempio per costruire un termostato per la caldaia.

E' possibile collegare il sensore LM35 ad un ingresso di un convertitore MCP300x (il collegamento degli integrati MCP300x al Raspberry PI e' descritto nella pagina Input Analogico SPI: gli integrati MCP300x).

IL programma python e' il seguente (il sensore e' collegato all'ingresso 0 di un mcp3008):

#!/usr/bin/env python

import spidev
import time

mcp3008 = spidev.SpiDev(0,0)

adcnum=0
ret=mcp3008.xfer2([1,(8+adcnum)<<4,0])

adcout = ((ret[1]&3) << 8) + ret[2]

print "{:10.3}'C".format(adcout * 3.3 * 100 / 1024)

mcp3008.close()

L'output e':

     20.3'C