ds18x20 — driver per sensore di temperatura DS18x20¶
Il modulo ds18x20 fornisce un driver per i sensori di temperatura digitali 1-Wire Maxim/Dallas DS18B20, DS18S20 e DS1822. È costruito sopra il modulo onewire e supporta più sensori che condividono un singolo bus.
Esempio:
import time
from machine import Pin
from onewire import OneWire
from ds18x20 import DS18X20
ds = DS18X20(OneWire(Pin("P7")))
roms = ds.scan()
ds.convert_temp()
time.sleep_ms(750)
for rom in roms:
print(rom, ds.read_temp(rom))
Classi¶
- class ds18x20.DS18X20(onewire: OneWire)¶
Costruisce un driver DS18x20 associato al bus
onewire.OneWirespecificato. Più sensori DS18x20 possono condividere lo stesso bus.- scan() list[bytearray]¶
Effettua una ricerca sul bus 1-Wire sottostante e restituisce un elenco di codici ROM che corrispondono ai dispositivi della famiglia DS18x20. Vengono restituiti solo i ROM il cui codice di famiglia è
0x10(DS18S20),0x22(DS1822) o0x28(DS18B20); gli altri dispositivi 1-Wire sullo stesso bus vengono filtrati.
- convert_temp() None¶
Invia un comando di conversione della temperatura a tutti i sensori DS18x20 sul bus contemporaneamente (usando SKIP ROM). Dopo aver chiamato questo metodo devi attendere il completamento della conversione (fino a 750 ms alla risoluzione predefinita di 12 bit) prima di chiamare
read_temp().
- read_scratch(rom: bytes | bytearray) bytearray¶
Legge lo scratchpad di 9 byte dal dispositivo indirizzato da rom e lo restituisce come un
bytearray. Il CRC dello scratchpad viene verificato; sollevaExceptioncon il messaggio"CRC error"in caso di mancata corrispondenza del CRC.Nota
Il buffer restituito è il buffer interno del driver e viene sovrascritto dalle chiamate successive.
- write_scratch(rom: bytes | bytearray, buf: bytes | bytearray) None¶
Scrive 3 byte nello scratchpad del dispositivo indirizzato da rom. buf deve contenere i valori del trigger di allarme alto (TH), del trigger di allarme basso (TL) e del registro di configurazione.
- read_temp(rom: bytes | bytearray) float¶
Legge la temperatura convertita più di recente dal dispositivo indirizzato da rom e la restituisce in gradi Celsius come un
float. Gestisce sia le codifiche DS18S20 (codice di famiglia0x10) sia quelle DS18B20 / DS1822 (codici di famiglia0x28/0x22), incluse le temperature negative.Chiama
convert_temp()e attendi il completamento della conversione prima di chiamare questo metodo.