基于应变电桥与CS1237的高精度电子秤设计

2021-06-17 07:41龙顺宇傅啟才杨伟郝昕
电子制作 2021年11期
关键词:电子秤电阻单片机

龙顺宇,傅啟才,杨伟,郝昕

(海南热带海洋学院海洋信息工程学院,海南三亚,572022)

0 引言

称重应用场景的多样化需求促使市面上出现了诸如电子天平、电子桌称、电子台秤、电子吊秤、电子地磅(或称“汽车衡”)等多种电子衡器[1-2]。不同场景对电子衡器有着不同的要求,比如对高价值商品而言,要求电子衡器计量精度高,对于低价值商品而言,主要考虑计量效率和响应时间[3-4]。研究电子衡器的组成和产品设计具有现实意义。本文基于厨房秤、超市称、餐厅称等应用场景提出了一种高精度电子秤设计方案,电子秤系统由微控制器单元、传感器前端、人机交互单元、供电单元及通信接口等部分组成,设计实物具有低功耗、高性价比等优势。

1 压力传感方案及应变电桥原理

压力传感器是电子秤系统的感受前端,其选型直接影响了电子秤的量程范围、功能适用、产品形态及测量精度[5-6]。市面上常见的压力传感器有电容式、压电式和电阻应变电桥式等。不同类型的传感器在电气指标、适用场景、工作原理、量程范围上差异较大[7-8],以下是常用压力传感器的原理及特点对比:

电容式压力传感器内部有两个极板,主要用以存储电荷类似于一个电容器,在极板上放置不同的被测重量会改变极板间距,从而导致电荷量变化,相当于利用可变电容器极板间的电荷量去间接量化重量。该类型传感器常见于电子血压计场景,该类型传感器的优点是无需模数转换器即可达到较高的分辨率,例如SENSOR101传感器,在室温环境下的测量范围在0~40kPa/0~300mmHg,连线简单、性价比较高。

压电式压力传感器是利用压电晶体的压电效应制作而成,传感器的输出电压与所测重量是呈正比的。通常会在传感器的输出添加IEPE前置信号调理电路,将传感器输出电荷信号放大为适合测量的电压。该类型传感器多用于测量压缩、冲击、反作用力与张力过程中的动态力和准静态力。例如Dytran2300C6传感器,灵敏度可达0.35pC/psi,量程可达10000psi。此类传感器在使用前需要做校准和调零,实际使用时还要加装外壳屏蔽和防尘/防水处理。

电阻应变电桥式压力传感器是利用弹性电阻应变片构成的电桥来感受重压下的微小形变,放置重物后使得应变片阻值变化,最终影响电桥输出电压,该类型传感器响应速度快、结构简单且耐劳时间长,适合于常规厨房秤、体重秤的设计[9-10]。应变电阻一般取4个粘合在铝合金骨架上构成平行梁式结构,传感器结构如图1(a)所示,电桥电路原理如图1(b)所示。

分析图1(b)电路,该电路是由R1至R4四个应变电阻构成的电桥。UI是激励电压源,在本文系统中取值为5V,UO是电桥的输出电压。根据分压计算方法,电桥的A点电压可表示为:

同理,电桥的C点电压可表示为:

图1 传感器结构及电桥电路原理

容易得到电桥的输出电压UO为:

电桥中的4个应变电阻其实都是等值的(即R=R1=R2=R3=R4),从理论上分析,UA与UC的电位相对于UI而言是相等的,在数值上都等于二分之一的UI,故而UO应该为0V,也就是说电桥没有产生因重力形变导致的电压差,即空载状态。当电桥上承载重物发生形变时,应变电阻阻值可重新表达为:R+ΔR1、R+ΔR2、R+ΔR3、R+ΔR4,那么此时电桥的输出电压UO应变为:

通过化简可得:

根据式(5),电桥的输出电压UO与单侧桥臂的电阻变化率代数和是成正比的。

结合应用场景,本文选用了电阻应变电桥式传感器作为电子秤的感受前端,具体型号为10Kg称重量程YZC-133型传感器,该传感器一般用于厨房秤,输出灵敏度为1.0±0.15mv/V,非线性度最大为0.05%,输出为4色线缆,红色E+和黑色E-为激励电压输入,绿色A+和白色A-为电桥电压输出。

2 系统框架设计

