版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录一、设计内容11.1温度控制11.2设计方案1二、软件设计02.1主程序流程图02.2 DS18B20实现温度转换和温度数值读取流程图02.3显示流程图1三、PID控制23.1PID简介23.2PID控制算法4四、电路设计64.1功能模块设计64.2电路连接设计74.2.1温度检测电路74.2.2继电器控温电路74.2.3外部电路8参考文献9附录 PID温度控制器程序10一、设计内容1.1温度控制本设计以水为测量对象,温度测量电路接收传感器的信号,并将模拟信号通过模/数转换器转换为数字信号,送入单片机系统,与预设的温度对比,通过一定的控制算法,控制继电器的通断,从而控制加热器的工作,使得
2、水温维持在设定的温度。温度控制算法精确控制温度加热,以温度最小为优化目标。温度是工业控制对象的主要的被控参数之一,如冶金,机械,食品,化工各类工业中广泛使用的各种加热炉,热处理炉,反应炉等。在过去多是采用常规的模拟调节器对温度进行控制,本设计采用了单片微型机对温度实现自动控制。1.2设计方案温度控制系统是一种比较常见和典型的过程控制系统。温度是工业生产过程中重要的被控参数之一,当今计算机控制技术在这方面的应用,已使温度控制系统达到自动化、智能化,比过去单纯采用电子线路进行PID调节的控制效果要好得多,可控性方面也有了很大的提高。温度是一个非线性的对象,具有大惯性的特点,在低温段惯性较大,在高温
3、段惯性较小。对于这种温控对象,一般认为它具有以下的传递函数形式:这是传统的二位式模拟控制方案,其基本思想与方案一相同,但由于采用上下限比较电路,所以控制精度有所提高。这种方法还是模拟控制方式,因此也不能实现复杂的控制算法使控制精度做得较高,而且不能用数码管显示,对键盘进行设定。采用89C51单片机系统来实现。单片机软件编程灵活、自由度大,可用软件编程来实现各种控制算法和逻辑控制。单片机系统可以使用数码管来显示水温的实际值,能用键盘输入设定值。选用了AT89C51芯片,不需要外扩展存储器,可使系统整体结构更为简单。采用以单片机为控制核心的控制系统,尤其对温度控制,可达到模拟控制所达不到的效果,并
4、且实现显示和键盘设定功能,大大提高了系统的智能化。这也使得系统所测得结果的精度大大提高。AT89C51是一种带4k字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。而在众多的51系列单片机中,要算 ATMEL 公司的AT89C51更实用,也是一种高效微控制器,因为它不但和8051指令、管脚完全兼容,而且其片内的4K程序存储器是FLASH工艺的,这种工艺的存储器,用户可以用电的方式达到瞬间擦除、改写。而这种单片机对开发设备的要求非常低,开发时间也能大大缩短。DS18B20是一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰能力、强易配处理器等优点,特别适合用于
5、构成多点温度测控系统,可直接将温度转化成串行数字信号(按9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片。它具有独特的单总线接口方式,仅需使用1个端口就能实现与单片机的双向通讯。采用数字信号输出提高了信号抗干扰能力和温度测量精度。它的工作电压使用范围宽3.05.5 V,可以采用外部供电方式,也可以采用寄生电源方式,即当总线DQ为高电平时,窃取信号能量给DS18B20供电。它还有负压特性,电源极性接反时,DS18B20不会因接错线而烧毁,但不能正常工作。可以通过编程而实现912位的温度转换精度设置。设定的分辨率越高,所需要的温度数据转换时间就越长,在实际应用中要将分辨率和转换时
6、间权衡考虑。RS-232接口是个人计算机上的通讯接口之一,是1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”。该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。随着设备的不断改进,出现了代替DB25的DB9接口。二、软件设计2.1主程序流程图系统的主程序流程图如图 2-1 所示,当有信号输入时,主程序启动,根据内部设定的条件逐步运行,达到设计目的。开始初始化DS18B20温度
7、读取模块温度值传送温度值处理比较设定温度值与实际温度值是否小于?PID控制运算模块继电器控制模块YN图2-1 主程序流程图2.2 DS18B20实现温度转换和温度数值读取流程图图2-2为DS18B20实现温度转换和温度数值读取流程图,用于系统的温度转换和温度数值的读取。开始初始化DS18B20应答脉冲发起Skip Rom命令发起Convert T命令延时1秒等待温度转换完成应答脉冲发起Read Scratchpad命令读取第1.2字节即温度数据YYNN图2-2 DS18B20实现温度转换和温度数值读取流程图2.3显示流程图图2-3为系统的显示流程图。主要是通过对传输信号进行显示后,给操作者提供
8、提示。以到达为本系统提供对温度的显示和监控的目的。串行口初始化向缓冲区送数据查段码图2-3 显示流程图开始送显示结束三、PID控制3.1PID简介PID控制器是一种线性控制器,它根据给定值厂r(t)与实际输出值y(t)构成控制偏差e(t): (3.1)将偏差的比例(Proportional)、积分(Integral)和微分(Derivative)通过线性组合构成控制量,对被控对象进行控制,因此称为PID控制。PID控制系统原理如图 3-1 所示。图 3-1 PID 控制系统原理图其控制规律为: (3.2)或者写成传递函数的形式为: (3.3)式中 :比例系数:积分时间常数:微分时间常数PID控
9、制器各校正环节的作用如下:(1) 比例环节即时成比例地反映控制系统的偏差信号,偏差一旦产生,控制器立即产生控制作用,以减少偏差;(2) 积分环节主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数,越大,积分作用越弱,反之则越强;(3) 微分环节能够反映偏差信号的变化趋势(变化速率),并且能在偏差信号值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。3.2PID控制算法由于计算机控制是一种采样控制系统,它只能根据采样时刻的偏差值计算控制量。因此,(3.2)式中的积分和微分项不能直接使用,需要进行离散化处理。现令为采样周期,以一系列的采样时
10、刻点代表连续时间,以累加求和近似代替积分,以一阶后向差分近似代替微分,做如下的近似变换: (3.4) (3.5) (3.6)其中,为采样周期,为系统第次采样时刻的偏差值,e()为系统第()次采样时刻的偏差值,为采样序号,=0,1,2,。将上面的(3.5)式和(3.6)式代入(3.2)式,则可以得到离散的PID表达式: (3.7)如果采样周期足够小,该算式可以很好的逼近模拟PID算式,因而使被控过程与连续控制过程十分接近。通常把(3.7)式称为PID的位置式控制算法。若在(3.7)式中,令: (称为积分系数) (称为微分系数)则 (3.8)(3.8)式即为离散化的位置式PID控制算法的编程表达式
11、。可以看出,每次输出与过去的所有状态都有关,要想计算,不仅涉及和,且须将历次相加,计算复杂,浪费内存。下面,推导计算较为简单的递推算式。为此,对(3.8)式作如下的变动:考虑到第次采样时有 (3.9)使(3.8)式两边对应减去(3.9)式,得 整理后得 (3.10)其中,(3.10)式就是PID位置式得递推形式。如果令 则 式中的、同(3.10)式中的一样。因为在计算机控制中,、都可以事先求出,所以,实际控制时只须获得、三个有限的偏差值就可以求出控制增量。由于其控制输出对应执行机构的位置的增量,故(3.11)式通常被称为PID控制的增量式算式。增量式PID控制算法与位置式控制算法比较,有如下的
12、一些优点: (1) 位置式算法每次输出与整个过去状态有关,算式中要用到过去偏差的累加值,容易产生较大的累计误差。而增量式中只须计算增量,算式中不需 要累加,控制增量的确定仅与最近几次偏差采样值有关,当存在计算误差或者精度不足时,对控制量的影响较小,且较容易通过加权处理获得比较好的控制效果;(2) 由于计算机只输出控制增量,所以误动作影响小,而且必要时可以用逻辑判断的方法去掉,对系统安全运行有利;(3) 手动一自动切换时冲击比较小。鉴于以上优点,本系统的控制算法即采用增量式的PID控制算法。四、电路设计4.1功能模块设计数字温度传感器DS18B20从设备不同的位置采集温度,并将数字信号送入AT8
13、9C51单片机系统,单片机获取采集的温度值,经过处理后得到当前环境中一个比较稳定的温度值,根据当前设定的温度上下限值,再通过PID控制算法控制继电器的通断,从而控制加热器的工作,使得水温维持在设定的温度。当采集的温度经处理后没有达到设定的温度值时,单片机控制继电器开启升温设备(加热器)。图4-1 单片机电路图4.2电路连接设计4.2.1温度检测电路温度检测用DS18B20温度传感器,DS18B20是单线数字式测温芯片,它能在现场采集温度数据,并将温度数据直接转换成数字量,并将数字信号送入AT89C51单片机系统。图4-2为温度检测电路图。图4-2温度检测电路图4.2.2继电器控温电路当DS18
14、B20采集到温度后,会将温度值传送到单片机。单片机获取采集的温度值,经过处理后得到当前环境中一个比较稳定的温度值,根据当前设定的温度上下限值,再通过PID控制算法控制继电器的通断,从而控制加热器的工作,使得水温维持在设定的温度。图4-3继电器控温电路图4.2.3外部电路启动、复位电路用于系统的开始和重置。图4-4外部电路图参考文献1 余锡存主编单片机原理与接口技术西安电子科技大学出版社,2001,72 刘金琨先进PID控制及其MATLAB仿真M北京:电子工业出版社,20033 曹巧媛主编单片机原理及应用(第二版)M北京:电子工业出版社,20024 康华光主编.电子技术基础M北京:高等教育出版社
15、,1998,121-1425 何立民单片机高级教程应用M北京:北京航空航天大学出版社,2000,3-146 金发庆等编传感器技术与应用M北京机械工业出版社,20027 秦实宏等单片机原理与应用技术M北京:中国水利水电出版社,2005,27-488 陈忠华基于单片机的温度智能控制系统的设计与实现D大连理工大学硕士学位论文,2006附录 PID温度控制器程序#pragma db code#include<AT89C51.H>#include "INTRINS.H"#define BUSY1 (DQ1=0) /定义busy信号sbit DQ1=P35; /定义18B2
16、0单总线引脚void ds_reset_1(void); /声明18B20复位函数void wr_ds18_1(char dat); /声明18B20写入函数void time_delay(unsigned char time); /声明延时函数int get_temp_1(void); /声明18B20读入温度函数void delay(unsigned int x); /声明延时函数void read_ROM(void); /声明18B20读ROM函数int get_temp_d(void); /声明获取温度函数void ds_init(void); /声明18B20初始化函数void ds
17、_getT(void); /声明18B20获得温度显示值函数void hot();/*以下定义各种变量*/unsigned char ResultSignal;int ResultTemperatureLH,ResultTemperatureLL,ResultTemperatureH;unsigned char ROM8;unsigned char idata TMP; unsigned char idata TMP_d; unsigned char f; unsigned char rd_ds18_1();unsigned int TemH,TemL; /温度的整数部分和小数部分unsign
18、ed int count;unsigned int tt1,tt2; /定义小数计算部分void main()ds_init(); /18B20初始化 while(1) ds_getT(); /使用该函数获得温度,整数部分存储到TemH,小数部分存储到count的低8位if(TMP_d<tt1) hot(); /*18B20初始化函数*/void ds_init(void)unsigned int k=0;ds_reset_1();ds_reset_1(); /resetwr_ds18_1(0xcc); /skip rom_nop_();wr_ds18_1(0x7f);ds_reset_
19、1();wr_ds18_1(0xcc);_nop_(); wr_ds18_1(0x44);for(k=0;k<11000;k+)time_delay(255); ds_reset_1();void ds_getT(void)wr_ds18_1(0xcc);wr_ds18_1(0xbe);TemH=get_temp_1();TemL=get_temp_d();TemH&=0x00ff;TemL&=0x00ff;count=(TemH*256+TemL)*6.25;/*延时程序,单位us,大于10us*/void time_delay(unsigned char time)
20、time=time-10; time=time/6; while(time!=0)time-;/*/* reset ds18b20 */*/void ds_reset_1(void) unsigned char idata count=0; DQ1=0; time_delay(240);time_delay(240);DQ1=1; return;void check_pre_1(void) while(DQ1); while(DQ1); time_delay(30);void read_ROM(void)int n;ds_reset_1(); check_pre_1(); wr_ds18_1(
21、0x33); for(n=0;n<8;n+)ROMn=rd_ds18_1(); /*/* Read a bit from 1820位读取 */*/bit tmrbit_1(void) idata char i=0; bit dat; DQ1=0;_nop_(); DQ1=1; _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); dat = DQ1; time_delay(50); return
22、 dat;/*/* read a bety from ds18b20 字节读取 */*/unsigned char rd_ds18_1() unsigned char idata i,j,dat=0; for(i=1;i<=8;i+) j=tmrbit_1(); dat=(j<<(i-1)|dat; return dat;/*/* write a bety from ds18b20 写字节 */*/void wr_ds18_1(char dat) signed char idata i=0; unsigned char idata j; bit testb; for(j=1;
23、j<=8;j+) testb=dat & 0x01; dat = dat>>1; if(testb) DQ1=0; _nop_(); _nop_(); DQ1=1; time_delay(60); else DQ1=0; time_delay(50); DQ1=1; _nop_(); _nop_(); int get_temp_1(void) unsigned char idata a=0,b=0; unsigned char idata i; EA=0; ds_reset_1(); check_pre_1(); wr_ds18_1(0xcc); wr_ds18_1(
24、0x44); while(BUSY1); ds_reset_1(); check_pre_1(); wr_ds18_1(0xcc); wr_ds18_1(0xbe); a=rd_ds18_1(); b=rd_ds18_1(); i=b; /*若b为1则为负温 */ i=(i>>4); if(i=0) f=0; TMP=(a>>4)|(b<<4);a=(a&0x0f);if (a>8)TMP=(TMP+1); else f=1;a=a>>4; b=b<<4; TMP=(a|b); TMP=TMP; TMP=(TMP+1);
25、 EA=1; return(TMP);int get_temp_d(void) unsigned char idata a=0,b=0; unsigned char idata i,m; EA=0; ds_reset_1(); /复位 check_pre_1(); wr_ds18_1(0xcc); wr_ds18_1(0x44); while(BUSY1); ds_reset_1(); check_pre_1(); wr_ds18_1(0xcc); wr_ds18_1(0xbe); a=rd_ds18_1(); b=rd_ds18_1(); i=b; /*若b为1则为负温 */ i=(i>
26、;>4); if(i=0) f=0; TMP=(a>>4)|(b<<4);a=(a&0x0f);TMP_d=a; else f=1; a=a; a=(a+1); b=b; b=(b+1); m=a; a=a>>4; b=b<<4; TMP=(a|b); m=(m&0x0f); TMP_d=m; EA=1; return(TMP_d);void delay(unsigned int x) unsigned int i; for(i=0;i<x;i+);void hot()2PID控制#define FiltA 0.1; /PID输出的滤波系数(0.0-1.0)#define FiltB 0.9 / PID输出的滤波系数(1-FilterA)#define Kp 1.75 /PID控制器的比例系数#define Ki 0.00125 /PID控制器的积分系数#define Kd 3.0 /PID控制器的微分系数#define Emax 0.1 /误差积分上限fl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年反腐倡廉警示教育工作总结
- 美术鉴赏与创新思维
- 2006年贵州高考语文真题及答案
- 体育用品行政后勤工作总结
- 体育用品行业行政后勤工作总结
- 2023-2024年员工三级安全培训考试题附答案【完整版】
- 2024企业主要负责人安全培训考试题及答案(名校卷)
- 教师期末教学工作总结4篇
- 快乐的国庆节作文400字5篇
- 市场震动月度报告
- 河北省百师联盟2023-2024学年高二上学期期末大联考历史试题(解析版)
- 2021年四川省凉山州九年级中考适应性考试理科综合(试卷)
- 骨科疼痛的评估及护理
- 【MOOC】概率论与数理统计-南京邮电大学 中国大学慕课MOOC答案
- 2024年度软件开发分包合同技术要求与交底2篇
- 居家养老人员培训管理制度
- 抗菌药物的合理应用培训
- 初三数学老师家长会发言稿
- 湖北第二师范学院《操作系统》2023-2024学年期末试卷
- 2021-2022学年河北省唐山市高一上学期期末语文试题
- 舒适化医疗麻醉
评论
0/150
提交评论