0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32读取HX711

STM32读取HX711

分享:

以下是使用STM32读取HX711称重传感器模块的详细步骤和代码示例:


核心原理

HX711是24位高精度ADC模块,通过2线串行通信(DT数据线 + SCK时钟线)输出数据。


硬件连接

HX711引脚 STM32连接 说明
VCC 3.3V/5V 电源
GND GND 地线
DT GPIO输入引脚 数据线(如PA0)
SCK GPIO输出引脚 时钟线(如PA1)

代码实现(基于HAL库)

1. 初始化GPIO

// 引脚定义
#define HX711_DT_GPIO_Port  GPIOA
#define HX711_DT_Pin        GPIO_PIN_0
#define HX711_SCK_GPIO_Port GPIOA
#define HX711_SCK_Pin       GPIO_PIN_1

void HX711_Init(void) {
  // SCK配置为推挽输出
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  GPIO_InitStruct.Pin = HX711_SCK_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(HX711_SCK_GPIO_Port, &GPIO_InitStruct);

  // DT配置为上拉输入
  GPIO_InitStruct.Pin = HX711_DT_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(HX711_DT_GPIO_Port, &GPIO_InitStruct);

  // 初始拉低SCK
  HAL_GPIO_WritePin(HX711_SCK_GPIO_Port, HX711_SCK_Pin, GPIO_PIN_RESET);
}

2. 读取HX711原始数据

int32_t HX711_Read(void) {
  volatile int32_t data = 0;

  // 等待DT变低(数据就绪信号)
  while (HAL_GPIO_ReadPin(HX711_DT_GPIO_Port, HX711_DT_Pin) == GPIO_PIN_SET);

  // 读取24位数据(高位在前)
  for (uint8_t i = 0; i < 24; i++) {
    // 产生时钟上升沿
    HAL_GPIO_WritePin(HX711_SCK_GPIO_Port, HX711_SCK_Pin, GPIO_PIN_SET);
    delay_us(1);  // 短暂延时(需自定义微秒延时函数)

    // 左移并读取数据位
    data <<= 1;
    if (HAL_GPIO_ReadPin(HX711_DT_GPIO_Port, HX711_DT_Pin) == GPIO_PIN_SET) {
      data++;
    }

    // 产生时钟下降沿
    HAL_GPIO_WritePin(HX711_SCK_GPIO_Port, HX711_SCK_Pin, GPIO_PIN_RESET);
    delay_us(1);
  }

  // 发送第25个脉冲选择增益128(下一次读取通道A)
  for (uint8_t i = 0; i < 1; i++) {
    HAL_GPIO_WritePin(HX711_SCK_GPIO_Port, HX711_SCK_Pin, GPIO_PIN_SET);
    delay_us(1);
    HAL_GPIO_WritePin(HX711_SCK_GPIO_Port, HX711_SCK_Pin, GPIO_PIN_RESET);
    delay_us(1);
  }

  // 扩展符号位(24位补码转32位有符号)
  if (data & 0x00800000) data |= 0xFF000000;
  return data;
}

3. 数据滤波函数(可选)

#define SAMPLE_COUNT 5  // 采样次数

int32_t HX711_Read_Average(void) {
  int64_t sum = 0;
  for (uint8_t i = 0; i < SAMPLE_COUNT; i++) {
    sum += HX711_Read();
    HAL_Delay(5);  // 间隔采样避免干扰
  }
  return (int32_t)(sum / SAMPLE_COUNT);
}

关键细节

  1. 时序要求

    • 时钟频率建议 < 100kHz(每个脉冲周期 > 10μs)。
    • 使用精确延时函数(可通过SysTick或TIM定时器实现微秒延时)。
  2. 数据格式处理

    • 原始数据为24位补码,需扩展为32位有符号整数。
    • 计算公式:真实值 = (原始值 - 零点偏移值) / 比例系数
  3. 校准步骤

    int32_t zero_offset;  // 零点值(空载时读数)
    float scale_factor;   // 比例系数(= 已知重量 / (有载读数 - 零点值))
    
    void Calibrate(void) {
     zero_offset = HX711_Read_Average();  // 空载读取
     // 放置已知重量物体后读取
     int32_t known_weight_value = HX711_Read_Average();
     scale_factor = 1000.0 / (known_weight_value - zero_offset);  // 假设已知重量=1000g
    }

