ds18x20 — sterownik czujnika temperatury DS18x20

Moduł ds18x20 udostępnia sterownik dla cyfrowych czujników temperatury 1-Wire Maxim/Dallas DS18B20, DS18S20 i DS1822. Jest zbudowany na bazie modułu onewire i obsługuje wiele czujników współdzielących jedną magistralę.

Przykład:

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

Klasy

class ds18x20.DS18X20(onewire: OneWire)

Tworzy sterownik DS18x20 powiązany z podaną magistralą onewire.OneWire. Wiele czujników DS18x20 może współdzielić tę samą magistralę.

scan() list[bytearray]

Przeszukuje bazową magistralę 1-Wire i zwraca listę kodów ROM odpowiadających urządzeniom z rodziny DS18x20. Zwracane są tylko kody ROM, których kod rodziny to 0x10 (DS18S20), 0x22 (DS1822) lub 0x28 (DS18B20); inne urządzenia 1-Wire na tej samej magistrali są odfiltrowywane.

convert_temp() None

Wydaje polecenie konwersji temperatury jednocześnie do wszystkich czujników DS18x20 na magistrali (przy użyciu SKIP ROM). Po wywołaniu tej metody musisz odczekać na zakończenie konwersji (do 750 ms przy domyślnej rozdzielczości 12-bitowej) przed wywołaniem read_temp().

read_scratch(rom: bytes | bytearray) bytearray

Odczytuje 9-bajtowy scratchpad z urządzenia adresowanego przez rom i zwraca go jako bytearray. Suma kontrolna CRC scratchpada jest weryfikowana; zgłasza Exception z komunikatem "CRC error" w przypadku niezgodności CRC.

Informacja

Zwracany bufor jest wewnętrznym buforem sterownika i jest nadpisywany przy kolejnych wywołaniach.

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

Zapisuje 3 bajty do scratchpada urządzenia adresowanego przez rom. buf musi zawierać wartości progu alarmu górnego (TH), progu alarmu dolnego (TL) oraz rejestru konfiguracyjnego.

read_temp(rom: bytes | bytearray) float

Odczytuje ostatnio przekonwertowaną temperaturę z urządzenia adresowanego przez rom i zwraca ją w stopniach Celsjusza jako float. Obsługuje kodowania zarówno DS18S20 (kod rodziny 0x10), jak i DS18B20 / DS1822 (kody rodziny 0x28 / 0x22), w tym temperatury ujemne.

Wywołaj convert_temp() i odczekaj na zakończenie konwersji przed wywołaniem tej metody.