1Wire e il sensore di temperatura ds18s10

Da raspibo.
Versione del 3 mar 2013 alle 13:13 di Renzo (discussione | contributi) (Creata pagina con '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 c...')
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
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 il numero che vi comparira' sara' differente. 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/+155 gradi, con accuratezza di 0.5 gradi.

Se il CRC non fosse verificato significa che occorre controllare il cablaggio

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.