【STM32技巧】HX711称重芯片详细说明

本文详细介绍了如何使用STM32微控制器与HX711重量传感器进行交互,包括初始化配置、信号放大、AD转换和数据读取。通过DWT计数器实现精确延时,确保数据采集的准确性。同时,文章还讨论了如何从AD值计算重量,包括传感器供电电压计算、满量程输出电压和重力值的转换。此外,还提到了压力传感器的安装方法和线性校准算法。最后提供了实际的测试例程和代码片段,展示了如何处理和解析传感器数据。

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

概述

HX711 模块 A 通道带有 128 倍信号增益,可以将 5mV 的电压放大 128 倍,然后采样输
出 24bit AD 转换的值,单片机通过指定时序将 24bit 数据读出

如何计算传感器供电电压

HX711 可以在产生 VAVDD 和 AGND 电压,即 711 模块上的 E+和 E-电压。
该电压通过 :

VAVDD=VBG(R1 +R2 )/R2

例如:

VBG 为模块儿基准电压 1.25V,R1 = 20K,R2 = 8.2K,因此得出 VAVDD = 4.3V

(为了降低功耗,该电压只在采样时刻才有输出,因此用万用表读取的值可能低于 4.3v,因为万用表测量的是有效值。)

测重原理讲解

满量程输出电压 = 激励电压 * 灵敏度 1.0mv/v
例如:

供电电压是 5V 乘以灵敏度 1.0mV/V = 满量程 5mV。
相当于有 5Kg 重力产生时候产生 5mV 的电压。

如何将 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 * 224 / 4.3V = 429496.7296A
所以 y = 429496.7296A
因此得出 A = y / 429496.7296
所以得出程序中计算公式

Weight_Shiwu = (unsigned long)((float)Weight_Shiwu/429.5);

特别注意:
因为不同的传感器斜率特性曲线不是完全一样,因此,每一个传感器需要矫正这里的 429.5
这个除数,才能达到精度很高。

压力传感器安装方法

在这里插入图片描述

知识点:官方例程为什么要将读出的AD数据 异或 0x800000

count :是读出的AD数据
count :读出的数据是24位有符号,二进制补码是: 0x800000 - 0x7FFFFF-8388607 ~ 8388607)				
count = count ^ 0x800000;   这里的意思是将二进制补码换算为 0 ~ 16777214,如果采集到的	INP-INN ≈ 0,那么 count = count ^ 0x800000 = 838860716777214 / 2, 误差的大小实际值也会在这数增大减少)		
本次例程中,实际测试没有用到:count = count ^ 0x800000,直接使用AD原始数据 count >> 8 后的数据,做成16位精度


实际测试例程,STM32测试例程

注意:本人使用100kg的拉力传感器测试,灵敏度是2mV/V

#include "includes.h"


/*
*********************************************************************************************************
*                                             寄存器
*********************************************************************************************************
*/
#define  DWT_CYCCNT  *(volatile unsigned int *)0xE0001004
#define  DWT_CR      *(volatile unsigned int *)0xE0001000
#define  DEM_CR      *(volatile unsigned int *)0xE000EDFC
#define  DBGMCU_CR   
STM32C8T6HX711是一款称重模块,它可以与STM32微控制器一起使用,通过HAL库来实现功能。 HAL库即硬件抽象层,它是STM32提供的一套软件库,为开发者提供了一种简单且高效的方法来实现不同STM32微控制器的功能。使用HAL库可以减少开发周期,并提高代码的可重用性。 针对STM32C8T6HX711这个称重模块,我们可以使用HAL库来实现以下功能: 首先,我们需要通过SPI通信协议来与HX711芯片进行通信。HAL库提供了相应的SPI接口函数,可以方便地进行SPI通信的配置和数据传输。我们可以使用这些函数来发送读写命令,并从HX711芯片读取得到称重数据。 其次,我们可以使用GPIO接口函数来配置和控制引脚。通过HAL库提供的GPIO函数,我们可以将引脚设置为输入或输出模式,并可以读取或设置引脚的电平状态。对于称重模块来说,我们可以将HX711芯片的时钟引脚和数据引脚接到STM32微控制器的GPIO引脚上,并使用HAL库的GPIO函数进行相应的控制。 此外,HAL库还提供了定时器和中断等功能。使用定时器可以实现定时采样和数据处理,通过中断可以及时响应模块的事件。 综上所述,借助STM32C8T6HX711称重模块和HAL库,我们可以轻松地实现称重功能。使用HAL库提供的丰富接口函数,结合SPI通信、GPIO控制和定时器中断等功能,可以实现数据的读取和处理,从而满足称重模块的应用需求。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值