基于FPGA的温控系统的设计.docx
《基于FPGA的温控系统的设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA的温控系统的设计.docx(8页珍藏版)》请在冰豆网上搜索。
基于FPGA的温控系统的设计
综合电子系统设计报告
实验名称:
基于FPGA的温控系统的设计
班级:
电子1202
学号:
姓名:
__
指导教师:
前言
基于FPGA与温度传感器DS18B20设计实现了单回路水箱温度PID控制系统。
软件主要包括PID控制算法及PWM波产生模块、DS18B20驱动模块、数码管显示驱动模块等3个模块。
仿真结果验证了设计的正确性。
实验结果说明,系统输出温度到达微小超调的稳定控制要求,表达了该设计方法的有效性和实用性。
基于微处理器的温度控制系统改变了传统模拟温度控制系统参数整定不灵活的问题。
但是常规微处理器无法防止在恶劣环境下程序跑飞的问题。
利用FPGA实现温度控制系统的设计,不仅可以提高系统的运算速度、减小系统的体积,还可以增强系统的可靠性,具有较强的应用前景。
本设计首先针对Altera公司的CycloneII系列FPGA芯片,基于QUARTUSII软件,采用verilogHDL编程设计了主要包括PID控制算法及PWM波产生模块、DS18B20驱动模块、数码管显示驱动模块等功能模块程序。
然后用Modelsim软件仿真验证了各模块的正确性。
最后以水箱为被控对象,以目前市场上性价比拟高的FPGA芯片EP2C8Q208C8为核心器件,结合温度传感器DS18B20、键盘、数码管以及固态继电器等器件设计实现了单回路水温PID控制系统。
在控制温度为30~90℃的实验条件下,误差小于1℃,系统输出温度到达微小超调的稳定控制要求。
关键词:
FPGADS18B20PIDPWM波
一、方案设计
1、方案设计比拟
温度传感器模块设计
方案一:
采用热敏电阻pt100。
这种电阻输出的是模拟量,所以硬件构造较复杂,需要用到桥式电路将采集到的温度转化为电压输出,而且为了实现AD转化,还要加放大电路。
另外,这种测温系统难以实现多点测温,也要用到复杂的算法,一定程度上也增加了软件实现的难度。
方案二:
采用单总线数字温度传感器DS18B20测量温度,直接输出数字信号。
便于单片机处理及控制,节省硬件电路。
且该芯片的物理化学性很稳定,此元件线形性能好,在0—100摄氏度时,最大线形偏差小于1摄氏度。
DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89C51构成的温度装置,它直接输出温度的数字信号到微控制器。
每只DS18B20具有一个独有的不可修改的64位序列号,根据序列号可访问不同的器件。
这样一条总线上可挂接多个DS18B20传感器,实现多点温度测量,轻松的组建传感网络。
综上分析,我们选用第二种方案。
2、总体方案设计
单回路水箱温度控制系统的构造如图1所示,虚线框内局部是系统的核心,用一片FPGA实现。
其中,clock生成器用于将系统时钟分频及产生定时,用户接口承受用户键盘输入及驱动LED显示。
PID控制器用于实现PID控制算法,PWM波发生器用于脉宽调制,以控制固态继电器的通断来到达控制加热功率的目的。
传感器接口用于对温度传感器DS18B20进展数据采样控制。
二、理论分析与计算
1、温度转换计算方法
例如当DS18B20采集到+125℃的实际温度后,输出为07D0H,那么:
实际温度=07D0H╳0.0625=2000╳0.0625=1250C。
例如当DS18B20采集到-55℃的实际温度后,输出为FC90H,那么应先将11位数据位取反加1得370H〔符号位不变,也不作为计算〕,那么:
实际温度=370H╳0.0625=880╳0.0625=550C。
2、稳定温度的方法:
PID算法调节
完整的公式如下:
u(t)=Kp*e(t)+Ki∑e(t)+Kd[e(t)–e(t-1)]+u0
在PID的调试过程中,我们应注意以下步骤:
1、关闭I和D,也就是设为0.加大P,使其产生振荡;
2、减小P,找到临界振荡点;
3、加大I,使其到达目标值;
4、重新上电看超调、振荡和稳定时间是否吻合要求;
5、针对超调和振荡的情况适当的增加一些微分项;
6、注意所有调试均应在最大争载的情况下调试,这样才能保证调试完的结果可以在全工作范围内均有效;
PID控制器参数整定 :
采用是临界比例法。
利用该方法进展PID控制器参数整定步骤如下:
〔1〕首先预选择一个足够短采样周期让系统工作;
〔2〕仅参加比例控制环节,直到系统对输入阶跃响应出现临界振荡,记下这时比例放大系数和临界振荡周期;
〔3〕一定控制度下公式计算到PID控制器参数。
二、硬件设计
〔一〕、键盘输入
〔二〕、温度显示局部
用七段数码管显示,两个用来显示键盘设定的温度值,两个用来显示测得的温度值。
因个数码管占用的工口资源较多,所以配用带驱动和锁存功能的一十进制译码器如下图为一个数码管与的连接。
编程时设定值的显示与测得值的显示为两个不同的模块。
〔三〕、设定值的显示局部
当按键按下一定时间说明按下有效,因为只显示两位数字,所以按一次键,显示移位,按下三次,那么最前面的被代替,依次类推。
程序流程如图:
〔四〕、温度控制
温度控制直接比拟设定值和测得值的编码,假设设定值大于测得值,那么控制升温器件开场工作反之,让降温器件
工作。
可以通过的输出控制继电器或者光电器件从而控制需要强电才能工作的升温和降温设备。
四、软件设计
〔一〕、程序设计思路:
本系统的主要功能是实现对环境内部温度的采集,根据采集温度来调整加热电路工作占空比,使得环境内部温度到达设定的温度值。
在温度控制算法上采用的是是PID〔比例-积分-微分〕算法,它是一种闭环输出控制模型,在后面会具介绍。
总程序的主要有几个局部组成,显示程序,键盘扫描程序,温度读取程序,pid计算程序,中断程序。
程序框图如下:
PID是Proportional Integral Derivativel控制是比例、积分、微分控制的 简称,PID控制器由比例单元〔P〕、积分单元〔I〕和微分单元〔D〕组成。
PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进展控
制的。
在模拟控制系统中,控制器中最常用的控制规律是PID控制。
PID控制器是一种线性控制器,它根据给定值与实际输出值构成控制偏差。
PID控制规律写成传递函数的形式为:
式中,PK为比例系数;iK为积分系数;dK为微分系数;ipiKKT为积分时间常数;pddKKT为微分时间常数;简单来说,PID控制各校正环节的作用如下:
比例控制
比例控制是PID中最简单的控制方式。
比例局部数学表达式为:
其控制器的输出与输入误差信号成比例关系。
比例控制作用强弱取决于比例系数Kp,Kp越大,控制过程消耗的时间越短,最终结果的稳态误差也越小;但Kp变大,超调量也越大,系统控制过程易产生振荡,这会使动态性能变差,很可能导致闭环系统不稳定。
积分控制
在积分控制中,控制器的输出与输入误差信号的积分成正比关系。
积分局部数学表达式为:
对于一个自动控制系统,在进入稳态后存在稳态误差,那么称这个控制系统
是有稳态误差的简称有差系统。
为了最大程度减小稳态误差,在控制器中必须引入―积分项‖。
积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。
这样,即便误差很小,积 分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。
因此,比例+积分〔PI〕控制器,可以使系统在进入稳态后无稳态误差。
微分控制
如果控制器的输出与输入误差信号的微分〔即误差的变化率〕成正比关系,那么就叫做微分控制。
微分局部数学表达式为:
一般自动控制系统在消除误差、自动调节过程中,系统可能会出现振荡甚
至失稳。
其原因系统是存在有较大惯性环节或有滞后组件,具有抑制误差的作用,其变化总是落后于误差的变化。
解决的方法是让抑制误差的作用超前工作,就是在系统误差快要接近于零时,抑制误差就应该是零。
这就是说,在控制器中仅光入 ―比例‖项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是―微分项‖,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能 够提前使抑制误差的控制作用等于零,甚至为负值,从而防止了被控量的严重超调。
微分控制得出偏差的变化趋势,微分控制作用可加快系统响应,减小超调量,减小振荡,系统更稳定性,但使系统抗干扰的能力变差。
微分局部的作用强弱由微分时间Td决定。
Td的值大,那么它抑制e(t)变化的能力强,Td的值小,e(t)那么它阻止变化的能力弱。
PID离散化
最终的算式如式所示离散变换得:
〔二〕、各个局部的设计
1、PID控制器的设计
常规PID控制器构造清晰、参数调节方便、鲁棒性强,并且算法简单高效,在工业现场是应用最广泛的控制器。
模拟PID控制表达式如下:
其中,kp为比例增益,Ti为积分时间常数,Td为微分时间常数,e(t)=r(t)-y(t)为偏差,u(t)为控制量。
位置型数字PID控制算法如式:
其中,T为采样周期,k为采样序号。
增量型数字PID控制算法如式:
所以
用FPGA实现式(4)时,需要进展减法运算和乘法运算。
乘法器用Altera提供的可定制位宽的宏功能模块LPM_MULT实现。
LPM_MULT具有流水线输出功能,可以提高乘法运算的速度。
对减法运算,根据被减数-减数=被减数+(-减数),将减法运算变成符号数的加法运算。
符号数以补码形式表示,最高位为符号位,1表示负数,0表示正数;其他位为数值位,负数的数值位等于它的反码加1。
在用VerilogHDL语言表达符号数时,需要判断符号位来确定正负。
描述ud=kd[e(k)-2e(k-1)+e(k-2)]的VerilogHDL语言代码如下:
up和ui的描述方法依此类推。
假设采用PID控制器的其他构造形式,只需改变up,ui和ud的形式。
3、PWM波发生器的实现
PWM波发生器根据PID控制器的输出量u(k)确定PWM波在一个采样周期内上下电平的定时
值。
为了节省整体设计时间和FPGA资源,以1/1000采样周期为计数时钟,先使高电平计数器减法计数直到0,在此期间,PWM端口输出高电平,再使低电平计数器减法计数直到0,在此期间,PWM端口输出低电平。
PWM发生器的局部VerilogHDL源代码如下:
4、DS18B20接口的实现
DS18B20接口状态机由如图2所示的8个状态组成:
(1)RESET1:
对DS18B20进展初始化,等待后进入JUDGE。
(2)JUDGE:
检测DS18B20是否存在。
假设不存在,返回RESET1;否那么延时后进入SKIP1。
(3)SKIP1:
向DS18B20发送跳过ROM匹配命令,然后进入CONVERT。
(4)CONVERT:
向DS18B20发送启动温度转换命令,等待后进入RESET2。
(5)RESET2:
对DS18B20复位,等待600s后进入SKIP2。
(6)SKIP2:
向DS18B20发送跳过ROM匹配命令,然后进入GET。
(7)GET:
从DS18B20中读取温度测量值,然后进入STORE。
(8)STORE:
把所读取的温度测量值放入存放器中,返回原始状态。
其中CONVERT和GET两个状态嵌套使用了状态机,以完成DS18B20严格的写和读时序。
系统的主要功能是实现对环境内部温度的控制。
温度控制程序的算法直接影响着系统的工作效果,为了得到理想的,最优的结果我在温度控制算法上采用的是是PID〔比例-积分-微分〕算法,它是一种最经典也是最常用的闭环输出的自动控制模型,他可以根据当前的温度差来调整输纠正误差。
5、顶层模块设计
采用自上向下的设计方法将FPGA实现的功能分成DS18B20驱动模块、PID控制算法及PWM波产
生模块和显示驱动模块等3个功能模块。
DS18B20驱动模块实现1s信号的产生、延时DS18B20接口状态机。
PID控制算法及PWM波产生模块实现采样时钟信号的产生、初始温度屏蔽、温度设定、PID算法以及PWM波的产生。
显示驱动模块实现动态扫描显示时钟信号的产生、段码和位码的译码,以驱动4个七段数码管动态扫描显示百位、十位、个位和小数位数据。
将这3个模块分别用VerilogHDL设计成功后,在顶层模块中进展例化的源代码为:
四、测试及实验结果
设给定值r=60,温度采样值tem_data=25,kp=100,ki=0,kd=1,clk=50MHz,rst_n=1。
PID控制算法及PWM波产生模块测试文件的时序图如图3所示。
可见,初始位置ek=35,初始温度屏蔽有效(屏蔽标志flag1=1);采样时钟信号flag的周期为1s;PWM波vs与其上下电平计数值vs_h、vs_l及占空比标志flag3的关系是正确的。
以水箱为被控对象,以EP2C8Q208C8为核心,采用DS18B20采集温度数据,PWM调功方式控制过零型交流固态继电器ASRP-1,4个共阴极数码管作温度显示器,构建水温控制系统并进展了实验测试。
在控制温度为30~90的实验条件下,误差小于1,系统到达微小超调的稳定控制要求。