1、实验报告院 系: 控制与计算机工程学院 实验名称: 基于单片机控制的半导体温控实验系统指导教师: 陆会明 学生姓名: 孙建建 学 号: 1111190516 班 级: 创新自 1101 班 日期:2015 年 1 月 19 日一、实验简介本实验指导书旨在帮助学生掌握基于半导体的温度控制系统基本原理及系统设计方案实现,同时,通过控制器程序的设计实验,帮助学生深刻理解控制器在一个自动控制系统中的作用。如图 1-1 所示一个常见的自动控制系统,主要包括了控制器、执行器、被控对象、反馈信号。控制器的实质是根据反馈值与给定值计算得到偏差,按照控制器运算规律进行运算,其运算结果用以输出驱动执行器。图 1-
2、1 自动控制系统与图 1-1 相对应的半导体温度控制系统如图 1-2 所示。图 1-2 半导体温度控制系统半导体温度控制系统中:外围电路:主要包括数码管显示,温度给定值设置,手自动控制方式切换;控制器 :由单片机设计程序实现;执行器 :由半导体制冷/热执行器实现;被控对象:密封箱体;反馈信号:温度传感器采集信号;数 码 管:显示反馈温度、设定温度;温度设置:通过按键设定给定值;手自动切换:按键实现手动、自动控制模式切换;二、控制系统介绍下面通过介绍半导体温度控制系统,掌握自动控制系统的控制过程。如图2-1-1 所示,半导体温度控制系统结构图。图 2-1-1 半导体温度控制系统结构图如图 2-1
3、-1 所示,一个完整的自动控制系统,控制器程序由单片机实现,执行器对应半导体制冷/热,反馈信号对应温度传感器信号,被控对象对应密封箱体。半导体制冷/热执行器内部电流方向变换时,执行器可以实现制热面与制冷面的切换,从而半导体温度控制系统通过半导体的制热与制冷配合,达到控制温度的目的。半导体温度控制系统开发板电路与外围电路连接示意图,如图 2-1-2 所示。图 2-1-2 半导体温度控制系统连接图与图 2-1-2 所示控制系统相对应的硬件连接实体图,如图 2-2 所示。图 2-2 半导体温度控制系统硬件连接图半导体温度控制系统工作过程:温度传感器采集被控对象中的温度参数传入单片机,单片机内部经过运
4、算得到温度传感信号与给定值的偏差,偏差作为控制器的输入,若偏差大于 0,控制器运算输出一个合适的制冷控制信号,通过单片机一个引脚输出,经过驱动器的作用,控制半导体制冷;若偏差小于0,控制器运算输出一个合适的制热控制信号,通过单片机另一个引脚输出(此时引脚输出信号时,半导体制冷/热执行器内部电流方向切换) ,经过驱动器的作用,控制半导体制热。控制过程流程图如图 2-3 所示。图 2-3 半导体控制系统控制过程简单的理解,控制器就是一个自动控制系统的核心,温度反馈信号与给定值信号的偏差是它的输入量,控制器运算输出值是它的控制信号输出量。如图2-4 所示。图 2-4 控制器信号流向常规的 PID 控
5、制器控制规律传递函数: ,其中)1()STKsGdipKp、Ti 、Td 分别为增益、积分时间和微分时间。对于不同的被控对象,三个参数的选择大小是不同的。偏差信号就是经过上述控制规律的运算,得到一个合适的控制量,最终输出驱动执行器控制被控对象。三、数码管基础知识3.1 数码管本次开发板使用的 8 位数码管,属于共阴极数码管,如图 3-1 所示。图 3-1 共阴极数码管由图 3-1 所示,数码管分为 8 段, a-g 控制数码管的组合方式,可以控制显示数字 0-9,dp 为小数点。如控制数码管 b,c 点亮时候,数码管显示数字1。8 段数码管 a,b,c,d,e,f,dp 分别连接单片机的 P0
6、 口的 8 个输出引脚,通过两个锁存器的作用,控制 8 位数码管的点亮。其中一个锁存器控制数码管的位选,另一个锁存器控制数码管的段选。位选即选择 8 位数码管的哪一位被点亮,段选即选择被点亮的数码管显示哪个数字。四、实验任务1. 实验目的(1)熟悉并掌握基于半导体的温度控制系统原理及设计方法(2)掌握单片机实现控制器(PID)程序的设计方法2. 实验要求本次实验具体要求如下:(1)掌握基于半导体的温度控制系统原理及设计实现方案(2)通过单片机完成控制器程序的设计及实现(3)通过按键实现控制器给定值的调整(4)实现数码管显示控制器的给定输入值与输出值3. 实验器材本次实验,实验器材包括:51 单
7、片机开发板、STC89C52RC 单片机、晶振、3V 电池、USB 转串口数据线、开发板电源线、温度传感器、半导体制冷/ 热执行器、驱动器。4. 实验准备(1)单片机开发板的电源供电,有 DC-5V POWER,USB-POWER 两种,两种方式选择一种即可,如图 4-1 所示(本实验选择 USB 供电方式) 。图 4-1 单片机开发板电源供电5. 实验步骤(1)硬件电路连接本次实验基于半导体温度控制系统,完整的硬件连接结构图如图 4-9 所示。本次实验主要研究通过单片机完成控制器程序设计,掌握半导体温度控制系统的设计原理与实现方案,不涉及温度传感器电路和驱动电路、执行器的设计。开发板已经准备
8、完成,将晶振、3V 电池、USB 转串口线、USB 供电线(或 5V 电源)连接完成即可。图 4-9 半导体温度控制系统连接结构图 STC89C52RC 单片机缺口方向朝数码管,切勿插反; 晶振:开发板“晶振”二字上方,只插两侧的两个孔,中间留空; 串口线:本次实验提供 USB 转串口线。串口线 USB 口连接计算机USB 口,串口线九针串口连接单片机开发板串口。 (前提是完成实验准备(2) 中 USB 转串口驱动安装) 电池 :安装 3V 电池,供时钟芯片保存信息; 独立按键,S4 增加给定值,S5 减少给定值; 开发板电源:USB 直接供电或 5V 直流电源。电源开关不要打开,在程序下载工
9、具下载程序至单片机之后才可以打开。 (开关处于弹起状态为打开)(2)Keil uVision3 设计控制器程序Keil uVision3 是开发单片机程序的编译器:Keil uVision3 编译器工程建立、设置,文件建立的工作完成后,下面可以在图 4-21 所示窗口设计编写控制器程序。图 4-21程序代码输入完成后,通过编译查找问题。点击主界面“工程”-“建立所 有目标文件” ,或者使用快捷按钮,如图 4-22 红色标记所示。图 4-22编译成功后,使用( 附件/STC_ISP 程序下载工具/stc-isp v391/STC_ISP_V391.exe)程序下载工具,将 HEX 文件下载至单片
10、机。(3)程序调试STC_ISP 程序下载工具将 HEX 文件下载至单片机后,打开单片机开发板电源,通过按键 S4, S5 调节控制器给定值,观察数码管中给定值与控制器输 出值的变化。程序附录:#include#include#include#define uint unsigned int#define uchar unsigned charsbit dula=P26;sbit wela=P27;sbit key1=P36;sbit key2=P37;sbit leds=P14;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
11、0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delaygeiding(uint z)uint x,y;for(x=z;x0;x-)for(y=10;y0;y-);void displayset(uint a)dula=0;P0=tablea;dula=1;dula=0;wela=0;P0=0xfe;wela=1;wela=0;delaygeiding(50);void displayback(uint b)dula=0;P0=tableb;dula=1;dula=0;wela=0;P0=0x7f;wela=1;wela=0;delaygeiding
12、(50);void displayback2(uint b)dula=0;P0=tableb;dula=1;dula=0;wela=0;P0=0xbf;wela=1;wela=0;delaygeiding(50);void displayback3(uint b)dula=0;P0=tableb;dula=1;dula=0;wela=0;P0=0xdf;wela=1;wela=0;delaygeiding(50);void displayset1(uint b)dula=0;P0=tableb;dula=1;dula=0;wela=0;P0=0xfd;wela=1;wela=0;delayge
13、iding(50);void main()uchar m,n,k,l,s1,s10;uint ierror;uint proportion,integral,derivative;uint lasterror1,lasterror2,out=0,dout;m=1;n=1;k=0;l=0;lasterror1=1;lasterror2=0;proportion=3;integral=1;derivative=1;leds=1;while(1)if(key1=0)delaygeiding(10);if(key1=0)m+;lasterror2=lasterror1;lasterror1=ierro
14、r;ierror=m;dout=proportion*(ierror-lasterror1+integral*ierror+derivative*(ierror-2*lasterror1+lasterror2);out+=dout;l=out/100;k=out%100/10;n=out%100%10; /增量式 PIDwhile(!key1);if(key2=0if(key2=0)m-;lasterror2=lasterror1;lasterror1=ierror;ierror=m;dout=proportion*(ierror-lasterror1+integral*ierror+deri
15、vative*(ierror-2*lasterror1+lasterror2);out+=dout;l=out/100;k=out%100/10;n=out%100%10; /增量式 PIDwhile(!key2);s1=m%10;s10=m/10;displayset(s10);displayset1(s1);displayback(n);displayback2(k);displayback3(l);delaygeiding(10);实验结论本次课设程序采用增量式的 PID,数码管输入显示为两位,输出显示为三位。且考虑到本程序输入输出都是 unint 型的变量,故增加判断,当输入为零时,不能减小输入量。程序运行结果如下: