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) nebo 0x28 (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á Exception se 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 rodiny 0x10) i DS18B20 / DS1822 (kódy rodiny 0x28 / 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.