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)

构造一个绑定到给定 onewire.OneWire 总线的 DS18x20 驱动程序。多个 DS18x20 传感器可以共享同一条总线。

scan() list[bytearray]

搜索底层的 1-Wire 总线,并返回与 DS18x20 系列设备相对应的 ROM 码列表。只返回家族码为 0x10(DS18S20)、0x22(DS1822)或 0x28(DS18B20)的 ROM;同一总线上的其他 1-Wire 设备会被过滤掉。

convert_temp() None

向总线上的所有 DS18x20 传感器同时发出温度转换命令(使用 SKIP ROM)。调用此方法后,你必须等待转换完成(在默认的 12 位分辨率下最长 750 毫秒),然后再调用 read_temp()

read_scratch(rom: bytes | bytearray) bytearray

从由 rom 寻址的设备读取 9 字节的暂存器,并以 bytearray 形式返回。会校验暂存器的 CRC;CRC 不匹配时引发带有消息 "CRC error"Exception

备注

返回的缓冲区是驱动程序的内部缓冲区,会被后续调用覆盖。

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

向由 rom 寻址的设备的暂存器写入 3 字节。buf 必须包含高温报警触发值(TH)、低温报警触发值(TL)和配置寄存器的值。

read_temp(rom: bytes | bytearray) float

从由 rom 寻址的设备读取最近一次转换得到的温度,并以 float 形式返回其摄氏度值。可处理 DS18S20(家族码 0x10)以及 DS18B20 / DS1822(家族码 0x28 / 0x22)两种编码,包括负温度。

调用 convert_temp() 并等待转换完成后,再调用此方法。