OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10280|回复: 25

HX711称重模块资源分享

[复制链接]

10

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2018-5-14
在线时间
46 小时
发表于 2018-10-29 12:48:55 | 显示全部楼层 |阅读模式
感谢各位大佬的帮助,让我完成了称重模块的校准
现在把资料分享给大家

HX711称重完结版.zip

3.97 MB, 下载次数: 2997

数据实时存储进24C02

行至水穷处 坐看云起时
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2019-6-19
在线时间
17 小时
发表于 2019-9-9 21:50:13 | 显示全部楼层
往单片机发送一个amd1字符串 放了100g砝码和没放砝码都是 0g 这是什么情况呢
回复 支持 2 反对 0

使用道具 举报

10

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2018-5-14
在线时间
46 小时
 楼主| 发表于 2018-12-8 17:36:09 | 显示全部楼层
秋天 发表于 2018-12-6 13:54
[mw_shl_code=c,true]#include "stm32f10x.h"
#include "hx711.h"
#include "delay.h"

这代码怎么直接抠出来的
行至水穷处 坐看云起时
回复 支持 1 反对 0

使用道具 举报

10

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2018-5-14
在线时间
46 小时
 楼主| 发表于 2018-10-29 12:49:31 | 显示全部楼层
自顶  刚才帖子发错版块了,尴尬了
行至水穷处 坐看云起时
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
11
金钱
11
注册时间
2018-11-30
在线时间
3 小时
发表于 2018-12-6 13:40:20 | 显示全部楼层
顶一下
回复 支持 反对

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
发表于 2018-12-6 13:50:10 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
发表于 2018-12-6 13:54:34 | 显示全部楼层
[mw_shl_code=c,true]#include "stm32f10x.h"
#include "hx711.h"
#include "delay.h"
#include "24cxx.h"


#define ADIO GPIOC        //ad口  
#define DATA GPIO_Pin_11          //数据口
#define CLK  GPIO_Pin_10          //时钟
#define ADCLK RCC_APB2Periph_GPIOC  //生命ad时钟挂在APB2P.C上

double hx711_buffer=0;//定义hx711_buffer来接受hx711read读取的信息
double        weight_maopi=0;//毛皮重量
double weight_shiwu=0;//实物重量
u32 am;//毛皮重量整数部分
  double a;//处理毛皮重量等同于毛皮重量(可有可无)
  double b;//毛皮重量小数部分
  const u8 TEXT_Buffer[]={"WarShipSTM32 IIC TEST"};//可有可无
  #define SIZE sizeof(TEXT_Buffer)        //只是为了得到SIZE
void ADInit(void) //AD初始化
{
        GPIO_InitTypeDef GPIO_InitStructure; //结构体

        RCC_APB2PeriphClockCmd(ADCLK,ENABLE); //使能时钟口

        GPIO_InitStructure.GPIO_Pin = CLK; //PC10为时钟口
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(ADIO,&GPIO_InitStructure); //PC.10时钟口

        GPIO_InitStructure.GPIO_Pin = DATA; //PC11为数据口
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(ADIO,&GPIO_InitStructure);        //PC.11数据口
        }

