一个简单嵌入式开发的轨迹--电子秤

电子秤介绍

电子秤,属于衡器的一种,是利用胡可定律或者力的杠杆平衡原理测定物体质量的工具。电子秤主要由称重系统(如秤盘、秤体)、传力转换系统(如杠杆传力系统,传感器)和示值系统(如刻度盘、电子显示仪表)三部分组成。
当物体放到秤盘上,压力施给传感器,从而使传感器的弹性体(弹性元件,敏感梁)发生形变。设有一带有肓孔的长方体悬梁臂。肓孔底部中心是承受纯剪应力,但其上下部分会出现压缩和拉伸的应力,主应力一方为拉伸,一方为压缩。在此处贴上的电阻应变片会随着弹性体一同发生形变,由电子应变片构成的桥电路在激励电压的作用下输出的反馈电压发生变化,产生一个与所受压力相关的模拟信号。
该信号经过放大电路输出到模数转换器并转化成可供量化的AD值。MCU从A/D转化芯片中读取出A/D值进行计算转化为质量,可供显示或者上传远端服务器。Visio示意图

HX711+HL-8原理说明

HX711是一款专为高精度电子秤而设计的24位A/D转换芯片,与通类型其他芯片相比,该芯片继承了包括稳压源和片内时钟震荡等其他同类型芯片所需要的外围电路。片内稳压电路可直接向外部传感器和芯片内A/D转换器提供电源 ,系统板上无需另外的模拟电源。
具有两路可选择差分输入A和B,片内低噪声可编程放大器,可选增益为32,64和128。芯片与后端的MCU芯片的接口和编程简单,所有控制信号由管脚驱动,无需对芯片内部寄存器编程。
HL-8为悬梁式电阻应变片压力传感器,在其肓孔两端贴有电阻应变片,其悬臂在收到向下的压力的时候电阻应变片发生形变,阻值发生变化从而输出反馈电压发生变化,将悬臂所受的压力转化为电压数据。其满量程的输出电压=激励电压*灵敏度
在这里插入图片描述

嵌入式驱动软件

1、MCU定期读取HX711的AD值,通信方面的时序实现参考厂家提供的驱动程序,在产品HX711中文资料中提供了汇编与51的源码说明,下面附一下相应的注释伪码。

//IO口初始化
void HX711PinInit(void)
{
	//HX711_SCK推挽输出
	//HX711_DOUT输入上拉
}
//读取AD值,因为我们的压力传感器采用的是5kg,最大输入电压为5mv,所以选择128的增益实现。
unsigned int HX711ReadAd(void)	
{
  	HX711_SCK=0; //时钟引脚为低

	while(HX711_DOUT); //等待内部转化完成
    for(i=0;i<24;i++)//读取24位数据
	{ 
	  	HX711_SCK=1;//时钟拉高 
	  	count=count<<1;//移位
		HX711_SCK=0; //时钟拉低
	    if(HX711_DOUT)//读取数据脚
	    {
			count++;//赋值
		} 
	} 
 	HX711_SCK=1; 
  	count=(count^0x800000);//24位带极性的ad转化,最高位为符号位,异或的作用将-20mv~+20mv的变化范围对应到000000--FFFFFF,后边计算去毛皮重量计算方便。
	HX711_SCK=0;  //空给一个脉冲,将下一次的增益设置为128,芯片上电默认也为128,所以不用上电空配置一次
	return(count);
}

2、由AD值转化为物体重量的公式。

  1. 激励电压:VAVDD=VBG(R12+R13)/R2=4.3V
  2. 压力传感器满量程输出电压:4.3v*1.0mv/v=4.3mv
  3. 1g对应AD值:((4.3/20)*2^23)/5000=360
    毛皮的重量为上电默认读取的AD值。物品的重量=称重的重量-毛皮的重量。
unsigned GetWeight(void)
{
	unsigned int Weight = 0;
	unsigned int Weight_MaoPi =0;
	unsigned int Weight_ShiWu =0;
	
	Weight_Maopi = 0x00800008;//此值应为上电默认读取的数值。此处用一模拟数据代替
	Weight = HX711_Read();
	if(Weight > Weight_Maopi)			
	{
		Weight_Shiwu = Weight - Weight_Maopi;
		Weight_Shiwu = (s32)((float)Weight_Shiwu/360); //360这个参数为AD/g。	
		sWeight = Weight_Shiwu;
	}
	return Weight_Shiwu;
}

360这个参数只是个理论值。实际上在开发的过程中大部分都绕过了原理计算的步骤,直接根据线性相关,在量程内取两个点做样本解二元一次方程得到AD值与重量之间的关系。
虽然重量与AD值之间的关系在量程范围内成线性相关,但是元器件的差异以及传感器受力情况的差异,导致产品需要在出厂的时候对AD值与重力之间的关系进行微调,而调整的方式方法也需要在生产高效高通过率的大环境下进行开发,包括配套的调整软件甚至对应的工装。

原创文章 21 获赞 29 访问量 2万+

猜你喜欢

转载自blog.csdn.net/geek_liyang/article/details/87941137