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

Создаёт драйвер DS18x20, привязанный к заданной шине onewire.OneWire. Несколько датчиков DS18x20 могут использовать одну и ту же шину.

class ds18x20.DS18X20(onewire: OneWire)

Construct a DS18x20 driver bound to the given onewire.OneWire bus. Multiple DS18x20 sensors may share the same bus.

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-байтовый scratchpad с устройства, адресуемого rom, и возвращает его в виде bytearray. Контрольная сумма CRC scratchpad проверяется; возбуждает Exception с сообщением "CRC error" при несовпадении CRC.

Примечание

Возвращаемый буфер является внутренним буфером драйвера и перезаписывается последующими вызовами.

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

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

read_temp(rom: bytes | bytearray) float

Считывает самую последнюю преобразованную температуру с устройства, адресуемого rom, и возвращает её в градусах Цельсия в виде float. Обрабатывает кодировки как DS18S20 (код семейства 0x10), так и DS18B20 / DS1822 (коды семейства 0x28 / 0x22), включая отрицательные температуры.

Вызовите convert_temp() и дождитесь завершения преобразования перед вызовом этого метода.