常见问题解决

  • 数据不稳定

    • 增加硬件滤波(DT引脚并联104电容)。
    • 提高电源质量(避免开关电源干扰)。
    • 增加软件采样次数。
  • 通信失败

    • 检查SCK/DT是否接反。
    • 确保HX711供电正常(VCC≥4.5V)。
    • 用逻辑分析仪检查时序是否符合手册要求。

通过以上步骤,您可稳定读取HX711数据并实现电子秤功能。实际应用中需根据传感器量程调整校准参数。

怎样去编写STM32F103读取HX711的程序代码呢

如何利用STM32F103去读取HX711呢?怎样去编写STM32F103读取HX711的程序代码呢?

一个黄人 2021-12-13 06:11:35

MCU HX711读取模块的相关资料分享

HX711读取模块通过对于 磁悬浮地球仪拆解 中,悬浮物所受到的磁力随着空间和电流的变化,可以建立起被控对象的数学模型。除了在理论上可以电磁相互作用力进行测量之外,通过实验完成数据的拟合,帮助

神船大幅 2021-11-04 08:06:23

hx711是什么

hx711是一个很常见的压力传感器模块,精度很高,在平时做嵌入式开发的时候也常常遇到。但是在网上找到的代码往往都很老了,用现在常用的stm32板子都或多或少有一些问题,尤其是在一些购买该模块地方那里

h1654155216.9102 2021-08-04 06:19:21

请问stm32如何使用HX711读电子秤的值?

请问stm32如何使用HX711读电子秤的值?

笔画张 2021-11-26 07:23:13

STM32压力传感器信号采集-24位AD HX720 HX711原理是什么?

STM32压力传感器信号采集-24位AD HX720 HX711原理是什么?

K_Ming 2022-01-27 07:01:37

Hi3861如何使用HX711模块进行称重?

我想使用润和的Hi3861开发板连接HX711称重模块并进行称重,HX711称重模块已经使用过Arduino与其示例代码完成称重,我仿造Arduino的称重代码将其移植到Hi3861上,但是称重一直

jf_10767501 2023-03-20 23:30:27

HX711的ESP-07不工作要怎么处理?

我目前正在尝试使用带有 esp-07 的 hx711 从称重传感器获取读数。我正在使用 HX711 库,但我无法从中读取任何内容。有什么帮助吗?

hfgdzc 2023-02-27 09:27:28

51单片机hx711称重及程序

51单片机hx711称重及程序,(一)项目介绍基于51单片机的HX711称重计,最大称重量为5kg,并且在LCD1602上显示数值,可设置称重物品单价,称重精度可由按键key调节。误差可达0。传感器

tiantian55 2021-07-19 09:22:49

STM32称重传感器+HX711的使用方法及注意事项

STM32称重传感器+HX711的使用——HAL库文章目录STM32称重传感器+HX711的使用——HAL库前言一、接线二、CubeMax配置三、代码编写注意点前言因为在一个项目中使用到了称重

kingnet_520888 2022-02-25 07:38:29

HX711进行串口通信有哪些注意事项?

HX711具有什么特点?HX711进行串口通信有哪些注意事项?

HengDu 2021-10-22 07:20:02

如何去实现一种基于51单片机的HX711称重计的设计?

HX711是什么?HX711有哪些优点?HX711的管脚有哪些?其功能是什么?如何去实现一种基于51单片机的HX711称重计的设计?

tiantian55 2021-07-19 07:32:51

HX711使用教程-数字电子秤常用芯片 相关资料下载

单片机来说,获取此刻的重量值,只需一个简单函数读取此时AD值,并通过一个线性方程的转换后即可获取此时物体的精确重量。硬件电路介绍:先介绍HX711芯片的硬件电路,如图:该方案使用内部时...

小点zze 2021-07-01 09:18:18

基于stm32F4和HX711的电子秤设计实现

采用主控芯片stm32F4单片机,加HX711重力传感器,OLED 屏幕显示

getian2001 2022-02-25 07:47:15

电子秤设计 单片机 proteus 仿真 HX711 读取 精选资料分享

。超过后显示超重。HX711就是自带放大和A/D转换的器件。51单片机 Proteus仿真 重量报警 超重报警 HX711 称重报警:https://blog.csdn.net/x1131230123/article/details/107256006MSP430 单片机 HX711重量传感器接线

