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) oder0x28(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
bytearrayzurück. Die Scratchpad-CRC wird überprüft; löstExceptionmit 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
floatin Grad Celsius zurück. Verarbeitet sowohl die Kodierungen des DS18S20 (Family Code0x10) als auch des DS18B20 / DS1822 (Family Codes0x28/0x22), einschließlich negativer Temperaturen.Rufen Sie
convert_temp()auf und warten Sie, bis die Wandlung abgeschlossen ist, bevor Sie diese Methode aufrufen.