电子秤课程设计.doc
精选优质文档-倾情为你奉上 摘要本文设计的电子秤以单片机为主要部件,用C语言进行软件设计,硬件则以全桥传感器为主,测量0500g电子秤,随时可改变上限阈值,并达到阈值报警的功能。本课程设计的电子秤以单片机为主要部件,利用单臂电桥测量原理,通过对电路输出电压和标准重量的线性关系,建立具体的数学模型,将电压量纲(V)改为重量纲(g)即成为一台原始电子秤。其中测量电路中最主要的元器件就是电阻应变式传感器。电阻应变式传感器是传感器中应用最多的一种。ADC0809 A/D转换的作用是把模拟信号转变成数字信号,进行模数转换,然后把数字信号输送到显示电路中去,最后由显示电路显示出测量结果 。关键字:电子秤、电子应变片、A/D转换器,显示电路 目 录 专心-专注-专业一、系统整体描述 系统由敏感元件、电桥测量电路、放大电路、模数转换电路、单片机最小系统、显示电路和报警电路构成。敏感元件产生物理量变化,由测量电路将信号转换为电信号,并放大输出。通过模数转换后将信号输入单片机中,经过处理后由显示电路显示。若变量超过限定值,则激活报警电路,由蜂鸣器发出报警信号。显示电路单片机最小系统模数转换电路电桥测量电路应变片放大电路报警电路二、 系统模块描述 2.1 电阻应变式传感器的组成以及原理电阻应变式传感器是将被测量的力,通过它产生的金属弹性变形转换成电阻变化的元件。由电阻应变片和测量线路两部分组成。常用的电阻应变片有两种:电阻丝应变片和半导体应变片,本设计中采用的是电阻丝应变片,为获得高电阻值,电阻丝排成网状,并贴在绝缘的基片上,电阻丝两端引出导线,线栅上面粘有覆盖层,起保护作用。 电阻应变片也会有误差,产生的因素很多,所以测量时我们一定要注意,其中温度的影响最重要,环境温度影响电阻值变化的原因主要是: A. 电阻丝温度系数引起的。 B. 电阻丝与被测元件材料的线膨胀系数的不同引起的。 对于因温度变化对桥接零点和输出,灵敏度的影响,即使采用同一批应变片,也会因应变片之间稍有温度特性之差而引起误差,所以对要求精度较高的传感器,必须进行温度补偿,解决的方法是在被粘贴的基片上采用适当温度系数的自动补偿片,并从外部对它加以适当的补偿。非线性误差是传感器特性中最重要的一点。产生非线性误差的原因很多,一般来说主要是由结构设计决定,通过线性补偿,也可得到改善。 滞后和蠕变是关于应变片及粘合剂的误差。由于粘合剂为高分子材料,其特性随温度变化较大,所以称重传感器必须在规定的温度范围内使用。 图1原理应变式传感器安装示意图2.2 直流电桥检测电路 图1-4 单臂电桥转换电路 电桥平衡条件和调零直流电桥转换电路如图2-5(a)所示。 当RL=时,输出电压为(2-15)电桥达到平衡时,输出电压为零,令Uo=0,由式(2-15)得 (2-16)式(2-16)即为直流电桥的平衡条件。图 2-5 直流电桥转换电路和调零电路当式(2-16)不满足时,输出电压U0不为零,此时需要调零电路完成调零。图2-5(b)是典型的直流电桥调零电路,调节电位器Rr可以补偿R1、R2、R3、R4间的不平衡。 电桥的电压灵敏度 单臂电桥的电压灵敏度单臂电桥是将电阻应变片接入电桥的一个桥臂,如图2-4的R1位置,其余桥臂为固定电阻,则其输出电压为 (2-17) 因为电桥初始状态时是平衡的,有R2/R1=R4/R3,令n=R2/R1= R4/R3为桥比。由于R1/R1很小,则 (2-18) 定义直流电桥电路的灵敏度系数为 (2-19) 欲使电路的灵敏度最大,令 ,得(1+n)2-2n(1+n)=0 (2-20)即n=1。所以,选择桥臂电阻阻值,使桥比为1,电路灵敏度达到最大。此时的输出电压为 (2-21) 电路的灵敏度系数为 (2-22) 从前面的推导得知,式(2-21)的输出电压是式(2-17)略去分母中R1/R1项得到的结果,简化后的输出电压Uo与电阻相对变化R1/R1之间是线性的。如果不作简化,实际输出电压为 (2-23) 令n=1,这一线性化引起的非线性误差为 (2-24) 例如,测量过程中电阻的相对变化R1/R11,当采用单臂电桥作为转换电路时,由式(2-24)计算后,得到的非线性误差为L=4.8%。它表明电阻的相对变化较大时,这种简化带来的非线性误差将变得非常严重。 半桥、全桥的电压灵敏度在试件上粘贴两个工作应变片,一个为受拉应变片,一个为受压应变片,大小相等,方向相反,接入电桥相邻桥臂,将构成半桥电路,如图2-6(a)所示;在试件上粘贴四个工作应变片,两个为受拉应变片,两个为受压应变片,分别接入对边桥臂,构成全桥电路,如图2-6(b)所示。 图2-6 差动电桥转换电路对于图2-6(a)所示的半桥电路,输出电压为 (2-25)若R1=R2,R1=R2=R3=R4,则 (2-26)半桥电路的灵敏度系数为: (2-27) 对于图4-6(b)所示的全桥电路,输出电压为 (2-28)全桥电路的灵敏度系数为KU=E (2-29) 2.3放大电路目前的电子称重装置大都使用电阻应变桥式传感器,其核心是由电阻应变计(应变片)构成的电桥电路,这类传感器具有成本低、精度高且温度稳定性好的特点。但其检测原理决定该类传感器输出电压低,要经过差分放大电路放大数百倍才能用于A/D转换。一般说来,传感器输出的电压值都非常小,基本上都是毫伏级甚至微伏级。在设计高精度电子秤时,需要外部放大电路来获得足够的增益。差动放大电路: (1) 原理: 本次设计中,要求用一个放大电路,即差动放大电路,主要的元件就是差动放大器。在许多需要用A/D转换和数字采集的单片机系统中,多数情况下,传感器输出的模拟信号都很微弱,必须通过一个模拟放大器对其进行一定倍数的放大,才能满足A/D转换器对输入信号电平的要求,在此情况下,就必须选择一种符合要求的放大器。仪表仪器放大器的选型很多,我们这里使用一种用途非常广泛的放大器,就是典型的差动放大器ina114ap。它只需高精度和几只电阻器,即可构成性能优越的仪表用放大器。广泛应用于工业自动控制、仪器仪表、电气测量等数字采集的系统中。本设计中差动放大电路结构图如下: 放大倍数的推导过程: 2.4 A/D转换: A/D转换的作用是进行模数转换,把接收到的模拟信号转换成数字信号输出。由于输入电源为直流,电桥经放大后输出电压为直流电压,为模拟信号。经过ADC0809芯片转为数字信号,便于下一步单片机的处理和显示。 ADC0809 内部逻辑结果和芯片引脚如下图所示。 ADC0809芯片实物图 2.5单片机系统使用的单片机芯片为8位STC89C52芯片,外部晶振频率为12MHz。 STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,2个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。 单片机最小系统由晶振、复位电路和单片机芯片构成,电路如(10)图所示。 显示电路有4位7段共阳极数码管组成,可显示千位 百位 十位和个位数据。2.6显示电路单片机处理数据后,将个数据段码送入数码管,数码管即可显示相应的数值。方便安装、调试和观察。且成本很低。电路图如图(11)所示。 图(11) 2.7报警电路: 当所称量质量大于称量上限303g时,由于已经达到放大电压上限,所以显示电路无法显示更大的值。为了提醒使用者,需要设定报警电路。报警电路由三极管和蜂鸣器组成。因为单片机P2口输出电流较小,不足以驱动蜂鸣器。所以使用三极管9013进行电流放大。电路连接如图(12)所示。 图(12) 三:数据处理及程序的设计 3.1数据处理及程序的设计 数据处理子程序是整个程序的核心。主要用来调整输入值系数,使输出满足量程要求。另外完成A/D的采样结果从十六进制数向十进制数形式转化。对于重量与传感器的电压之间的关系,为了确保测量的准确度,用MATLAB软件编程。Lsline指令实现了对多组测量数据的最小二乘拟合,得到了比较理想的线性关系,又运用回归函数polyfit(x,y',1)得到压力与电压的函数关系,使压力的测量的精度进一步提高。 数据采集由ADC0809芯片来完成,主要分为启动、读取数据、延时等待转换结束、读出转换结果、存入指定内存单元、继续转换(退出)几个步骤。ADC0809初始化后,就具有了将某一通道输入的05V模拟信号转换成对应的数字量00HFFH,然后再存入8051内部RAM的指定单元中。其转换方式可以采用程序查询方式,延时等待方式和中断方式三种。本设计采用的是延时等待方式,具体程序流程图如图13所示。 图13 实验数据采集流程图3.2参数整定3.2.1测量数据及误差分析在IN0输入的数最大为5V,要求的质量303g对应的是4.8V,为十六进制向十进制转换方便,将系数放大100倍。并用小数点位置的变化体现这一过程。数据处理子程序是整个程序的核心。主要用来调整输入值系数,使输出满足量程要求。另外完成A/D的采样结果从十六进制数向十进制数形式转化。在硬件调试过程中重量与电压的关系如下表所示: 重量(g)020406080100120140160180200303电压(mv)0-0.025-0.054-0.082-0.109-0.138-0.167-0.199-0.228-0.259-0.291-0.48根据实验过程的情况以及实验时所使用的器材,分析实验所带的误差原因有: 1、作为应变梁的钢尺实验时所产生的应变弯曲不一定是线性的,也就是说实验的重物每增加单位重量时,钢尺所产生的应变大小并不一样; 2、应变片所粘贴的位置并不一定对称; 3、重物所挂在应变钢尺的位置会直接影响电子秤的输出,这是由于杠杆原理的关系; 4、设计电子秤时其中需要用到的器件是模数转换元件,把输入的模拟信号转换成数字信号时所带来的量化误差也在一定程度上影响电子秤的输出; 5、测量开始时需要进行调零,调节电位器使到电桥测量电路的输出为零,再调节相关的电位器调节差动放大器的放大倍数,可能是两个电位器的调节并不理想,才使得输出发生偏差。由于测得实验电压数据太过于小,需经过放大器放大十倍后才能更准确的被A/D采集,进行数据处理。所得拟合曲线如下图所示:3.2.2曲线拟合及参数整定经MATLAB软件编程,得拟合函数为: ( (其中a1= -68.5907 , a0= 3.22476 ) 数据处理过程是对A/D转换结果的数字量的处理,即 数据采集由ADC0809芯片来完成,主要分为启动、读取数据、延时等待转换结束、读出转换结果、存入指定内存单元、继续转换(退出)几个步骤。ADC0809初始化后,就具有了将某一通道输入的05V模拟信号转换成对应的数字量00HFFH,然后再存入8051内部RAM的指定单元中。其转换方式可以采用程序查询方式,延时等待方式和中断方式三种。本设计采用的是延时等待方式,具体程序流程图如图14所示。 加上a0 乘以a1 图14 A/D接口设计流程图 3.3 显示子程序的设计 显示程序是用来实时显示所测质量值,该部分程序是将显缓单元数据进行实时显示。参考文献 1杨新荣.智能仪器原理、设计与发展.中南大学出版社,2003 2 张毅刚.MCS-51单片机应用设计.哈尔滨:哈尔滨工业大学出版社,2003 3 贾伯年,俞朴.传感器技术.南京:东南大学出版社,2000 4 徐仁贵等.单片微型计算机应用技术.机械工业出版社,20015 李道华,李玲,朱艳.传感器电路分析与设计.武汉大学出版社,2000 6 李刚,林凌,姜苇单片机系统设计与应用技巧北京航空航天大学出版社,2004总结 随着集成电路和计算机技术的迅速发展,使电子仪器的整体水平发生巨大变化,传统的仪 器逐步的被智能仪器所取代。智能仪器的核心部件是单片机,因其极高的性价比得到广泛的应 用与发展,从而加快了智能仪器的发展。而传感器作为测控系统中对象信息的入口,越来越受 到人们的关注。传感器好比人体“五官”的工程模拟物,它是一种能将特定的被测量信息(物理 量、化学量、生物量等)按一定规律转换成某种可用信号输出的器件或装置本次设计中的电阻应变片电子称就是在以上仪器的基础上设计而成的。因此,只有充分了解有关智能仪器、单片机、传感器以及各部分之间的关系才能达到要求。 经过几周的努力,终于按照设计进度要求如期完成了电子秤系统的设计任务。在做课程设计的过程中,虽然碰到了不少的困难,但是在老师的指导以及共同的努力下,终于取得了一定成果。 在此次课程设计中,虽然顺利完成了电子称的设计和制作,但也存在一定的不足,如电子称的的精度不够高。同时也有很多的收获,对电阻式应变片的工作原理及性能指标有了更加直观和深入的认识。通过对数据采集的分析, 放大器及 A/D 转换器对信号的转换、传输和处理有了更深的认识。熟悉 AT89C52 单片机功能及工作特性,掌握其接口扩展方法。这些都为我今后学习和工作留下了积极的影响。 附录1仿真图附录2程序#include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit st=P30; sbit eoc=P32; sbit clk=P33; sbit a=P34; sbit b=P35; sbit c=P36; sbit OE=P31; sbit dian=P17; uchar code dt=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; uint data1,disi,disan,dier,diyi; /*延时函数*/ void delay(uint ms) uint i,j; for(i=ms;i>0;i-) for(j=110;j>0;j-); /*初始化函数*/ void init() EA=1;/开总中断 ET0=1;/开定时器中断 TMOD=0x01;/定时器工作方式2 TH0=(65536-20)/256; TL0=(65536-20)%256;/设定时器初值 TR0=1;/启动定时器 /*AD转化函数*/ void AD() st=0; OE=0; a=0; /选择通道0 b=0; c=0; st=1; st=0; delay(10); while(eoc=0);/等待转换完毕 OE=1;/打开传送数据 data1=P0;/数据送入P0口 OE=0; /*计算除法*/ void chufa() data1=data1*196.078; data1=-68.5907 * data1+3.22476 ; /转化为重量disi=data1/1000; disan=data1/100; dier=data1%100/10; diyi=data1%100%10; /*显示函数*/ void xianshi() P1=dtdisi;/ dian=1;/ P2=0x01; delay(1); P1=0xff; P1=dtdisan;/P2=0x10; delay(1); P1=0xff; P1=dtdier;/P2=0x04; delay(1); P1=0xff; P1=dtdiyi;/P2=0x08; delay(1); P1=0xff; /*中断函数*/ void time() interrupt 1 clk=clk; TH0=(65536-20)/256; TL0=(65536-20)%256; /*主函数*/ void main(void) init(); while(1) AD(); chufa(); xianshi();