unsigned long HX711_Read(void)  //读取711读到的数据
{
        unsigned long val = 0;
        unsigned char i = 0;
        float p;
        GPIO_SetBits(ADIO,DATA);
        GPIO_ResetBits(ADIO,CLK);
        while(GPIO_ReadInputDataBit(ADIO,DATA));
        delay_us(1);
        for(i=0;i<24;i++)
        {
                GPIO_SetBits(ADIO,CLK);
                val=val<<1;
                delay_us(1);  
                GPIO_ResetBits(ADIO,CLK);
                if(GPIO_ReadInputDataBit(ADIO,DATA))
                val++;
                delay_us(1);
        }
        GPIO_SetBits(ADIO,CLK);
        val = val^0x800000;
        delay_us(1);
        GPIO_ResetBits(ADIO,CLK);
        delay_us(1);
        p=val;
        return p;        
}
double Get_Maopi(void)
  {
          hx711_buffer=HX711_Read();
          weight_maopi=hx711_buffer/100;
          weight_maopi=weight_maopi/7.26;//参数可换,不同的称重模块对应不同的参数,需自己标定
          a=weight_maopi;
          am=(u32)weight_maopi;
          b=a-am;//处理毛皮重量,分整数小数分别存入24C02的两个地址位。
          if(am-12120<20) //并不是简单地掉电存储,而是通过获取毛皮的数据得到的am在12120左右,这个可以靠
                {             //每个人的毛皮重量进行设定,取巧设计,不是掉电存储,是每次都会存储。因为高精度的6kg称重模块会受外界影响,其数据是动态的
                        AT24CXX_Write(0,(u8*)&am,SIZE);//存整数到24C02的0地址
                        AT24CXX_Write(5,(u8*)&b,SIZE);//存小数到24C02的5地址
                        weight_maopi=am+b;//再将整数与小数相加赋值给毛皮
                }
         else
                {
                    AT24CXX_Read(0,(u8*)&am,SIZE);//读整数从24C02的0地址
                        AT24CXX_Read(5,(u8*)&b,SIZE);//读小数数从24C02的0地址
                    weight_maopi=am+b;//再将整数与小数相加赋值给毛皮
                }
     return a;        //返回值       
  }
double Get_Weight(void)
{
        double m;
        hx711_buffer=HX711_Read();
        hx711_buffer=hx711_buffer/100;
        hx711_buffer=hx711_buffer/7.26;//处理实物重量
        if(hx711_buffer>weight_maopi)
        {
        weight_shiwu=hx711_buffer;
        weight_shiwu=weight_shiwu-weight_maopi;
        }
        m=weight_shiwu;
        return m;
}


[/mw_shl_code]
Loto虚拟示波器 官方qq群: 706769836 https://shop296209296.taobao.com/shop/view_shop.htm?tracelog=t
回复 支持 反对

使用道具 举报

0

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2019-2-11
在线时间
15 小时
发表于 2019-2-22 11:23:24 | 显示全部楼层
本帖最后由 zm0769 于 2019-2-22 11:25 编辑

if(strcmp(str1,USART_RX_BUF)==0) 这句有警告,但可以编译过去。程序下载到开发板没有反应。注释掉后,串口打印出0

警告: str1:是char指针,USART_RX_BUF:是u8  
回复 支持 反对

使用道具 举报

10

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2018-5-14
在线时间
46 小时
 楼主| 发表于 2019-2-22 20:49:10 | 显示全部楼层
zm0769 发表于 2019-2-22 11:23
if(strcmp(str1,USART_RX_BUF)==0) 这句有警告,但可以编译过去。程序下载到开发板没有反应。注释掉后,串 ...

我这是战舰版,emmmm我的下载的开发版可以执行,emmmmmm不过还是感谢你提出的这个建议
行至水穷处 坐看云起时
回复 支持 反对

使用道具 举报

0

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2019-2-11
在线时间
15 小时
发表于 2019-2-23 15:45:39 | 显示全部楼层

微信图片_20190223153407.png 我用的也是战舰的板子,下载到板子里,串口收不到数据。有问题就是图片标记的位置,能否具体解释下,不胜感激!
回复 支持 反对

使用道具 举报

10

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2018-5-14
在线时间
46 小时
 楼主| 发表于 2019-2-24 11:48:26 | 显示全部楼层
zm0769 发表于 2019-2-23 15:45
我用的也是战舰的板子,下载到板子里,串口收不到数据。有问题就是图片标记的位置,能否具体解释下,不胜 ...

这个是串口调试工具要往单片机发送一个amd1字符串,因为我们做的是个需要多个传感器的项目,调试的时候需要往单片机发送不同的指令,对应不同传感器到串口出数据。
行至水穷处 坐看云起时
回复 支持 反对

使用道具 举报

0

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2019-2-11
在线时间
15 小时
发表于 2019-2-25 20:03:03 | 显示全部楼层
受教了,谢谢!
回复 支持 反对

