当前位置:   article > 正文

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

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让芯片进入断电状态。

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

三、驱动源码

  1. import machine,time
  2. from machine import Pin
  3. class HX710:
  4. def __init__(self,pinClk,pinDat):
  5. self.pinClk=Pin(pinClk,Pin.OUT)
  6. self.pinDat=Pin(pinDat,Pin.IN)
  7. self.pinClk.value(1)#CLK=1超过60us进入休眠,CLK=0工作
  8. time.sleep(0.1)
  9. def readData(self):
  10. data=0
  11. self.pinClk.value(0)
  12. #time.sleep_us(100)#CLK=0,经过4个周期数据才准备好
  13. i=0
  14. while i<=1000000:
  15. if self.pinDat.value()==0:#DAT=0说明数据准备好,可以读取
  16. break
  17. else:
  18. i+=1
  19. if i==1000000:
  20. print("read HX710 time out ERR!")
  21. return
  22. for i in range(24):
  23. self.pinClk.value(1)#下降沿读取数据,多两条指令周期待DATA脚输出稳定数据
  24. self.pinClk.value(1)
  25. self.pinClk.value(1)
  26. self.pinClk.value(0)
  27. if self.pinDat.value()==1:
  28. data=data | 1
  29. else:
  30. data=data | 0
  31. data=data<<1
  32. self.pinClk.value(1)#继续休眠
  33. return data
  34. if __name__ == "__main__":
  35. #PwrPin=Pin(25,Pin.OUT)
  36. #PwrPin.on()
  37. #time.sleep_ms(1000)
  38. a=HX710(18,23)#CLK=Pin(18),DATA=Pin(23)
  39. print(a.readData())

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

四、测试情况

实测该芯片精度如下:

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

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/800912
推荐阅读
相关标签
  

闽ICP备14008679号