ds18x20
— ds18b20温度传感器驱动¶
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
- 设备地址
1from machine import Pin
2import onewire
3import time, ds18x20
4# 创建one wire总线,引脚为P0
5ow = onewire.OneWire(Pin(Pin.P0))
6# 实例DS18X20类
7ds = ds18x20.DS18X20(ow)
8# 扫描总线上的DS18B20,获取设备列表
9roms = ds.scan()
10
11while True:
12 # 转换温度值,每次获取温度前必须调用convert_temp,否则温度数据不会更新
13 ds.convert_temp()
14 # convert_temp后至少等待750ms
15 time.sleep_ms(750)
16 # 返回总线的上ds18b20设备的温度值
17 for rom in roms:
18 print('Device %s temperature is %d'%(bytes(rom),ds.read_temp(rom)))