2022年系列单片机闭环温度控制实验报告 .pdf

上传人:H****o 文档编号:33400360 上传时间:2022-08-10 格式:PDF 页数:21 大小:582.93KB
返回 下载 相关 举报
2022年系列单片机闭环温度控制实验报告 .pdf_第1页
第1页 / 共21页
2022年系列单片机闭环温度控制实验报告 .pdf_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《2022年系列单片机闭环温度控制实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年系列单片机闭环温度控制实验报告 .pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、成绩:重庆邮电大学自动化学院综合实验报告题目:51 系列单片机闭环温度控制学生姓名:蒋运和班级:0841004 学号:2010213316 同组人员:李海涛陈超指导教师:郭鹏完成时间: 2013 年 12 月名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 21 页 - - - - - - - - - 一、实验名称:51 系列单片机闭环温度控制实验基于 Protuse 仿真实验平台实现基本情况:1. 学生姓名: 蒋运和2. 学号:2010213316 3. 班级:08410

2、04 4. 同组其他成员:序号姓名班级学号1 李海涛0841004 2010213315 2 陈超0841004 2010213317 二、实验内容 (实验原理介绍 ) 1、系统基本原理计算机控制技术实训,即温度闭环控制,根据实际要求,即加温速度、超调量、调节时间级误差参数,选择PID 控制参数级算法,实现对温度的自动控制。闭环温度控制系统原理如图:2、PID 算法的数字实现本次试验通过 8031 通过 OVEN 是模拟加热的装置, 加一定的电压便开始不停的升温,直到电压要消失则开始降温。仿真时,U 形加热器为红色时表示正在加热,发红时将直流电压放过来接,就会制冷,变绿。T 端输出的是电压,温

3、度越高,电压就越高。计算机 PID 数字输出温控测温名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 21 页 - - - - - - - - - 8031对温度的控制是通过可控硅调控实现的。可控硅通过时间可以通过可控硅控制板上控制脉冲控制。该触发脉冲想8031 用软件在 P1.3引脚上产生,受过零同步脉冲后经光偶管和驱动器输送到可控硅的控制级上。偏差控制原理是要求对所需温度求出偏差值,然后对偏差值处理而获得控制信号去调节加热装置的温度。PID 控制方程式:式中 e 是指测

4、量值与给定值之间的偏差TD 微分时间T 积分时间KP 调节器的放大系数将上式离散化得到数字PID 位置式算法,式中在位置算法的基础之上得到数字PID 增量式算法:3、硬件电路设计在温度控制中,经常采用是硬件电路主要有两大部分组成:模拟部分和数字部分,对这两部分调节仪表进行调节,但都存在着许多缺点,用单片机进行温度控制使构成的系统灵活,可靠性高,并可用软件对传感器信号进行抗干拢滤波和非线性补偿处理,可大大提高控制质量和自动化水平;总的来说本系统由四大模块组成,它们是输入模块、单片机系统模块、计算机显示与控制模块和输出控制模块。输入模块主要完成对温度信号的采集和转换工作,由温度传感器及其与单片机的

5、接口部分组成。利用模拟加热的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 21 页 - - - - - - - - - 装置来控制温度。程序结构图如下:3、电路原理图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 21 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -

6、- - - - - - 名师精心整理 - - - - - - - 第 5 页,共 21 页 - - - - - - - - - 三、实验结果分析(含程序、数据记录及分析和实验总结等,可附页):1、51 系列单片机直流电机闭环调速实验程序/*- REG52.H Header file for generic 80C52 and 80C32 microcontroller. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. -*/ #ifndef _REG52_H_ #

7、define _REG52_H_ /* BYTE Registers */ sfr P0 = 0 x80; sfr P1 = 0 x90; sfr P2 = 0 xA0; sfr P3 = 0 xB0; sfr PSW = 0 xD0; sfr ACC = 0 xE0; sfr B = 0 xF0; sfr SP = 0 x81; sfr DPL = 0 x82; sfr DPH = 0 x83; sfr PCON = 0 x87; sfr TCON = 0 x88; sfr TMOD = 0 x89; sfr TL0 = 0 x8A; sfr TL1 = 0 x8B; sfr TH0 = 0

