下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目 录一、设计内容21.1 温度控制21.2 设计方案2二、软件设计02.1主程序流程图 .02.2 DS18B20 实现温度转换和温度数值读取流程图.02.3显示流程图 .1三、 PID 控制 .23.1PID 简介 .23.2PID 控制算法 .4四、电路设计.64.1功能模块设计 .64.2电路连接设计 .74.2.1温度检测电路 .74.2.2继电器控温电路 .84.2.3外部电路 .9参考文献.11附录PID 温度控制器程序. 12一、设计内容1.1 温度控制本设计以水为测量对象,温度测量电路接收传感器的信号,并将模拟信号通过模 /数转换器转换为数字信号,送入单片机系统,与预设的温度
2、对比,通过一定的控制算法,控制继电器的通断,从而控制加热器的工作,使得水温维持在设定的温度。温度控制算法精确控制温度加热,以温度最小为优化目标。温度是工业控制对象的主要的被控参数之一,如冶金,机械,食品,化工各类工业中广泛使用的各种加热炉,热处理炉,反应炉等。在过去多是采用常规的模拟调节器对温度进行控制,本设计采用了单片微型机对温度实现自动控制。1.2 设计方案温度控制系统是一种比较常见和典型的过程控制系统。温度是工业生产过程中重要的被控参数之一,当今计算机控制技术在这方面的应用,已使温度控制系统达到自动化、智能化,比过去单纯采用电子线路进行 PID 调节的控制效果要好得多,可控性方面也有了很
3、大的提高。温度是一个非线性的对象,具有大惯性的特点,在低温段惯性较大,在高温段惯性较小。对于这种温控对象,一般认为它具有以下的传递函数形式:2/34这是传统的二位式模拟控制方案,其基本思想与方案一相同,但由于采用上下限比较电路,所以控制精度有所提高。这种方法还是模拟控制方式,因此也不能实现复杂的控制算法使控制精度做得较高,而且不能用数码管显示,对键盘进行设定。采用 89C51 单片机系统来实现。单片机软件编程灵活、自由度大,可用软件编程来实现各种控制算法和逻辑控制。单片机系统可以使用数码管来显示水温的实际值,能用键盘输入设定值。选用了AT89C51 芯片,不需要外扩展存储器,可使系统整体结构更
4、为简单。采用以单片机为控制核心的控制系统,尤其对温度控制,可达到模拟控制所达不到的效果,并且实现显示和键盘设定功能,大大提高了系统的智能化。这也使得系统所测得结果的精度大大提高。AT89C51 是一种带 4k 字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8 位微处理器,俗称单片机。而在众多的 51 系列单片机中,要算 ATMEL 公司的 AT89C51 更实用,也是一种高效微控制器,因为它不但和 8051 指令、管脚完全兼容,而且其片内的 4K 程序存储器是 FLASH 工艺的,这种工艺的存储器,用户可以用电的方式达到瞬间擦除、改写。而这种单片机对开发设备的要求非常低,开发时间也能大
5、大缩短。DS18B20 是一线式数字温度传感器,它具有微型化、低功耗、高性能抗干扰3/34能力、强易配处理器等优点,特别适合用于构成多点温度测控系统,可直接将温度转化成串行数字信号(按 9 位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片。它具有独特的单总线接口方式,仅需使用 1 个端口就能实现与单片机的双向通讯。采用数字信号输出提高了信号抗干扰能力和温度测量精度。它的工作电压使用范围宽 3.05.5 V,可以采用外部供电方式,也可以采用寄生电源方式, 即当总线 DQ 为高电平时,窃取信号能量给 DS18B20 供电。它还有负压特性,电源极性接反时, DS18B20 不会因接错
6、线而烧毁, 但不能正常工作。可以通过编程而实现 912 位的温度转换精度设置。设定的分辨率越高,所需要的温度数据转换时间就越长,在实际应用中要将分辨率和转换时间权衡考虑。RS-232 接口是个人计算机上的通讯接口之一,是1970 年由美国电子工业协会( EIA )联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备( DCE)之间串行二进制数据交换接口技术标准”。该标准规定采用一个25 个脚的 DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。随着设备的不断改进,出现了代替DB25 的 D
7、B9 接口。4/34二、软件设计2.1 主程序流程图系统的主程序流程图如图2-1 所示,当有信号输入时,主程序启动,根据内部设定的条件逐步运行,达到设计目的。开始初始化DS18B20 温度读取模块温度值传送温度值处理比较设定温度值与实际温度值N是否小于 ?YPID 控制运算模继电器控制模块图 2-1 主程序流程图2.2 DS18B20实现温度转换和温度数值读取流程图图 2-2 为 DS18B20 实现温度转换和温度数值读取流程图,用于系统的温度转换和温度数值的读取。开始初始化 DS18B20YN应答脉冲发起Skip Rom 命令发起Convert T 命令延时 1秒等待温度转换完成YN应答脉冲
8、发起Read Scratchpad 命令读取第 1.2 字节即温度数图 2-2 DS18B20 实现温度转换和温度数值读取流程图2.3 显示流程图图 2-3 为系统的显示流程图。主要是通过对传输信号进行显示后,给操作者1/34提供提示。以到达为本系统提供对温度的显示和监控的目的。开始串行口初始化向缓冲区送数据查段码送显示结束图 2-3 显示流程图三、 PID 控制3.1PID 简介PID 控制器是一种线性控制器,它根据给定值厂r(t) 与实际输出值 y(t) 构成控制偏差 e(t):e(t ) r (t ) y(t )(3. 1)将偏差 e(t ) 的比例( Proportional)、积分(
9、 Integral)和微分( Derivative )通过线性组合构成控制量,对被控对象进行控制,因此称为 PID 控制。 PID 控制系统原理如图 3-1 所示。2/34图 3-1 PID 控制系统原理图其控制规律为:u(t) K P1te(t) dt TDde(t )e(t )dtT10或者写成传递函数的形式为:G (s) K P (11TD s)T1s式中K P :比例系数T1 :积分时间常数TD :微分时间常数PID 控制器各校正环节的作用如下:(1) 比例环节即时成比例地反映控制系统的偏差信号立即产生控制作用,以减少偏差;( 3. 2)( 3. 3)e(t) ,偏差一旦产生, 控制器
10、(2) 积分环节主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数, T1 越大,积分作用越弱,反之则越强;3/34(3) 微分环节能够反映偏差信号的变化趋势 (变化速率 ),并且能在偏差信号值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。3.2PID 控制算法由于计算机控制是一种采样控制系统,它只能根据采样时刻的偏差值计算控制量。因此,( 3. 2)式中的积分和微分项不能直接使用,需要进行离散化处理。现令 T 为采样周期,以一系列的采样时刻点kT 代表连续时间 t ,以累加求和近似代替积分,以一阶后向差分近似代替微分,做如下的近似变
11、换:t kT(3. 4)tkke(t) Te( jT )Te( j )(3. 5)0j0j0de(t )e(kT ) e k 1 Te( k) e(k 1)(3. 6)dtTT其中,T 为采样周期, e(k) 为系统第 k 次采样时刻的偏差值, e( k1)为系统第 ( k1)次采样时刻的偏差值,k 为采样序号, k =0, 1, 2, 。将上面的( 3. 5)式和( 3. 6)式代入( 3. 2)式,则可以得到离散的PID 表达式:u( k) K PTke( j )TDe(k) e( k 1)(3. 7)e( k)TT1j 0如果采样周期 T 足够小,该算式可以很好的逼近模拟PID 算式,因
12、而使被控过程与连续控制过程十分接近。通常把(3.7)式称为 PID 的位置式控制算法。若在( 3. 7)式中,令:K1K PT(称为积分系数)T14/34K PTDK D(称为微分系数)Tk则 u(k ) K Pe(k) K1 e( j ) K D e(k ) e( k 1)(3. 8)j 0( 3. 8)式即为离散化的位置式 PID 控制算法的编程表达式。可以看出,每次输出与过去的所有状态都有关,要想计算u( k) ,不仅涉及 e(k) 和 e(k1) ,且须将历次 e( j ) 相加,计算复杂,浪费内存。下面,推导计算较为简单的递推算式。为此,对( 3. 8)式作如下的变动:考虑到第 (
13、k1) 次采样时有u(k 1) K Pe( k 1) T k 1e( j )TD e(k 1) e(k 2)(3. 9)T1 j 0T使( 3. 8)式两边对应减去( 3. 9)式,得u(k )u( k1)K Pe(k )e(k1)T e(k ) TD e(k ) 2e(k 1) e(k 2)T1T整理后得u(k)u(k1) KPe( k)e(k1)T e(k )TDe(k)2e( k 1)e( k2)T1Tu( k1)K P(1TTD )e(k)K P(12TD )e(k1)K P TD e( k2)( 3. 10)T1TTTu( k1)a0e( k)a1e(k1)a2e(k2)其中, a0
14、K P (1TTD ) , a1 K P (1 2TD ) , a2 K P TD ,( 3. 10)式就是 PIDT1TTT位置式得递推形式。如果令u(k)u(k )u(k1) 则u(k)a0 e( k)a1e(k1)a2e(k2)式中的 a0 、 a1 、 a2 同( 3. 10)式中的一样。5/34因为在计算机控制中,a0 、 a1 、 a2 都可以事先求出,所以,实际控制时只须获得 e(k ) 、 e(k1) 、e(k2) 三个有限的偏差值就可以求出控制增量。由于其控制输出对应执行机构的位置的增量,故(3. 11)式通常被称为 PID 控制的增量式算式。增量式 PID 控制算法与位置式
15、控制算法比较,有如下的一些优点:(1) 位置式算法每次输出与整个过去状态有关,算式中要用到过去偏差的累加值e( j ) ,容易产生较大的累计误差。 而增量式中只须计算增量, 算式中不需要累加,控制增量的确定仅与最近几次偏差采样值有关, 当存在计算误差或者精度不足时,对控制量的影响较小, 且较容易通过加权处理获得比较好的控制效果;(2) 由于计算机只输出控制增量, 所以误动作影响小, 而且必要时可以用逻辑判断的方法去掉,对系统安全运行有利;(3) 手动一自动切换时冲击比较小。鉴于以上优点,本系统的控制算法即采用增量式的PID 控制算法。四、电路设计4.1 功能模块设计数字温度传感器DS18B20
16、 从设备不同的位置采集温度,并将数字信号送入AT89C51 单片机系统,单片机获取采集的温度值,经过处理后得到当前环境中一个比较稳定的温度值,根据当前设定的温度上下限值,再通过PID 控制算法控制继电器的通断,从而控制加热器的工作,使得水温维持在设定的温度。当采集的温度经处理后没有达到设定的温度值时,单片机控制继电器开启升温设备(加热器)。6/34图 4-1 单片机电路图4.2 电路连接设计温度检测电路温度检测用DS18B20 温度传感器, DS18B20 是单线数字式测温芯片,它能在现场采集温度数据,并将温度数据直接转换成数字量,并将数字信号送入AT89C51单片机系统。 图 4-2 为温度
17、检测电路图。7/34图 4-2 温度检测电路图继电器控温电路当 DS18B20 采集到温度后, 会将温度值传送到单片机。 单片机获取采集的温度值,经过处理后得到当前环境中一个比较稳定的温度值,根据当前设定的温度上下限值,再通过 PID 控制算法控制继电器的通断,从而控制加热器的工作,使得水温维持在设定的温度。8/34图 4-3 继电器控温电路图外部电路启动、复位电路用于系统的开始和重置。9/34图 4-4 外部电路图10/34参考文献1余锡存主编单片机原理与接口技术西安电子科技大学出版社,2001, 72刘金琨先进 PID 控制及其 MATLAB 仿真 M 北京:电子工业出版社,20033曹巧
18、媛主编单片机原理及应用(第二版)M 北京:电子工业出版社,2002 4 康华光主编 .电子技术基础 M 北京:高等教育出版社, 1998 ,121-142 5何立民单片机高级教程应用 M 北京:北京航空航天大学出版社,2000, 3-14 6金发庆等编传感器技术与应用M 北京机械工业出版社, 20027秦实宏等单片机原理与应用技术M 北京:中国水利水电出版社,2005, 27-48 8陈忠华基于单片机的温度智能控制系统的设计与实现D 大连理工大学硕士学位论文,200611/34附录PID温度控制器程序#pragma db code#include<AT89C51.H>#includ
19、e "INTRINS.H"#defineBUSY1(DQ1=0)/定义 busy 信号sbit DQ1=P35;/ 定义 18B20 单总线引脚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);/ 声明 1
20、8B20读 ROM 函数int get_temp_d(void);/声明获取温度函数void ds_init(void);/ 声明 18B20初始化函数void ds_getT(void);/ 声明 18B20获得温度显示值函数void hot();/*以下定义各种变量 */unsigned char ResultSignal;12/34int ResultTemperatureLH,ResultTemperatureLL,ResultTemperatureH;unsigned char ROM8;unsigned char idata TMP;unsigned char idata TMP_
21、d;unsigned char f;unsigned char rd_ds18_1();unsigned int TemH,TemL;/温度的整数部分和小数部分unsigned int count;unsigned int tt1,tt2;/ 定义小数计算部分void main()ds_init();/18B20 初始化while(1)ds_getT();/ 使用该函数获得温度,整数部分存储到TemH,小数部分存储到count 的低 8 位if(TMP_d<tt1)hot();13/34/*18B20初始化函数 */void ds_init(void)unsigned int k=0;d
22、s_reset_1();ds_reset_1();/resetwr_ds18_1(0xcc);/skip rom_nop_();wr_ds18_1(0x7f);ds_reset_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);14/34TemH=get_temp_1();TemL=get_temp_d();TemH&=0x00ff;TemL&
23、;=0x00ff;count=(TemH*256+TemL)*6.25;/*延时程序,单位us,大于 10us*/void time_delay(unsigned char time)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);15/34time_delay(240);DQ1=1;return;void check_pre_1(void)16/34while(DQ1)
24、;while(DQ1);time_delay(30);void read_ROM(void)int n;ds_reset_1();check_pre_1();wr_ds18_1(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;17/34DQ1=0;_nop_();DQ1=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_
25、nop_();_nop_();_nop_();_nop_();_nop_();dat = DQ1;time_delay(50);18/34return 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)1
26、9/34signed charidata i=0;unsigned char idata j;bit testb;for(j=1;j<=8;j+)testb=dat & 0x01;dat = dat>>1;if(testb)DQ1=0;_nop_();_nop_();DQ1=1;time_delay(60);elseDQ1=0;time_delay(50);20/34DQ1=1;_nop_();_nop_();int get_temp_1(void)unsigned char idata a=0,b=0;unsigned char idata i;EA=0;ds_re
27、set_1();check_pre_1();wr_ds18_1(0xcc);wr_ds18_1(0x44);while(BUSY1);ds_reset_1();21/34check_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);else22/34f=1;a=a>>4;
28、b=b<<4;TMP=(a|b);TMP=TMP;TMP=(TMP+1);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();23/34wr_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
29、_1();i=b;i=(i>>4);if(i=0)f=0;TMP=(a>>4)|(b<<4);a=(a&0x0f);TMP_d=a;/* 若 b 为 1 则为负温*/24/34elsef=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)25/34unsigned int i;for(i=0;i<x;i+);void hot()2PID 控制#define FiltA0.1;/PID 输出的滤波系数( 0.0-1.0)#define FiltB0.9/ PID 输出的滤波系数 (1-FilterA)#define Kp1.75/PID 控制器的比例系数#define Ki
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电力交易员笔试题含答案
- 2025年证券从业之金融市场基础知识考试题库含答案
- 绿化工程维护养护方案
- 扬尘治理专项施工方案【直接实施版】
- 河北辅警面试题及答案
- 贵州铁路笔试题目及答案
- 附睾脓肿护理个案
- 2025年平安银行金融类7月社会招聘笔试备考试题及答案解析
- 2025年中医全科主治医师考试真题及答案
- 铁路局面试题库及答案
- 宁夏教研员管理办法
- 2025年岗前培训考试试题附答案
- Units 1~6单元英语单词音标默写练习2025-2026学年仁爱科普版(2024)八年级英语上册
- 挂耳咖啡、胶囊咖啡、饮料生产项目可行性研究报告写作模板-拿地备案
- 青海省民间信仰管理办法
- 科研中心绩效管理办法
- 2020-2025年中国羊肉汤行业发展潜力分析及投资方向研究报告
- 2025年河北大学版(2024)小学信息科技三年级(全一册)教学设计(附目录 P179)
- 胃镜取异物护理查房
- 常用镇痛药讲课件
- 婴儿喂养记录表
评论
0/150
提交评论