在PYBoard上使用DS18B20数字温度传感器
DS18B20数字温度传感器
单总线驱动
在MicroPython的源码中,带有了单总线的驱动,可以很方便的驱动单总线器件,如读取温度传感器DS18B20。
首先在MicroPython的源码目录中,进入drivers\onewire\目录,然后将目录下的文件ds18x20.py和onewire.py复制到PYBFLASH磁盘的根目录。复制文件后要安全退出磁盘,然后重新接入,不然找不到文件。
使用下面方法定义单总线对象(下面使用了Y10引脚,可以换成其它引脚)
from machine import Pin
import onewire
ow=onewire.OneWire(Pin('Y10'))
定义DS18X20对象
from ds18x20 import DS18X20
d = DS18X20(ow)
使用scan()扫描器件
使用convert_temp()启动转换
使用read_temp()读取数据
每次读取温度,都需要重复上面两步
参考程序:
from machine import Pin
import onewire
from ds18x20 import DS18X20
import time
ow=onewire.OneWire(Pin('Y10'))
d = DS18X20(ow)
rom = d.scan()
while 1:
d.convert_temp()
d.read_temp(rom[0])
time.sleep_ms(500)
如果只有一个DS18X20,一个更加简单的方法如下:
from machine import Pin
import onewire
ow=onewire.OneWire(Pin('Y10'))
def DS18X20():
ow.reset()
ow.writebyte(0xCC)
ow.writebyte(0x44)
ow.reset()
ow.writebyte(0xCC)
ow.writebyte(0xBE)
d1=ow.readbyte()
d2=ow.readbyte()
return (d1+d2*256)/16