找回密码
 立即注册

QQ登录

只需一步,快速开始

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

HX711读取的AD值与实际重量的转换

[复制链接]
跳转到指定楼层
楼主
ID:696588 发表于 2020-4-29 09:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
根据论坛各位大佬的代码,ReadHX711可以得到一个AD值,但是如何将他转换成实际质量这一步没有详细介绍.是有什么公式吗?
可否请各位大佬们指点一下具体如何转换的吗,无比感谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:741674 发表于 2020-4-30 15:16 | 只看该作者
1)网上代码很多,那个宝这个模块还带秤也十几块钱送代码,学会利用资源。2)其实一点就破,用标准砝码校准的,没有重物下得到去皮AD值,放个100g得到一个校准AD值,接下来知道了吧,就是个求解一元一次方程y=ax+b的系数
回复

使用道具 举报

板凳
ID:539117 发表于 2020-4-30 16:17 | 只看该作者
假设重力为 A Kg, (x<5Kg),测量出来的 AD 值为 y 5Kg 传感器输出,发送给 AD 模块儿的电压为 A Kg * 4.3mV / 5Kg = 0.86A mV 经过128倍增益后为 128 * 0.86A = 110.08AmV 转换为24bit 数字信号为 110.08A mV * 2 24  / 4.3V = 429496.7296A 所以 y = 429496.7296A /100 = 4294.967296 A 因此得出 A = y / 4294.967296 Kg ≈ y / 4.30 g 所以得出程序中计算公式 Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/4.30+0.05); //+0.05是为了四舍五入百分位 特别注意:  因为不同的传感器斜率特性曲线不一样,因此,每一个传感器需要矫正这里 的4.30这个除数。 当发现测试出来的重量偏大时,增加该数值。 如果测试出来的重量偏小时,减小改数值。 该数值一般在4.0-5.0之间。因传感器线性斜率不同而定。 每个传感器都要校准。
回复

使用道具 举报

地板
ID:462827 发表于 2020-4-30 18:32 | 只看该作者
用法码去校准底数就行了
回复

使用道具 举报

5#
ID:696588 发表于 2020-4-30 19:57 | 只看该作者
piliming 发表于 2020-4-30 15:16
1)网上代码很多,那个宝这个模块还带秤也十几块钱送代码,学会利用资源。2)其实一点就破,用标准砝码校准 ...

“放个100g得到一个校准AD值”那怎么读出这个AD值呢...不是很明白
回复

使用道具 举报

6#
ID:696588 发表于 2020-4-30 20:17 | 只看该作者
lzw1997 发表于 2020-4-30 16:17
假设重力为 A Kg, (x

您能帮我看看调试4.xx用这几行代码对吗
void get_pizhong()          //获取皮重,秤盘重量
{
        ulong hx711_dat;
        hx711_dat=ReadCount();                //HX711AD转换数据处理
        temp=(uint)(hx711_dat/100);       
}

void get_weight()          //获取被测物体重量
{
        ulong hx711_data,a;
        uint get,aa;       
        hx711_data=ReadCount();                   //HX711AD转换数据处理
        get=(uint)(hx711_data/100);
        if(get>temp)
        {
                a=ReadCount();
                aa=(uint)(a/100)-temp;
                weight=(uint)((float)aa/4.00+0.05);                                                                                                                                                                       
        }
}

void Display_Weight()
{
       LcdWriteCom(0x80);
        LcdWriteData(weight/1000 + 0x30);
        //LcdWriteData('.');
        LcdWriteData(weight%1000/100 + 0x30);
        LcdWriteData(weight%100/10 + 0x30);
        LcdWriteData(weight%10 + 0x30);
}

回复

使用道具 举报

7#
ID:1029387 发表于 2022-5-24 20:54 | 只看该作者
lzw1997 发表于 2020-4-30 16:17
假设重力为 A Kg, (x

老哥,经过128增益之后的电压值转换为24位数字信号那部分是乘以224还是多少啊
回复

使用道具 举报

8#
ID:883242 发表于 2022-5-24 23:19 | 只看该作者
24K纯纯帅 发表于 2022-5-24 20:54
老哥,经过128增益之后的电压值转换为24位数字信号那部分是乘以224还是多少啊

你不需要考虑什么128增益。因为应变片传感器灵敏度离散性太大了,用理论值乘上增益得到的数据是完全无法用的。

用楼上多位师兄的意见,只能用砝码来标定。如果满量程ADC读数依然没有饱和,那么增益到底是多少,完全没有必要去考虑。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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