《电子工程设计报告(小型温度控制系统).doc》由会员分享,可在线阅读,更多相关《电子工程设计报告(小型温度控制系统).doc(36页珍藏版)》请在三一办公上搜索。
1、 电子工程设计报告题目:温度测量系统/闭环温度控制系统设计专业:电子科学与技术小组:第8小组姓名学号:王丹阳11023224 覃业泰 11023226 李赉龙 11023228指导教师:高新完成日期:2013.12.15中文摘要本电子工程设计的任务是完成一套小型的温度测量与控制系统。这个系统需要完成非电量到电量信号转换、信号处理、数据采集、数据处理、人机交互、数据通信、控制等设计工作,几乎覆盖一般电子系统的所有设计环节。其中包含有三个阶段。本报告为第二阶段内容,在第一阶段电源模块、变送器模块,驱动器模块的基础上,又包含:单片机模块的设计与实现;数模转换模块的设计与实现;模数转换模块的设计与实现
2、;键盘显示模块的设计与实现。在上述七个模块的基础上,通过软件设计完成环境温度的显示与闭环温度控制两大功能。并通过键盘很方便的进行两大功能的自由切换和目标控制温度的设定。 本报告针对以上模块分别详细给出了设计要求、方案设计、电路设计、原理分析、电路调试、电路故障等方面的内容,以完整反映实验过程。 关键词【关键词】 单片机;温度;闭环控制目录中文摘要1关键词11 课题背景41.1 课题背景41.2 设计概述42 简单电路的模块化设计与实现52.1 单片机应用电路设计与实现52.1.1基本要求52.1.2设计方案52.1.3单片机系统的调试72.1.4调试中遇到的问题92.2模/数转换电路设计与实现
3、92.2.1实验要求92.2.2设计方案92.2.3电路主要参数计算102.2.4 模数转换电路模块的调试122.3显示与键盘控制电路设计与实现132.3.1基本要求:132.3.2设计方案:132.3.3显示模块模块的调试142.3.4键盘模块的调试162.4数/模(D/A)转换电路设计与实现172.4.1基本要求:172.4.2设计方案172.4.3数模转换模块的调试193 整体电路的调试与功能实现213.1环境温度显示功能的实现213.2闭环温度控制功能的实现22附录23附录一、环境温度显示源程序23附录二、温度闭环控制源程序24附录三、参考文献281 课题背景1.1 课题背景在化工、石
4、油、冶金等生产过程的物理过程和化学反应中,温度往往是一个很重要的量,需要准确地加以控制。因此以温度作为被控制量的反馈控制系统广泛的应用于其他领域,是用途很广的一类工业控制系统。温度控制系统常用来保持温度恒定或者使温度按照某种规定的程序变化。目前,温度控制系统是应用最广泛的闭环控制系统,不但走进了工厂,而且走进了千家万户,为老百姓服务。本课程通过对闭环温度控制系统的设计与实现,逐步掌握系统的设计方法与设计流程,掌握单片机应用系统的设计与调试,并锻炼在调试中发现问题、解决问题的能力。1.2 设计概述本报告所涉及的小型温度控制系统为教学实验系统,所以只提出功能、指标和采用元件的设计要求。(1)温度控
5、制范围:0100 (2)测温元件:半导体温度传感器AD592(3)温度控制执行元件:半导体制冷片(4)核心控制部件:C8051F系列单片机小型温度控制系统基本组成如图所示: 图1. 1 系统整体功能框图 需要说明的是本报告是在第一阶段简单电路的模块化实现的基础上,通过更加复杂电路的设计与实现,并配合相关软件设计,共同完成温度控制任务。一般来说一个比较复杂的电路系统,可以按照电路实现的功能或电路的类型分为若干个模块。其中有些模块与其它模块之间的界面清晰,入口参数和出口参数明确,能够独立工作,这类电路模块可以称之为独立电路模块。为了简化系统电路的设计工作,并且使系统便于组装、调试,这类电路模块可以
6、单独进行设计、实现和调试、检测。本阶段的设计任务仍然采取模块化的方法,分模块进行设计与焊接、调试。这样可以有效降低模块设计的难度,分模块调试,也是调试更加方便,降低了系统失败的风险。本阶段上上阶段已完成电源模块、变送器模块和驱动器模块的设计与实现的基础上。继续完成单片机模块、AD模块、DA模块、键盘显示模块的设计与实现。并在各模块的基础上完成软件设计,实现环境温度的采集与显示,环境温度的闭环控制两大功能,成功完成了预期目标。2 简单电路的模块化设计与实现2.1 单片机应用电路设计与实现2.1.1基本要求片选信号: 6个 地址信号: 4个数据总线: AD0AD7控制信号: WR,RD 安装: 独
7、立电路板结构2.1.2设计方案采用以MCS-51(C8051F023)为核心的单片机做为控制芯片。MCS-51系列单片机有众多性能优异的兼容产品、成熟的开发环境、世界上最大的单片机客户群、高性价比、畅通的供货渠道,是初学者的首选机型。本电路直接采用成品单片机最小系统版,最小系统版内置晶振与复位电路,可以简化设计,方便焊接,也增加了设计与实现的成功率。是单片机模块更加可靠。图2. 1典型的51单片机的最小系统电路图本次设计采取总线结构,把单片机的P1口作为数据总线接口,P1、P2口联合使用作为地址总线接口。通过总线结构设计,可以有效减轻软件设计难度,也是单片机控制的多个功能部件更加协调一致的工作
8、。图2. 2 单片机总线设计框图如图2.2所示,控制系统在数据/地址传输上采用数据/地址分离设计;在控制上采用部分译码电路。数据/地址分离电路设计:单片机模块P3口为数据/地址复用端口,为了得到低8位地址,采用74LS373锁存器构成典型的数据/地址分离电路。地址译码电路设计:采用74LS138构成部分译码电路。具体电路图如下:图2. 3单片机系统设计电路图为便于各模块协调一致的工作,电路设计统一接口模式,方便调试与查错,单片机模块安装接口如图2.4所示。图2. 4 单片机模块装结构图2.1.3单片机系统的调试调试平台:电子工程设计训练调试台调试内容:地址译码电路输出检测 适用电路:部分地址译
9、码电路 测试设备:JTAG适配器单片机应用系统板150MHz数字双踪示波器调试方法:1、检查电路连线无误后,将电路板安装在测试台上2、断开译码电路负载,运行测试程序,检查各输出引脚是否有输出, 各个输出之间相对位置关系是否正确;3、用示波器观察CS0 CS5引脚,应有图示的波形输出。如果没有输出或者彼此关系错乱,都表明电路中存在故障。CS0 CS5输出波形图如图2.5所示:CS0:CS1:CS2:CS3:图2. 5 单片机模块调试波形图调试程序:#include C8051F020.h#include absacc.h#include data_define.c#define C1 XBYTE
10、0x0000#define C2 XBYTE0x2000#define C3 XBYTE0x4000#define C4 XBYTE0x6000#include Init_Device.cvoid main(void) Init_Device();while(1) C1=0; C2=0; C3=0; C4=0;2.1.4调试中遇到的问题刚开始调试的时候,我们用示波器观察CS0CS5的波形,但是并没有得到正确的波形。后经检查,发现老师提供的测试程序的译码地址与我们的硬件电路并不匹配,查电路设计图后,修改程序译码地址,最终得到正确波形。完成了单片机模块的设计与调试。表2. 1 常见故障及原因故障现
11、象故障原因输出全部没有变化74LS373未接电源输出全部没有变化74LS373漏接+5V输出全部没有变化74LS373漏接地线输出全部没有变化未接ALE或ALE无效 输出关系混乱 AD0 AD3接错对应引脚无输出AD0 AD3漏接2.2模/数转换电路设计与实现2.2.1实验要求输入信号范围: 0V+5V分辨率: 8bit精度: 1LSB转换时间: 1ms安装: 独立电路板结构2.2.2设计方案本次设计AD转换电路采用芯片ADC0804,芯片主要参数如下:工作电压:+5V,即VCC=+5V。 模拟输入电压范围:0+5V,即0Vin+5V。 分辨率:8位,即分辨率为1/2=1/256,转换值介于0
12、255之间。 转换时间:100us(fCK=640KHz时)。 转换误差:1LSB。 参考电压:2.5V,即Vref=2.5V。模数转换器,是将模拟电信号转变成计算机能识别的数字信号。在模数转换中,应根据测量精度要求,考虑转换电路的精度和分辨率,并力求降低成本。模数转换有多种方法可以实现,如采用电压/频率变换器,以频率或脉宽来计算温度,也可以采用A/D变换器或其它方法。如采用A/D变换器,应考虑转换器输入阻抗和变送器输出阻抗对信号的衰减可能引起的测试误差,并尽量降低这一误差。板间连接应注意保护。根据课设要求,温度0100 的变化是用电压05V表示的,转成数字表示,即0FFH。AD电路模块电路图
13、如图2.6所示图2. 6AD模块工作的时序图如图2.7所示。图2. 72.2.3电路主要参数计算(1) 转换精度:A/D转换器也采用分辨率和转换误差来描述转换精度。分辨率是指引起输出数字量变动一个二进制码最低有效位(LSB)时,输入模拟量的最小变化量。他反映了A/D转换器对输入模拟量微小变化的分辨能力。在最大输入电压一定时,位数越多,量化单位越小,分辨率越高。转换误差通常用输出误差的最大值形式给出,常用最低有效位的倍数表示,反映A/D转换器实际输出数字量和理论输出数字量之间的差异。(2) 转换时间:转换时间是指转换控制信号(vL)到来,到A/D转换器输出端得到稳定的数字量所需要的时间。转换时间
14、与A/D转换器类型有关,並行比较型一般在几十个纳秒,逐次比较型在几十个微秒,双积分型在几十个毫秒数量级。实际应用中,应根据数据位数、输入信号极性与范围、精度要求和采样频率等几个方面综合考虑A/D转换器的选用。(3) 8位数模转换电路主要技术指标:分辨率 - 8位:表示能够分辨的最小电压变化DATA 为 1 时的 Vi 表示最小电压变化 误差 - 1LSB转换时间 - 100微秒为便于各模块协调一致的工作,电路设计统一接口模式,方便调试与查错,模数装换模块安装接口如图2.8所示。图2. 8 模数转换电路安装结构图2.2.4 模数转换电路模块的调试改变设置温度,运行A/D测试程序,检查模/数转换结
15、果。一般为05伏特之间改变,相应数为0255.调试源程序为:#include C8051F020.h#include absacc.h#include data_define.c#define CS1 XBYTE0x2000#define TIMER 0x8000#include Init_Device.cvoid delay(void);void main(void) unsigned char x; Init_Device();while(1) CS1=x; delay(); x=CS1; delay(); void delay(void) unsigned int i; for(i=0;
16、iTIMER;+i);一般故障检测方法为:查数据线是否漏接, 若A/D转换结果数值不随设置温度正比变化检查数据线是否错接;查Vin(-)是否接GND;查 Vin(+) 是否有变化,如无变化,逆向检查直至变送器输出。 若电源连接正常,查CLK-IN引脚是否有锯齿波信号输出,若没有输出检查相关元件连接是否正确,若频率过高(正常约为640KHz)检查元件参数是否有误。如果元件连接及元件参数无误仍无信号输出,则ADC0804损坏。若CLK-IN引脚有正常的锯齿波信号输出,可修改测试程序,将延时子程序或延时函数去掉,加快程序循环的时间,检查转换控制信号、和数据读取控制信号WR/RD是否正常。若上述控制信
17、号正常,则可能是ADC0804损坏。2.3显示与键盘控制电路设计与实现2.3.1基本要求:1、4 位7 段数码显示,前 3 位含小数点2、0 9数字输入键及若干功能设置按键控制3、独立电路板安装结构2.3.2设计方案:单片机与LED显示器有两种接口方法。动态显示电路方案:电路简单,成本低,控制程序复杂,适用于显示位数较多的场合。可使用智能芯片8279完成。本阶段我们用74LS273 设计显示数据输出电路,然后用74LS244设计键盘状态读入电路,最后设计出总的实验电路图,显示模块的电路原理图如图2.9所示。图2. 9 显示模块电路原理图矩阵键盘电路方案:按键较多时,成本低,控制程序较直读电路复
18、杂,适用于显示位数较多的场合。键盘电路的电路图如图2.10所示。图2. 10 键盘模块电路图键盘模块工作的时序图如图2.11所示。图2. 11键盘模块工作时序图为便于各模块协调一致的工作,电路设计统一接口模式,方便调试与查错,键盘显示模块安装接口如图2.12所示。图2. 12 键盘显示模块安装结构图2.3.3显示模块模块的调试(1)显示电路模块调试源程序:#include C8051F020.h#include absacc.h#include data_define.c#define DP1 XBYTE0x0000#define DP2 XBYTE0x0001#define DP3 XBYT
19、E0x0002#define DP4 XBYTE0x0003#define TIMER 0x8000#include Init_Device.cunsigned char table =0xC0,0xF9,0xA4,0xB0,0x99, 0x92,0x82,0xF8,0x80,0x90;void delay(void);void display(unsigned char x,y);void main(void) unsigned char i,num=0; Init_Device(); DP1=DP2= DP3=DP4=0xff; while(1) for(num=0;num10;+num)
20、 i+; if(i=4) display(i,num); else i=1; display(i,num); delay( ); (2)显示模块故障检测方法:运行显示模块测试程序,如果电路工作正常,在4个数码管上应有数字 0-9 滚动显示。否则,说明电路存在故障,可以根据故障现象,按照下面的方法进行检查。全黑:数码管未接电源, 74LS237未接电源或地, 74LS237触发控制信号(CK)不正常, 数据线全部漏接全亮:74LS237的CLR引脚未接高电平,乱显示且无规律、无变化:74LS237触发控制信号(CK)不正常二次译码信号线上无信号:一次译码信号线漏接或信号线上无信号, 二次译码电路
21、74LS138的E2、E3连接错误, 二次译码电路74LS138漏接电源或地线, 地址信号( 74LS138 的A、B、C输入)不正常, 访问地址错误2.3.4键盘模块的调试运行键盘控制电路的测试程序,如果电路工作正常,在键盘上每按 1 个键,都会通过 2 位数码显示管,显示相应的行编码和列编码。否则,说明电路存在故障。调试源程序如下#include C8051F020.h#include absacc.h#include data_define.c#define DP1 XBYTE0x7000#define DP2 XBYTE0x7100#define DP3 XBYTE0x7200#def
22、ine DP4 XBYTE0x7300#define TIMER 0x8000#include Init_Device.cunsigned char table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;void display(unsigned char x,unsigned char y) DP3=tablex; DP4=tabley;void main(void) unsigned char l_val,r_val,r_state,temp,cont,x,c; int key; DP1=DP2=DP3=DP4=0xff; Init
23、_Device(); while(1) key=0x0004; for(x=1;x5;x+,key+) c=XBYTEkey; if(r_state=c&0x1f) for(cont=1,temp=0x01;cont6;+cont,temp=temp1) if(r_state&temp)!=0) r_val=cont; l_val=x; display(l_val,r_val); 2.4数/模(D/A)转换电路设计与实现2.4.1基本要求:输入范围: 00H 0FFH 对应输出: -10V+10V 误差: 1%FSR 响应时间: 1ms电源供电: +5V,12V安装: 独立电路板结构2.4.2
24、设计方案D/A的作用是把输入的模拟信号转化为数字信号。有电流开关型、脉宽调制型等。在这里,我们采用DAC0832构成D/A电路。 DAC0832是8 位乘算型电流输出的典型产品,具有MCU兼容接口,使用方便,价格低,能满足设计要求。数模转换器是整个控制系统将计算机输出的数字信号转化成模拟信号的重要部件,它的特性直接影响温度转换的精度。其转换的精度主要由数模转换器的位数和Vref。DAC0832工作原理及特性如图2.13所示:图2. 13模数装换工作原理数模转换电路如图2.14所示:图2. 14 数模转换模块电路图原理分析:DAC0832的Iout1和Iout2作为输入信号输入到LM358的输入
25、端。由电流-电压转换电路可知:LM358的1号管脚输出为:,此管脚作为输入信号输入到U2BLM358的反相输入端。则U2BLM358输出端输出为:V= -Vout1*R3/R1-5*R3/R2取电阻参数:R1=5K,R2=10K,R3=20K。因为Vout1的取值为(-5V0V),R3/R1=4,故-Vout1*R3/R2的范围为(0V20V),又因为-5*R3/R2=-10V所以总输出范围:V=020V-10V=-10V10V。为便于各模块协调一致的工作,电路设计统一接口模式,方便调试与查错,数模装换模块安装接口如图2.15所示。图2. 15 数模转换模块安装结构图2.4.3数模转换模块的调
26、试调试平台:电子工程设计训练调试台调试内容:地址译码电路输出检测 适用电路:数/模转换电路板测试设备:JTAG适配器单片机应用系统板数/模转换电路板150MHz数字双踪示波器(1)调试方法:1、检查电路连线无误后,将电路板安装在测试台上2、断开电路负载,运行测试程序,检查各节点信号是否正确。如果有问题,按照故障诊断预案进行诊断分析,并且排除故障。3、用示波器观察LM3587号管脚。正确的输出波形如图2.16所示图2. 16 数模转换测试波形图(2)调试程序:#include C8051F020.h#include absacc.h#include data_define.c#define CS
27、2 XBYTE0x4000#define TIMER 0x8000#include Init_Device.cvoid delay(void);void main(void) unsigned char x; Init_Device(); while(1) +x; CS2=x; /*delay();*/ void delay(void) int i;for(i=0;iTIMER;+i) ;(3)故障检查:根据第二级运放输出信号波形判断故障原因部分节点无信号或全部节点无信号的故障原因:第二级运放无信号输出:连线有误或运放损坏二级运放皆无信号输出:连线有误或未接电源或运放损坏或D/A电路故障断开第
28、一级运放输出与Rfb的连线,测量Iout1引脚有锯齿波输出为运放损坏,否则为D/A电路故障调试中遇到的问题:调试时由于接线问题,没能获得正确波形。纠正接线问题后,发现输出波形正确但是幅值不对。经细心观察,实际输出波形为正确波形幅值的0.1倍,初步判断为示波器的衰减探头打到了X10位置。检查示波器探头,果不其然。纠正错误后波形输出终于正常。3 整体电路的调试与功能实现在分模块电路设计完成之后,就要进行整系统联合的功能调试,整体调试主要实现两个功能。分别是环境温度显示功能和闭环温度控制功能。通过整体功能的调试与实现,进一步深化对系统设计的理解,增强系统调试能力与发现问题、解决问题的能力。3.1环境
29、温度显示功能的实现调试过程:连接电路并运行程序。观察测温系统数字显示,应跟随调试台设置温度变化并与调试台设置温度接近。若测量温度与设置温度相差过大的调试,则需调整变送器。调试台设置低端温度,变送器进行零点校准,调试台设置高端温度,变送器进行满度校准。调试源程序见附录一,调试结果如图3.1所示。图3. 1 温度显示功能实现图3.2闭环温度控制功能的实现调试过程:连接电路并运行程序。通过键盘切换到环境温度显示功能。观察测温系统数字显示,应跟随调试台设置温度变化并与调试台设置温度接近。若测量温度与设置温度相差过大的调试,则需调整变送器。调试台设置低端温度,变送器进行零点校准,调试台设置高端温度,变送
30、器进行满度校准。通过键盘切换到闭环温度控制功能。通过键盘设定目标控制温度,观察实际温度时候能变化到目标控制温度。可以通过改变程序来调节控制精度。调试源程序见附录二,调试结果如图3.2所示。图3. 2 闭环控制功能实现图4 收获和体会第二阶段我们一共完成了测温系统中的单片机,A/D转换,D/A转换,显示键盘电路一共四块电路板。虽然有了第一阶段的一些经验积累,没有那么手忙脚乱,但是这四块板子的难度相比第一阶段来说是更加的高。第二阶段我们主要面临的问题有以下几点。第一点就是电路板需要焊接的线数量非常大,非常密集。这就意味着排线的难度大幅增加,同时在焊接过程中很容易出现失误。在单片机这块的焊接中,我们
31、就出现了把芯管脚搞反,结果在插针焊接的时候错了很多,要更改起来特别困难。另外在布线的结构上我们也存在很大的问题,这就让焊接的线变得很多很乱,在测试电路的时候出现问题,查线排除故障进行的非常缓慢。另外在显示键盘电路这块板子上,一开始四个数码管只有两个亮,我们以为是数码管的问题,但更换之后问题依然存在。于是再进行电路检查,查了三四遍线路都认为没有问题这让我们觉得非常奇怪,后来在和其他组同学的电路板对比之后发现少了两根地线没有接,还是我们焊接时候的粗心大意造成的。最让我们组头痛的就是测温系统,将6块板子组合在一起进行测试。在之前我们每块板子单个都通过了测试,可是没有想到进行测温系统测试的时候竟然没有
32、成功。经过推断我们认为问题肯定是出现在单片机上,但是不论是查线还是测试输出波形都查不出问题所在。在我们非常着急头痛走投无路的时候,老师给予了我们巨大的帮助。本学期电子工程设计课程圆满结束,在这学期我们第一次尝试去完成一个功能完善的电子系统。在这个过程中遇到了诸多的困难,但我们都顽强的克服了,我们的动手能力得到了锻炼,让我们明白纸上的电路转换为实际的系统,需要付出百倍的努力和耐心才能实现。也让我们更加敬仰在历史长河中那些为人类做出贡献的电子工程师。最后感谢高新老师的耐心教导和帮助。附录附录一、环境温度显示源程序#include C8051F020.h#include absacc.h#inclu
33、de data_define.c#define C0 XBYTE0x0000#define C1 XBYTE0x2000#define C2 XBYTE0x4000#define DP1 XBYTE0x0000#define DP2 XBYTE0x0001#define DP3 XBYTE0x0002#define DP4 XBYTE0x0003#define TIMER 0x8000#include Init_Device.cunsigned char table10=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;unsigned cha
34、r keymatrix54=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;void display(unsigned char x,unsigned char y) if (x=1) DP1=tabley; else if(x=2) DP2=tabley; else if(x=3) DP3=tabley; else DP4=tabley;void delay(void) int i; for(i=0;i9) hr=9;if(lr0) if(dnum1) output=255; else output=128-dnum; else if(dnum-1) output=0; el
35、se output=128-dnum; C2=output;/Output C2 while(dnum!=0); goto aa; unsigned char keyboard(unsigned char *dp) unsigned char col,row,r_state,temp,c,i=1; int key; do key=0x0004; for(row=0;row4;row+,key+) c=XBYTEkey; if(r_state=c&0x1f) for(col=0,temp=0x01;col4;+col,temp=temp1) if(r_state&temp)!=0) i+; if(keymatrixrowcol=A) return 0; dp3+i%2=keymatrixrowcol; display(3+i%2,keymatrixrowcol); delay();delay();delay();delay(); delay();delay();delay();delay(); while(1); unsigned char key_scan(void)