PID水温控制系统.docx
《PID水温控制系统.docx》由会员分享,可在线阅读,更多相关《PID水温控制系统.docx(33页珍藏版)》请在冰豆网上搜索。
PID水温控制系统
PID水温控制系统
摘要:
随着社会主义现代化的发展,在科学技术突飞猛进的今天,人工智能起不不可忽视的作用。
尤其是各种智能化的仪器、仪表在农、工业的广泛应用给社会带来了极大的便利。
本文从温控模型和特点出发,采用以单片机PIC16F877为核心,用AD7416数字温度传感器进行测量温度。
以PID算法控制温度,并对温度进行良好的精度控制。
本系统的多个部件如,定时器,加热开关,按键设置水温,实时显示温度,控制温度和报警保温等功能等都可利用单片机来实现。
文章着重介绍核心器件的选择、温度控制系统分析、各部份电路及软件的设计。
它具有结构简单、可靠性好,抗干扰能力强、实现容易,成本低,具有实用价值等特点。
它提供了一个通过温度来控制设备的基本思想和原理,相信能在实际应用中为我们的生活带来更大的便利。
关键词:
单片机数字温度传感器PID温度控制
PID-basedtemperaturecontrolsystem
Abstract:
Alongwiththedevelopmentofsocialistmodernization,rapidprogressinscienceandtechnologytoday,notartificialintelligencefromtherolethatcannotbeoverlooked.Especiallythevarietyofintelligentinstruments,metersintheagricultural,industrialsocietytothebroadapplicationbroughtgreatconvenience.Inthispaperthecharacteristicsofthemodelandtemperaturecontrol,theintroductionofSCMPIC16F877atthecore,withAD7416digitaltemperaturesensortomeasurethetemperature.PIDalgorithmtocontrolthetemperature,andtemperaturecontrolforgoodaccuracy.Manypartsofthesystemsuchas,timers,heatingswitches,buttonsinstalledwatertemperature,real-timedisplayoftemperature,temperaturecontrolandalarmfunctions,suchasinsulationSCMcanbeusedtoachieve.Thearticlehighlightsthecoredeviceofchoice,temperaturecontrolsystem,partofthecircuitandsoftwaredesign.Ithasasimplestructure,reliability,andstronginterferencecapabilitytoachieveeasy,lowcost,haspracticalvalue,andothercharacteristics.Itprovidesatemperaturecontrolledequipmentthroughthebasicideasandprinciples,Ibelieveinthepracticalapplicationofourlifemoreconvenient.
Keywords:
microcomputerdigitaltemperaturePIDtemperaturecontrol
一、前言
(一)设计任务及要求
本文介绍的是一个由PIC16F877为核心的单片机制作的一个水温控制器。
实现温度控制系统的设计过程,其中涉及系统结构设计、元器件的选取和控制控制算法的选择、和整体电路的设计以及部分电路的设计。
在系统构建时选取了数字温度传感器AD7416测量温度,基于PID温度控制方式实现温度控制。
系统设计水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动控制,以保持设定的温度基本不变;能在40摄氏度至90摄氏度范围内设定控制水温,静态控制精度为0.2摄氏度;具有较好的快速性与较小的超调等功能。
自70年代以来,由于工业过程控制的需要,特别是在微电子技术和计算机技术的迅猛发展,以及自动控制理论和设计方法发展的推动下,国外温度控制系统发展迅速,并在智能化自适应参数自整定等方面取得成果。
在这方面以日本、美国、德国、瑞典等国技术领先,并且都生产出了一批商品化的性能优异的温度控制器及仪器仪表,目前,国外温度控制系统及仪表正朝着高精度智能化、小型化等方面快速发展。
温度控制是无论是在工业生产过程中,还是在日常生活中都起着非常重要的作用,过低的温度或过高的温度都会使水资源失去应有的作用,从而造成水资源的巨大浪费。
特别是在当前全球水资源极度缺乏的情况下,我们更应该掌握好对水温的控制,把身边的水资源好好地利用起来。
在现代冶金、石油、化工及电力生产过程中,温度是极为重要而又普遍的热工参数之一。
在环境恶劣或温度较高等场合下,为了保证生产过程正常安全地进行,提高产品的质量和数量,以及减轻工人的劳动强度、节约能源,要求对加热炉炉温进行测、显示、控制,使之达到工艺标准,以单片机为核心设计的炉温控制系统,可以同时采集多个数据,并将数据通过通讯口送至上位机进行显示和控制。
那么无论是哪种控制,我们都希望水温控制系统能够有很高的精确度(起码是在满足我们要求的范围内),帮助我们实现我们想要的控制,解决身边的问题提高人民的生活水平。
通过本方案的设计,使本系统具有设置水温、实时显示温度,控制温度和报警保温等功能,它具有结构简单、实现容易,成本低,具有实用价值等特点。
而且还可以根据自己的需要来进行扩展,具有灵活使用的优点。
1.基本要求
①具备测量与控制两种工作方式;
②测量误差<0.5℃度;
③温控范围20℃~100℃度;
2.扩展部分
①测量误差<0.1℃度;
②控制误差<0.5℃度;
(二)方案的比较与选择
方案一:
采用以单片机PIC16F877为核心,数字温度传感器AD7416测量温度,基于PID温度控制方式实现温度控制。
单片机资源丰富,使用方便灵活,易于进行功能扩展。
系统的多个部件如,定时器,加热开关,按键设定温度,显示温度等都可利用单片机来实现,可靠性好,抗干扰能力强。
方案二:
数字温度传感器测量温度,用数字系统来实现温度控制。
该电路利用上,下限温度控制,3(1/2)为LED数字表头及电源电路组成。
这种方案实现简单,但是这种设计电路器件很多,调试起来很困难,并且对模拟电路的知识要求非常高,只有在特别适合精度要求较高的场合使用,不灵活。
方案三:
采用温度传感器铂电阻Pt1000。
铂热电阻的物理化学性能在高温和氧化性介质中很稳定,它能用作工业测温元件,且此元件线性较好。
在0—100摄氏度时,最大非线性偏差小于0.5摄氏度。
铂热电阻与温度关系是,Rt=R0(1+At+Bt*t);其中Rt是温度为t摄氏度时的电阻;R0是温度为0摄氏度时的电阻;t为任意温度值,A,B为温度系数。
因此从实际情况考虑出发,综合比较各方面因素最终采用方案一来进行系统设计。
二、总体设计
(一)系统总体设计
1.设计思想
根据温度控制器的功能要求,并结合对PIC16F87X系列单片机的资源分析,采用此系列中的主流型号PIC16F877作为电路系统的控制核心,数字温度传感器测温,LED显示温度,按键设定目标温度,PID温度控制,保温报警等几个主要模块组成.首先选择相应具体的工作实现元器件及方案。
如下:
(1)常用温度控制系统分析
温度是一个普通而又重要的物理量,在许多领域里人们需对温度进行测量和控制。
长期以来国内外科技工作者对温度控制器进行了广泛深入的研究,产生了大批温度控制器,如性能成熟应用广泛的PID调节器、智能控制PID调节器、自适应控制等。
此处主要对一些控制器特性进行分析以便选择适合的控制方法应用于改造。
PID在温度控制中已使用数十年,是一种成熟的技术,它具有结构简单、易于理解和实现,且一些高级控制都是以PID为基础改进的。
在工业过程控制中90%以上的控制系统回路具有PID结构,在目前的温度控制领域应用十分广泛,即使在科技发达的日本,PID在其温度控制应用中仍然占80%的比例。
其主要构成如图1所。
由图可知PID调节器是一种线性调节器,这种调节器是将设定值w与实际输出值y进行比较构成偏差
图1模拟PID控制
并将其比例、积分、微分通过线性组合构成控制量。
其动态方程为:
(1)
其中
---为调节器的比例放大系数
---为积分时间常数
---为微分时间常数
PID调节器的离散化表达式为
其增量表达形式为:
其中T为采样周期。
可见温度PID调节器有三个可设定参数,即比例放大系数
、积分时间常数
、微分时间常数
。
比例调节的作用是使调节过程趋于稳定,但会产生稳态误差;积分作用可消除被调量的稳态误差,但可能会使系统振荡甚至使系统不稳定;微分作用能有效的减小动态偏差。
在实际使用中,在满足生产过程需要的前提下,应尽量选择简单的调节器,这样既节省投资,又便于维护。
常规PID控制调节器是一种应用广泛技术成熟的控制方法,它能满足一般工业控制的要求,其优点是原理简单、使用方便、适应性广。
采用PID控制,控制效果的好坏很大程度上取决于PID三个控制参数的确定。
对一个控制系统而言,只要参数选择适当,都能取得较好的控制效果。
(2)自动控制方式
为了实现温度的自动控制,必须要组成一定的系统结构。
该控制系统是把输出量检测出来,经过物理量的转换,再反馈到输入端去与给定量进行比较(综合),并利用控制器形成的控制信号通过执行机构SSR对控制对象进行控制,抑制内部或外部扰动对输出量的影响,减小输出量的误差,达到控制目的。
在此控制系统中单片机就相当于常规控制系统中的运算器控制器,它对过程变量的实测值和设定位之间的误差信号进行运算然后给出控制信息。
单片机的运算规则称为控制法则或控制算法。
常用的控制算法有以下几种
①经典的比例积分微分控制算法。
②根据动态系统的优化理论得到的自适应控制和最优控制方法。
③根据模糊集合理论得到模糊控制算法。
自适应控制、最优控制方法以及模糊控制算法是建立在精确的数学模型基础上的,在实时过程控制中,由于控制对象的精确数学模型难于建立,系统参数经常发生变化,运用控制理论进行综合分析要花很大代价,主要是时间。
同时由于所得到的数学模型过于复杂难于实现。
在实时控制系统中要求信号的控制信号的给出要及时,所以在目前的过程控制系统中较少采用自适应控制、最优控制方法和模糊控制算法。
目前在过程控制中应用较多的还是PI控制算法、PD控制算法和PID控制算法。
2.器件选型
(1)传感器的选择
由于本设计是精确控制系统,并且有控制范围上的要求,所以在选择传感器上要着重考虑其精度和测试范围。
AD公司的AD590和AD7416都包含一个可以精确测量环境温度的片内温度传感器,但AD590是模拟传感器,需对温度模拟信号进行数字化处理,在调理和放大信号时,又会带来新的误差,影响精度,而AD7416包含一个10位AD转换器,是一个以0.25的分辨力将温度数字化的数字式温度传感器,并且其测温理论范围为-55度到125度,因其精确度高,范围可选这两大特点,故本设计的传感器选为AD7416。
可广泛应用于个人计算机、电子测试设备、办公设备、家用电器、过程控制等场合。
该系列有:
AD7414、AD7415、AD7416、AD7814等四种型号,它们的工作原理相同,主要参数见表,引脚排列如图所示。
表1主要参数
型号
AD7414
AD7415
AD7416
AD7814
接口方式
I2C/SMBUS
SPI/DSP
温度测量范围
-55~125℃-40~85℃
-40~85℃
-55~125℃
-55~125℃
超温指示
有
无
有
无
省电工作方式
无
有
最大并联数
3
8
1
工作电压
2.7~5.5V
转换时间
400μs
封装
SOT-23
SOT-23
SO-8/RM-8
SOT-23/uSOIC
图2AD系列引脚分布
(2)单片机的选择
现在,市场上的单片机种类繁多,例如51、PIC等。
而51系列单片机不具有IIC端口,要对其进行模拟设置;并且相对PIC来说,其指令也较复杂。
本设计选用了指令精简、集成度高,并具有IC接口的PIC单片机,而PIC16F877这一型号的PIC单片机已能够满足系统的需要(图3)。
图3PIC16F877单片机
美国微芯公司推出的CMOS8位PIC系列单片机,采用精简指令集(RISC)、哈佛总线结构、2级流水线取指令方式,具有实用、低价、指令集小、简单易学、低功耗、高速度、体积小、功能强等特点,体现了单片机发展的一种新趋势,深受广大用户的欢迎,已逐渐成为单片机发展的新潮流。
PIC16F87X是微芯公司的中档产品。
它采用14位的类RISC指令系统,在保持低价格的前提下,增加了A/D转换器、内部E2PROM存储器、比较输出、捕捉输入、PWM输出(加上简单的滤波电路后还可以作为D/A输出)、I2C总线和SPI总线接口电路、异步串行通信(USART)接口电路、模拟电压比较器、LCD驱动、FLASH程序存储器等许多功能,可以方便地在线多次编程和调试,特别适用于初学者学习和在产品的开发阶段使用;它也可以作为产品开发的终极产品。
微芯公司还将FLASH芯片做成与OTP芯片价格相近,以致可用FLASH芯片代替OTP芯片。
微芯公司的单片机是品种最丰富的单片机系列之一,被广泛地应用于各种仪器和设备中。
这种单片机具有如下显著的特点:
开发容易,周期短:
由于PIC采用类RISC指令集,指令数目少(PIC16F87X仅35条指令),且全部为单字长指令,易学易用;相对于采用CISC(复杂指令集)结构的单片机可节省30%以上的开发时间、2倍以上的程序空间。
高速:
PIC采用哈佛总线和类精简指令集,逐步建立了一种新的工业标准,指令的执行速度比一般的单片机要快4~5倍。
低功耗:
PIC采用CMOS电路设计,结合了诸多的节电特性,使其功耗很低;100%的静态设计可进入休眠(Sleep)省电状态,而不会影响激活后的正常运行。
微芯公司的单片机是各类单片机中低功耗设计最好的产品之一。
低价实用:
PIC配备有OTP(OneTimeProgrammable)型、EPROM型及FLASH型等多种形式的芯片,其OTP型芯片的价格很低。
PIC还提供程序监视器(WDT)和程序可分区保密的保密位(SecurityFuse)等功能;提供了基于Windows98/NT/2000的、方便易用的、全系列产品开发工具及大量子程序库和应用实例,使产品开发更容易、快捷。
3.设计步骤
系统的工作原理如图4所示,数字温度传感器将温度测量出来,送给单片机通过软件控制并用LED数码管显示出来,人工设置目标温度通过加热水温,使水温达到目标温度。
图4整体系统框图
4.系统计算
传感器将温度转换成电压,再由A/D转换器转换成10位数字量送温度值寄存器。
A/D转换器的一次转换时间约400μs,其数字温度传感器的精度为0.25℃,所以温度测量精度为0.3℃,通过实验我们的控制精度为0.4℃。
(二)单元电路的功能原理分析
基本硬件电路图如图所示。
在本系统中单片机的引脚分布:
RA0用于报警,RA1用于控制继电器,RA3用于启动加热开关,MCLR用于复位,RA2是步进按纽,RD2~RD7用于控制LED的扫描,RC3~RC4分别是时钟线信号和数据线信号。
1.温度测量
测温元件采用AD公司的单线数字温度传感器AD7416。
AD7416提供十位温度读数,测量范围-55℃~+125℃,采用独IC总线协议,只需一根口线即实现与MCU的双向通讯,具有连接简单,高精度,高可靠性等特点。
在工作时,通过总线向其提供电源,单片机发出指令码读取温度值。
每400微秒取样一次,取4次温度值的平均值。
每0.5秒刷新一次。
2.显示电路
我们通过实际观察当时当地的温度得知,温度不会达到100℃度。
温度采用三位七段码显示0℃~99。
9℃。
对温度进行循环扫描显示,二个LED用于当前按键功能设定。
3.加热控制电路
单片机通过光电耦合对继电器进行控制,用来切断或接通加热管电源,从而达到对水温的控制。
4.按键设定温度
本次是采用软件来实现的,每5毫秒检测一次按键,如果连续两次均为按下状态,则置按键状态位有效。
此后一直等到按键状态位清零再重新开始检测。
5.系统总电路图
系统总体设计图如图5所示:
各个功能模块都在上面。
图5总电路图
(三)发挥部分设计
PIC16F877本身具有看门狗定时器,当系统出现异常时,能自动进行掉电保护和系统复位。
系统采用硬件计数器来计数,提高CPU的工作效率。
三、系统软件设计
(一)程序的主流程图
图6主流程图
在设计程序编写过程中,首先还有一系列的准备工作。
在这个程序中涉及到了许多的库和组成文件,主要有:
main.c、isr.asm、key.asm、hardware.asm、led.asm、system.asm、sacm_user_a2000.h。
//=========================================
//函数:
主程序
//语法:
main(void)
//描述:
、键盘扫描、温度控制
//参数:
无
//返回:
无
//===========================================
main(void)
{
intiKeyValue;
status=system_temperature_set;
guifgSpeechPlay=0;
System_Initial();
PIDinit();
while
(1)
{
System_ServiceLoop();//键盘扫描、去抖动处理
iKeyValue=SP_GetCh();//取键值
key_value_process(iKeyValue);//键值处理
if(status==system_temperature_control)
display_speech_ADC_temperature();//测量温度显示、温度播报、PID计算
Clear_WatchDog();//清看门狗
System_ServiceLoop();//键盘扫描
if(fOut<=0)turn_off_timerB();
}
}
从主程序中可以看出,在进行一系列程序调用之前对系统进行初始化,然后再对键盘程序有所反应。
进而判断是否有温度采集到,有就进行A/D转换和PID计算,将其结果用来控制继电器。
(二)各个功能模块流程
系统中键盘扫描、保温等子程序都通过查询实现,并采用4MHz的时钟频率,对指令的运行时间进行了精确计算和设计,保证软件的可靠性和稳定性。
1.温度传感器温度数字采集部分
从AD7416读数据是一或二字节的操作。
读配置寄存器的内容是一个单字节的操作,若从温度值寄存器中读数据是一个二字节的操作(如图7、8所示)。
图7AD7416时序图
图8AD7416时序图
2.读数字温度的流程图
图9读数字温度流程图
3.按键设置温度部分
M是记录数的十位,N是记录数的个位;设置端口1即RC0=0;RC1=1,设置端口2即RC0=1;RC1=0;
图10温度设置框图
4.数字PID计算
由于单片机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量,因此式
(1)中的积分和微分项不能直接准确计算,只能用数值计算的方法逼近。
在采样时刻t=iT(T为采样周期)。
式
(1)所示的PID调节规律可通过数值公式
(2)近似计算。
(2)
由式
(2)可以得到:
(3)
由
(2)-(3)可得增量式算法公式:
这个计算的过程可用一个简单的程序来实现。
//=====================================
//函数:
voidPIDinit(void)
//语法:
voidPIDinit(void)
//描述:
PID初始化
//参数:
无
//返回:
无
//=====================================
voidPIDinit(void)
{
stPID.LastError=0;
stPID.PrevError=0;
stPID.SumError=0;
}
//====================================
//函数:
floatPIDCalc(PID*pp,intNextPoint)
//语法:
floatPIDCalc(PID*pp,intNextPoint)
//描述:
PID计算
//参数:
1、PID数值2、采样温度值
//返回:
PID输出值
//====================================
floatPIDCalc(PID*pp,intNextPoint)
{
intdError,
Error;
Error=pp->SetPoint*10-NextPoint;//偏差
pp->SumError+=Error;//积分
dError=pp->LastError-pp->PrevError;//当前微分
pp->PrevError=pp->LastError;
pp->LastError=Error;
return(pp->Proportion*Error//比例项
+pp->Integral*pp->SumError//积分项
+pp->Derivative*dError//微分项
);
}
图11温度控制框图
5.其他功能模块
数据处理、保温、定时计数等其他功能程序都根据程运行时间进行了统筹设计,在此不再进行详述。
四、系统测试与调试
(一)电路测试
电路焊接无误后,先将数字温度传感器放到水里,LED会显示出当前水的温度,再放一支标准温度计与之比较,若几乎相等,则说明电路无误;再设定目标温度,若可以自动加热,使达到目标温度,则说明电路测试无误,实验可以正常进行。
(二)仪器的使用
首先连接好相应的电源线,将温度计和传感器放在水里,此时数码管会显示出当前温度值,用户可以根据需要设定目标温度值,按下加热开关可开始加热。
当温度达到你所想要的温度时,系统会自动断电,接着系统它又会进入保温系统,进行保温。
(三)测试的结果
根据