8、 x8C; sfr TH1 = 0 x8D; sfr IE = 0 xA8; sfr IP = 0 xB8; sfr SCON = 0 x98; sfr SBUF = 0 x99; /* 8052 Extensions */ sfr T2CON = 0 xC8; sfr RCAP2L = 0 xCA; sfr RCAP2H = 0 xCB; sfr TL2 = 0 xCC; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 21 页 - - - - - - - - - sf

9、r TH2 = 0 xCD; /* BIT Registers */ /* PSW */ sbit CY = PSW7; sbit AC = PSW6; sbit F0 = PSW5; sbit RS1 = PSW4; sbit RS0 = PSW3; sbit OV = PSW2; sbit P = PSW0; /8052 only /* TCON */ sbit TF1 = TCON7; sbit TR1 = TCON6; sbit TF0 = TCON5; sbit TR0 = TCON4; sbit IE1 = TCON3; sbit IT1 = TCON2; sbit IE0 = T

10、CON1; sbit IT0 = TCON0; /* IE */ sbit EA = IE7; sbit ET2 = IE5; /8052 only sbit ES = IE4; sbit ET1 = IE3; sbit EX1 = IE2; sbit ET0 = IE1; sbit EX0 = IE0; /* IP */ sbit PT2 = IP5; sbit PS = IP4; sbit PT1 = IP3; sbit PX1 = IP2; sbit PT0 = IP1; sbit PX0 = IP0; /* P3 */ sbit RD = P37; sbit WR = P36; 名师资

11、料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 21 页 - - - - - - - - - sbit T1 = P35; sbit T0 = P34; sbit INT1 = P33; sbit INT0 = P32; sbit TXD = P31; sbit RXD = P30; /* SCON */ sbit SM0 = SCON7; sbit SM1 = SCON6; sbit SM2 = SCON5; sbit REN = SCON4; sbit TB8 = SCON

12、3; sbit RB8 = SCON2; sbit TI = SCON1; sbit RI = SCON0; /* P1 */ sbit T2EX = P11; / 8052 only sbit T2 = P10; / 8052 only /* T2CON */ sbit TF2 = T2CON7; sbit EXF2 = T2CON6; sbit RCLK = T2CON5; sbit TCLK = T2CON4; sbit EXEN2 = T2CON3; sbit TR2 = T2CON2; sbit C_T2 = T2CON1; sbit CP_RL2 = T2CON0; #endif

13、#ifndef WENDU_H_ #define WENDU_H_ #define u8 unsigned char #define u16 unsigned int #define PULSE 200 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 21 页 - - - - - - - - - /LCD/ sbit RS = P25; sbit RW = P26; sbit EN = P27; sbit LED = P30; sbit ENA = P37; sbit I

14、N2 = P36; sbit IN1 = P35; void delay_ms(u16 z); void LCD_WriteData(u8 Dat); void LCD_WriteCOM(u8 com); void Show_Num(u8 x,u8 y,u8 n,u16 num); /n 为数字长度num 小于等于65535 void Show_fNum(u8 x,u8 y,u16 num); void LCD_Init(void); void key_scan(void); /void key_scan(void); extern u16 read_tlc2543(u8 port); #en

15、dif #ifndef TLC2543_H_ #define TLC2543_H_ /TLC2543/ sbit SDO = P20; sbit SDI = P21; sbit CS = P22; sbit CLK = P23; sbit EOC = P24; /u16 read_tlc2543(u8 port); #define u8 unsigned char #define u16 unsigned int u16 read_tlc2543(u8 port); u8 AD_deal(void); #endif #include #includetlc2543.h 名师资料总结 - - -

16、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 21 页 - - - - - - - - - /#includewendu.h void delay_us(u16 z) u16 i; for(i=z;i0;i-); u16 read_tlc2543(u8 port) static u8 PORT = 0; u8 Temp,i,k=0; u16 AD_value=0; Temp = port; CS = 1; CLK = 0; delay_us(1); Temp=4; CS = 0; while(

