ds18x20 — ovladač teplotního senzoru DS18x20¶
Modul ds18x20 poskytuje ovladač pro 1-Wire digitální teplotní senzory Maxim/Dallas DS18B20, DS18S20 a DS1822. Je postaven nad modulem onewire a podporuje sdílení jediné sběrnice více senzory.
Příklad:
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))
Třídy¶
- class ds18x20.DS18X20(onewire: OneWire)¶
Vytvoří ovladač DS18x20 navázaný na danou sběrnici
onewire.OneWire. Stejnou sběrnici může sdílet více senzorů DS18x20.- scan() list[bytearray]¶
Prohledá podkladovou sběrnici 1-Wire a vrátí seznam ROM kódů, které odpovídají zařízením z rodiny DS18x20. Vracejí se pouze ROM, jejichž kód rodiny je
0x10(DS18S20),0x22(DS1822) nebo0x28(DS18B20); ostatní zařízení 1-Wire na stejné sběrnici jsou odfiltrována.
- convert_temp() None¶
Vydá příkaz k převodu teploty všem senzorům DS18x20 na sběrnici současně (pomocí SKIP ROM). Po zavolání této metody musíte před voláním
read_temp()počkat na dokončení převodu (až 750 ms při výchozím 12bitovém rozlišení).
- read_scratch(rom: bytes | bytearray) bytearray¶
Načte 9bajtový scratchpad ze zařízení adresovaného pomocí rom a vrátí jej jako
bytearray. Kontrolní součet CRC scratchpadu je ověřen; při neshodě CRC vyvoláExceptionse zprávou"CRC error".Poznámka
Vrácený buffer je interní buffer ovladače a je přepsán následujícími voláními.
- write_scratch(rom: bytes | bytearray, buf: bytes | bytearray) None¶
Zapíše 3 bajty do scratchpadu zařízení adresovaného pomocí rom. buf musí obsahovat hodnoty horní hranice alarmu (TH), dolní hranice alarmu (TL) a konfiguračního registru.
- read_temp(rom: bytes | bytearray) float¶
Načte naposledy převedenou teplotu ze zařízení adresovaného pomocí rom a vrátí ji ve stupních Celsia jako
float. Zpracovává kódování DS18S20 (kód rodiny0x10) i DS18B20 / DS1822 (kódy rodiny0x28/0x22), včetně záporných teplot.Před voláním této metody zavolejte
convert_temp()a počkejte na dokončení převodu.