HX711 AD芯片详解电子秤制作oled显示(附:32源码)

这篇具有很好参考价值的文章主要介绍了HX711 AD芯片详解电子秤制作oled显示(附:32源码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

HX711 AD芯片详解电子秤制作oled显示(附:32源码)

本文首先对HX711 AD芯片以及其使用方法进行了详细的介绍,然后介绍了全桥应变传感器,最后介绍了简易电子秤的制作方法。(文末附有32控制源码)
hx711ad模块,MCU外设 常用器件分享,单片机,stm32,嵌入式硬件,arm开发

一、HX711 AD芯片介绍

HX711为一款包含前置放大器的24位AD转换芯片,内部集成了差分处理电路、稳压电源、片内时钟振荡器等,因此极大的简化了芯片外围电路。HX711 AD芯片主要用于微小信号的处理(约为uV),这些输出很难由控制器直接处理(如:12位AD转化控制精度约为0.8mv),因此我们可以使用HX711 AD芯片对电压信号进行放大后转化为24位数字信号供处理器读取。由于电子秤测量重量的传感器提供远低于毫伏级别的电压输出,所以使用HX711 AD芯片对其电压信号进行处理是十分合适的。
HX711芯片主要参数:

  1. 工作电压范围:2.6~5.5V;
  2. 共有A B两个通道(同一时刻只能使用一个通道)。
  3. 内部差分电路可编程增益为32,64,128,其中通道A可以选择使用64和128增益,通道B固定增益为32;
  4. 可选择10Hz或者80Hz的数据输出速率(内部);
  5. 低功耗,其工作电流<1.6mA,断电电流<1uA;
  6. 工作温度范围:-40℃至+ 85℃;
  7. 串口数据输出速率可以达到500KHz;
    hx711ad模块,MCU外设 常用器件分享,单片机,stm32,嵌入式硬件,arm开发
    VSUP 为供电电源
    BASE 为片内稳压电路控制输出端
    AVDD 为模拟电源
    VFB 为稳压电路的控制输入
    AGND 为模拟地
    VBG 为模拟输出
    INA+、INB+、INA-、INB- 分别为AB通道的输入端
    PD_SCK 为串口时钟输入
    DOUT 串口数据输出
    XO XI 外部晶振输入 使用内部晶振时候 XI为0
    RATE 芯片输出数据速率控制 0:10Hz 1:80Hz
    DVDD 数字电源
    内部稳压电路为芯片内部各模块电路提供稳定的工作电压。 S8550用于稳压电路的控制模拟输入电源,为传感器提供稳定的模拟输入电压。内部稳压电路的输出电压Vavdd由R1、R2电阻和芯片的输出参考电压决定,

即:Vavdd=Vbg(R1+R2)/R2(其中Vbg=1.25V)

二、HX711 数据格式

hx711ad模块,MCU外设 常用器件分享,单片机,stm32,嵌入式硬件,arm开发
数据传输方式为同步半双工的方式。时钟线空闲时置为低电平,采集数据前,需要判断数据线的电平,当数据线电平为低时,表明HX711芯片已经准备就绪,否则需要等待其成功就绪后再进行数据采集,进行等待时,时钟线应该为低电平。数据线在时钟线上升沿时改变数据状态,其他时间数据线保持稳定。数据线返回数据的前24位为采集到的AD值,后1、2或3位为HX711工作方式设置位,不同位数表示不同转换方式。返回的数据类型为有符号数据(因为称重传感器有上下两个施力方向,当不同时刻在两个方向施加相同的力时,应变桥输出的变化时一样的,只是方向不同),因此数据是有符号的。可以通过符号判断施力方向,但是一般用不到。
数据输出共有以下三种格式:

  1. 通道A,增益128:(25个脉冲为一个周期) 前24个脉冲为数据存储位(存储的是采集数据的补码,一个位为最高位),最后一位设置工作方式。
  2. 通道B,增益32:(26个脉冲为一个周期) 前24个脉冲为数据存储位(存储的是采集数据的补码,一个位为最高位),最后两位设置工作方式。
  3. 通道A,增益64:(27个脉冲为一个周期) 前24个脉冲为数据存储位(存储的是采集数据的补码,一个位为最高位),最后三位设置工作方式。
    注意:1.时钟线输入脉冲个数应该保持在25至27之间,否则会导致通信错误。
    2.当芯片工作方式改变时,其需要4个数据输出周期的时间才能稳定输出数据,即:四个周期后,数据线才会变为低电平。

三、全桥式应变传感器(称重使用)

hx711ad模块,MCU外设 常用器件分享,单片机,stm32,嵌入式硬件,arm开发
hx711ad模块,MCU外设 常用器件分享,单片机,stm32,嵌入式硬件,arm开发
没有施加压力时,四个桥臂上的电阻值相同,因此白色信号线和绿色信号线输出的电压相同,进入到HX711通道的两个信号相同,所以输出数据为0(注意:前为理想情况,由于制作工艺的不同,实际输出的两个信号会有一定差异,所以需要去皮处理)。当对传感器在受理点施加力F后,应变片R1和R4拉伸,电阻值变大,R2和R3收缩,电阻值变小。此时白色信号线和绿色信号线的电压值就会发生变化,此变化反应的是外界压力的大小。

四、简易电子秤制作

硬件组装

此设计的硬件包括:STM32F103C8T6芯片一颗(主流芯片都可以,因为我们的外设较少),轻触按键一个,0.96寸IIC OLED显示屏一个、称重传感器一个。
硬件连接如下:
oled: SCL-----------PB11
SDA-----------PB10
称重传感器 SCK----------PB14
DOUT--------PB15
按键连接PB1
oled电源选择3.3V(5V也可),称重传感器电源选择5V。

工作原理

当对压力传感器施加力时,应变片会发生形变,从而导致桥式应变传感器的输出信号出现变化,使用HX711对变化进行放大转换后,传送给主控芯片进行处理,显示。

五、32源码

HX711.c文件

#include "HX711.h"
#include "tim.h"

u32 HX711_Buffer;  //HX711读取数据存储变量,由于读取24位,所以开辟32位空间
u32 Weight_Maopi;  //电子秤皮重存储变量
s32 Weight_Shiwu;  //放置重物体后,读取数据存储变量
u8 Flag_Error = 0;
/**********************************
校准参数
因为不同的传感器特性曲线不是很一致,因此,每一个传感器需要矫正这里这个参数才能使测量值很准确。
当发现测试出来的重量偏大时,增加该数值。
如果测试出来的重量偏小时,减小改数值。
该值可以为小数,最后选择两个点进行二次校准
**********************************/
#define GapValue 412

/**********************************
定时器3延时us函数
需要在cunemx中设置预分频系数为71 或使用库函数或寄存器版本时初始化定时器3预分频系数为71
***********************************/
void Delay_us(uint16_t t)
{
	uint16_t counter = 0;
	__HAL_TIM_SET_AUTORELOAD(&htim3, t); 	// 设置定时器自动加载值,到该值后重新计数   
	__HAL_TIM_SET_COUNTER(&htim3, 0);       // 设置定时器初始值
	HAL_TIM_Base_Start(&htim3);             // 启动定时器,定时器预分频系数为72,所以一个数为1us
	while(counter != t)                     // 直到定时器计数从 0 计数到 us 结束循环,刚好  us
	{
		counter = __HAL_TIM_GET_COUNTER(&htim3);  // 获取定时器当前计数
	}
	HAL_TIM_Base_Stop(&htim3);              // 停止定时器
}
/*****************************
HX711通信引脚初始化
DOUT 配置为双拉输入
SCK 配置为推挽输出
库函数和寄存器在初始化时配置,HAL库在CUBEMX配置
此类历程为HAL版本 所以对库函数初始化进行了屏蔽处理
***************************************/
//void Init_HX711pin(void)
//{
//	GPIO_InitTypeDef GPIO_InitStructure;
//	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	 //使能PF端口时钟

//	//HX711_SCK
//	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;				 // 端口配置
//	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
//	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
//	GPIO_Init(GPIOB, &GPIO_InitStructure);					 //根据设定参数初始化GPIOB
//	
//	//HX711_DOUT
//    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
//    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//输入上拉
//    GPIO_Init(GPIOB, &GPIO_InitStructure);  
//	
//	GPIO_SetBits(GPIOB,GPIO_Pin_14);					//初始化设置为0
//}
/***************************************************
读取HX711
count :是读出的AD数据
count :读出的数据是24位有符号,二进制补码是: 0x800000 - 0x7FFFFF (-8388607 ~ 8388607)				
count = count ^ 0x800000;   这里的意思是将二进制补码换算为 0~16777214的正数
****************************************************/
u32 HX711_Read(void)	//增益128
{
	unsigned long count; 
	unsigned char i; 
  	HX711_SCK(0);  //拉低时钟引脚
  	count=0; 
	Delay_us(1);
  	while(HX711_DOUT);   //读取数据引脚状态,等待AD芯片准备好,为低电平时是准备好了
  	for(i=0;i<24;i++)  //时钟周期500Khz
	{ 
	  	HX711_SCK(1); 
	  	count=count<<1; 
		Delay_us(1);
		HX711_SCK(0); 
	  	if(HX711_DOUT)
			count++; 
		Delay_us(1);
	} 
 	HX711_SCK(1); 
    count=count^0x800000;//第25个脉冲下降沿来时,转换数据 
	Delay_us(1);
	HX711_SCK(0);  
	return(count);
}

/****************************************************
获取毛皮重量函数
****************************************************/
void Get_Maopi(void)
{
	Weight_Maopi = HX711_Read();	
} 

/****************************************************
称重函数
****************************************************/
s32 Get_Weight(void)
{
	HX711_Buffer = HX711_Read();
	if(HX711_Buffer > Weight_Maopi)			
	{
		Weight_Shiwu = HX711_Buffer;
		Weight_Shiwu = Weight_Shiwu - Weight_Maopi;				//获取实物的AD采样数值。
	
		Weight_Shiwu = (s32)((float)Weight_Shiwu/GapValue); 	//计算实物的实际重量
		return 	Weight_Shiwu;	//因为不同的传感器特性曲线不一样,因此,每一个传感器需要矫正这里的GapValue这个除数。																//当发现测试出来的重量偏大时,增加该数值																	//如果测试出来的重量偏小时,减小改数值。
	}
	else
	{
		return 0;
	}
}

HX711.h文件文章来源地址https://www.toymoban.com/news/detail-534243.html

#ifndef __HX711_H
#define __HX711_H
#include "main.h"
#define HX711_SCK(a)   (a==GPIO_PIN_RESET) ? HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, 0) 
#define HX711_DOUT   HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_15)//数据引脚
typedef uint8_t u8;
typedef uint32_t u32;
typedef int32_t s32;
extern void Init_HX711pin(void);
extern void Get_Maopi(void);
extern s32 Get_Weight(void);
#endif

到了这里,关于HX711 AD芯片详解电子秤制作oled显示(附:32源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于51单片机的电子秤设计

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

    2024年02月02日
    浏览(40)
  • 基于STM32的智能电子秤设计

    硬件设计         本设计是一款基于STM32单片机的电子秤系统,随着科学技术的不断发展,传统的机械秤逐渐被电子秤所取代,相比于计量不精确,费时费力的机械秤,电子秤采用在方便快捷的同时,又保证了结果的准确性。本次设计采用STM32单片机作为处理器,控制各个

    2024年02月11日
    浏览(34)
  • 纯vue 获取usb串口,实现电子秤的对接

    说明:解决生产上过秤重量手动输入出错问题 效果图:  一:代码部分         1、创建一个名字为seriaport.js文件(随便定义,为下面页面引入使用)                  2、创建一个为usb.json 文件(随便定义,为下面页面引入使用)         文件过大,下载地址(因为大

    2024年02月07日
    浏览(32)
  • 51单片机设计多功能电子秤(实训项目)

    1.压力传感器(HX711称重模块) 2.接线说明 如上图接线所示:称重模块HX711模块各个引脚与单片机引脚对应如下: (1).VCC——VCC (2).GND——GND (3).SCLK——SDA (4).DT——SCLK 注:引脚一定要对应接好,尤其是数据(SDA)脚和时钟(SCLK)脚 (一).称重模块原理图 (二).单片机原理图

    2023年04月18日
    浏览(32)
  • 基于单片机的智能数字电子秤proteus仿真设计

    一、系统方案 1、当电子称开机时,单片机会进入一系列初始化,进入1602显示模式设定,如开关显示、光标有无设置、光标闪烁设置,定时器初始化,进入定时器模式,如初始值赋值。之后液晶会显示Welcome To Use Electronic Scale,这是一个欢迎使用界面: 2、此电子秤是开机检测托

    2024年02月09日
    浏览(34)
  • 【Proteus仿真】【51单片机】基于电阻应变片电子秤设计

    本项目使用Proteus8仿真51单片机控制器,使用LCD1602、压电传感器、信号放大电路、ADC模块等。 系统运行后,LCD1602显示采集压力值。 B站演示视频:https://space.bilibili.com/444388619 B站演示视频:https://space.bilibili.com/444388619 专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物

    2024年01月19日
    浏览(39)
  • 毕业设计 基于51单片机的电子秤设计(源码+硬件+论文)

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月11日
    浏览(46)
  • 单片机毕业设计 stm32智能电子秤系统设计与实现 - 物联网 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月06日
    浏览(59)
  • STM32读取HX711压力传感器芯片数据

    目录 一、HX711压力传感器芯片介绍 1.1 HX711芯片介绍 1.2 芯片管脚与描述 1.3 芯片特点 二、测量原理 2.1 芯片原理图 2.2 压力传感器输出电压值 2.3 芯片原理概述 2.4 数据输出,输入通道和增益选择时序图 2.5 程序计算原理 2.5.1 如何计算传感器供电电压?  2.5.2 如何将 AD 值反向转

    2024年04月16日
    浏览(37)
  • 电子模块|压力传感器模块HX711---硬件介绍

    HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性

    2024年02月07日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包