智能电子称的设计

更新时间:2024-04-19 13:58:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

智能电子称的设计

组号:第五组 组员:王润源 杨锡贵 彭文星

摘要:该系统以单片机LM3S811为控制核心,实现电子秤的基本控制功能。系统的硬件部分包括最小系统部分、数据采集部分、人机交互界面和系统电源四大部分。最小系统部分主要包括单片机内部的A/D转换器;数据采集部分由压力传感器、信号的前期处理和A/D转换部分组成,包括半桥测量、精密仪表放大器INA122和单片机控制的A/D采样;人机界面部分为键盘输入、LCD,可以直观的显示重量的具体数字以及方便的输入数据,使用方便;系统电源是用两节干电池3V提供。系统的软件部分应用单片机C语言进行编程,实现了该设计的全部控制功能。该电子秤可以实现基本的称重(称重范围为0~2.999Kg,重量误差优于±5%)、显示购物清单的功能,并能完成发挥部分对于液态商品具有去皮功能,还具有超量程和欠量程的报警功能。本系统设计结构简单,使用方便,功能齐全,精度高,具有一定的开发价值。

关键词:智能电子秤;INA122;压力传感器

一、方案比较与论证 1、压力传感器的选择

这里的传感器是将非电量转换成电量,传感器按线性变化易于整个系统的控制和软件编程,传感器的响应速度和精度更是衡量其性能重要参数。 方案一:采用单臂电桥压电传感器。电桥输出电压 。 方案二:采用半桥压电传感器。电桥输出电压 。

根据题目的要求,方案二比方案一精度更高,且对后级仪表放大器性能要求要比方案一要求的要低。所以我们选择方案二半桥压电传感器。 2、仪表放大器的选择

方案一:采用INA122仪表放大器。NA122精密仪表放大器,单电源供电是2.2~36V,双电源供电是–0.9/+1.3V~±18V,内部两级运放,轨对轨的压摆,共模抑制比高,输入阻抗大,增益高,精度非常好,且外部接口简单。

方案二:采用INA128仪表放大器。INA128也是精密放大器,但它只能是双电源供电,而本次设计要求用两节干电池供电;且其内部三级运放,成本比INA122要高。

综合考虑,选择方案一。 3、单片机的选用

方案一:采用传统的51单片机。传统51系列单片机为8位机,价格便宜,控

1

制简单,但是运算速度慢,片内资源少,存储容量小,难以存储大容量的程序和实现快速精准的反应、控制、计算。

方案二:采用FPGA可编程逻辑器件。FPGA功能强大,编程灵活,低功耗,但是价格昂贵操作复杂。

方案三:采用TI公司LM3S811控制器。LM3S811是64位的单片机,功能强大,运算速度快、控制简单,存储容量大。

根据题目要求,性能和成本比较,我们选择方案三,采用TI公司的LM3S811控制器。 4、A/D转换器

方案一:ADC0809是一款8位的A/D转换器。 方案二:TLC5615是一款10位的A/D转换器。

方案三:LM3S811内部集成了12位A/D转换器,只需要调用相关的程序,便可驱动A/D。

根据方案比较,LM3S811内部集成了12位的A/D,不光精度高而且不用去单独的制作A/D转换硬件,所以我们选择方案三。

二、系统方案设计

1、总体设计

压力传感器 放大 稳压 电调理 路

图2-1 系统总体框图

电A 桥/ 测量 电D 路 采样 LM3S811单片机 数据处理 LCD驱动 LCD显示 报警警告 键盘控制 按键控制

当被称物体放置在秤体的秤台上时,其重量便通过秤体传递到称重传感器,传感器随之产生力-电效应,将物体的重量转换成与被称物体重量成一定函数关系(一般成正比关系)的电信号(电压或电流等)。测量部分是利用压力传感器检测压力信号,得到微弱的电信号,而后经处理放大电路,处理后,送单片机中的A/D转换器,将模拟量转化为数字量输出,键盘控制接受来自A/D转换器输出的数字信号,经过复杂的运算,将数字信号转换为物体的实际重量信号,并将其送

2

到显示单元中,并在LCD上显示出来。

2、压力传感器的测量原理

压力传感器的工作原理:当导体或半导体受到外力作用时,会产生机械变形,从而导致阻值变化。导体与半导体的电阻与电阻率及其几何尺寸有关。当导体受外力作用时,电阻率及几何尺寸的变化会引起电阻的变化。因此,通过测量电阻值的大小,就可以反映外界力的大小。

压力传感器的测量电路可采用桥式测量电路。桥式测量电路有四个电阻,其中任何一个电阻均可以是应变片。如能恰当的选择个桥臂的电阻,可以消除电桥的恒定输出,使输出电压只与应变片的电阻有关。当传感器不受载荷时,弹性敏感元件不产生应变,粘贴在其上的应变片不发生变形,阻值不变,电桥平衡,输出电压为零;当传感器受力时,即弹性敏感元件受载荷P时,应变片就会发生变形,阻值发生变化,电桥失去平衡,有输出电压。

3、前级放大电路

INA122是一个两级运放的精密仪表放大器,具有单电源供电、功耗低、精度高、噪声低和输入偏置电流低等特点。其最大输入偏置电流为25nA,这一参数反映了它的高输入阻抗。INA122在外接电阻Rg时,可实现5V~10000V范围内的任意增益;工作在单电源范围为2.2~36V;并且它的输出压摆率是轨对轨形式,输出的电压成线性关系。仅需调整一个电阻Rg,就能方便的调整放大器的增益。由于整个电路对称,调整时不会造成共模抑制比的降低。

图2-3 放大电路原理图 3

4、电子秤原理图

