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.OneWire specificato. 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) o 0x28 (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; solleva Exception con 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 famiglia 0x10) sia quelle DS18B20 / DS1822 (codici di famiglia 0x28 / 0x22), incluse le temperature negative.

Chiama convert_temp() e attendi il completamento della conversione prima di chiamare questo metodo.