ESP32使用micropython读取气压(水深)传感器HX710数据

编程入门 行业动态 更新时间:2024-10-21 09:39:56

ESP32使用micropython读取气压(<a href=https://www.elefans.com/category/jswz/34/1724704.html style=水深)传感器HX710数据"/>

ESP32使用micropython读取气压(水深)传感器HX710数据

一、模块基本情况

最近在某宝发现一个气压传感器,下面这个:

标称可以测量0-40kPa气压,如果这样的话,岂不是也可以拿来测水压,进而测量水深?

1米水深大约10kPa,那就是可以测4米水深,而且这个模块用的HX710芯片,是24位AD,精度非常高了,小型场景应用绰绰有余。

二、驱动方法

由于使用的是ESP32,micropython模组,因此就编写了一个micropython环境下的模块驱动程序。

HX710只有2个引脚,一个时钟脚SCK,一个数据脚DATA,时钟脚输入,数据脚输出。

手册里有几条比较重要:

  1. SCK高电平超过60us就会使芯片进入断电状态。因此初始化时,使SCK先拉高,此时DATA也是高电平。

  1. 要使芯片工作,拉低SCK。此时芯片即开始进行AD转换。注意转换周期会超过4个数据读取周期,程序要做一个稍微的等待,直到DATA引脚出现低电平,代表AD转换结束,可以读取数据了。

  1. 拉高SCK,再拉低SCK,即为一个bit的数据读取周期。芯片会在SCK的下降沿输出数据。因此程序在拉低SCK后即可读取数据。要注意的是,SCK拉高后不要有长延时,因为超过60us芯片会停止工作。

  1. 重复拉高SCK、拉低SCK24次,芯片就输出了24位的AD转换结果数据。别忘了最后拉高SCK让芯片进入断电状态。

更多的细节可以翻阅其数据手册。

三、驱动源码

import machine,time
from machine import Pinclass HX710:def __init__(self,pinClk,pinDat):self.pinClk=Pin(pinClk,Pin.OUT)self.pinDat=Pin(pinDat,Pin.IN)self.pinClk.value(1)#CLK=1超过60us进入休眠,CLK=0工作time.sleep(0.1)def readData(self):data=0self.pinClk.value(0)#time.sleep_us(100)#CLK=0,经过4个周期数据才准备好i=0while i<=1000000:if self.pinDat.value()==0:#DAT=0说明数据准备好,可以读取breakelse:i+=1if i==1000000:print("read HX710 time out ERR!")returnfor i in range(24):self.pinClk.value(1)#下降沿读取数据,多两条指令周期待DATA脚输出稳定数据self.pinClk.value(1)self.pinClk.value(1)self.pinClk.value(0)if self.pinDat.value()==1:data=data | 1else:data=data | 0data=data<<1self.pinClk.value(1)#继续休眠return dataif __name__ == "__main__":#PwrPin=Pin(25,Pin.OUT)#PwrPin.on()#time.sleep_ms(1000)a=HX710(18,23)#CLK=Pin(18),DATA=Pin(23)print(a.readData())

ESP32的micropython环境下,实测该程序数据读取周期内持续时间:高电平约15us左右,低电平20us左右,满足要求,可能正常读取数据。

四、测试情况

实测该芯片精度如下:

没有施加额外压力情况下,芯片输出AD结果值约750000左右(笔者在成都,这个应该是成都2月低的气压)。

模块接气管,放入约10cm深的水中,输出值约1870000左右。放入约20cm深的水中,输出值约3250000左右。

这个只是个定性的测试,没有做定量分析。数据看来还是有点像那么回事,比较灵敏;线性度嘛,我手也不是很准,插入深度不准确,待应用时再做线性标定。

所以结论是:这个传感器还行!

更多推荐

ESP32使用micropython读取气压(水深)传感器HX710数据

本文发布于:2024-03-09 10:15:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1724701.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:水深   气压   传感器   数据   micropython

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!