如图,电子秤硬件电路主要由TL431稳压电路、半桥测量电路、放大电路、外接三个电阻构成,放大电路6脚接单片机的A/D采样。

三、系统软件设计

用数字键 输入,并可修改 设置单价 去皮即清零 图2-4 电子秤原理图

系统的主程序流程框图如图3-1所示:

开 始 系统初始化 显示主界面,读标定系数 称重及数据处理 读7279,判键 有键吗? N Y 累计 金额 求和 清零 清单 回到初始化 4 显示 商品名称等 显示总金额

确认

四、测试方法与仪表

1、测试仪表

仪器名称 数字万用表 稳压电源 图3-1 软件流程图

图4-1 测试仪表 数量 1 1 型号 UA9205N YB173IC 2、操作方法 ? 把传感器放平,接通电源,显示主界面,如果空称时显示不为零,可按

去皮键清零;如需去除器皿皮重,先按去皮键,再在器皿上放物件,则显示净重;

? 如果物价重量超出测量范围,显示超重警告;

? 单价设置时,先按设置键,再用数字键输入单价,可使用删除键修改。 3、测试方法 ? 电子称放平,用万用表电压档红表笔接仪表放大器的输出端黑表笔接地,

测出秤盘上没有重物到添加重物、依次增加重物的重量所显示的数据,没有放重物时所显示的数据就是本系统的误差

? 设置单价,当物件重量变化时,读取相应的金额; ? 使用累计功能,读取总金额; ? 使用汇总功能。

4、测试数据及测试结果分析 ? 测试数据

按照操作方法,对 500g到3000g的盐进行测试,从小到大,然后从大到小,共测量7个来回,共14次; ? 测试结果及分析

表4-4 重量测试结果与误差分析

物品名称 实际重量(kg) 食盐 食盐 食盐 食盐 食盐 食盐 食盐

5

测示重量(kg) 0.01 0.49 1.00 1.50 2.01 2.49 2.99 放大倍数 1000 1000 1000 1000 1000 1000 1000 绝对误差 0.01 0.01 0.00 0.00 0.01 0.01 0.01 0.00 0.50 1.00 1.50 2.00 2.50 3.00

五、系统总结

此次设计的“电子秤”基本要求称重误差优于±5%,发挥部分重量精度优于1%,通过测试,我们实际所测的误差为1%,系统完全达到了设计要求,不但完成了基本要求,发挥部分的要求并增加了超重报警功能。系统误差用软件的算法将其去掉。压电传感器的灵敏度、仪表放大器的精度、A/D转换器的位数和转换速度,决定了整个系统的反应速度和精度。

六、参考文献

1 <<凌阳16位单片机应用基础>> 罗亚非 等编著. 北京航空航天大学出版社

2 <<单片机的C语言应用程序设计>> 马忠梅,马岩等编. 北京航空航天大学出版

社出版.

3 〈电子测量仪器原理与使用〉〉林占江,林放编著. 电子工业出版社. 4 〈〈数字电子技术〉〉 徐丽香编著. 电子工业出版社.

七、附录

(1)// ADC采样

unsigned long adcSample(void) {

unsigned long ulValue;

ADCProcessorTrigger(ADC_BASE, 0); // 处理器触发采样序列

while (!ADC_EndFlag); // 等待采样结束

ADC_EndFlag = false; // 清除ADC采样结束标志

ADCSequDataGet(ADC_BASE, 0, &ulValue); // 读取ADC转换结果

return(ulValue); }

void Displaydy(unsigned long ulValue) {

unsigned int DyValue,h; DyValue=(ulValue*3*100)/1024; if(DyValue>max)max=DyValue;

if(max>189){for(h=0;h<6;h++)Display(0,16*h,46+h);} if((max-DyValue)>27)max=0;

6

mm=(192*max-6300)/100; //mm=200*max-66; Depart(mm); kgg(); }

(2)//算钱的功能 unsigned int k=0,l=0,j=0; void qian() {

unsigned int m; m=(price*mm)/100;

jin[j]=m-pi; //Displayen(4,32,jin[j]/1000); Displayen(4,40,jin[j]/100); Displayen(4,48,30);

Displayen(4,56,jin[j]/10); Displayen(4,64,jin[j]); if(temp==11){pi=m;temp=50;} if(temp==10) {

jin[j]=m-pi; sum=sum+jin[j++]; kg[l]=mm; l++;

ming[k]=xx k++; ming[k]=xxx; k++; //总价

Displayen(6,60,sum/1000); Displayen(6,68,sum/100); Displayen(6,76,30); Displayen(6,84,sum/10); Displayen(6,92,sum); pi=0; temp=50;

7

单价

} }

(3)//显示清单 int ppp=0; void qingdan()

{ if(ppp==1 || ppp==2||ppp==3 || ppp==4||ppp==5 || ppp==6||ppp==7 ||ppp==8||ppp==9 || ppp==10) {

clear_screen(0); Display(0,0,0); Display(0,16,1); Display(0,40,2); Display(0,56,3); Display(0,80,4); Display(0,96,5); if(ppp==1) {

Display(2,0,ming[ppp-1]); Display(2,16,ming[ppp]); } else {

Display(2,0,ming[ppp]); Display(2,16,ming[ppp+1]); Displayen(2,32,kg[0]/100); Displayen(2,40,30);

Displayen(2,48,kg[ppp-1]/10); Displayen(2,56,kg[ppp-1]); Displayen(2,80,jin[ppp-1]/1000); Displayen(2,88,jin[ppp-1]/100); Displayen(2,96,30);

Displayen(2,104,jin[ppp-1]/10); Displayen(2,112,jin[ppp-1]); temp=49; }}

8

本文来源:https://www.bwwdw.com/article/6k2p.html

Top