HX711称重模块的使用
HX711称重模块的使用
先贴一段文字(见多了可以跳过直接看下面):
满量程输出电压=激励电压*灵敏度1.0mv/v
例如:供电电压是5v 乘以灵敏度1.0mv/v=满量程5mv。
相当于有5Kg 重力产生时候产生5mV 的电压。
2.
概述:711 模块A 通道带有128 倍信号增益,可以将5mV 的电压放大128 倍,然后采样输
出24bit AD 转换的值,单片机通过指定时序将24bit 数据读出。
详细讲解程序计算原理:
步骤1:如何计算传感器供电电压
HX711 可以在产生VAVDD 和AGND 电压,即711 模块上的E+和E-电压。
该电压通过VAVDD=VBG(R1 +R2 )/R2 计算。
VBG 为模块儿基准电压1.25v
R1 = 20K,R2 = 8.2K
因此得出VAVDD = 4.3V
(为了降低功耗,该电压只在采样时刻才有输出,因此用万用表读取的值可能低于4.3v,因
为万用表测量的是有效值。)
步骤 2:如何将 AD 值反向转换为重力值。
假设重力为A Kg,(x<5Kg),测量出来的AD 值为y
传感器输出,发送给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
因此得出A = y / 429496.7296
分析:
这是买模块时都会送的一段教学文字,但是其中有很多问题,不只各位用模块的有没有想过24位带符号位的AD最高位是符号位,有效的只有23位,什么上面用2^24次方计算,居然算出来还是对的(为什么还能算对下面有讲),下图是从datasheet上截取的一段。
还有给的样例代码最后一步Count=Count^0x800000更是让人捉摸不透
人家datasheet上都写的是补码输出,最小800000对应-8388608,最大7FFFFF对应8388607,非得把符号位拿了剩下的打肿脸充胖子说是测量值。
我举一个小一点数的例子,我们讨论一个char型的数Count,如果读到的数是0x01,那很好原码反码补码都一样,那就是1,如果读到的数是0xff,注意读到的是补码,求反+1转化为源码是0x81,最高位是1表示是个负数,负几呢,后面不是1吗,他其实是-1。如果按照他给的例子Count=Count^0x80,注意Count是读到的补码是0xff,直接把符号位干掉=0x7f,你说-1等于127吗???
以我个人见解,我觉得应该这么算,如果这根梁的满量程是Akg,hx711模块用Bv的电压供电,重物为Ckg,这个传感器的灵敏度是1mV/V(这个1mV/V怎么来的定义如下)。称重传感器的灵敏度S,计算方法:传感器在一定的供电条件下Uin(比如5VDC),载荷达到额定满量程(比如10kg)时的输出变化量Uout(比如10mV)与供电电压的比值:S=Uout/Uin=10mV/5V=2mV/V.如果传感器的灵敏度为1mV/V,那么在5VDC激励电源作用下,传感器在额定载荷时的输出信号应该为:Uout=S * Uin=1mV/V * 5V=5mV。
某宝传感器灵敏度——S=1mV/V
所以满量程输出电压为——BS=Bmv。
Ckg重物就能产生——BC/Amv的电压。
一般能测正负电压的ADC,单侧的测量电压只有参考电压的一半,虽然VAVDD = 4.3V,我们这里用2.15V进行计算,这里有除了2,我上面说的2^24应该去除符号位是23次方,这里也正好是两倍关系正好抵消了,所以某宝给的文档能算对。
Ckg的重物产生的电压经过D倍的增益经AD转换后的数值——y
(BCD/A)/y=(2.15 * 1000)/2^23————y=3901.678 * BCD/A
我们可以带入A=5kg,B=4.3v,D=128倍增益试一试,y=429496.7296C
和某宝文档一样。
至于符号位的问题千万不要按他的来,有时候校零的时候会出现0x00FFFFFF,其实是-1,如果直接砍掉符号位,这个零为校到死也校不出来了。可以这么写
unsigned long Count;long AD_Value;if(Count&0x800000){AD_Value=0-((~Count+1)&0x7fffff);}else{AD_Value=Count;}
HX711称重模块的使用相关推荐
- K_A16_001 基于STM32等单片机驱动HX711称重模块 串口与OLED0.96双显示
K_A16_001 基于STM32等单片机驱动HX711称重模块 串口与OLED0.96双显示 一.资源说明 二.基本参数 参数 引脚说明 三.驱动说明 对应程序: 四.部分代码说明 1.接线引脚定义 ...
- hx711称重模块调试
最近工作需要 ,用到了称重模块hx711. 我是用stm32芯片下操作的,有需要的朋友可以看一下. 1.初始化io和驱动模块时序 2. ,h文件 3.主程序.
- stm32下的HX711称重模块的程序
HX711模块本身特别好,24位AD,加内部放大器(可以64和128增益,放大倍数),但无奈它的串口太智障,解释的也不是很清楚.现在我程序调试成功了,使用的HAL库,下载链接如下: stm32f103 ...
- Hx711称重模块+STM32+CubeMX
文章目录 一.模块和接线 二.CubeMX配置 1.时钟及sys 2.IO口 1)数据线DT设置为Input 2)时钟线SCK设置为Output 3.串口 4.后续配置 三.程序 1.main.c 2 ...
- HX711称重模块程序
去年省比赛准备51模块程序之一. 以上部分截自于厂家数据手册. #include <STC12C5A60S2.H> #include"lcd12864.h" unsig ...
- 【51单片机】HX711智能电子秤语音播报蓝牙传输设计
文章目录 一.主要功能 二.硬件资源 1.硬件准备 2.硬件连接 三.软件设计 1.软件结构 2.主要代码 四.实验现象 联系作者 一.主要功能 开机前如需去毛皮,预先将货框放在称重模块上,系统运行后 ...
- 【51单片机】HX711智能电子秤设计
文章目录 一.主要功能 二.硬件资源 1.硬件准备 2.硬件连接 三.软件设计 1.软件结构 2.主要代码 四.实验现象 联系作者 一.主要功能 开机前如需去毛皮,预先将货框放在称重模块上,系统运行后 ...
- 基于STM32的HX711模块的电子秤设计
一.主要功能 打开串口调试助手,波特率设置为115200,系统运行后,蜂鸣器滴一声表示去皮完成,同时串口助手会显示传感器检测实时重量,若重量超过2000g,蜂鸣器报警.当按下KEY1键,物品稳定重量会 ...
- 关于adrduino HX711库的解析
资料在这里:链接:https://pan.baidu.com/s/1a3lbToJZKTeBq6lbU9SRCg 提取码:1234 实验室一个hx711称重模块,搞了一下,不稳定,所以解析一下代码: ...
最新文章
- 2022-2028年中国专用化学品行业投资分析及前景预测报告
- java数组中最小的k个元素_java – 在数组中找到k个最小整数
- Node.js的核心与红利
- 【Matlab】怎么判断两个字符串相等?
- MySQL 的发展历史和版本分支:
- php父类继承子类_php有多态吗 多态都有什么好处?理解好多态往往能事半功倍...
- linux 中 svn 服务器搭建 重启
- Doc2Vec训练相似文章识别模型
- 图论 —— 图的遍历 —— 欧拉通路与欧拉回路问题
- 仿无名云易支付首页模板
- 【转载】面向对象建模与数据库建模两种分析设计方法的比较
- 丰田pcs可以关闭吗_论安全性能,广汽丰田TNGA车型如何?
- Mybatis编写初始化Dao代码
- linux环境下的TIME_WAIT和CLOSE_WAIT问题解决方法
- UBUNTU学习笔记
- python 008 __ 小斌文档 | 元组
- 天创速盈:拼多多推广效果不好,哪里需要改善?
- mybatis入门笔记(一)
- 笔记本 键盘 唤醒计算机,笔记本电脑进入睡眠状态后无法通过鼠标或键盘来唤醒屏幕怎么解决...
- 5口千兆工业以太网交换机宽温导轨式二层非网管全千兆工业级交换机
热门文章
- 软件测试行业的优缺点
- 利用Java反射机制降低代码圈复杂度
- 点到超平面距离的原理推导
- Twister: 迭代MapReduce计算框架
- word2010快速激活
- Xcode rrSecInternalComponent Command CodeSign failed with a nonzero exit code
- win7重装mysql_win7(64位)彻底卸载mysql,重装不再烦恼
- 分批次插入mysql:一次性插入mysql两万以上数据造成数据库假死
- md5加密 javaScript 微信小程序
- tensorflow2.10.0+CUDA11.2+cuDNN8.1 for cuda11.2