STM32和HX711压力传感器(电子秤)

06-26 1468阅读

目录

1、什么是HX711压力传感器(电子秤)?

         (1)电子秤模块简介

         (2)压力传感器工作原理:

                 具体工作流程

         (3)压力传感器规格简介

2、HX711电子秤模块重要引脚介绍

   1.DT口介绍

   2.SCK口介绍

   3.VCC供电口介绍

3、在STM32标准库中使用HX711的程序代码

(1)初始化DT口和SCK口所用的引脚代码

(2)实现A/D采样所使用的通信介绍

         (3)采样结果与实际重量转化算法

总结:


1、什么是HX711压力传感器(电子秤)?

(1)电子秤模块简介

原理图如下

STM32和HX711压力传感器(电子秤)

STM32和HX711压力传感器(电子秤)

(2)压力传感器工作原理:

压力传感器由一个重要构成是HX711的芯片,内部由二进制模数转换器(ADC)和一个放大器组成。ADC将模拟信号转换为数字信号,放大器则扩大转化出来的信号的幅度,以便更精确地测量。

HX711压力传感器的工作原理是基于万用表电桥原理,利用压力传感器的阻值变化来实现重量的测量。

具体工作流程

1、通过引脚A+和A-接入压力传感器。在未加载的情况下,两个引脚之间的电阻为R1。

2、在HX711芯片中,使用一个基准电压(通常为VCC/2)来作为压力传感器电桥电路的中心点。

3、当压力传感器开始承受载荷时,电桥电路会产生一个微小的电压差。

4、这个电压差通过A+和A-引脚输入到HX711芯片中,并经过内置的差分放大器放大。

5、放大之后的信号被送到24位的A/D转换器中进行数字化处理,并通过DOUT引脚输出。

6、PD_SCK引脚则是用于通过时钟信号来同步转换器的输出数据。

7、最终,通过对输入信号的放大和数字化处理,HX711芯片可以输出重量数据。

(3)压力传感器规格简介

   STM32和HX711压力传感器(电子秤)                                                                STM32和HX711压力传感器(电子秤)

市面上有很多不同规格的压力传感器,但大多殊途同归,读取的ADC值是一样的,只需要在计算时做出改变就行了

  1. 压力传感器学习意义

电子秤是将检测与转换技术、计算机技术、信息处理、数字技术等技术综合一体的现代新型称重仪器。它与我们日常生活紧密结合息息相关。电子称主要以单片机作为中心控制单元,通过称重传感器进行模数转换单元,在配以键盘、显示电路及强大软件来组成。电子称不但计量准确、快速方便,更重要的自动称重、数字显示,对人们生活的影响越来越大,广受欢迎。

2、HX711电子秤模块重要引脚介绍

1.DT口介绍

DT口是HX711芯片的数据输出端口,它输出经过A/D转换处理后的24位数据。

注意:DT口和SCK口都接stm32的GPIO(通用输出输入端口)。

2.SCK口介绍

SCK是HX711芯片的时钟输入端口,用于控制A/D转换的时钟。

3.VCC供电口介绍

     VCC引脚连接到5V或3.3V的正电源,选择5V或3.3V电源不影响正常使用。

3、在STM32标准库中使用HX711的程序代码

(1)初始化DT口和SCK口所用的引脚代码

void HX711_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能GPIOB的时钟
    GPIO_InitTypeDef hx711_gpio_struct;//创建一个GPIO结构体
   
    //SCK
    hx711_gpio_struct.GPIO_Mode=GPIO_Mode_Out_PP;//SCK为开漏输出模式
    hx711_gpio_struct.GPIO_Pin=GPIO_Pin_1;
    hx711_gpio_struct.GPIO_Speed=GPIO_Speed_50MHz;//通用50MHz
    GPIO_Init(GPIOB,&hx711_gpio_struct); //使能
    
    //DT
    hx711_gpio_struct.GPIO_Mode=GPIO_Mode_IPU;//DT为上拉输入模式,
	//如果IO口外部没有信号输入或者悬空,则IO口默认为高电平。
	//如果此时IO口有输入低电平,那么引脚就为低电平,MCU读取到的就是低电平
    hx711_gpio_struct.GPIO_Pin=GPIO_Pin_0;
    hx711_gpio_struct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOB,&hx711_gpio_struct);
    
	GPIO_WriteBit(GPIOB,GPIO_Pin_1,1);//这里是初始化定义拉高SCK
}

(2)实现A/D采样所使用的通信介绍

unsigned long HX711_Read(void)//unsigned long 为无符号整数,不能表示负数
{
    unsigned long Count;
    unsigned char i;//为无符号字符,不能表示负
    W_SCK(0);//拉低SCK时钟
    Count=0;//相当于清空Count里的所有数
    while(R_DT);//由于DT是上拉输入,所以当DT口没有信号输入或者悬空
	//则IO口默认为高电平,即R_DT==1,
	//直到DT口检测到了信号输入,才置为低电平,进入下面程序
    for (i=0;i
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]