ds18x20 — драйвер датчика температури DS18x20

Модуль ds18x20 надає драйвер для цифрових датчиків температури Maxim/Dallas DS18B20, DS18S20 та DS1822 з інтерфейсом 1-Wire. Він побудований на основі модуля onewire і підтримує кілька датчиків на одній шині.

Приклад:

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

Класи

class ds18x20.DS18X20(onewire: OneWire)

Створює драйвер DS18x20, прив’язаний до вказаної шини onewire.OneWire. Кілька датчиків DS18x20 можуть спільно використовувати одну шину.

scan() list[bytearray]

Виконує пошук на базовій шині 1-Wire та повертає список ROM-кодів, що відповідають пристроям сімейства DS18x20. Повертаються лише ROM-коди з кодом сімейства 0x10 (DS18S20), 0x22 (DS1822) або 0x28 (DS18B20); інші пристрої 1-Wire на тій самій шині фільтруються.

convert_temp() None

Надсилає команду перетворення температури всім датчикам DS18x20 на шині одночасно (з використанням SKIP ROM). Після виклику цього методу необхідно дочекатися завершення перетворення (до 750 мс при роздільній здатності 12 біт за замовчуванням) перед викликом read_temp().

read_scratch(rom: bytes | bytearray) bytearray

Зчитує 9-байтний скретчпад пристрою, адресованого rom, і повертає його як bytearray. Перевіряється CRC скретчпаду; при невідповідності CRC виникає Exception з повідомленням "CRC error".

Примітка

Повернутий буфер є внутрішнім буфером драйвера і перезаписується наступними викликами.

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

Записує 3 байти у скретчпад пристрою, адресованого rom. buf повинен містити значення верхнього порогу тривоги (TH), нижнього порогу тривоги (TL) та регістра конфігурації.

read_temp(rom: bytes | bytearray) float

Зчитує останню перетворену температуру з пристрою, адресованого rom, і повертає її у градусах Цельсія як float. Підтримує кодування DS18S20 (код сімейства 0x10) та DS18B20 / DS1822 (коди сімейства 0x28 / 0x22), включаючи від’ємні температури.

Викличте convert_temp() та дочекайтесь завершення перетворення перед викликом цього методу.