实训总结性说明本系统需要实时采集温度数据, 然后经过A/D 转换为数字信号, 存入AT89S52 的内部数据存储器, 送液晶显示, 并与设定值进行比较, 经过PID 算法得到控制量并由单片机输出去控制加热器。
进行温度控制程序的设计应考虑如下问题: ①温度采样, 数字滤波; ②PID 控制程序; ③按键处理, 液晶显示; ④上位机语音处理; ⑤与上位机通信程序。
一、温度采集部分1)采集的温度信号的性质:按一定曲线变化的模拟信号,而且温度变化比较缓慢。
如果设计硬件滤波器,首先要分析信号的频域特性以及可能噪声的特性来确定滤波器的技术指标,其次构造传递函数,最后根据传递函数来设计滤波器。
放大电路可以参考模拟电路中的放大电路来设计。
2)A/D转换1.基本原理模拟电子开关S在采样脉冲CPS的控制下重复接通、断开的过程。
S 接通时,ui(t)对C充电,为采样过程;S断开时,C上的电压保持不变,为保持过程。
在保持过程中,采样的模拟电压经数字化编码电路转换成一组n位的二进制数输出。
2.采样保持电路A/D转换器的功能是将输入的模拟信号转换成一组多位的二进制数字输出。
不同的A/D转换方式具有各自的特点。
并联比较型A/D转换器转换速度快,主要缺点是要使用的比较器和触发器很多,随着分辨率的提高,所需元件数目按几何级数增加。
双积分型A/D转换器的性能比较稳定,转换精度高,具有很高的抗干扰能力,电路结构简单,其缺点是工作速度较低,在对转换精度要求较高,而对转换速度要求较低的场合,如数字万用表等检测仪器中,得到了广泛的应用逐次逼近型A/D转换器的分辨率较高、误差较低、转换速度较快,在一定程度上兼顾了以上两种转换器的优点,因此得到普遍应用。
2、时钟决定信号波形的采样速度和模数转换器的变换速率。
转换精度可以做到24bit,而采样频率也有可能高达1GHZ,但两者不可能同时做到。
通常数字位数越多,装置的速度就越慢。
3、根据测量系统要求不同以及单片机的忙闲程度,通常可采用3种软件编程方式:程序查询方式,延时方式和中断方式。
采用延时方式。
延时程序实际上是无条件传送I/O方式,当向A/D转换器发出启动命令后,即进行软件延时,延时时间稍大于进行一次A/D转换所需要的时间,之后打开A/D转换器的输出缓冲器读数即为转换好的数字量。
A/D转换时间为64个时钟周期,因为系统中ADC0809的工作时钟为500 kHz,故A/D转换时间为128μs,延时时间可大致选择160μs。
3)单片机数字滤波的算法单片机主要作用是控制外围的器件,并实现一定的通信和数据处理。
但在某些特定场合,不可避免地要用到数学运算,尽管单片机并不擅长实现算法和进行复杂的运算。
下面主要是介绍如何用单片机实现数字滤波。
在单片机进行数据采集时,会遇到数据的随机误差,随机误差是由随机干扰引起的,其特点是在相同条件下测量同一量时,其大小和符号会现无规则的变化而无法预测,但多次测量的结果符合统计规律。
为克服随机干扰引起的误差,硬件上可采用滤波技术,软件上可采用软件算法实现数字滤波。
滤波算法往往是系统测控算法的一个重要组成部分,实时性很强。
采用数字滤波算法克服随机干扰的误差具有以下优点:●数字滤波无需其他的硬件成本,只用一个计算过程,可靠性高,不存在阻抗匹配问题。
尤其是数字滤波可以对频率很低的信号进行滤波,这是模拟滤波器做不到的。
●数字滤波使用软件算法实现,多输入通道可共用一个滤波程序,降低系统开支。
●只要适当改变滤波器的滤波程序或运算,就能方便地改变其滤波特性,这对于滤除低频干扰和随机信号会有较大的效果。
●在单片机系统中常用的滤波算法有限幅滤波法、中值滤波法、算术平均滤波法、加权平均滤波法、滑动平均滤波等。
(1)限幅滤波算法该运算的过程中将两次相邻的采样相减,求出其增量,然后将增量的绝对值,与两次采样允许的最大差值A进行比较。
A的大小由被测对象的具体情况而定,如果小于或等于允许的最大差值,则本次采样有效;否则取上次采样值作为本次数据的样本。
说明:限幅滤波法主要用于处理变化较为缓慢的数据,如温度、物体的位置等。
使用时,关键要选取合适的门限制A。
通常这可由经验数据获得,必要时可通过实验得到。
(2)中值滤波算法该运算的过程是对某一参数连续采样N次(N一般为奇数),然后把N次采样的值按从小到大排列,再取中间值作为本次采样值,整个过程实际上是一个序列排序的过程。
说明:中值滤波比较适用于去掉由偶然因素引起的波动和采样器不稳定而引起的脉动干扰。
若被测量值变化比较慢,采用中值滤波法效果会比较好,但如果数据变化比较快,则不宜采用此方法。
(3)算术平均滤波算法该算法的基本原理很简单,就是连续取N次采样值后进行算术平均。
说明:算术平均滤波算法适用于对具有随机干扰的信号进行滤波。
这种信号的特点是有一个平均值,信号在某一数值附近上下波动。
信号的平均平滑程度完全到决于N值。
当N较大时,平滑度高,灵敏度低;当N较小时,平滑度低,但灵敏度高。
为了方便求平均值,N一般取4、8、16、32之类的2的整数幂,以便在程序中用移位操作来代替除法。
(4)加权平均滤波算法由于前面所说的“算术平均滤波算法”存在平滑度和灵敏度之间的矛盾。
为了协调平滑度和灵敏度之间的关系,可采用加权平均滤波。
它的原理是对连续N次采样值分别乘上不同的加权系数之后再求累加,加权系数一般先小后大,以突出后面若干采样的效果,加强系统对参数变化趋势的认识。
各个加权系数均小于1的小数,且满足总和等于1的结束条件。
这样加权运算之后的累加和即为有效采样值。
其中加权平均数字滤波的数学模型是:式中:D为N个采样值的加权平均值:X N-i为第N-i次采样值;N为采样次数;C i为加权系数。
加权系数C i体现了各种采样值在平均值中所占的比例。
一般来说采样次数越靠后,取的比例越大,这样可增加新采样在平均值中所占的比重。
加权平均值滤波法可突出一部分信号抵制另一部分信号,以提高采样值变化的灵敏度。
(5)滑动平均滤波算法以上介绍和各种平均滤波算法有一个共同点,即每获取一个有效采样值必须连续进行若干次采样,当采速度慢时,系统的实时得不到保证。
这里介绍的滑动平均滤波算法只采样一次,将一次采样值和过去的若干次采样值一起求平均,得到的有效采样值即可投入使用。
如果取N 个采样值求平均,存储区中必须开辟N个数据的暂存区。
每新采集一个数据便存入暂存区中,同时去掉一个最老数据,保存这N个数据始终是最新更新的数据。
采用环型队列结构可以方便地实现这种数据存放方式。
数字滤波的算法还有很多种方法,比如一阶滞后低通滤波器(惯性滤波法),限时滤波,容错冗余三中取二滤波法等等。
二、恒温控制部分1、PID 是对系统进行线性控制的一种控制器。
所谓PID 控制,就是按设定值与测量值之间偏差的比例、偏差的积累和偏差变化的趋势进行控制。
经典的数字PID 增量型算式中Kp 为比例系数, Ti 为积分时间常数, Td 为微分时间常数。
(1)本温控系统采用的数字PID 算法由软件实现, 增量PID 算法的优点是编程简单, 数据可以递推使用, 占用存储空间少, 运算快。
但是对于温度这种响应缓慢、滞后性大的过程, 不能用标准的PID 算法进行控制。
当扰动较大或者给定的温度值大幅度变化时, 由于产生较大的偏差, 加上温控本身的惯性及滞后, 在积分作用下, 系统往往产生较大的超调和长时间的振荡。
因此,为克服这种不良的影响, 采用积分分离法对增量PID 算法进行改进。
当偏差e(k)较大时, 暂时取消积分作用; 当偏差e(k)小于某一设定值M时, 才将积分作用投入。
①当|e(k)|>M时, 用PD 控制。
由于偏差大, 说明系统温度远离设定值, 应快速加热, 采用PD 控制, 可以提高系统的动态响应速度, 避免产生过大的超调, 减小动态误差。
②当|e(k)|<M时, 用PID 控制。
偏差小, 说明系统温度已经接近设定值, 此时加入了积分作用, 可以消除系统静差, 保证系统的控制精度。
(2)PID 参数的整定数字PID 控制器参数的整定是一项十分复杂的工作, 必须依靠经验和现场调试来确定控制器的参数Kp、Ti、Td 及采样周期T。
在本系统的设计过程中, 可以根据Ziegler 和Nichols 提出的参数整定方法(表1)对各参数进行整定, 得到一个初始值, 然后在实际操作中进行修订, 直至最终满足要求为止。
表1 由Ziegler 和Nichols 闭环整定方法得到的调节参数其中Ku 为临界增益, Tu 为临界振荡周期, 这两个值均是由纯比例器的作用下产生等幅振荡时的临界值。
(3)温度控制系统的调试(4)在PROTUES中的仿真实验2、控制端可以采用对电炉两端的电压进行通断的方法,用单片机产生PWM 波以实现对水加热功率进行控制,不同的占空比对应不同的功率,具体控制中占空比的实时值是根据模糊控制规则自动调节。
(1) 弱电控制强电: 用固态继电器。
通过控制继电器在控制周期内通断的时间, 实现对加热器的开关式控制。
由单片机I/O 口输出的控制信号, 经NPN 晶体管放大, 驱动继电器工作。
(2) PWM 波: 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
PWM 是一种对模拟信号电平进行数字编码的方法。
通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。
PWM信号仍然是数字信号,因为在给定的任何时刻,满幅值的直流供电不是完全有(ON) ,就是完全无(OFF) 。
电压或电流源是以一种通(ON) 或断(OFF) 的重复脉冲序列被加到模拟负载上去的。
通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。
只要带宽足够,任何模拟值都可以使用PWM 进行编码。
三、可能出现的问题1、温度传感器①温度传感器在温度为-20~0时输出地电压变化很小就是说温度每变化一度电压变化不明显解决办法:编辑温度传感器的属性使其温度范围变为0~100②温度传感器在每次变化一度相应的变化并不一样温度为59.5时电压为 0.597704 60.0时电压为0.602747 温度为97时电压为0.976924 温度为 97.5时电压为0.981993两次电压的变化分别为0.005043、0.005069显然步长值并不相等。
解决办法:精确计算放大器的电阻阻值如图计算方法为(5/1.00735-1)*3k2、A\D转换①在proteus中显示为no simulator model adc0809不能仿真用adc0808代替。