《智能型温度测量仪课程设计(17页).doc》由会员分享,可在线阅读,更多相关《智能型温度测量仪课程设计(17页).doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-智能型温度测量仪课程设计-第 16 页目 录前 言2第1章 智能温度测量仪表方案设计与论证31.1 功能与要求31.2 方案论证与比较31.3 方案的确定5第2章 智能温度测量仪表的硬件设计52.1 系统硬件框图如图2所示62.2 温度采集与放大电路的设计62.3 调零电路的设计72.4 A/D转换电路的设计82.5 单片机最小系统92.6 LED显示电路的设计102.7 系统电源的设计.13第3章 软件设计133.1 主程序设计133.2 ADC0809数据读取程序设计.143.3 数字滤波程序设计.163.4 温度设定及显示程序设计.20第4章 设计体会与小结23参考文献24附录25前
2、言智能型温度测量仪是基于AT89C51单片机对温度进行控制的,采用PT100温度传感器采集温度数据,通过仪用放大器将温度信号放大,然后再送入A/D转化器,将模拟信号转变成便于单片机处理的数字信号,经过单片机处理后,把温度用LED数码管以动态扫描的方式显示出来。温度测量仪,涉及了模拟电子技术,数字电子技术,单片机接口技术,传感器检测技术等,是一个综合性比较强的课题,比较适合学生做课程设计,在做课程设计过程中,学生通过查找各种资料和书籍,巩固并加深了对专业知识的认识,提高了分析问题的能力和相对独立思考问题的能力。第1章 智能温度测量仪表方案设计与论证1.1功能与要求与技术指标 功能要求配合温度传感
3、器,实现温度的测量;具有开机自检、自动调零功能;具有克服随机误差的数字滤波功能;使用220V/50Hz交流电源,设置电源开关、电源指示灯和电源保护功能。主要技术指标测量温度范围:0150测量误差:1%显示方式:4位LED数码管显示被测温度值。1.2 总体方案论证方案一:采用DS18B20数字传感器采集温度数据,然后送入单片机进行数据处理,处理后将温度由数码管显示电路图如图1所示:图1-2:DS18B20数字传感器是一个3脚的芯片,1脚为接地,2脚为数据输入输出,3脚为可选的VCC电源。通过一个单线接口发送或接收数据,因此单片机与DS18B20之间仅需一条连线(加上地线)。作为温度采集芯片,可直
4、接将采集值进行处理得到数字量送入单片机,之后由数码管或LCD液晶显示。采用此芯片做温度采集,使得硬件电路结构简单,同时也避免了使用多级电路出现前后级阻抗不匹配的问题,不但节约了硬件部分的成本,提高了采集数据的可靠度。方案二:采用Pt100铂热电阻温度传感器采集温度数据,Ptl00铂电阻具有抗震性能好、测温范围广、测量精度高、机械强度高、耐压性能好等特点,且电阻率较大,其电阻R,与温度t的关系为正比例系数的单调函数,实际测量中有良好的重复性。PT100温度传感器0时电阻值为100,电阻变化率为0.3851/。方案比较PT100 铂热电阻:温度 PT100 阻值 传感两端电压 mV0100.001
5、24.381100.39124.850119.40147.79100138.51170.64150157.33192.93200175.86214.68250194.10235.90300212.05256.59350229.72276.79400247.09296.48450264.18315.69500280.98334.42优点:是一种广泛应用的测温元件,在-50600范围内具有其他任何温度传感器无可比拟的优势,包括高精度、稳定性好、抗干扰能力强等优点,测温范围在本课程设计的要求范围之内。缺点:测量电路比较复杂,容易出现多级电路出现前后级阻抗不匹配的问题。DS18B20数字温度传感器:优
6、点:具有可编程、A/D转换,温度采集电路结构简单。缺点: 55125,测温范围具有一定的局限性,不适合特殊高温场合的应用,不满足本课程设计的要求(0150),故最终选择PT100铂热电阻温度传感器采集温度数据。1.3方案确定经过两种方案的比较,最终选定PT100作为温度传感器。PT100温度传感器0 时电阻值为100,电阻变化率为0.3851/。由于其电阻值小,灵敏度高,所以引线的阻值不能忽略不计,但可采用四线式接法可消除引线线路电阻带来的测量误差。原理如下:如图1-3增加一根导线用以补偿连接导线的电阻引起的测量误差。四线制要求四根导线的材质、线径、长度一致且工作温度相同,使四根导线的电阻值相
7、同,即RL1=RL2=RL3=RL4。通过导线L1、L2给热电阻施加激励电流I,测得电势V1、V2、V3、V4。导线L3、L4接入高输入阻抗电路,IL3=IL4=0。由此可得四线制接法可补偿连接导线的电阻引起的测量误差。图1-3:EA/VPP31XTAL119XTAL218RST9P3.7(RD)17P3.6(WR)16P3.2(INT0)12P3.3(INT1)13P3.4(T0)14P3.5(T1)15P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78(AD0)P0.039(AD1)P0.138(AD2)P0.237(AD3)P0.336(AD4)P0.435
8、(AD5)P0.534(AD6)P0.633(AD7)P0.732(A8)P2.021(A9)P2.122(A10)P2.223(A11)P2.324(A12)P2.425(A13)P2.526(A14)P2.627(A15)P2.728PSEN29 第2章 智能温度测量仪表的硬件设计2.1系统硬件框图如图21所示:温度传感器LED数码管显示单片机A/D信号转换放大电路电源系统系统硬件框图21其工作过程为:温度传感器所感应到的被测对象的表面,由温度信号转换成电信号,将传感器的测量信号经过运算放大电路进行放大,由ADC0809对模拟信号进行数字信号的转换。单片机对数字信号进行信息的处理,并通过单
9、片机IO口把数据传递给LED数码管,由数码管对测量的温度数据进行数据显示,同时单片机与片内软件设置的告警温度阀值相比较,若高出,单片机通过IO口向翁鸣器发出响应的电平,控制蜂鸣器发音,进行告警提示。对于告警的阀值,可以编写单片机程序时进行内部软件的设定。2.2温度采集与放大电路的设计采用PT100三线制接法作为温度采集部分,放大器电路,选用仪表放大器AD626差分放大器。因为我们测量的范围为0150,热电阻桥电路出来的电压为几mV,数据量比较小,采用仪表放大器可以比较精确的得到想要放大的倍数,出现较小的误差。为了满足ADC模数转换的电压需要(05V),需要把小信号放大。AD626的设定放大倍数
10、为100倍。如下图即为AD626放大电路,Ui1和Ui2为桥电路输出电压,Vout1为放大后输出电压值。如图2-2:温度采集与放大电路的电路图2.3调零电路的设计为了能在ADC采样后得到的数字值是从零开始。需在放大电路后面加调零电路。采用INA2132差分大器。INA2132是一种经济型、双路、低功耗单位增益的差分电路,具有高精度光调电阻的运算放大器组成,因此可以提供高精度的增益和较高的共模抑制比。如图2-3,AD626放大电路单端输出的Vout1电压是05V之间。工作原理是当+IN的电压值大于-IN则输出端Vout1输出为正,反之则输出为负。Vout1是INA2132双端输入的正端,负端接一
11、个滑动变阻器组成的电路。调节滑动电阻器阻值可以调节INA2132的-IN端的输入值,达到调零电路的作用。调零电路如图2-3所示:在图2-3中,用一个小电阻R5接在R1的回路中,此时R3与R5分压产生的失调电压加到R1的左端,进而由R1和R2再次分压因而失调电压调整范围由下式确定: 失调电压调整范围=VD(R5R3)(R2(Rl+R2) (VD=l5V) 依据图中的电阻值,其失调电压调整范围约为:15mV。2.4 A/D转换电路的设计 从Out2输出信号是05V间的模拟电压信号,需要经过A/D转换之后将其变成数字信号再输入到单片机内进行处理,单片机可对采集进来的温度数据与所设定的阀值进行比较,然
12、后再控制后面的执行部件。将Out2输出的信号输入到ADC0809的port端口,电路图如图2-4所示图2-4 A/D转换电路2.5单片机最小系统要使单片机工作起来,主要是给单片机增加上电复位电路和外接一个晶振。上电的瞬间,电流有一个突发的向上的尖峰脉冲,因此电流能通过C3电容到达AT89C51的复位端口RESET对AT89C51进行复位。尖峰过后之后,电流平稳,电容C3阻止电流的通过,这样可以防止对AT89C51反复进行复位。电阻R2是用于给C3放电的,并将一号管脚拉低,防止RESET端口上持续高电平。给AT89C51提供一定的时钟频率以后,AT89C51才能开始工作。如图2-5,这个振荡电路
13、与AT89C51内部的时钟振荡器一起组成完整的时钟频率发生电路,XTAL1为AT89C51内部时钟振荡器的输入端,XTAL2为AT89C51内部时钟振荡器的输出端,XTAL为晶振,起到选择振荡频率的作用,这里使用的时钟频率为12MHz。C1、C2为振荡补偿电容,起到放宽起振频率,让时钟容易起振的作用。电路如图2-5所示:图2-5单片机最小系统原理2.6 LED显示电路它主要由四位一体数码显示管、4*4 矩阵键盘和 CH451 芯片构成,用于实现系统的温度显示与温度设定功能。在显示电路的设计中,CH451 为该模块电路的核心器件,功能相对完善。CH451 不仅能有效的将采集到的温度值通过数码管进
14、行实时显示;并且还能控制矩阵键盘,读取通过按键获得的温度设定值,一方面可将设定值直接显示,另一方面还能传输给单片机;同时通过 CH451 芯片控制键盘输入和数码显示,还可有效的节省单片机P口的使用,方便单片机的扩展设计。其设计的原理图如图2-6所示:图2-6 LED显示电路该人机接口电路采用LG3641AH型四位一体共阴极数码管(如图2-6-1所示),进行显示,由于LG3641AH 为共阴极数码管, A-H管脚上若输出高电平,则相应段码被点亮。为了避免单片机输出的高电平电压过高使数码管烧坏,应分别在A-H管脚上接200电阻分压。LG3641AH的七段LED码如下表1所示:表1. LG3641A
15、H共阴极断码表图2-6-1 LG3641AH数码管2.7系统电源的设计本系统电源共有三组稳压电路,单组电源稳压电路和正、负对称的两组电源的稳压电路,均采用了集成三端稳压芯片,稳压芯片具有体积小、外围原件少、性能稳定可靠、使用调整方便和价廉。因此获得了广泛的应用。集成稳压器的类型有很多,按结构形式分为串联型、并联型和开关型;按输出电压类型分为固定和可调式,作为小功率的稳压电源以三端式串联型稳压器的应用最为普遍。三端式是指稳压电路仅有输入、输出、接地三个接线端子,有固定式和调节式两种类型。此外又分为正或负电压输出类型。7800系列为三端固定电压输出集成稳压器;7900系列为三端固定负电压输出集成稳
16、压器,型号的最后两位数表示输出电压的稳定值。内部还具有启动电路、限流、短路和安全工作区保护及过热保护电路。该系统稳压电源中,由于5v稳压器的压差2V,现取3V,故输入电压=8/1.2V=6.7V为方便计算先取7V,稳压器的输入电流即为整流滤波电路的负载电流I0= I0(max)+IQ=300+8=308mA.桥式整流二极管参数要求正向平均电流If1/2308mA=154mA ,最大反向电压Um2U=10V,滤波电容求取,T=1/f=1/50s=0.02s,由于单片机的输入阻抗比较低,所以电容耐压值C=1000uf,耐压值应大于输入电压的2倍,故选用1000uf/25V的电容,之后再并联一个小电
17、容用于消除变压器电感,5V电源变压器的原副线圈匝数之比为44:1。由于系统中使用了15V的电源,因此,在选择变压器时使用双电源的变压器,15V的正负电压可用W7815和W7915的三端集成稳压器组成,其中的D3、D4用于保护稳压器,为了产生15V的电压,在两个输出端中间接地,其中线圈的匝数比为7:1,整流二极管和滤波电容的参数值,可以与5V电源中的参数值选取一样。为了让电源有更高的安全系数,不至于损坏系统电路元件及芯片,在变压器的未整流之前添加不同型号的保险管。第3章 智能温度测量仪表的软件设计3.1主程序设计主程序设计代码如下所示:/* 主程序 */main()unsigned char T
18、empH,TempL,i,j,m; relay=1; ch451_init();/初始化451ch451_write(0x0403); /开显示、 ch451_write(0x580); /设置BCD译码 EA=1;/开中断while(1) EX1=1; /允许键盘中断 flag=0; if(setb=1) Set_temp(); str0=TempH/100; /百位温度 ch451_write(CH451_DIG0|str0); str1=(TempH%100)/10; /十位温度 ch451_write(CH451_DIG1|str1); str2=(TempH%100)%10; /个位
19、温度,带小数点 ch451_write(CH451_DIG2|str2); ch451_write(CH451_DIG3|0x0c);for(i=0;ishowtempi)/则停止加热 m=1;i=i+3;else if(stri4; TempL=temp&0x0F; TempL=TempL*6/10;/小数近似处理3.2 ADC0809数据读取程序设计本次设计采用ADC0809芯片将从传感器输出的信号来进行A/D转换,由于ADC0809数据转换时间仅为32us,所以A/D转换得数据采样频率可以很快,从而也保证某些场合对A/D转换数据实时性的要求。ADC0809芯片接口程序的编写,程序流程图如
20、图3.2所示:产生时钟信号使能芯片开始输入通道控制字读取2字节数据字节数据校验将值送入指定寄存器结束ADC0809数据读取程序流程图A/D转换程序代码如下:ADCS BIT P3.5 ;使能接口ADCLK BIT P3.4 ;时钟接口ADDO BIT P3.3 ;数据输出接口(复用)ADDI BIT P3.3 ;数据输入接口以下语句在调用转换程序前设定MOV B,#00H ;装入通道功能选择数据值以下为ADC0832读取数据子程序=ADC0832读取数据子程序=ADCONV: SETB ADDI ;初始化通道选择 NOP NOP CLR ADCS ;清零/CS端 NOP NOP SETB AD
21、CLK;置位CLK端 NOP NOP CLR ADCLK ;清零CLK端,形成下降沿 MOV A,B MOV C,ACC.1 ;确定取值通道选择 MOV ADDI,C NOP NOP SETB ADCLK ;置位CLK端 NOP NOP CLR ADCLK ;清零CLK端,形成下降沿2 MOV A,B MOV C,ACC.0 ;确定取值通道选择 MOV ADDI,C NOP NOP SETB ADCLK ;置位CLK端 NOP NOP CLR ADCLK ;清零CLK端,形成下降沿3 SETB ADDI NOP NOP MOV R7,#8AD_1: MOV C,ADDO ;接收数据 MOV A
22、CC.0,C RL A ;左移一次 SETB ADCLK NOP NOP CLR ADCLK ;形成一次时钟脉冲 NOP NOP DJNZ R7,AD_1 ;循环8次 MOV C,ADDO ;接收数据 MOV ACC.0,C MOV B,A MOV R7,#8AD_13: MOV C,ADDO ;接收数据 MOV ACC.0,C RR A ;左移一次 SETB ADCLK NOP NOP CLR ADCLK ;形成一次时钟脉冲 NOP NOP DJNZ R7,AD_13 ;循环8次 CJNE A,B,ADCONV ;数据校验 SETB ADCS ;清零/CS端 CLR ADCLK ;清零CLK
23、端 SETB ADDO ;提高数据端,回到初始状态 RET3.3数字滤波程序设计数字滤波方法可以有效抑制信号中的干扰成分,消除随机误差,同时对信号进行必要的平滑处理,以保证仪表及系统的正常运行。其中中值滤波法比较适合用于去掉由偶然因素引起的波动和采集不稳定而引起的误码等造成的脉冲干扰,对温度等缓慢变化的被测参数采用此法能收到良好的效果,其对应的子程序软件流程图如图3.3所示:保护现场读入采样次数N存储单元首地址送Y读采样值送存储单元YY+1Y , N-1NN=0?调用冒泡法排序子程序计算中值所在单元地址取中值送A返回恢复现场否是图3.3 数字滤波程序流程图数字滤波程序代码如下:#include
24、#include#define uchar unsigned char#define count 5 /*设置采样值个数*/unchart data median;unchar filtering(void) /*中位值滤波子程序*/ unchar idata *addr; int i,j; unchar data buffer; addr0x30; /*设置采样值存储单元首地址*/ for(j=0;j=count-1;j+) /*冒泡排序法*/ for(i=0;i*(addr+i+1) buffer=*(addr+i);(*addr+i)=*(addr+i+1);*(addr+i+1)=bu
25、ffer; madian=*(addr+(count-1)/2); /*返回中值*/3.4 温度设定及显示程序设计该部分主要实现人机接口相互对话的功能,通过开键盘中断,键盘扫描判断有无键按下,若有,则从高位到低位依次将按键值通过对应的4位数码管显示出来,完成温度设定功能;若无,则继续键盘扫描。其程序流程图如图3.4所示。入口设定保温点并显示开中断数码管闪烁保存数据、关中断结束图3.4 温度设定及显示程序流程图温度设定及显示程序代码如下:void Set_temp(void) /设定保温点 unsigned char i; ch451_write(CH451_DIG0|showtemp0);/显
26、示原来设定温度 ch451_write(CH451_DIG1|showtemp1); ch451_write(CH451_DIG2|showtemp2); /设定温度 ch451_write(CH451_TWINKLE|1); /闪烁 EX1=1; while(flag=0); EX1=0; flag=0; showtemp0=ch451_key; ch451_write(CH451_DIG0|showtemp0); ch451_write(CH451_TWINKLE); ch451_write(CH451_TWINKLE|2); EX1=1; while(flag=0); EX1=0; fl
27、ag=0; showtemp1=ch451_key; ch451_write(CH451_DIG1|showtemp1); ch451_write(CH451_TWINKLE); ch451_write(CH451_TWINKLE|4); EX1=1; while(flag=0); EX1=0; flag=0; showtemp2=ch451_key; ch451_write(CH451_DIG2|showtemp2); ch451_write(CH451_TWINKLE); setb=0;参考文献【1】华中科技大学电子技术课程组编,康华光主编. 电子技术基础(数字部分).第五版. 北京:高等教育出版社,2006【2】李群芳等.单片微型计算机.北京:电子工业出版社,2007【3】李志全等.智能仪表设计原理及其应用.北京:国防工业出版社,2000【4】赵茂泰.智能仪器原理及应用.北京:国防工业出版社,1998【5】孙传友等.测控系统原理与设计.北京:北京航空航天大学出版社,2005