本文设计的电子称系统由电阻应变电桥式压力传感器、CS1237采集单元、STC8主控单元、系统供电单元、字符液晶单元、矩阵键盘单元及通信接口单元等7个子单元组成,整体框架如图2所示。传感器上放置待测重物,在压力作用下电桥的输出电压会发生改变,此时CS1237芯片的内置放大器会将微弱电信号进行放大,然后量化电压并进行滤波处理,处理后的电压信号经过24位高分辨率模数转换后成为数字信号,再与STC8主控单元进行对接。单片机主控将CS1237的数据进行处理,即可得到待测物体重量。整个系统由直流单5V供电,字符液晶为1602型液晶,矩阵键盘为4×4形式,这两个单元构成了电子秤的人机交互部分。系统还预留了串口通信单元,可将量化数据传送到PC机或者其他微处理器单元。

图2 电子秤系统结构框图

3 系统硬件设计

电子称的硬件电路主要是CS1237电路及STC8单片机电路,其它的矩阵键盘电路、独立按键电路和字符型1602液晶电路较为简单,此处不做赘述。系统硬件的核心电路原理如图3所示。

分析电路构成,CN1和CN2是排针,用于连接YZC-133型传感器的4根输出线。U1即为24位高分辨率低功耗的CS1237模数转换芯片,C1、C2、C5和C6是滤波电容,主要用于平滑电源和旁路高频干扰。传感器的E+是激励电源的正极,需要接到U1的1脚和8脚(需要说明的是:在没有配置CS1237内部寄存器时,默认将芯片的参考电压设定为与VDD相等的电压),传感器的E-直接到地(即为参考0V)。传感器的A-和A+是输出信号,该信号幅值仅为毫伏级别且容易波动,所以在CS1237芯片的AINN和AINP这对差分通道上分别做了两级RC低通滤波器,即R1、C2和R2、C4,以确保输入信号的稳定。R3和R4是通信线路的限流电阻,以限制其他通信器件与CS1237芯片之间在通信过程中产生较大的拉灌电流。

U2是STC8单片机,具体型号为STC8H3K64S4,该单片机是STC公司推出的增强型8051内核单片机,具备4个串口,引脚的利用率也很高。U2的引脚分配了P3.6和P3.7给CS1237芯片做两线SPI通信,又分配了P1.0、P1.1、P1.2和P1.6做独立按键,主要实现电子秤去皮、皮重、校准和累加功能。分配P4.1、P4.2和P4.3作为字符型1602液晶模块的控制线,P2端口组则作为液晶模块的8位并行数据线,P1端口组搭建出4×4矩阵键盘,P3.0和P3.1是UART通信接口。

图3 电子秤系统核心电路原理图

4 系统软件设计

硬件搭建完毕后需编制软件功能,软件编写有两个重点部分即:CS1237芯片的通信与校准、称重后的显示、计价及功能体现。软件部分的功能流程如图4所示。单片机上电后开始执行相应功能的初始化,然后与CS1237进行通信,取回当前重量进行数值显示,在整个过程中单片机会不断检测矩阵键盘和独立按键,当有独立按键按下时就会触发去皮、皮重、校准和累加等功能,当矩阵键盘按下时可设定单价或者计量方法,最后把计算后的金额送到1602液晶上显示。

图4 电子秤系统功能流程图

■4.1 CS1237通信与校准程序设计

当CS1237芯片的DOUT引脚由高电平变为低电平且持续保持时说明系统进入了数据交换的准备状态,此时若出现第一个SCLK时钟输入即可将最高位读出,在经过24个SCLK时钟脉冲后,CS1237芯片中的24位数据将全部读出。若第25个SCLK时钟到来且DOUT引脚为“1”时,则表明寄存器Config被写入了新的值(若用户将Config[7:0]配置为0x0C,则芯片的功能将设定为:使用内部REF作为参考电压、输出频率为10Hz、通道PGA的增益为128倍、选择通道A作为输入)。第26个SCLK时钟到来时的DOUT引脚应该一直为“0”,这个状态是CS1237芯片的扩展保留位。当第27个SCLK时钟到来时把DOUT拉高再拉低,表示新的数据已经准备好,此时可以重新进行下一次数据的转换了。按照思路使用C语言编写的CS1237初始化函数Init_CS1237()的源码如下:

void Init_CS1237(void) //CS1237初始函数

{

Con_CS1237(); //配置CS1237

if(Read_CON() != CS_CON)

//如果读取的ADC配置出错,则重启

for(i=0;i<3;i++)

//循环读取CS1237芯片采样值,获取稳定数值

{AD_Res_Last = Read_CS1237(); }

//获取CS1237电压采样值

}

