MicroPython 中 DS18B20 的使用方法

MicroPython相关代码、库、软件、工具
回复
头像
shaoziyang
帖子: 2295
注册时间: 2019年 10月 21日 13:48

MicroPython 中 DS18B20 的使用方法

#1

帖子 shaoziyang » 2019年 11月 26日 09:57

原帖作者:microCPyE 发表于 2018-5-7

主题

单总线温度传感器模块 DS18B20 在 MicroPython 下的应用

演示说明

本次主要演示多个单总线设备如何进行正常工作。由于手头只有两个DS18B20,所以只用了两个,其它数量使用起来一样的操作。


演示代码

由于当前开发板的当前版本固件自带 onewire.py ,因而,此处仅需要加入ds18x20.py文件即可,请在官方github下载 ds18x20.py文件到当前文件夹。部分开发板未包含onewire模块,则需要同时下载模块文件。

Code: Select all

# -*- coding: UTF-8 -*-

u'''
******************************************************************************
* 文  件:DS18B20_Demo.py
* 概  述:温度传感器
* 版  本:V0.10
* 作  者:Robin Chen
* 日  期:2018年5月2日
* 历  史: 日期             编辑           版本         记录
          2018年5月2日    Robin Chen    V0.10       创建文件
          2018年5月7日    Robin Chen    V0.11       修改了打印内容,并整理到分类文件夹
******************************************************************************'''
from machine import Pin
import onewire
from ds18x20 import DS18X20
from time import sleep

ow=onewire.OneWire(Pin('A0'))  # 此处可修改开发板上所使用的引脚
ds = DS18X20(ow)
rom = ds.scan()     # 扫描总线上的DS18B20,获取模块列表
while True:
    ds.convert_temp()    # 进行温度转换(必备语句)
    print('--------------')
    for i in range(len(rom)):
        dt=ds.read_temp(rom[i])    # 读取温度值
        print('DS-',i,':',dt,'℃')
    print('--------------')
    sleep(3)
总结

DS18B20的工作流程大概是先发送复位信号,使各模块处理等待状态,然后发指令扫描总线上的各模块,并将扫描到的模块地址以元组的形式返回;然后提取各模块的地址,将根据地址将相应的模块存储器中的数据转换为可读的温度值。然后使用函数读出这个值。
注意:在进行read_temp之前,必须先使用
convert_temp()进行数值转换,否则读取的数值不会变,即不会更新。
由于时间仓促,加之理解的还不够深入。部分内容如果有不清楚的,可以在下方留言讨论。谢谢!


本岾参考:http://www.elecfans.com/yuanqijian/sens ... 254_a.html

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章