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上截取的一段。
datasheet
还有给的样例代码最后一步Count=Count^0x800000更是让人捉摸不透
datasheet
人家datasheet上都写的是补码输出,最小800000对应-8388608,最大7FFFFF对应8388607,非得把符号位拿了剩下的打肿脸充胖子说是测量值。
我举一个小一点数的例子,我们讨论一个char型的数Count,如果读到的数是0x01,那很好原码反码补码都一样,那就是1,如果读到的数是0xff,注意读到的是补码,求反+1转化为源码是0x81,最高位是1表示是个负数,负几呢,后面不是1吗,他其实是-1。如果按照他给的例子Count=Count^0x80,注意Count是读到的补码是0xff,直接把符号位干掉=0x7f,你说-1等于127吗???

以我个人见解,我觉得应该这么算,如果这根梁的满量程是Akghx711模块用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;
	}
  • 21
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
)EV1527中断法解码 ① 设定定时器中断时间,设定为 80us,80us 进入中断进行解码。具体中断时间多少由自己 软件设定,但是中断时间不能太大。 ② 设定同步码解码范围,同步码定为 5.6ms - 16ms。进入中断判断到低电平,低电平判断 一直累加 Count_Lead++,累积低电平的采集时间,判断到高电平,就判断此时 Count_Lead 的值是否在 70 跟 200之间。(备注:5.6ms/80us=70 16ms/80us=200)。 ③ 引导头通过进入数据判断,刚开始是数据高电平,累积高电平的时间 Count_Data_Hi++, 当判断到低电平时候,判断 Count_Data_Hi 是否在 80us -2.4ms 之间。这里还没进行数据 0 跟 1 的区分,先把 Count_Data_Hi 的值保存在 Hi_Cnt 里面。 (备注:80us/80us=1 2.4ms/80us=30)。 ④ 高电平判断通过,开始判断低电平,累积低电平的时间 Count_Data_lo++,当判断到高电 平时候,判断 Count_Data_Lo 是否在 80us -2.4ms 之间。这里还没进行数据 0 跟 1 的区分, 先把 Count_Data_Lo 的值保存在 Lo_Cnt 里面。 (备注:80us/80us=1 2.4ms/80us=30)。 ⑤ 对 0 跟 1 进行区分,把 24bit 数据整理成三个 byte,存在数组 RfData[0],RfData[1], RfData[2]数组里面。 ⑥ 进行相应功能码的操作。 具体解码方法参考例子程序,因为不同的震荡电阻,1527 出来的编码长度不同,例子 程序是参考 1 lck=100us 波形来做的。具体时间参数可以根据自己的 1527 发射实际长度来 编写。
51-单片机流水线计数器设计全文共3页,当前为第1页。51-单片机流水线计数器设计全文共3页,当前为第1页。#include<reg51.h> 51-单片机流水线计数器设计全文共3页,当前为第1页。 51-单片机流水线计数器设计全文共3页,当前为第1页。 void xianshi(); //显示数码函数 void delay();//延时函数 sbit p0_0=P0^0; sbit p0_4=P0^4; sbit p0_5=P0^5; sbit p0_6=P0^6; sbit p0_7=P0^7; //单独端口定义 unsigned char code led[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //字模数组 unsigned int count=0,f=0,z=0,j=10; int0_led () interrupt 3 //中断计数函数 { count++; if(count==10000) count=0; if(count==j) { p0_0=0; } } imt1()interrupt 0 //中断计数复位 { count=0; p0_0=1; } int2() interrupt 2 //中断定 计数数量设计函数 { if( p0_5==0) z=!z; //进入可调模式或退出可调模式 if( p0_6==0) j++; if( p0_7==0) j--; if(p0_4==0) j=0; } main () 51-单片机流水线计数器设计全文共3页,当前为第2页。51-单片机流水线计数器设计全文共3页,当前为第2页。{ 51-单片机流水线计数器设计全文共3页,当前为第2页。 51-单片机流水线计数器设计全文共3页,当前为第2页。 TMOD=0x60; TH1=TL1=0xff; ET1=1; TR1=1; EA=1; IT0=1; EX0=1; IT1=1; EX1=1; xianshi(); } void xianshi() { int q,x; while(1) { if(z==0)//显示计数量 { P2=0xf7; P1=led[count%10]; delay(); x=(count%100)/10; P2=0xfb; P1=led[x]; delay(); q=(count%1000)/100; P2=0xfd; P1=led[q]; delay(); P2=0xfe; P1=led[(count/1000)]; delay(); } else //显示设定数量 51-单片机流水线计数器设计全文共3页,当前为第3页。51-单片机流水线计数器设计全文共3页,当前为第3页。 { 51-单片机流水线计数器设计全文共3页,当前为第3页。 51-单片机流水线计数器设计全文共3页,当前为第3页。 P2=0xf7; P1=led[j%10]; delay(); x=(j%100)/10; P2=0xfb; P1=led[x]; delay(); q=(j%1000)/100; P2=0xfd; P1=led[q]; delay(); P2=0xfe; P1=led[(j/1000)]; delay(); } } } void delay()//延时函数 { char r; int time; for(time=30;time>0;time--) for(r=0 ;r<125;r++); } 51-单片机流水线计数器设计
### 回答1: HX711模块是一种高精度、高稳定性的AD转换器,主要用于测量物体的量。在使用过程中,如果需要对模块进行调试打印,则需要采取如下步骤: 1. 确认硬件连接是否正确:首先需要将HX711模块与电路板连接好,并接上电源,确认模块正常工作; 2. 配置软件环境:在连接成功后,需要进行软件环境的配置。比如需要安装Arduino IDE编辑器,在Arduino IDE中安装HX711模块的相关库文件; 3. 编写代码:根据自己的需求编写对应的代码,实现模块读取数据并将其打印出来的功能。为了保证数据的准确性,需要对校准参数进行设置; 4. 运行代码:将编写好的代码上传到Arduino控制板中,进行运行。在运行过程中,需要注意模块的读数是否合理,如果出现读数异常,则需要检查连接和代码的正确性。 总体来说,HX711模块的调试打印较为简单,只需要注意硬件连接和软件环境的设置,以及代码的编写和运行即可。此外,在使用过程中需要注意保持环境的稳定性,避免外部因素对模块的测量产生干扰。 ### 回答2: HX711模块是一种高精度的ADC(模数转换器)芯片,它常用于测量和记录量或其他力的大小。它的工作原理是将压力传感器的输出信号转换成数字信号,以便于扫描和处理,同时可以输出2个电平(高电平或低电平)信号来驱动外部装置。 首先,用户需要确保已经正确地连接了HX711模块和压力传感器,并按照正确的接线方式进行接口连接。接口连接后,可以通过Arduino或其他微控制器编写程序,将程序上传至板子中,并进行调试。调试包括断点调试和串口打印。 在断点调试中,用户可以设置断点,跟踪程序运行,查看代码运行到哪里会出现问题。这可以帮助用户轻松地定位代码错误并进行修复。 在串口打印中,用户可以通过设置串口波特率、串口发送和接收功能等参数来输出相关信息。这可以帮助用户更好地理解和处理设备的工作情况,更有效地进行数据分析和处理。 调试过程中,用户还可以通过实际测量物体的量,并将其输出到串口监视器上来验证程序是否正确。如果程序正确,那么输出的量应该与实际测量值基本相同。 总之,HX711模块的调试打印需要用户将程序上传到设备中,进行断点调试和串口打印,并进行实际测量来验证程序是否正确。通过这些步骤,用户可以快速调试和排除设备问题,从而有效地使用HX711模块。 ### 回答3: HX711模块是一种常用的传感器,可以广泛应用于、较高精度量测量等领域。在使用过程中,常常需要对模块进行调试,以确保测量数据的准确性。调试打印是一种常用的调试方法,下面我们来介绍一下这种方法的具体实施过程。 首先需要准备好Arduino开发板、HX711模块和用于存储数据的计算机。然后将HX711模块与Arduino开发板相连,并将计算机与开发板通过USB线连接。接下来,在Arduino IDE中编写一个简单的程序,调用HX711的库函数,并将测量数据用串口输出到计算机上。具体代码如下: #include <HX711.h> HX711 scale; void setup() { Serial.begin(9600); scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN); } void loop() { float weight = scale.get_units(1); Serial.println(weight); delay(100); } 其中LOADCELL_DOUT_PIN和LOADCELL_SCK_PIN为HX711模块的数据和时钟引脚,根据实际连接情况进行修改。然后在串口监视器中打开打印窗口,即可实时看到模块测量到的数据。如果需要记录数据,可以将调用get_units()函数的次数增加或者添加数据存储功能,保存数据到计算机硬盘中。 当然,调试打印只是调试工具的一种,如果需要更加高效和准确地调试HX711模块,可以使用示波器、逻辑分析仪等专业的调试设备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值