【mcuclub】称重-HX711

本文详细介绍了HX711高精度称重传感器的工作原理、与单片机的接口、数据转换流程以及编程实现。通过24位AD转换和简单算法,实现精确物体重量测量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、实物图

 

二、原理图

编号名称功能
1GND电源地
2DT数据输出引脚
3SCK时钟引脚
4VCC电源正

三、简介

HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片是专门为称重传感器设计的,称重传感器只需要一个HX711芯片即可完成称重信号的处理及AD转换;对于单片机来说,获取此刻的重量值,只需一个简单函数读取此时AD值,并通过一个线性方程的转换后即可获取此时物体的精确重量。

HX711芯片与单片机的通讯只需要两个引脚,时钟引脚PD_SCK及数据引脚DOUT,用来输出数据,选择输入通道和增益。当数据输出管脚DOUT为高电平时,表明A/D转换器还未准备好输出数据,此时串口时钟输入信号PD_SCK应为低电平。当DOUT从高电平变低电平后,PD_SCK应输入25至27个不等的时钟脉冲,如图:

其中第一个时钟脉冲的上升沿将读出输出24位数据的最高位(MSB),直至第24个时钟脉冲完成,24位输出数据从最高位至最低位逐位输出完成。第25至27个时钟脉冲用来选择下一次A/D转换的输入通道和增益,时序如图:

四、称重原理

1.HX711模块可以看成由三个部分组成:压力传感器、电压放大器、ad转换芯片

压力传感器:感知物体重力,并转化为电压信号。这里是0~10kg压力传感器,灵敏电压为1mv,即1kg重力产生1mv电压

电压放大器:由于压力传感器产生电压太小,需要对电压信号放大。这里用的是128倍电压增益。

ad转换芯片(24位):将模拟信号(放大后的电压值)转化为数字信号(ad值)

2.ad值转化为重力大小

假设重力为x kg,ad = (x/10)*128*2^24*(5/5000),(满量程为10kg,128倍放大,精度为2^24,传感器满偏电压5mv,单片机为5v)

ad = 214748.3648x    >>    x = ad/214748.3648  (按g显示再乘1000即可)

//ad转化为重力大小公式,(float)将整除转化为小数运算,再将运算结果强制转化为无符号整型数值

Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/240);

//理论上是除以214.7,实际上存在误差(传感器曲线以及电压的微小误差),需要根据显示情况来调整这一数值

五、程序

/****

*******  读取HX711数值

*****/

ulong HX711_Read(void)

{

   ulong count;                    //存ad值

   uchar i;

   HX711_DOUT = 1;               //数据端口拉高,参照时序图写

   Hx711_delay_us();            //延时

   HX711_SCK = 0;                //时钟端口拉低,使能AD

   count = 0;                    //ad值初始化

   while(HX711_DOUT);   //AD转换未结束则等待,否则开始读取

   for(i=0; i<24; i++)     //循环24次传数据,按位接收数据

   {

      HX711_SCK = 1;             //准备转换数据

      count = count << 1;     //向左移位,即向低位补0,空出最低位进行传值操作,如1<<1为10

      HX711_SCK = 0;          //时钟脉冲下降延,数据开始转换

      if(HX711_DOUT)

         count++;               //数据端为高则最低位+1,为1,数据端为低则最低位不变,为0(左移把最低位空出)

   }

   HX711_SCK = 1;                //第25个脉冲延

   count = count^0x800000;       //异或输出原码

   Hx711_delay_us();            //延时

   HX711_SCK = 0;                //结束ad转换

   return(count);               //传出ad值

}

六、流程设计

首先初始化引脚,然后数据引脚拉高,延时一段时间后,将时钟引脚拉低,等待AD转换结束,然后开始读取数据。接下来循环24次数据接收,在第25个脉冲将数据异或转换,并拉低时钟引脚结束AD转换。通过采集第一次数据为毛皮重量,采集第二次数据减去第一次数据即为最终称重重量。

### HX711压力传感器工作原理及流程图解析 HX711 是一种专门针对高精度称重传感器设计的 24 位模数转换器 (ADC)[^1]。其主要功能是对来自称重传感器的模拟信号进行数字化处理,并提供给微控制器进一步计算和分析的能力。 #### 工作原理概述 HX711 的核心作用在于接收来自称重传感器的微弱电信号,经过放大、滤波以及 ADC 转换后输出数字信号。具体过程可以分为以下几个部分: 1. **输入信号采集**: 称重传感器产生的毫伏级差分信号被送入 HX711 的通道 A 或 B 中。 2. **增益调整**: 用户可以通过配置寄存器设置不同的增益值(如 128、64 和 32),以便适应不同灵敏度的需求。 3. **采样与保持**: 内部电路会对输入信号进行周期性的采样操作,确保每次测量都具有较高的稳定性。 4. **模数转换**: 使用内置的 24 位 ΔΣ ADC 将模拟量转化为二进制数值表示形式。 5. **数据传输**: 微处理器通过 SPI 接口读取已转换好的 AD 数据,并利用简单的线性回归模型将其映射成实际物理单位下的质量值。 以下是基于上述描述绘制的工作流程示意框图: ```plaintext +-------------------+ | Load Cell | | Analog Signal |----> +-------------------+ ↓ +-------------------+ | Amplifier | | Adjust Gain Value |----> Differential Input to HX711 Channel A/B +-------------------+ ↓ +-------------------+ | Sample & Hold | | Capture Instantly |-----> Internal Processing Stage Inside the Chip +-------------------+ ↓ +-------------------+ | Delta-Sigma ADC | | Convert To Binary |-----> Digital Output Ready For MCU Reading via PD_SCK/DOUT Pins +-------------------+ ↓ +-------------------+ | Linear Regression | | Map Data Points |-----> Final Weight Calculation Displayed On Screen Or Sent Through Communication Interface. +-------------------+ ``` 此图表清晰展示了从原始负载单元输出直至最终重量呈现的整体路径走向及其间涉及的关键环节步骤说明[^2]。 另外值得注意的是,在嵌入式开发过程中如果需要同时传送固定文本消息连同动态更新参数一起发出,则可参照 STM32 平台下实现方法示例代码片段来构建自定义打印服务函数完成此类需求[^3]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

单片机俱乐部--官方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值