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) lub0x28(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łaszaExceptionz 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 rodziny0x10), jak i DS18B20 / DS1822 (kody rodziny0x28/0x22), w tym temperatury ujemne.Wywołaj
convert_temp()i odczekaj na zakończenie konwersji przed wywołaniem tej metody.