完成对CS1237芯片的初始化配置之后需手动对采集线性度k值进行校准。校准过程为:首先系统自动获取未放待测物(认定为0g)时CS1237芯片采集到的电压Tare,然后通过按键获取500克重物(一般采用标准砝码校准电子秤)采集到的电压Weight_500g,最后通过程序对线性度重新进行计算,可用C语言编写线性度校准Weight_calibration()函数,其源码如下:

void Weight_calibration(void) //校准函数

{

if(KEY1)

//校准按键按下

{

KEY1 = 0;LED1 = 0;

//键值清零且指示灯点亮,表示为正在校准

Weight_500g = Read_18Bit_AD();

//获取500克重量采集电压

Weight_Coe = Weight_500g - Tare;

//除去皮重的ADC数值

Weight_Coe = 500000 / Weight_Coe;

//放大1000倍的斜率k

Tare_Coe = Weight_Coe * Tare;

//皮重的重量,放大1000倍之后的

LED2 = 1; //指示灯熄灭,表示为校准完成

}

}

■4.2 数据处理及显示程序设计

系统完成校准后会自动把线性度k值保存在单片机EEPROM单元之中,故而无需每次上电都做校准。校准后的电子秤就可以正常使用了,此时将被测物体放置于称盘上,字符型1602液晶会实时显示出重物WE,用户可通过矩阵键盘可输入价格PR,系统会自动计算出单价S,在多件物品的测量中还可以通过按键把每件物品的小计价格进行累加,最终显示出总价T。该部分即为电子秤的计价功能体现,Display()函数的源码如下:

void Display(void) //显示函数

{

if(Work_Count == 2) //每100ms刷新一次显示

{

Work_Count = 0; //标志位清零

Display_Weight(); //显示重量

Getkeyboard(); //矩阵键盘输入单价

money=Get_Weight*price/1000; //计算价格

Display_Money(); //显示总价

if(KEY2) //累计总价按键按下

{

KEY2 = 0; //标志位清零

total_money += money; //计算累加后的总价

Display_Money(); //显示总价

}

}

}

5 样机制作与测试

硬件设计完成后开始试制样机并进入联调阶段,制作完成的样机实物如图5所示。样机测试的第一个环节是称重测试(实际测量了一卷焊锡丝,实测重量330g,与标准仪器所测结果一致)。断电情况下先将电阻应变电桥式压力传感器正确连接到CS1237电路的输入端子,再将字符型1602液晶模块插接在系统上。检查供电电压是否为5V并正确连接到模块上,此时开机应观察到液晶上显示出空载重量。用户可以放500g砝码重新校准系统,也可以直接对物品进行称重测试。

图5 电子秤系统样机实物与测试图

系统基础功能正常后应进行一次校准,修正线性度k值,校准所用物品选取实验室标准砝码。本文选用的电阻应变电桥式传感器的非线性度小于千分之五且CS1237的分辨率可达24位,所以理论上的测重误差应在1g左右,为了验证理论估算,本文进行了样机实测,表1即为实测结果。

表1 电子秤样机实测数据

经过样机实测,本文设计的电子秤在10kg范围内的最大误差重量为2g,基本与理论估算一致,究其原因应该是在电阻应变电桥式传感器的出厂均一度、CS1237芯片的供电电压、电路干扰等方面存在差异,若需要严格控制在1g以内还需分段校准,在程序上加以补偿。称重测试完毕后通过矩阵键盘设置了物品单价,系统能自动计算价格,人机交互部分符合预期。

6 结语

本文系统作为单片机类电子工艺实训项目在研发实训中取得了较好的成果,本文以应变电桥传感器及CS1237模数转换芯片为核心,结合STC8单片机和人机交互单元设计并实现了一款高精度电子秤系统。通过样机测试验证了系统功能,可满足一般称重需求,但还有较大的改进空间。比如完善数据滤波算法减少数据抖动、又如分段程序补偿改善非线性度的误差影响,或者在程序中设置常用单价表格以减少每次手动输入的繁琐,还可以设置微调按键,当压力传感器长时间使用后会有形变和本身误差,可通过手动微调修正传感器误差等。在实际产品化的过程中还需考虑更多需求和环境适用,以确保电子秤的功能及性能。

猜你喜欢
电子秤电阻单片机
织物电阻测试仪校准中电阻示值测量不确定度评定
基于单片机的智能平衡小车设计
浅谈汽车控制模块中电阻的识读
称称你有多爱我
一样就对了
基于无线传输的电子秤系统设计
实现自动控制电阻类型分析之气敏电阻
电阻测量集结号
C8051F020与80C51单片机的异同点
单片机I/O口模拟串行通讯的C51实现方法