1Wire e il sensore di temperatura ds18s10

Da raspibo.
Jump to navigation Jump to search

1wire e' (come dice il nome) un bus che usa un solo filo.

Nei kernel per Raspberry PI (e.g. il kernel usato in Raspbian) c'e' un modulo per la gestione di questo protocollo che usa il PIN 7 (GPIO 4) per le comunicazioni.

Tutte le unita' che usano 1wire devono essere collegate:

  • il filo di massa al PIN 6
  • il filo dati al PIN 7
  • il filo +3.3v al PIN 1

Occorre una resistenza di pullup da 4700ohm tra il filo dati e +3.3v.

Per vedere come funziona prendiamo un rilevatore di temperatura ds18s10. Alla vista appare come un transistor ma e' una unita' molto piu' complessa.

Colleghiamolo come indicato nella figura seguente:

Ds18s10.png

A questo punto carichiamo i moduli kernel per 1wire e quello specifico del 18s10:

# modprobe wire
# modprobe w1_gpio
# modprobe w1_therm

Andiamo a vedere il contenuto della directory /sys/bus/w1/devices:

# cd /sys/bus/w1/devices/
# ls
10-0008021884c0  w1_bus_master1

La directory a sinistra rappresenta il sensore. Ogni sensore ha il suo numero di serie e quindi se ripetete questo esperimento con un vostro sensore il numero che vi comparira' sara' differente (per avere lo stesso numero dovrei prestarvi il mio). Potete anche mettere piu' sensori collegati in parallelo, vi compariranno piu' sottodirectory contrassegnate con il numero di serie dei vari sensori.

Per leggere la temperatura basta leggere il file virtuale w1_slave nella directory del sensore:

# cat 10-0008021884c0/w1_slave 
24 00 4b 46 ff ff 10 10 0d : crc=0d YES
24 00 4b 46 ff ff 10 10 0d t=17750

La temperatura e' in millesimi di grado: 17750 significa che ora qui ci sono 17.750 gradi centigradi. Il range di temperatura del ds18s10 e' -55/+125 gradi, con accuratezza di 0.5 gradi.

Se il CRC non fosse verificato significa che occorre controllare il cablaggio (oppure c'e' stato un disturbo, e.g. un fulmine)

Ci sono altri integrati 1wire, espansioni di output, EPROM, RAM etc. con i relativi moduli nel kernel. Se servono occorre trovare schede che ne rendano comodo l'uso perche' sono a montaggio di superficie (SMT) e quindi scomodi da saldare a mano.

Il sensore viene venduto da TuxGraphics, o Futura Elettronica (ds18b10) Esistono anche sensori ds18b10 gia' confezionati in un involucro stagno per poter essere usati all'esterno, come questo di Futura Elettronica


Nota tutto quanto qui descritto vale per ds18s10 o ds18b10, ci pensa il driver a gestire le differenze fra i due sensori