找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6337|回复: 12
打印 上一主题 下一主题
收起左侧

51单片机读取HX711 ad转换值时数据为0?

[复制链接]
跳转到指定楼层
楼主
本帖最后由 LQNB 于 2019-9-13 11:36 编辑

如图,51单片机读取HX711 ad转换值时,程序在while(HX711_DOUT);语句中跳不出来,导致读取数值为0。恳请大佬帮助,感谢

捕获.PNG (104.48 KB, 下载次数: 114)

程序在while(HX711_DOUT);中出不来

程序在while(HX711_DOUT);中出不来

捕获.PNG (20.33 KB, 下载次数: 99)

HX711连接原理图

HX711连接原理图
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:610681 发表于 2019-9-13 12:19 | 只看该作者
有可能是 HX711_DOUT 端口接法错误
回复

使用道具 举报

板凳
ID:516756 发表于 2019-9-13 14:35 | 只看该作者
来51学习的 发表于 2019-9-13 12:19
有可能是 HX711_DOUT 端口接法错误

前辈,直接DOUT和SCK接单片机IO口,可行吗?
回复

使用道具 举报

地板
ID:282850 发表于 2019-9-13 17:33 | 只看该作者
跳不过while,硬件电路有问题。DOUT和SCK可以直接接单片机IO口
回复

使用道具 举报

5#
ID:275826 发表于 2019-9-13 18:43 | 只看该作者
while(HX711_DOUT);语句中跳不出来,接线没有错误的话,估计是芯片有问题
回复

使用道具 举报

6#
ID:516756 发表于 2019-9-13 22:23 | 只看该作者
f556 发表于 2019-9-13 17:33
跳不过while,硬件电路有问题。DOUT和SCK可以直接接单片机IO口

好的,谢谢师傅,我试试看
回复

使用道具 举报

7#
ID:516756 发表于 2019-9-13 22:25 | 只看该作者
tyrl800 发表于 2019-9-13 18:43
while(HX711_DOUT);语句中跳不出来,接线没有错误的话,估计是芯片有问题

好的,我再仔细检查一下,感谢
回复

使用道具 举报

8#
ID:383215 发表于 2019-9-15 17:53 | 只看该作者
最近买了HX711套件调试,一看资料,程序很简单,然而就是这个简简单单的程序,硬是调了两天都调不出来,搞得我简直就是怀疑人生。经过百度,发现很多人遇到这些情况,要么读数永远为0,要么永远是7FFFFF,要么就是while(HX711_DOUT)跳不过,这些问题我全部遇到。一开始以为是上拉电阻问题,官方资料有句话:“与DOUT相连的MCU接口应设置为输入口,并且不接任何拉高或拉低电阻,以减少MCU与ADC之间的电流交换(干扰)”,这句话估计坑了很多人,我也被坑,去掉上拉电阻还是不行,把上拉电阻换成100K,解决了while(HX711_DOUT)跳不过的问题,但是,读数永远为0,之前读数永远为7FFFFF。万般无奈的情况下,用示波器看看波形,不看不知道,一看吓一跳,PD_SCK高电平脉冲宽度高达80us,立即惊出一身冷汗!突然想起官方资料介绍PD_SCK高电平保持最小时间0.2us,最大时间50us,还有更重要的一句话:“如果PD_SCK从低电平变高电平并保持在高电平60us,HX711即进入断电状态”,这个才是重点,估计很多人忽略了。
我是先用51单片机调试程序,然后再移植到AVR单片机,51单片机用的是外部6兆晶体,换成仿真器内部晶体,具体多少兆不太清楚,反正PD_SCK高电平保持时间缩短到20多us,读数立马就正常了,又用外部6兆晶体,把优化等级调到7级,读数正常,此时的PD_SCK高电平保持时间是45us,把优化等级调到6级,读数不正常,PD_SCK高电平保持时间是80us,基本上可以断定,PD_SCK高电平保持时间在50us以内没有问题,while(HX711_DOUT)等待时间高达92.5ms,编程序的时候就要注意了,肯定不能傻等,DOUT和SCK的上拉电阻恢复到10K对程序没有影响,至于“MCU与ADC之间的电流交换(干扰)”,那是后面考虑的事情了,手头上有两套模块,一套的读数是0x008237××,另一套是0x007F3F××,误差怎么那么大?先不管了,慢慢折腾………………。
回复

使用道具 举报

9#
ID:516756 发表于 2019-9-16 16:06 | 只看该作者
kmsj 发表于 2019-9-15 17:53
最近买了HX711套件调试,一看资料,程序很简单,然而就是这个简简单单的程序,硬是调了两天都调不出来,搞 ...

感谢大佬分享,我再试试吧
回复

使用道具 举报

10#
ID:703564 发表于 2020-3-6 15:29 | 只看该作者
大佬,解决了吗,我也是读数一直为零,搞了好久
回复

使用道具 举报

11#
ID:477547 发表于 2022-6-23 14:06 | 只看该作者
simon11 发表于 2020-3-6 15:29
大佬,解决了吗,我也是读数一直为零,搞了好久

IO口的上拉电阻不能太大,1K就好了,我开始用了10K,波形有问题!
回复

使用道具 举报

12#
ID:329625 发表于 2022-6-23 16:20 | 只看该作者
你检查一下你的模数转换读取那一块,和标准函数对比一下
回复

使用道具 举报

13#
ID:479134 发表于 2022-10-10 21:47 | 只看该作者
大佬 我也遇到了 一直卡在while(HX711_DOUT);语句中跳不出来,最后您是咋解决的呀?同样的程序在stc89c51学习板上面就可以 在STC8H单片机上面就不行了。还请指教
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表