使用道具 举报

10

主题

103

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2018-5-14
在线时间
46 小时
 楼主| 发表于 2019-2-25 20:28:35 | 显示全部楼层
zm0769 发表于 2019-2-25 20:03
受教了,谢谢!

一同进步一同进步
行至水穷处 坐看云起时
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2019-5-3
在线时间
7 小时
发表于 2019-5-3 20:47:32 | 显示全部楼层
楼主,我做的和你差不多,请问你这有误差吗?校准系数7.26是用一个具体砝码得出的吗?比如用100g标准砝码得出一个对应系数。。。我这样再秤200g/300g/400g的砝码就会出现误差了,不知道你有没有
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2019-5-3
在线时间
7 小时
发表于 2019-5-3 20:54:20 | 显示全部楼层
因为现在要做的精确点 不过这种只校准一次得到的系数 随着重量的增加就不准了 毕竟压力传感器不是绝对的线性关系 很疑惑 误差应该是因为AD值的波动引起的 七位数AD值的后3位不停波动 将其整除100后 相当于将后两位舍了 这样也有误差了

不知这么长时间过去楼主有没有进行优化 或者说 楼主的没有很大误差 希望指点下!!!!!!谢谢!!!!!
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2019-9-7
在线时间
1 小时
发表于 2019-9-7 10:43:17 | 显示全部楼层
楼主S型的传感器可以用吗?
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-9-9
在线时间
4 小时
发表于 2019-9-16 19:49:48 | 显示全部楼层
这个和STM32有显示重量的程序吗,我好像没看到有LCD程序诶
回复 支持 反对

使用道具 举报

10

主题

293

帖子

0

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2019-6-3
在线时间
107 小时
发表于 2019-9-17 16:36:15 | 显示全部楼层
精度怎么样?
回复 支持 反对

使用道具 举报

2

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
162
金钱
162
注册时间
2019-9-27
在线时间
37 小时
发表于 2019-10-28 20:47:12 | 显示全部楼层
十分感谢
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2019-12-16
在线时间
4 小时
发表于 2020-1-13 17:09:09 | 显示全部楼层
accuracy 发表于 2019-9-9 21:50
往单片机发送一个amd1字符串 放了100g砝码和没放砝码都是 0g 这是什么情况呢

估计是楼主给的代码是显示处理后的数据,也就是显示实物重量 = 总重量 - 皮重,你试试把代码改一下,不要皮重,直接显示总重量。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2020-1-20
在线时间
2 小时
发表于 2020-1-22 15:05:16 | 显示全部楼层
楼主,我这程序下到板子里之后为什么显示的 是0g?C:\Users\Administrator\Desktop\D2Z37ZQ@JT~5APOAZPHC~BU.png
回复 支持 反对

使用道具 举报

2

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2019-5-5
在线时间
98 小时
发表于 2020-7-6 14:53:11 | 显示全部楼层
谢谢楼主
回复 支持 反对

使用道具 举报

2

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2019-5-5
在线时间
98 小时
发表于 2020-7-6 15:16:44 | 显示全部楼层
我爱单片机23 发表于 2020-1-22 15:05
楼主,我这程序下到板子里之后为什么显示的 是0g?

哥们我也是0g,你验证过了么,这代码可以用么
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2020-8-6
在线时间
3 小时
发表于 2020-8-14 09:08:03 | 显示全部楼层
怎么能这么优秀
回复 支持 反对

使用道具 举报

0

主题

19

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
221
金钱
221
注册时间
2020-9-12
在线时间
26 小时
发表于 2020-12-9 16:48:20 | 显示全部楼层
楼主,为啥我下进去没反应啊,给单片机发了and1了,我用的也是战舰
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2021-3-10
在线时间
16 小时
发表于 2021-3-10 16:15:18 | 显示全部楼层
单片机硬件 发表于 2020-12-9 16:48
楼主,为啥我下进去没反应啊,给单片机发了and1了,我用的也是战舰

同没反应
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 15:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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