ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:628.96KB ,
资源ID:17993890      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17993890.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(综合电子系统设计报告PID算法分析Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

综合电子系统设计报告PID算法分析Word文件下载.docx

1、 5.3 编程思想.11 5.4 核心程序.12参考文献.15 前言在工业生产及我们平常的生活中对于温度高度自动化控制的需求越来越大。许多传统的制造、农业生产以及当前的一些生活中对温度需求的场合都要求实现温度数据的测量与控制。随着工业技术的高速发展,有更多的工作生产环节和日常生活场合对温度控制的精确度,稳定性以及可靠性等提出了了更高的需求。传统的温度控制器控制精度和可靠性已经不能满足对温度要求更为精确的现代化社会。温度的控制控制中,温度被控对象特性(惯性、滞后、非线性)影响着温度控制系统的效果,使得控制性能难以提高,尤其在工业和农业生产过程其温度控制的好坏直接关系到产品的质量的好坏,在此情况下

2、设计出一种能达到符合理想结果的温度控制系统是非常有重要性的。我们这次的温度控制系统的设计正是基于此情况而设计,针对一些对温度精度需求较高的场合,为达到对其温度的良好控制,从实用的角度以C51为核心设计一套温度智能控制系统。本系统将以C51单片机为核心部件,构建一个集温度的采集、处理、显示、控制为一体化的闭环控制系统。利用单片机的外围扩展电路采集环境温度值,以数字量的形式存储和显示,它既能单独作为一种控制设备对温室温度进行高精度的控制,对控制对象发出各种控制命令,并能实时的显示当前温度值,自由设定目标控制的温度值。同时,也可以作为数据采集装置,为上位机进行记录和运算提供数据来源。该智能温度控制系

3、统功耗低较,系统简单运行结果可靠并且经济实用。能利用最少的资源对环境温度进行高精度的测量,性能可靠、操作简便,它能自动减小误差。这种算法通过软件编程来完成,同时可以的获的准确可靠的结果,在实际的使用中能达到理想的效果。本论文叙述了基于51单片机的智能温度控制系统的设计过程,当中运用数字传感技术、基于单片机的自动控制。我们以C51为cpu,设计出了一套能实现封闭环境内的温度实时检测与控制的恒温控制系统。该系统运用数字温度传感器获取环境温度,并通过程序设计来设定温度与设定的值有偏差时采取必要措施控制输出设备(加热器或冷凝器)调节环境温度,使环境内的温度维持在预设的温度的偏差内,其中要能满足生产或者

4、日用需求,该系统在硬件设计上主要是通过传感器对温度进行检测。单片机接收信息后进行运算处理,通过与预设值的比较输出高低电平来控制加热电路的工作与停止。温度采集电路核心部件是DS18B20温度传感器。它是美国DALLAS半导体公司推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。关键词:C51控制 DS18B20 一、 方案设计1、方案设计比较温度传感器模块设计 方案一:采用热敏电阻pt100。这种电阻输出的是模拟量,所以硬件结构较复杂,需要用到桥式电路将采集到的温度转化为电压输出,而且为了实现AD转

5、化,还要加放大电路。另外,这种测温系统难以实现多点测温,也要用到复杂的算法,一定程度上也增加了软件实现的难度。 方案二:采用单总线数字温度传感器DS18B20测量温度,直接输出数字信号。便于单片机处理及控制,节省硬件电路。且该芯片的物理化学性很稳定,此元件线形性能好,在0100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89C51构成的温度装置,它直接输出温度的数字信号到微控制器。每只DS18B20具有一个独有的不可修改的64位序列号,根据序列号可访问不同的器件。这样一条总线上可挂接多个DS18B20传感器,实

6、现多点温度测量,轻松的组建传感网络。综上分析,我们选用第二种方案。2、总体方案设计按照系统设计功能的要求,确定系统由以下几个模块组成:温度传感器采集温度、数码管显示电路、键盘电路、单片机调整单元以及驱动电路。温度传感器采集温度,送到单片机,然后与键盘设定的温度进行比较,通过调整PID,输出PWM波,进而控制驱动电路进行加热或者不加热,由液晶显示屏来实时的观测温度变化。总体的电路结构框图如图所示:二、理论分析与计算1、温度转换计算方法例如当DS18B20采集到+125的实际温度后,输出为07D0H,则:实际温度=07D0H0.0625=20000.0625=1250C。例如当DS18B20采集到

7、-55的实际温度后,输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作为计算),则:实际温度=370H0.0625=8800.0625=550C。2、稳定温度的方法:PID算法调节完整的公式如下:u(t) = Kp*e(t) + Kie(t) + Kde(t) e(t-1)+u0在PID的调试过程中,我们应注意以下步骤:1、 关闭I和D,也就是设为0.加大P,使其产生振荡;2、 减小P,找到临界振荡点;3、 加大I,使其达到目标值;4、重新上电看超调、振荡和稳定时间是否吻合要求;5、 针对超调和振荡的情况适当的增加一些微分项;6、 注意所有调试均应在最大争载的情况下调

