找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2887|回复: 3
收起左侧

对基于hx711的电子秤实现单片机程序进行改进

[复制链接]
ID:315567 发表于 2019-5-15 19:53 | 显示全部楼层 |阅读模式
      最近使用了基于hx711的电子秤进行小实验,我是直接从淘宝上买的现成的模块。从卖家那里得到的程序,发现根本不能直接用,我前后买了两个,发现不同的传感器使用的参数的不一样的。网上买的现成的测量模块主要由双桥组成的应变片和hx711 24位A/D转换器组成,基本的思路是:通过电桥不稳定,输出不同的电压,得到不同的重量。也就是说,对于整个模块来说,1克的重量对应1个A/D输出。由此我发现,不同的模块,A/D输出是不一样的。我也参考了了很多网上有关程序的分析,发现都是理论分析,但是一用到实物中根本不太合适。因此,我通过写这一个小帖子,用一点小技巧更快对基于hx711电子秤的实现。
    首先,必须记住一点:实际重量与hx711输出值成正比。那么首先写一个程序子程序实现不同重量下A/D输出的具体值,我做实验是采用的是不放东西上去时记下当前A/D的输出值x1,接着放一个标准重量为y1克的物体,记下当前A/D输出值x2。接着就可以粗略计算出重量与A/D输出值的线性关系,即:G=(d-x1)/(x2-x1/y1)。其中(G为实际的重量,单位为克,d为hx711的输出值)。那么再写一个程序,根据重量与A/D输出值的线性关系,只要根据hx711实际输出值就可以知道物体实际的重量。另外,如果还有一点误差,根据实际情况,调整x1会得到更好的效果。
     这是我最近做小项目时用到的一点点小技巧,可能存在一些不合理的地方,请大家多多包涵。具体实现代码,看附件的文本的文档。

单片机源程序如下:
  1. #include "HX711.h"
  2. #include "HX711.h"
  3. #include “reg52.h”
  4. sbit HX711_DOUT=P3^1;
  5. sbit HX711_SCK=P3^0;
  6. //****************************************************
  7. //延时函数
  8. //****************************************************
  9. void Delay__hx711_us(void)
  10. {
  11.         _nop_();
  12.         _nop_();
  13. }

  14. //****************************************************
  15. //读取HX711
  16. //****************************************************
  17. //返回值为实际重量
  18. int get_Weight(void)        //增益128
  19. {
  20.          long count;
  21.          unsigned char i;
  22.    float weight=0;         
  23.           HX711_DOUT=1;
  24.           Delay__hx711_us();
  25.           HX711_SCK=0;
  26.           count=0;
  27. //         while(HX711_DOUT);
  28.           for(i=0;i<24;i++)
  29.         {
  30.                   HX711_SCK=1;
  31.                   count=count<<1;
  32.                  HX711_SCK=0;
  33.                   if(HX711_DOUT)
  34.                         count++;
  35.         }
  36.         HX711_SCK=1;
  37.         Delay__hx711_us();
  38.         HX711_SCK=0;
  39.                 weight=((long)(count-47625))/129; //式子中的参数根据实际测试参数进行调整,获取方法参照另外一个文档。count对应帖子中的d,47625对应x1,129对应(x2-x1/y1)。参数不合                                                                    //适时一般通过调整x1,可以完成微调。
  40.         return(weight);
  41. }
复制代码
0.png
所有资料51hei提供下载:
基于hx711电子秤改进代码.rar (1.16 KB, 下载次数: 48)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:328014 发表于 2019-5-17 03:30 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:217539 发表于 2019-7-11 09:34 | 显示全部楼层
啥玩意,感觉被蒙蔽了
回复

使用道具 举报

ID:282651 发表于 2019-7-18 11:29 | 显示全部楼层
一直不明白count的值是怎么来的,有什么意义,希望可以解答,谢谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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