3.3温度获取程序
主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等。
主程序; 主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值。温度测量每1S进行一次。主流程图如下:
图 3-4 主程序流程图
出温度子程序; 读出温度子程序的主要功能是读出RAM中的9字节。在读出时须进行CRC校验,校验有错时不进行温度数据的改写。流程图如图3.5:
23
发DS18B20复位命令 发跳过ROM命令 发读取温度命令 读取操作,CRC校验 Y 9字节完? N Y CRC校验正?N 移入温度暂存器 结束 图 3-5 读温度子程序流程图
温度转换命令子程序 ; 温度转换命令子程序主要是发温度转换开始命令。当采用12位分辨率时,转换时间约为750ms。在本程序设计中,采用1s显示程序延时法等待转换的完成。流程图如下:
结束 发温度转换开始命令 发跳过ROM命令 发DS18B20复位命令 图3-6 温度转换命令子程序流程图
计算温度子程序 ; 计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。
24
开始 N 温度零下? Y 置“+”标温度值取补码置“-”标志
计算小数位温度BCD计算整数位温度BCD值 结束 图3-7 计算温度子程序流程图
显示数据刷新子程序; 显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。
温度数据移入显示寄存器 十位数0? 百位数十位数显示符号 百位数不显示 百位数显示数据 (不显示符号) 结束 图3-8 显示子程序流程图
25
3.4基于PID的温控程序设计
系统的主要功能是实现对环境内部温度的控制。温度控制程序的算法直接影响着系统的工作效果,为了得到理想的,最优的结果我在温度控制算法上采用的是是PID(比例-积分-微分)算法,它是一种最经典也是最常用的闭环输出的自动控制模型,他可以根据当前的温度差来调整输纠正误差。
PID是Proportional Integral Derivativel控制是比例、积分、微分控制的 简称,PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。
PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控
制的。
在模拟控制系统中,控制器中最常用的控制规律是PID控制。PID控制器是一种线性控制器,它根据给定值与实际输出值构成控制偏差。PID控制规律写成传递函数的形式为 G(s)?E(s)1Ki?Kp(1??Tds)?Kp??Kds (3-1) U(s)Tiss式中,KP为比例系数;Ki为积分系数;Kd为微分系数;Ti?时间常数;Td?如下: 输入 图3-9 PID系统框图
KpKi为积分
Kd为微分时间常数;简单来说,PID控制各校正环节的作用KpKp + + - Kd 微分 Ki 积分 + + 对象 输出 比例控制
比例控制是PID中最简单的控制方式。比例部分数学表达式为:
26
KP?e(t) (3-2)
其控制器的输出与输入误差信号成比例关系。比例控制作用强弱取决于比例系数Kp,Kp越大,控制过程消耗的时间越短,最终结果的稳态误差也越小;但Kp变大,超调量也越大,系统控制过程易产生振荡,这会使动态性能变差,很可能导致闭环系统不稳定。
积分控制
在积分控制中,控制器的输出与输入误差信号的积分成正比关系。积分部分数学表达式为:
KP?e(t)dt (3-3) Ti对于一个自动控制系统,在进入稳态后存在稳态误差,则称这个控制系统
是有稳态误差的简称有差系统。为了最大程度减小稳态误差,在控制器中必须引入―积分项‖。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积 分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳 态误差。
微分控制
如果控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系,那么就叫做微分控制。微分部分数学表达式为:
(3-4)
一般自动控制系统在消除误差、自动调节过程中,系统可能会出现振荡甚
KP?Td?de(t)/dt
至失稳。其原因系统是存在有较大惯性环节或有滞后组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是让抑制误差的作用超前工作,就是在系统误差快要接近于零时,抑制误差就应该是零。这就是说,在控制器中仅光入 ―比例‖项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是―微分项‖,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能 够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。微分控制得出偏差的变化趋势,微分控制作用可加快系统响应,减小超调量,减小振荡,系统更稳定性,但使系统抗干扰的能力变
27