请叫我保尔 2021-07-19 06:36:29

怎样去使用hx711压力传感器模块呢

hx711是什么?怎样去使用hx711压力传感器模块呢?

h1654155216.9102 2021-10-19 06:04:34

基于51单片机的HX711传感器电子秤设计

使用LCD1602显示相关信息,HX711传感器测试物体重量

2023-08-01 01:12:07

HX711应变芯片采集力学信号笔记分享

如采集通道数64路的采集压力箱,需要64个HX711,共用时钟总线,用一块单片机读取需要比单通道减慢64倍;  09.解决方案是共用定时器中断,在代码上模拟IO口输出和读取;  10.多通道实现要电路

万物死 2023-03-27 11:38:12

HX711电子称计算关系分享!

的电压是 3300 / (2^19) = 0.006294 mV, 因为0.006294 < 0.02816,所以可以满足要求;如果我们通过HX711的串口读取到的AD值经过移位后是x,则对应的重量

60user183 2019-08-30 04:37:41

称重传感器和Hx711怎么与pic MCU连接?

我正在处理负载单元,它有四根导线,我用hx711模块从它那里得到数据,但是我对它发送的数据感到困惑,hx711模块发送24位数据,我的第一个问题是,由于hx711不使用spi,而i2c只发送24位数

ncwuerw2 2020-03-30 07:34:37

请问HX711怎么使用?如何完成对它的控制?

请问HX711怎么使用?如何完成对它的控制?

小点zze 2021-10-13 07:04:20

迅为RK3568开发板外接模块之HX711 称重模块

迅为RK3568开发板外接模块之HX711 称重模块

2023-08-30 15:24:29

迅为RK3568开发板外接模块之HX711 称重模块

1.实验原理 该部分由应变片与 HX711 模数转换器组成。应变片上的压力变化引起应变片 内的电阻值大小发生变化,进而引起线路中的电流发生改变,该电流经过 HX711 内部的片内低噪声可编程放大器

平常心0 2023-08-30 15:30:35

基于51单片机的HX711传感器电子秤设计方案

使用LCD1602显示相关信息,HX711传感器测试物体重量

2023-08-22 14:46:19

HX711模块的程序该怎样去实现呢

HX711模块本身特别好,24位AD,加内部放大器(可以64和128增益,放大倍数),但无奈它的串口太智障,解释的也不是很清楚。现在我程序调试成功了,使用的HAL库,

小新1999 2022-01-05 06:13:56

详解HX711称重模块的使用

详解HX711称重模块的使用先贴一段网上传的飞起的文字![在这里插入图片描述](?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl...

shbaoyan 2022-01-07 06:11:53

HX711模块串口部分

HX711模块本身特别好,24位AD,加内部放大器(可以64和128增益,放大倍数),但无奈它的串口太智障,解释的也不是很清楚。现在我程序调试成功了,使用的HAL库,下载链接如下:注意,这里的说明只包含关键部分——串口部分,其他的自己看datasheet或者淘宝的资料了解。...

迷你洼哇 2021-08-12 07:38:51

用于电子秤的紧凑型双HX711

描述双 HX711 秤板用于电子秤的紧凑型双 HX711 板。允许共用或单独的 VCC 和 VDD,以及共用或单独的 SCK、外部时钟 X-tal。如果安装了 LDO (IC1),则必须将 JP11

沈文强66 2022-07-11 07:48:14

ESP32要降频才能正确读取HX711的数据,但一直试不出, 请问有大神可以指点吗?

网上说要降频, ESP32才能正确读取HX711的数据, 但一直试不出, 请问有大神可以指点吗?

新星之火12138 2023-03-06 06:09:37

单片机托盘式电子秤制作(HX711

的实物//读取HX711//****************************************************unsigned long HX711_Read(void)//增益

小猫猫爱吃鱼 2020-03-01 19:01:18

【LuckFox Pico 开发板免费试用】2. 添加压力传感器hx711

./hx711_app -c 187 root@Rockchip:/root# ./hx711_app 小结 本章实现了hx711的数据读取,以及计算出称量物品的重量,后续可以结合算法实现相关功能。

voidpbq 2023-10-28 13:39:50

加载更多
相关标签