《生物培养液微机温度控制说明书本科学位论文.doc》由会员分享,可在线阅读,更多相关《生物培养液微机温度控制说明书本科学位论文.doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、武汉理工大学计算机控制技术课程设计说明书生物培养液微机温度控制目 录1主要原理介绍22系统结构图23输入通道设计23.1键盘输入(温度设置)模块23.2传感与检测模块23.3 A/D转换模块23.3.1ADC0809的外部特性23.3.2ADC0809工作方式23.3.3 ADC0809的转化电路23.4温度显示模块24输出通道设计24.1报警电路设计24.2降温控制电路设计24.3 加热控制电路设计25系统总电路图26采用改进PID控制算法2前 言计算机控制技术主要研究如何将计算机技术和自动控制理论应用于工业生产过程,并设计出所需要的计算机控制系统,是自动化专业的主干专业课程。课程培养自动化
2、专业本科生熟悉计算机的最新发展动态,掌握计算机在自动化领域中的应用。生物培养液微机温度控制系统的设计涉及到各个领域里面的知识,包括传感与检测技术、A/D转换技术、自动控制技术等的综合应用,对学生来说有一定的难度。对老师来说可以起到一个很好的考验作用。AbstractComputer Control Technology is a course major to study how will the computer technology and automation theory applied to industrial production processes, and designed
3、out the computer control system, is that automation of backbone technical courses.Thecourse develop automated computer professional undergraduates familiar with the latest development in the dynamic,masrering the computers application in the field of automation.Biological microcomputer control syste
4、m design temperature involved in various fields of intellectual, including sensing and detection technology、A /D conversion technologies、automatically the synthetic application of technology,there are some difficulty to the students .While the teacheres could get a good test role.1主要原理介绍首先,一个生物培养液微型
5、计算机温度控制硬件系统是由几个部分组成的,各个部分和有机的联系起来再加上软件控制系统便成了一个完整的工作过程。我们可以把它的硬件组成分成以下几个模块:温度采集模块、温度放大转换模块、温度驱动调节模块、实时温度显示模块和报警模块,以及温度设置模块。这几个模块通过控制中心单片机来统一支配工作的有序进行,保证培养液的温度在设定的温度允许的范围内波动。首先单片机判断经过转换的环境输入温度信号与设定的温度之间的偏差,然后再通过改进的PID算法给以调节,使得培养液的温度保持在理想的范围内。系统首先检查键盘的输入信号,将用户设定的温度读取并存储。温度采集装置采用热电阻AD590来采集培养液的温度。系统调动温
6、度检测模块的数据,由放大器将数据放大,经过A/D转换后,温度信号便成了可以被计算机识别的电信号。这样利用首先得到的电信号通过液晶显示模块把当前温度显示出来。显示部分则用来显示生物培养液微的温度以及设定时设置的温度值。随后将温度信号与预先读入的用户理想信号对比。当采集温度不符合要求时,则通过计算机判断后进行调节。高阻抗加热丝和半导体降温片是该温度控制系统的温度调节部分。其中,半导体降温片用来降温,高阻抗加热丝用来加温。2系统结构图生物培养液微型计算机温度控制系统的结构图如下图1所示:生物培养液温度显示电路报警电路温度设置电路 半导体降温片降温控制电路C51单片机A/D转换电路信号放大电路传感检测
7、电路高阻抗加热丝升温控制电路图1生物培养液微型计算机温度控制系统结构图3输入通道设计3.1键盘输入(温度设置)模块键盘模块是本控制系统的人机交流模块部分,主要为用户提供进行温度的设置功能。该设置功能模块中包括了0到9的数字按键,启动设置按键,即“设置”按钮,输入错误时的删除按键,及“删除”键。由于按键较多,为了节省I/O口的资源,本系统采用4X4矩阵式键盘方案。由于变成扫描、定式扫描的键盘工作方式过多的占用CPU时间,本系统为了不过多的占用CPU时间,采用中断扫描方式。其中断方式接法如图2所示。其键盘接线连接图如下图3所示。图2中断方式接法图图3键盘接线图3.2传感与检测模块LM35是由Nat
8、ional Semiconductor所生产的温度感测器,其输出电压与摄氏温标呈线性关系,转换公式如式(1),0C时输出为0V,每升高 1C,输出电压增加10mV。即:。LM35 有多种不同封装型式。在常温下,LM35 不需要额外的校准处理即可达到 1/4C的准确率。其电源供应模式有单电源与正负双电源两种,分别如图4和图5所示,正负双电源的供电模式可提供负温度的量测;单电源模式在25C下静默电流约50A,非常省电。图4单电源模式 图5双电源模式由课程任务书可知:温度在1525范围内连续可控。因此,只需要单电源模式即可满足要求。又由于,输出的电压太小,因此将输出用非反相放大器放大十倍,其电路图如
9、下图6所示。图6温度传感与放大电路3.3 A/D转换模块本系统采用ADC0809A/D转换器。ADC0809是CMOS单片型逐次逼近式A/D转换器,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型DA转换器、逐次逼近寄存器、三态输出锁存器等其它一些电路组成。因此,ADC0809可处理8路模拟量输入,且有三态输出能力,既可与各种微处理器相连,也可单独工作。输入输 出与TTL兼容。ADC0809A/D转换芯片引脚图如下图7所示。图7 ADC0809A/D转换芯片引脚图3.3.1ADC0809的外部特性ADC0809芯片有28条引脚,采用双列直插式封装。下面说明各引脚功能。 IN0IN7:8
10、路模拟量输入端。 2-12-8:8位数字量输出端。 ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路 ALE:地址锁存允许信号,输入,高电平有效。 START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。 OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。 REF(+)、
11、REF(-):基准电压。 Vcc:电源,单一+5V。 GND:地。3.3.2ADC0809工作方式(1) 定时传送方式 对于一种A/D转换其来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128s,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。 (2) 查询方式 A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。 (3) 中断方式 把表明转换完成的状
12、态信号(EOC)作为中断请求信号,以中断方式进行数据传送。 不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。3.3.3 ADC0809的转化电路ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0IN7上的一路模拟量输入。本系统中ADC0809的转化电路如下图8所示。图8 ADC0809转换电路接线图3.4温度显示模块由于任务书要求使用LE
13、D显示温度,而且温度在1525范围内连续可控,温度控制精度为 0.5。因此,本系统采用了四位共阳极的七段数码管。如图所示为4位7段数码管的原理图。由于所有的段选线并联到同一个 I/O,由这个 I/O 口来控制,因此,若是所 有的 4 位 7 段 LED 都选通的话,4 位 7 段 LED 将会显示相同的字符。要使各个位 的 7 段 LED 显示不同的字符,就必须采用动态扫描方法来轮流点亮每一位 7 段 LED,即在每一瞬间只选通一位 7 段 LED 进行显示单独的字符。在此段点亮时间 内,段选控制 I/O 口输出要显示的相应字符的段选码,而位选控制 I/O 口则输出 位选信号,向要显示的位送出
14、选通电平(共阴极则送出低电平,共阳极则送出高 电平),使得该位显示相应字符。这样将四位 7 段 LED 轮流去点亮,使得每位分时显示该位应显示的字符。由于人眼的视觉暂留时间为 0.1 秒,当每位显示的间 隔未超过 33ms 时,并在显示时保持直到下一位显示,则由于人眼的视觉暂留效 果眼睛看上去就像是 4 位 7 段 LED 都在点亮。设计时,要注意每位显示的间隔时间,由于一位 7 段 LED 的熄灭时间不能超过 100ms,也就是说点亮其它位所用的时间不能超过 100ms,这样当有 N 位的 7 段 LED 用来显示时,每一位间隔的时间 t 就必须符合下面的式子: t100ms/(N-1)本系
15、统中N4,则由式子可以算出 t33ms,就是每一位的间隔时间不能超过 33ms。当然时间可以也设得短一些,比如 5ms或1ms 也可以。如下图10所示为该四位7段数码管显示模块的管脚连接图。从左到右,-G依次接P0.0-P0.6,DP接P0.7管脚。1-4为数码管位选的输入,依次接P2.0-P2.3管脚。图9 七段数码管显示原理图在进行显示编程时,首先选定需要显示的位数,然后向段选为送数据。即可显示。由于单片机可以直接驱动LED显示管,因此不需外加驱动电路了。图10七段数码管显示模块的管脚连接图4输出通道设计4.1报警电路设计如果培养液里的温度过高或者是过低了,超出了其允许的某个温度范围,则系
16、统会自动报警,提醒用户,可以让用户采取更为快速和有效地措施来避免或是减少损失。报警电路图下图11所示。当微机判断当前温度值超出范围时,将P2.6管脚置低电平,利用非门来驱动喇叭报警。图11喇叭报警电路图4.2降温控制电路设计若当前检测得的温度比设定的温度高,则需要对培养液进行降温处理。本系统利用半导体降温片来对培养液进行降温。其优点是是无运动部件,可靠性也比较高,且无污染。实物如下图10。实际使用中也是同电阻丝加热模块一样,采用继电器,在满足制冷条件下继电器接通,接通制冷电源,利用改进的PID算法来计算PWM脉宽得出控制输出。从而达到根据检测到的温度而自动调节继电器导通时间当然,实际使用时也可
17、以采用电风扇,即再在满足制冷条件下继电器接通,电风扇的电机接通电源而转动制冷。也是利用改进的PID算法来计算PWM脉宽得出控制输出。从而达到根据检测到的温度而自动调节风扇的转速。其电路图如图12所示。图12降温控制电路图4.3 加热控制电路设计在读取到从温度传感模块采集到的温度数值后,与事先设定好的温度值进行比较,若当前检测得的温度比设定的温度低,则需要对培养液进行加热处理。本系统利用高阻抗的电阻丝来对培养液加热。如下图13所示,在检测到温度比设定的温度低时,三极管基极高电平,从而NPN管道通,驱动继电器启动,从而为高阻抗加热电阻丝通电加热生物培养液。利用改进的PID算法来计算PWM脉宽得出控
18、制输出。从而达到根据检测到的温度而自动调节继电器导通时间。图13加热控制电路图5系统总电路图图14 系统总电路图6采用改进PID控制算法采用典型的反馈式温度控制系统,组成部分见下图15。其中数字控制器的功能由单片机实现。图15控制系统框图已知培养皿的传递函数为 设,其中1为电阻加热的时间常数,为电阻加热的纯滞后时间,为采样周期。A/D转换器可划归为零阶保持器内,所以广义对象的传递函数为 (4-1) 广义对象的Z传递函数为 (4-2) 所以系统的闭环Z传递函数为: (4-3) 系统的数字控制器为:= (4-4) 写成差分方程即为 : (4-5) 令 , 则有 (4-6)式中 第次采样时的偏差;第
19、次采样时的偏差;第次采样时的偏差; 本生物培养液温控系统采用的数字PID算法由软件实现,增量PID控制算法的优点是编程简单,数据可以递推使用,占用存储空间少,运算快。但是对于温度这种响应缓慢、滞后性大的过程,不能用标准的PID算法进行控制。当扰动较大或者给定的温度值大幅度变化时,由于产生较大的偏差,加上温控本身的惯性及滞后,在积分作用下,系统往往产生较大的超调和长时间的振荡。因此,为克服这种不良的影响,采用积分分离法对增量PID算法进行改进。当偏差e(k)绝对值较大时,暂时取消积分作用;当偏差e(k)绝对值小于某一设定值M时,才将积分作用投入。 (1)当| e(k)|M时,用PlD控制。偏差小
20、,说明系统温度已经接近设定值,此时加入了积分作用,可以消除系统静差,保证系统的控制精度。根据递增原理可得:式中:e(K)=r(K)一y(K)为第K时刻所得偏差信号,其中rk是给定值,yk是实际输出值;其中kp为比例增益;ki为积分系数;kd为微分系数。则增量式PID控制算法为:(2) 当| e(k)|M时,用PD控制。由于偏差大,说明系统温度远离设定值,应快速降温,采用PD控制,可以提高系统的动态响应速度,避免产生过大的超调,减小动态误差。心得体会通过本次温度监控系统的设计,我大有收获,在制作过程中,一定要注意的每个工作步骤的检查,确保制作成功。设计时可以采取先分后总的方式来设计总电路图。也就
21、是说先把系统划分为几个独立的模块或者结构,然后再根据各个模块之间的联系性,把它们通过一定的关系综合起来,就得出了一个完整的系统。特别是在设计大型系统的时候就显得特别的重要,有几个或者几十个设计者来合作,为了节省时间,必须同时开始,这就得划分模块分工合作,最终再合起来。“先分后总”这是一种设计方式。另外在本次设计的过程中遇到了使得我重新复习了过去的知识,加深了对知识的了解。过去有些不了解的知识点经过现在的复习,有了更好的理解。总的来说,本次课设让我对单片机程序、单片机应用、传感器、放大器等很多知识有更深一步的认识,收获甚大。参考文献【1】 陈立周 陈宇编著单片机原理术及应用,机械工业出版社,20
22、071【2】 于海生 计算机控制技术,机械工业出版社,2007年5月【3】 林立 张俊亮编著单片机原理及应用,电子工业出版社,20097【4】 通用微机接口实验系统教师用实验指导书,北京清华大学出版社,200114【5】 刘红丽 传感与检测技术,国防工业大学出版社,2007年3月参考程序#include #include sbit ST=P20;sbit OE=P21;sbit EOC=P22;ucharcodedis_717=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,0x40,0xED,0xF9,0xE7,0x39,0x63
23、;/共阳LED段码表 0 1 2 3 4 5 6 7 8 9 不亮 - S E q C uchar code scan_con4=0x7f,0xbf,0xdf,0xef; /列扫描控制字uchar data temp_data2=0x00,0x00; /读出温度暂放int Channel=4;unsigned char SavedDat6;/存放采集的数据结果void InitAdc0809()/初始化函数/* ChannelSelA=0;ChannelSelB=0;ChannelSelC=0;/默认选择第0通道*/ST=0; OE=0;ET0=1;EA=1;TMOD=0x02;TH0=226
24、;TL0=226;TR0=1;void ReadDat(void)ST=1; _nop_();_nop_();ST=0;/启动转换 _nop_();_nop_();if(EOC=1) OE=1; SavedDatChannel=P1; _nop_(); _nop_(); OE=0; _nop_(); _nop_(); ST=1; _nop_(); _nop_(); ST=0; _nop_(); _nop_();InitAdc0809();/ channel=ChannelSel;switch(ChannelSel) case 0: ChannelSelA=0; ChannelSelB=0; C
25、hannelSelC=0;break; case 1: ChannelSelA=0; ChannelSelB=0; ChannelSelC=1;break; case 2: ChannelSelA=0; ChannelSelB=1; ChannelSelC=0;break; case 3: ChannelSelA=1; ChannelSelB=1; ChannelSelC=0;break; case 4: ChannelSelA=0; ChannelSelB=0; ChannelSelC=1;break; default:break;ReadDat();void main()Adc0808(C
26、hannel);P3=SavedDatChannel;Void Keyscan(void) interrupt 1 using 2/用中断法扫描键盘 uchar KeyScan()/检查按键情况 uchar temp=40; KEY=0xef; /扫描第1列键 switch(KEY) case 0xee:temp=1;break; case 0xed:temp=4;break; case 0xeb:temp=7;break; case 0xe7:temp=10;check();break; default:break; KEY=0xdf; /扫描第2列键 switch(KEY) case 0x
27、de:temp=2;break; case 0xdd:temp=5;break; case 0xdb:temp=8;break; case 0xd7:temp=0;break; default:break; KEY=0xbf; /扫描第3列键 switch(KEY) case 0xbe:temp=3;break; case 0xbd:temp=6;break; case 0xbb:temp=9;break; case 0xb7:temp=11;break; default:break; return(temp); /返回按键键值 /-显示扫描函数-/scan()/温度显示时4位LED扫描 ch
28、ar k; for(k=0;k6348) / 温度值正负判断 tem=65536-tem;n=1; / 负温度求补码,标志位置1 display4=tem&0x0f; / 取小数部分的值 display0=ditabdisplay4; / 存入小数部分显示值 display4=tem4; / 取中间八位,即整数部分的值 display3=display4/100; / 取百位数据暂存 display1=display4%100; / 取后两位数据暂存 display2=display1/10; / 取十位数据暂存 display1=display1%10; nowtp=display3*100
29、+display2*10+display1; /计算当前温度 send_Da0=nowtp; /把当前温度储存到发送缓存区/-PID运算函数-/void pid() static int diff19=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;static int sum_diff=0; /(diff)static uint curr_=0;float p_out,i_out,d_out,temp_pid;float pwm_0;temp_pid=diffcurr_;if(curr_+1=19)curr_=0;else curr_+=1;sum_diff-=d
30、iffcurr_;diffcurr_=settp-nowtp;sum_diff+=diffcurr_;p_out=KP*diffcurr_; /比例项输出i_out=KI*sum_diff; /积分项输出d_out=KD*(diffcurr_-temp_pid); /微分项输出pwm_0=KC*settp; /维持功率项if(i_out100)i_out=100; /积分分离if(i_out-100)i_out=-100;PWM=p_out+i_out+d_out+pwm_0; /总输出量if(PWM=100)PWM=100;/ 输出函数void PWM_OUT(float PWM)static uchar t=1; /t=(1-100)周期为4秒uchar limit; /pid_value输出百分比limit=(uchar)PWM;if(t100)t=1;23