电子模块|压力传感器模块HX711---硬件介绍

实物照片

在这里插入图片描述

模块简介

HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性。该芯片与后端MCU芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。输入选择开关可任意选取通道A或通道B,与其内部的低噪声可编程放大器相连。通道A的可编程增益为128或64,对应的满额度差分输入信号幅值分别为±20mV或±40mV。通道B则为固定的32增益,用于系统参数检测。芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D转换器提供电源,系统板上无需另外的模拟电源。芯片内的时钟振荡器不需要任何外接器件。上电自动复位功能简化了开机的初始化过程。

模块特点

  • 两路可选择差分输入
  • 片内低噪声可编程放大器,可选增益为64 和128
  • 片内稳压电路可直接向外部传感器和芯片内A/D 转换器提供电源
  • 片内时钟振荡器无需任何外接器件,必要时也可使用外接晶振或时钟
  • 上电自动复位电路
  • 简单的数字控制和串口通讯:所有控制由管脚输入,芯片内寄存器无需编程
  • 可选择10Hz 或80Hz 的输出数据速率
  • 同步抑制50Hz 和60Hz 的电源干扰
  • 耗电量(含稳压电源电路):典型工作电流:<1.7mA, 断电电流:<1μA
  • 工作电压范围:2.6 ~ 5.5V
  • 工作温度范围:-20 ~ +85℃
  • 16 管脚的SOP-16 封装

硬件

HX711 内部方框图
在这里插入图片描述

在protues中 如下图
在这里插入图片描述
管脚说明如下图:
在这里插入图片描述

在这里插入图片描述

模拟输入

通道A模拟差分输入可直接与桥式传感器的差分输出相接。由于桥式传感器输出的信号较小,为了充分利用A/D转换器的输入动态范围,该通道的可编程增益较大,为128或64。这些增益所对应的满量程差分输入电压分别±20mV或±40mV。通道B为固定的32增益,所对应的满量程差分输入电压为±80mV。通道B应用于包括电池在内的系统参数检测。

供电电源

数字电源(DVDD)应使用与MCU芯片相同的的数字供电电源。HX711芯片内的稳压电路可同时向A/D转换器和外部传感器提供模拟电源。稳压电源的供电电压(VSUP)可与数字电源(DVDD)相同。稳压电源的输出电压值(VAVDD)由外部分压电阻R1、R2 和芯片的输出参考电压 VBG决定(图1),VAVDD=VBG(R1+R2)/R2。应选择该输出电压比稳压电源的输入电压(VSUP)低至少100mV。如果不使用芯片内的稳压电路,管脚VSUP和管脚AVDD应相连,并接到电压为2.6~5.5V的低噪声模拟电源。管脚VBG上不需要外接电容,管脚VFB应接地,管脚BASE 为无连接。

时钟选择

如果将管脚XI接地,HX711将自动选择使用内部时钟振荡器,并自动关闭外部时钟输入和晶振的相关电路。这种情况下,典型输出数据速率为10Hz或80Hz。如果需要准确的输出数据速率,可将外部输入时钟通过一个20pF的隔直电容连接到XI管脚上,或将晶振连接到XI和XO管脚上。这种情况下,芯片内的时钟振荡器电路会自动关闭,晶振时钟或外部输入时钟电路被采用。此时,若晶振频率为11.0592MHz,输出数据速率为准确的10Hz或80Hz。输出数据速率与晶振频率以上述关系按比例增加或减少。使用外部输入时钟时,外部时钟信号不一定需要为方波。可将MCU芯片的晶振输出管脚上的时钟信号通过20pF的隔直电容连接到XI管脚上,作为外部时钟输入。外部时钟输入信号的幅值可低至150mV。

串口通讯

串口通讯线由管脚PD_SCK和DOUT组成,用来输出数据,选择输入通道和增益。当数据输出管脚DOUT为高电平时,表明A/D转换器还未准备好输出数据,此时串口时钟输入信号PD_SCK应为低电平。当DOUT从高电平变低电平后,PD_SCK应输入25至27个不等的时钟脉冲。其中第一个时钟脉冲的上升沿将读出输出24位数据的最高位(MSB),直至第24个时钟脉冲完成,24位输出数据从最高位至最低位逐位输出完成。第25至27个时钟脉冲用来选择下一次A/D转换的输入通道和增益。

复位和断电

当芯片上电时,芯片内的上电自动复位电路会使芯片自动复位。管脚PD_SCK输入用来控制HX711的断电。当PD_SCK为低电平时,芯片处于正常工作状态。

如果PD_SCK从低电平变高电平并保持在高电平超过60μs,HX711 即进入断电状态

如使用片内稳压电源电路,断电时,外部传感器和片内A/D 转换器会被同时断电。当PD_SCK 重新回到低电平时,芯片会自动复位后进入正常工作状态。芯片从复位或断电状态进入正常工作状态后,通道A和增益128会被自动选择作为第一次A/D转换的输入通道和增益。随后的输入通道和增益选择由PD_SCK的脉冲数决定,参见串口通讯一节。芯片从复位或断电状态进入正常工作状态后,A/D 转换器需要4个数据输出周期才能稳定。DOUT在4个数据输出周期后才会从高电平变低电平,输出有效数据。

HX711相关部分的 PCB 设计

HX711相关部分的 PCB 板参考设计线路图
在这里插入图片描述

### STM32 使用 HAL 库 驱动 HX711 压力传感器 为了在STM32上使用HAL库与HX711压力传感器进行交互,需要完成几个主要的任务:初始化必要的硬件资源、配置GPIO引脚、设置SPI通信参数,并编写用于读取HX711数据的应用层逻辑。 #### 准备工作环境 确保已经安装了适合的开发工具链,包括但不限于STM32CubeIDE和配套的HAL库。这些工具可以从ST官方网站获取[^3]。对于特定于HX711的支持,虽然官方HAL库不直接提供针对此芯片的功能,但是可以利用其通用I/O操作功能配合HX711的数据手册来实现所需的控制命令。 #### 初始化硬件资源 HX711通常采用两线制接口(DOUT和PD_SCK),这意味着不需要复杂的协议栈即可与其通讯。因此,在本案例中并不涉及真正的SPI总线配置;而是通过单独定义两个GPIO端口来进行位级的操作模拟串行传输过程: - DOUT连接到MCU的一个输入引脚 - PD_SCK连接到另一个输出引脚 ```c // 定义HX711使用的GPIO引脚 #define HX711_DOUT_PIN GPIO_PIN_0 // 替换成实际使用的引脚编号 #define HX711_PD_SCK_PIN GPIO_PIN_1 // 同上 #define HX711_GPIO_PORT GPIOA // 替换成实际使用的GPIO端口号 ``` #### 编写驱动代码 接下来是核心部分——编写具体用来访问HX711寄存器并获取测量结果的函数。这里给出一个简单的例子展示如何读取一次转换后的数值: ```c #include "stm32f4xx_hal.h" uint8_t ReadBit(void){ uint8_t bit; /* 设置PD_SCK为低电平 */ HAL_GPIO_WritePin(HX711_GPIO_PORT, HX711_PD_SCK_PIN, GPIO_PIN_RESET); /* 等待至少50us */ HAL_Delay(1); /* 获取DOUT状态 */ if (HAL_GPIO_ReadPin(HX711_GPIO_PORT, HX711_DOUT_PIN) != GPIO_PIN_SET) bit = 0; else bit = 1; /* 将PD_SCK拉高以通知HX711发送下一个bit */ HAL_GPIO_WritePin(HX711_GPIO_PORT, HX711_PD_SCK_PIN, GPIO_PIN_SET); return bit; } int32_t Read_HX711_Data(void){ int i,j,k=0; int32_t data=0; while (!HAL_GPIO_ReadPin(HX711_GPIO_PORT,HX711_DOUT_PIN)); // Wait until ready for(i=0;i<24;i++){ j=(ReadBit()<<i)&0x800000>>(23-i); k=k|j; } // 发送第25次脉冲使能内部ADC复位 HAL_GPIO_WritePin(HX711_GPIO_PORT, HX711_PD_SCK_PIN, GPIO_PIN_RESET); HAL_Delay(1); HAL_GPIO_WritePin(HX711_GPIO_PORT, HX711_PD_SCK_PIN, GPIO_PIN_SET); return ((k&0x800000)?~k:k)+1; } ``` 上述代码片段展示了基本的HX711读数流程,其中包含了等待就绪标志、逐位接收二进制流以及最终处理得到有效整型值的过程。需要注意的是,由于HX711返回的是补码形式的数据,所以在某些情况下可能还需要额外调整正负号。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

月照银海似蛟龙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值