8、试,这样才能保证调试完的结果可以在全工作范围内均有效;PID控制器参数整定:采用是临界比例法。利用该方法进行 PID控制器参数整定步骤如下:(1)首先预选择一个足够短采样周期让系统工作;(2)仅加入比例控制环节,直到系统对输入阶跃响应出现临界振荡,记下这时比例放大系数和临界振荡周期;(3)一定控制度下公式计算到PID控制器参数。三、硬件电路与程序设计1、 硬件电路各个部分(1)、温度设置电路利用矩阵键盘输入并移位数码管显示,即表示设置温度。矩阵键盘扫描方式:P1=0X0F与P1=0XF0反转扫描,交叉得到你想输入的数据。键盘输入倒没怎么有难度,就是移位显示有点复杂,导致数码管显示有点暗。(2)

9、、数码管显示(3)、温度采集电路温度采集的核心器件是DS18B20芯片。数字温度传感器DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。电路图如下:(4)、控制部分的最小系统电路图如图所示:(5)、输出电路控制加热电路的方法是通过单片机的一个I/O口来控制继电器的吸合与断开从而达到对加热电路的工作与停止的,输出周期方波的基本原理是利用单片机内部间的T0工作在方式一产生中断隔为0.5ms的定时中断,每产生一次中断,CPU把记录秒的变量count

10、(计数器)自动加1,100次中断为一个工作周期当count的值在占空比的工作时间内时输出口P2.5输出高电平,使继电器吸合,加热电路工作。当count大于占空比数值时输出低电平继电器断开,加热电路停止工作。由于单片机的I/O口的输出的功率太小电流达不到继电器线圈的要求所以在输出口还要外接一个功率放大电路,将P2.5接在三极管8050的基极,再串联一个3.3k的电阻,三极管的集电极与继电器线圈串联在Vcc,发射极接地通常为了保护三极管,还要在继电器的两端反并联一个二极管。控制端得电路图如下所示:2、总电路设计图四、软件设计1、程序设计思路:本系统的主要功能是实现对环境内部温度的采集,根据采集温度

11、来调整加热电路工作占空比,使得环境内部温度达到设定的温度值。在温度控制算法上采用的是是PID(比例-积分-微分)算法,它是一种闭环输出控制模型,在后面会具介绍。总程序的主要有几个部分组成,显示程序,键盘扫描程序,温度读取程序,pid计算程序,中断程序。程序框图如下: 总程序框图2、 温控部分的设计系统的主要功能是实现对环境内部温度的控制。温度控制程序的算法直接影响着系统的工作效果,为了得到理想的,最优的结果我在温度控制算法上采用的是是PID(比例-积分-微分)算法,它是一种最经典也是最常用的闭环输出的自动控制模型,他可以根据当前的温度差来调整输纠正误差。PID是ProportionalInte

12、gralDerivativel控制是比例、积分、微分控制的简称,PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。在模拟控制系统中,控制器中最常用的控制规律是PID控制。PID控制器是一种线性控制器,它根据给定值与实际输出值构成控制偏差。PID控制规律写成传递函数的形式为:式中,PK为比例系数;iK为积分系数;dK为微分系数;ipiKKT 为积分时间常数;pddKKT为微分时间常数;简单来说,PID控制各校正环节的作用如下:比例控制比例控制是PID中最简单的控制方式。比例部分数学表达式为:其控制器的输出

