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()并等待转换完成后,再调用此方法。