当前位置:文档之家› 计算机温度控制实验报告1

计算机温度控制实验报告1

目录一、实验目的---------------------------------2二、预习与参考------------------------------- 2三、实验(设计)的要求与数据------------------- 2四、实验(设计)仪器设备和材料清单-------------- 2五、实验过程---------------------------------2 (一)硬件的连接- --------- ----------------------- 2 (二)软件的设计与测试结果--------------------------3六、实验过程遇到问题与解决--------------------11七、实验心得--------------------------------12八、参考资料-------------------------------12一、实验目的设计制作和调试一个由工业控制机控制的温度测控系统。

通过这个过程学习温度的采样方法,A/D变换方法以及数字滤波的方法。

通过时间过程掌握温度的几种控制方式,了解利用计算机进行自动控制的系统结构。

二、预习与参考C语言、计算机控制技术、自动控制原理三、实验(设计)的要求与数据温度控制指标:60~80℃之间任选;偏差:1℃。

1.每组4~5同学,每个小组根据实验室提供的设备及设计要求,设计并制作出实际电路组成一个完整的计算机温度控制测控系统。

2.根据设备情况以及被控对象,选择1~2种合适的控制算法,编制程序框图和源程序,并进行实际操作和调试通过。

四、实验(设计)仪器设备和材料清单工业控制机、烘箱、温度变送器、直流电源、万用表、温度计等五、实验过程(一).硬件的连接图1 硬件接线图1.按上述接线图接线。

2.为了使温度变动不大,把烘箱的地线与直流电源的地线相连。

3.为了更好的测到烘箱的温度,把温度计的检测点与温度变送器捆绑在一起。

4.用万用表测试电磁继电器两端的电压,室温时应该差不多在1.5v左右,若不是,适当调整变阻器的阻值。

最后,我们把27摄氏度时电磁继电器两端的电压调到1.95V.(二).软件的设计1.控制算法的选择:a.PID控制:PID控制算法可分为两种,位置型控制算法与增量型控制算法。

为了减少程序的冗余量,处理起来比较麻烦,可选用增量型控制算法。

不过,用它的话就要考虑多个变量的选取,T,Td,Ti三个周期的选取比较耗时间。

b.趋近控制:基本思想是把控制分为许多个区间,在各个区间加不同的加热时间或者吹风时间,越接近设定值就分得越细。

鉴于报告要求没有严谨的要求,而且在十分钟之内能达到设置温度即可,所以我们组在选择的时候选择了较为容易实现的b方法,趋近控制。

2.实际温度与数字量的转换通过测算初步确定温度和数字量的对应关系。

a.测算结果如下表:60 65 70 75 80781 817 850 894 920做出其散点图如下:则程序中的温度换算公式为:x = ((float)temp-850) / 7 + 70;y = 440 - x*4;在实验控制过程显示器显示温度控制图像如下:计算机温度测算图b.加温测试:通过加温测算,取得以下列表,温度与变换后的数字量的数据比较如下表。