13、与输入误差信号成比例关系。比例控制作用强弱取决于比例系数Kp,Kp越大,控制过程消耗的时间越短,最终结果的稳态误差也越小;但Kp变大,超调量也越大,系统控制过程易产生振荡,这会使动态性能变差,很可能导致闭环系统不稳定。积分控制在积分控制中,控制器的输出与输入误差信号的积分成正比关系。积分部分数学表达式为:对于一个自动控制系统,在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的简称有差系统。为了最大程度减小稳态误差,在控制器中必须引入积分项。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步

14、减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。微分控制如果控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系,那么就叫做微分控制。微分部分数学表达式为:一般自动控制系统在消除误差、自动调节过程中,系统可能会出现振荡甚至失稳。其原因系统是存在有较大惯性环节或有滞后组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是让抑制误差的作用超前工作,就是在系统误差快要接近于零时,抑制误差就应该是零。这就是说,在控制器中仅光入比例项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是微分项,它能预测误差变化的趋势,这样,具有比例+微分

15、的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。微分控制得出偏差的变化趋势,微分控制作用可加快系统响应,减小超调量,减小振荡,系统更稳定性,但使系统抗干扰的能力变差。微分部分的作用强弱由微分时间Td决定。Td的值大,则它抑制e(t)变化的能力强,Td的值小,e(t)则它阻止变化的能力弱。PID离散化最终的算式如式所示离散变换得:3、 编程思想对于已经离散化的pid公式,就可以程序来进行编写和实现,我们编写程序的思想是,构造一个循环函数,来实现pid的迭代运算。首先我们将当前设定的温度定义为终点Set_Point,然后将单片机的定时中断装入合适的初值这样每

16、隔一个周期T单片机便将获取的环境温度送去与设定温度(Set_Point)进行比较,计算出温度误差U(k),将U(K)的值赋给Error,这时可以计算出比例项,Kp*Error又过一个周期将计算出的U(k-1)的值赋给Next_Error,由Error-Next_Error=dError,我们就可以得到微分项;Kd*dError。至于积分项,每当PID的循环算法执行一次,累积误差SumError变加上当前误差Error,SumError在不停的做一个累加运算,所以积分项为;Ki*SumError。每一个周期的PID计算程序执行完后,将当前的Next_Error的值赋给Error,这样在下一个周期

17、时Next_Error装入新的误差值,以便计算下一个dError的值,得出微分项,整个pid计算程序的流程图如下图所示:4、 部分核心算法如下:()、键盘控制温度:void DigDisplay() unsigned char i; unsigned int j; for(i=0;i4;i+) wela=1; switch(i) case(0):LSA=1;LSB=1;LSC=1;LSD=0;LSE=1;LSF=1;break; case(1):LSC=0;LSD=1; case(2):LSB=0; case(3):LSA=0; wela=0; j=5; while(j-); duan=1;

18、P0=DisplayDatai; P0=0x00; duan=0; /消隐 (2)、温度采集部分程序:int Ds18b20ReadTemp() int temp = 0; uchar tmh, tml; Ds18b20ChangTemp(); /先写入转换命令 Ds18b20ReadTempCom(); /然后等待转换完后发送读取温度命令 tml = Ds18b20ReadByte(); /读取温度值共16位,先读低字节 tmh = Ds18b20ReadByte(); /再读高字节 temp = tmh; temp SetPoint=set_temper;=SetPoint-NextPoi

19、nt;偏差SumError+=Error;积分dErrorLastError当前微分PrevErrorreturn(pp-Proportion*比例项+积分项DerivativedError);微分项(4)、温度控制实现通过温度的PID运算,产生结果fOut,该参数决定是否加热,加热时间是多长。该程序如下:stPID.Proportion2;/设置PID比例值stPID.Integral0;积分值stPID.Derivative5;微分值fOutPIDCalc(&stPID,(int)(fT*10);/PID计算if(fOut=0)*P_IOA_Buffer0xff7f;/温度高于设定值,关闭加热器else|=0x0080;/温度低于设定值,打开加热器参考文献:C语言程序设计基础 第四版,清华大学出版社单片机基础 第三版,北京航空航天大学出版

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1