ds18x20
— 温度传感器¶
one wire总线是一种串行总线,仅使用一根电线进行通信(除了用于接地和电源的电线)。DS18B20温度传感器是一种非常流行的单线设备,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。
独特的onewire(单总线)接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
测温范围 -55℃~+125℃,
支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。
工作电源: 3.0~5.5V/DC
DS18X20类¶
-
class
ds18x20.
DS18X20
(onewire)¶
构建DS18X20类。
onewire
- one wire实例对象
-
DS18X20.
scan
()¶
扫描单总线上的ds18b20设备,返回设备地址的列表。
-
DS18X20.
convert_temp
()¶
获取采样温度并进行温度单位转换。
-
DS18X20.
read_temp
(rom)¶
返回该设备的温度值。注意,在 convert_temp()
转换温度后,至少需要等待750毫秒,才能读取温度值。
rom
- 设备地址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | from machine import Pin
import onewire
import time, ds18x20
# 创建one wire总线,引脚为P0
ow = onewire.OneWire(Pin(Pin.P0))
# 实例DS18X20类
ds = ds18x20.DS18X20(ow)
# 扫描总线上的DS18B20,获取设备列表
roms = ds.scan()
while True:
# 转换温度值,每次获取温度前必须调用convert_temp,否则温度数据不会更新
ds.convert_temp()
# convert_temp后至少等待750ms
time.sleep_ms(750)
# 返回总线的上ds18b20设备的温度值
for rom in roms:
print('Device %s temperature is %d'%(bytes(rom),ds.read_temp(rom)))
|