C.干扰测试:在温度稳定的情况下突然给烘箱降温干扰后的实验温度数据:做出控制过程温度时间趋势曲线如下所示:3.程序思路图4.程序#include<stdio.h>#include<graphics.h>#include<time.h>int h_temp, l_temp;int pot_time=40;int flag, flag1, temp;float wendu, wendu1, qushi;int wending=0;void delay(int z){int x,y;for(x=100; x>0; x--){for(y=z; y>0; y--);}}void s_delay(int z){int x;for(x=z; x>0; x--);}void l_delay(int z){int x,y,m;for(x=500; x>0; x--){for(m=500; m>0; m--){for(y=z; y>0; y--) ;}}}void ad_init(){outportb(0x030A, 0x00);outportb(0x0309, 0x00);}void read_ad(){int i;temp=0;for(i=0; i<5; i++){outportb(0x030C, 0xFF);delay(500);h_temp = inportb(0x0305) - 0x08;l_temp = inportb(0x0304);h_temp<<=8;temp = temp + h_temp + l_temp;temp = temp / 5;}void initgr(void) /* BGI初始化*/{int gd = DETECT, gm = 0; /* 和gd=VGA,gm=VGAHI是同样效果*/ initgraph(&gd, &gm, "d:\\turboc2");}void zuobiao(void){int i,j;char buffer[10];setcolor(RED) ;line(40,50,40,440);line(40,440,650,440);settextjustify(CENTER_TEXT,CENTER_TEXT);j=440;setcolor(WHITE);for(i=0;i<90;i+=5){line(35,j,40,j);itoa(i,buffer,10);outtextxy(10,j,buffer);j=j-20;}setcolor(BLUE);for(i=420;i>70;i-=20){line(40,i,650,i);}for(i=60;i<650;i+=20){line(i,70,i,440);}}{setfillstyle(1,YELLOW);bar(60,160,80,440);}void temp_tiao_init(temp){float x,y;x = ((float)temp-850) / 7 + 70;y = 440 - x*4;if(y < 160)setfillstyle(1,RED);else setfillstyle(1,GREEN);flag=y;wendu=x;}void temp_tiao_init1(temp){float x,y;x = ((float)temp-850) / 7 + 70;y = 440 - x*4;if(y < 160)setfillstyle(1,RED);else setfillstyle(1,GREEN);flag1=y;wendu1=x;}void temp_tiao(){bar(100,flag,120,440);}void up_pwm(x){int i;for(i=5000; i>0; i--){outportb(0x030D,0x01);delay(x);outportb(0x030D,0x00);delay(1000-x);}}void down_pwm(x){int i;for(i=10000; i>0; i--){outportb(0x030D,0x02);delay(x);outportb(0x030D,0x00);delay(1000-x);}}void main(){time_t start,runtime;int color=15;initgr();cleardevice();zuobiao();tiao_set();ad_init();temp_tiao_init(temp);while(1){read_ad();temp_tiao();qushi=wendu1-wendu; /*大于0即上升,否则下降*/wendu=wendu1;temp_tiao_init1(temp);time(&start);gotoxy(2,25);printf("\n\n\n\nStart time is:%s",ctime(&start));if(flag1 != flag){flag=flag1;cleardevice();zuobiao();tiao_set();temp_tiao_init1(temp);temp_tiao();outtextxy(150,50,"current temp is : ");gotoxy(32,4);printf("%2.2f",wendu1);}if(wendu<60)outportb(0x030D,0x01);if(wendu>=60 && wendu<65){if(qushi<0)outportb(0x030D,0x01);if(qushi>=0)outportb(0x030D,0x01);}if(wendu>=65 && wendu<68.5){if(qushi<=0)outportb(0x030D,0x01);if(qushi>0){if(wending==1)up_pwm(950);elseoutportb(0x030D,0x00);}}if(wendu>=68.5 &&wendu<70){if(qushi>=0){outportb(0x030D,0x02);delay(600);outportb(0x030D,0x00);}if(qushi<0)up_pwm(485);}if(wendu==70){wending=1;if(qushi<0)up_pwm(400);if(qushi>0)down_pwm(1000);if(qushi==0)outportb(0x030D,0x00);}if(wendu>70 &&wendu<=71){if(qushi<=0)outportb(0x030D,0x00);if(qushi>0)down_pwm(1000);}if(wendu>71 && wendu<=75){11if(qushi<0)outportb(0x030D,0x00);if(qushi>=0)down_pwm(800);}if(wendu>75 && wendu<=80){if(qushi<0)down_pwm(1000);if(qushi>=0)outportb(0x030D,0x02);}if(wendu>80)outportb(0x030D,0x02);l_delay(1000);}}六、实验过程遇到问题与解决1.硬件方面:2.软件方面:七、实验心得八、参考文献【1】C语言程序设计.【2】朱玉玺、崔如春、邝小磊编.计算机控制技术.电子工业出版社. 【3】孙炳达编.自动控制原理.机械工艺出版社.12。

相关主题