17、1) for(i=0;i8;i+) CLK = 0; if(Temp&0 x80) SDI = 1; else SDI = 0; AD_value=1; if(SDO) AD_value |= 0 x01; CLK = 1; delay_us(2); Temp=1; for(i=8;i12;i+) CLK = 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 21 页 - - - - - - - - - AD_value=1; if(SDO) AD_value |=

18、 0 x01; delay_us(2); CLK = 1; CLK = 0; CS = 1; if(PORT = port) break; else Temp = port; Temp2) PORT = port; return AD_value; u8 AD_deal(void) u16 AD_value; u16 temp; float temp1; AD_value = read_tlc2543(0 x00); temp1 =(AD_value*0.04069); temp =(u16)(temp1*10); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -

19、- - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 21 页 - - - - - - - - - if(temp%10)4) temp = temp/10+1; else temp = temp/10; temp = (u8)temp; return temp; #include #includewendu.h #includetlc2543.h u8 S_Temp=100; /设置温度u8 P_Temp=25; /实际温度u8 pulse = 0; u8 Kp=30,Ki=0;Kd=10; int uk=0; int num=0; struct F

20、LAG u8 turn; myflag; /* 函数功能:延时*/ void delay_ms(u16 z) u16 i; u8 j; for(i=z;i0;i-) for(j=120;j0;j-); /* 函数功能: LCD 写数据*/ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 21 页 - - - - - - - - - void LCD_WriteData(u8 Dat) RS = 1; / delay_ms(5); P1 = Dat; EN = 1; de

21、lay_ms(5); EN = 0; /* 函数功能: LCD 命令*/ void LCD_WriteCOM(u8 com) RS = 0; / delay_ms(5); P1 = com; EN = 1; delay_ms(5); EN = 0; /* 函数功能: Show_Num 初始化*/ void Show_Num(u8 x,u8 y,u8 n,u16 num) /n 为数字长度num 小于等于65535 u16 Temp=num; u8 a5,i; for(i=0;i0;i-) LCD_WriteData(ai-1+0 x30); 名师资料总结 - - -精品资料欢迎下载 - - -

22、 - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 21 页 - - - - - - - - - /* 函数功能: Show_fNum 初始化*/ void Show_fNum(u8 x,u8 y,u16 num) u8 a,b; a = num/10%10; b = num%10; if(y%2 = 1) LCD_WriteCOM(0 x80+x); else LCD_WriteCOM(0 x80+0 x40+x); LCD_WriteData(a+0 x30); LCD_WriteData(b+0 x30); /* 函数

23、功能: Show_Num 初始化*/ void Show_char(u8 x,u8 y,u8 ch) if(y%2 = 1) LCD_WriteCOM(0 x80+x); else LCD_WriteCOM(0 x80+0 x40+x); LCD_WriteData(ch); /* 函数功能: LCD 初始化*/ void LCD_Init(void) RW = 0; EN = 0; /delay_ms(20); LCD_WriteCOM(0 x38); LCD_WriteCOM(0 x0c); LCD_WriteCOM(0 x06); LCD_WriteCOM(0 x01); 名师资料总结

24、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 21 页 - - - - - - - - - /* 函数功能: LCD 初始化*/ void LCD_display(void) Show_char(0,1,P); Show_char(1,1,T); Show_char(2,1,:); Show_char(9,1,S); Show_char(10,1,T); Show_char(11,1,:); Show_Num(12,1,3,S_Temp); Show_char(0,2,P); Sh

25、ow_char(1,2,:); Show_Num(2,2,2,Kp); Show_char(5,2,I); Show_char(6,2,:); Show_Num(7,2,2,Ki); Show_char(10,2,D); Show_char(11,2,:); Show_Num(12,2,2,Kd); /* 函数功能:定时器2 初始化*/ void timer2_init() RCAP2H =(65536-100)/256; /100us RCAP2L =(65536-100)%256; TH2 = RCAP2H; TL2 = RCAP2L; ET2 = 1; TR2 = 1; EA = 1;

