ds18x20 — DS18x20-Temperatursensortreiber

Das Modul ds18x20 stellt einen Treiber für die digitalen 1-Wire-Temperatursensoren DS18B20, DS18S20 und DS1822 von Maxim/Dallas bereit. Es baut auf dem Modul onewire auf und unterstützt mehrere Sensoren, die sich einen einzigen Bus teilen.

Beispiel:

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))

Klassen

class ds18x20.DS18X20(onewire: OneWire)

Konstruiert einen DS18x20-Treiber, der an den angegebenen onewire.OneWire-Bus gebunden ist. Mehrere DS18x20-Sensoren können sich denselben Bus teilen.

scan() list[bytearray]

Durchsucht den zugrunde liegenden 1-Wire-Bus und gibt eine Liste von ROM-Codes zurück, die DS18x20-Geräten entsprechen. Es werden nur ROMs zurückgegeben, deren Family Code 0x10 (DS18S20), 0x22 (DS1822) oder 0x28 (DS18B20) ist; andere 1-Wire-Geräte am selben Bus werden herausgefiltert.

convert_temp() None

Sendet einen Temperaturwandlungsbefehl gleichzeitig an alle DS18x20-Sensoren am Bus (mittels SKIP ROM). Nach dem Aufruf dieser Methode müssen Sie warten, bis die Wandlung abgeschlossen ist (bis zu 750 ms bei der standardmäßigen 12-Bit-Auflösung), bevor Sie read_temp() aufrufen.

read_scratch(rom: bytes | bytearray) bytearray

Liest die 9-Byte-Scratchpad-Daten vom Gerät mit der Adresse rom und gibt sie als bytearray zurück. Die Scratchpad-CRC wird überprüft; löst Exception mit der Meldung "CRC error" bei einer CRC-Abweichung aus.

Bemerkung

Der zurückgegebene Puffer ist der interne Puffer des Treibers und wird durch nachfolgende Aufrufe überschrieben.

write_scratch(rom: bytes | bytearray, buf: bytes | bytearray) None

Schreibt 3 Bytes in das Scratchpad des Geräts mit der Adresse rom. buf muss die Werte für den oberen Alarmschwellenwert (TH), den unteren Alarmschwellenwert (TL) und das Konfigurationsregister enthalten.

read_temp(rom: bytes | bytearray) float

Liest die zuletzt gewandelte Temperatur vom Gerät mit der Adresse rom und gibt sie als float in Grad Celsius zurück. Verarbeitet sowohl die Kodierungen des DS18S20 (Family Code 0x10) als auch des DS18B20 / DS1822 (Family Codes 0x28 / 0x22), einschließlich negativer Temperaturen.

Rufen Sie convert_temp() auf und warten Sie, bis die Wandlung abgeschlossen ist, bevor Sie diese Methode aufrufen.