26、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 21 页 - - - - - - - - - void Temp_crl() static int ess3=0; static sum = 0; ess0=S_Temp-P_Temp; uk=Kp*ess0+Ki*sum+Kd*(ess0-ess1); ess2=ess1; ess1=ess0; sum = sum+ess0; uk=(int)(uk/10); if(uk=0) if(uk=200) uk = 199;

27、myflag.turn = 1; else uk=-uk; if(uk=200) uk = 199; myflag.turn = 0; pulse = uk; int main(void) u16 AD_value1=0; myflag.turn=0; ENA = 1; LCD_Init(); LCD_display(); timer2_init(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 21 页 - - - - - - - - - while(1) AD_

28、value1 = read_tlc2543(0); P_Temp = AD_deal(); Temp_crl(); Show_Num(3,1,3,P_Temp); key_scan(); return 0; void timer2() interrupt 5 static u16 num1=0; TF2 = 0; num1+; if(num1=PULSE) num1=0;ENA=1; void key_scan(void) u8 Temp=P0; static u8 Add_Ver=0,one_ten=0; static Tri=0,CON=0; Temp = Temp0 xff; 名师资料总

29、结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 21 页 - - - - - - - - - Tri = Temp&(TempCON); CON = Temp; if(Tri=0 x10) Add_Ver+;Add_Ver=Add_Ver%2; else if(Tri=0 x20) one_ten+;one_ten=one_ten%2; else if(Tri=0 x01) if(S_Temp+1=1&Add_Ver=1&one_ten=0) S_Temp-; else if(S

30、_Temp+10=10&Add_Ver=1&one_ten=1) S_Temp=S_Temp-10; Show_Num(12,1,3,S_Temp); else if(Tri=0 x02) if(Kp+1=1&Add_Ver=1&one_ten=0) Kp-; else if(Kp+10=10&Add_Ver=1&one_ten=1) Kp=Kp-10; Show_Num(2,2,2,Kp); else if(Tri=0 x04) if(Ki+1=1&Add_Ver=1&one_ten=0) Ki-; else if(Ki+10=10&Add_Ver=1&one_ten=1) Ki=Ki-10

31、; Show_Num(7,2,2,Ki); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 21 页 - - - - - - - - - else if(Tri=0 x08) if(Kd+1=1&Add_Ver=1&one_ten=0) Kd-; else if(Kd+10=10&Add_Ver=1&one_ten=1) Kd=Kd-10; Show_Num(12,2,2,Kd); 2、程序分析结果名师资料总结 - - -精品资料欢迎下载 - - - - - - - -

32、 - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 21 页 - - - - - - - - - 3、结论分析在工业生产和日常生活中,对温度控制系统的要求,主要是保证温度在一定温度范围内变化,稳定性好,不振荡,对系统的快速要求不高。在论文中简单分析了温度控制系统基于 Protuse仿真实验,采用热电偶作为温度检测器, 应用 LED 显示,通过键盘 4X4来对 PID 进行参数控制。本实验设计使用8031 作为主芯片进行控制,单片机具有集成度高,通用性好,功能强,特别是体积小,重量轻,耗能低,可靠性高,抗干扰能力强和使用方便等独特优点,在数字、智

33、能化方面有广泛用途。其温度控制所用的热电偶,范围广泛,在系统中如果加强算法,会大大提高控制精度,同时降低成本,提高效率。实验总结经过这次的实验, 我又一次加深了对LED 的认识和加强了对keil 以及 Protues等软件的使用技能。虽然之前做过很多的实验,但是自己任然存在很大的问题。在本次实验中任然有很多东西不会,所以又重新学了一遍单片机,加大了对单片机学习的兴趣。刚开始做实验时是很盲目的,胡乱的查资料。所以经过这次的实验我明白了做任何事之前都得有充分的准备和必要的预习。遇到困难是不可避免的,所以我们要做好随时挑战困难的准备,和同学团结,虚心请教老师,一起解决问题。做实验是需要耐心和信心的。

34、比如在调试程序的时候要细心的检查错误。从这次的实验中我学会了把自己学的东西学以致用,学到了课本上没有的东西。很感谢学校,老师给我们这次锻炼的机会,在以后的学习中我会学好理论知识,将理论与实践相结合。不断提高自己动手能力。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 21 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 21 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