水温自动控制系统设计_第1页
水温自动控制系统设计_第2页
水温自动控制系统设计_第3页
水温自动控制系统设计_第4页
水温自动控制系统设计_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

年4月19日水温自动控制系统设计文档仅供参考,不当之处,请联系改正。水温自动控制系统设计摘要水温自动控制系统在工业及日常生活中应用广泛,在生产中发挥着重要作用。实现水温控制的方法很多,如单片机控制、PLC控制等等。而其中用单片机控制实现的水温控制系统,具有可靠性高、价格低、简单易实现等多种优点。单片机用于工业控制是近年来发展非常迅速的领域,现在许多自动化的生产车间里,都是靠单片机来实现的。温度是工业控制对象主要被控参数之一,在温度控制中,由于受到温度被控对象特性(如惯性大、滞后大、非线性等)的影响,使得控制性能很难提高,有些工艺过程其温度控制的好坏直接影响着产品的质量,因此设计一种较为理想的温度控制系统是非常有价值的。为了实现高精度的水温测量和控制,本文介绍了一种以Atmel公司的低功耗高性能CMOS8位单片机为核心,以PID算法控制以及PID参数整定相结合的方法来实现的水温控制系统,其硬件电路包括温度采集、温度控制、温度显示、键盘输入以及RS232接口等电路。该系统可实现对温度的测量,并能根据设定值对温度进行调节,实现控温的目的。关键词:AT89S52;温度控制;PT1000;PIDDesignofTemperatureAutomaticControlSystemABSTRACTThetemperatureisoneofthemainlychargedparameterswhichareindustrialcontroltargets.Itisdifficulttoenhancethecontrolperformanceduetothecharacteristicsofthetemperaturechargedobject.Suchasinertia,hysteresisandnon-linear,etc…Itstemperaturecontrolprocesswillhaveadirectimpactonthequalityoftheproductinsometechnologicalprocess.Thereforeitisabsolutevaluabletodesignaidealtemperaturecontrolsystem.Inordertorealizethehighaccuracysurveyandcontrolofwatertemperature.SystematiccoreisAT89S52,whichisalow-powerloss,high-performance8-bitMCUofAtmelCompany.ThesystemunifiesPIDcontrolalgorithmandPIDparametertuningtocontrolthewatertemperature.Itshardwarecircuitalsoincludestemperaturegathering,temperaturecontrolandtemperaturedisplay,keyboardinputandRS232interfaces.Thesystemcanrealizetosurveythewatertemperature,anditcanadjustthetemperatureaccordingtothesettingvalue.Keywords:AT89S52;temperaturecontrol;PT1000;PID目录TOC\h\z\u\t"标题1,1,标题2,1,标题5,1"1引言 11.1课题背景 11.2国内外研究现状 11.3研究方法 12系统方案 22.1水温控制系统设计任务和要求 22.2水温控制系统 22.2.1方案选择 22.2.2温度控制系统算法分析 43系统硬件设计 93.1总体设计框图及说明 93.2外部电路设计 93.2.1温度采集电路 93.2.2温度控制电路 113.3单片机系统电路设计 113.3.1A/D转换电路 113.3.2串口通讯部分电路 143.3.3数码显示电路 164系统软件设计 174.1程序框架结构 174.2程序流程图及部分程序 174.2.1主程序模块 174.2.2系统初始化 194.2.3按键程序 194.2.4A/D采样数据处理 214.2.5PID计算 244.2.6继电器控制 255系统安装调试与测试 275.1串口调试 275.2继电器测试 275.3温度采集与测试 276结论 28参考文献 29致谢 301引言1.1课题背景温度控制是无论是从工业生产过程中,还是在日常生活中都起着至关重要的作用,过低的温度或者过高的温度都会使水资源失去应用的作用,从而造成水资源的巨大浪费。特别是在当前全球水资源极度匮乏的情况下,我们就更应该掌握好对水温的控制,在环境恶劣或温度较高等场合下,为了保证生产过程正常安全地进行,提高产品的质量和数量,及减轻工人的劳动强度、节约能源,要求对加热炉炉温进行测示、显示、控制,使之达到工艺标准,以单片机为核心设计的水温控制系统,能够同时采集多个数据,并将数据经过通讯口送至上位机进行显示和控制。1.2国内外研究现状当前,国外温度控制系统及仪表正朝着高精度智能化、小型化等方面快速发展。温度控制系统在国内各行各业的应用虽然已经十分广泛,但从国内生产的温度控制器来讲,总体发展水平依然不高,同国外的日本、美国、德国等先进国家相比,依然有着较大的差距。当前,中国在这方面总体技术水平处于20世纪80年代中后期水平。成熟产品主要以“点位”控制及常规的PID控制器为主,它只能适应一般温度系统控制,难于控制滞后复杂时变温度系统控制,而且适应于较高控制场合的智能化、自适应控制仪表国内技术还不十分成熟,形成商品化并广泛应用的控制仪表较少。现在,中国在温度等控制仪表业与国外还有着一定的差距。随着嵌入式系统开发技术的快速发展及其在各个领域的广泛应用,人们对电子产品的小型化和智能化要求越来越高,作为高新技术之一的单片机以其体积小、价格低、可靠性高、适用范围大以及本身的指令系统等诸多优势,在各个领域、各个行业都得到了广泛应用。1.3研究方法本文主要介绍单片机温度控制系统的设计过程,其中涉及系统结构设计、元器件的选取和控制算法的选择、程序的调试和系统参数的整定。以AT89S52为CPU,温度信号由Pt1000和电压放大电路提供。电压放大电路用超低温漂移高精度运算放大器OP07将温度-电压信号进行放大,用单片机控制SSR固态继电器的通断时间以控制水温,系统控制对象为1升净水,容器为搪瓷器皿。水温能够在环境温度降低时实现自动控制,以保持设定的温度基本不变,具有较好的快速性与较小的超调。2系统方案2.1水温控制系统设计任务和要求该系统设计任务:设计一个水温自动控制系统,控制对象为1升净水,容器为搪瓷器皿。水温能够在一定范围内由人工设定,并能在环境温度降低时实现自动调整,以保持设定的温度基本不变。系统设计具体要求为:温度设定范围为40~90℃;环境温度降低时温度控制的静态误差≤1℃;采用适当的控制方法,当设定温度突变(由40℃提高到60℃)时,减小系统的调节时间和超调量;用十进制数码管显示水的实际温度。2.2水温控制系统水温控制系统是一个过程控制系统,组成框图如图2-1所示,由控制器、执行器、被控对象及反馈作用的测量变送组成。图2-1控制系统框图除了以上的组成元件以外,还需要选择合适的算法以实现所要求的控制精度,以下我会对关键的元件以及电路的确定进行详细的分析。因为方案选取的好坏将直接影响着整个系统实现效果的优劣。2.2.1方案选择方案一:采用8031作为控制器,使用最为普遍的器件ADC0804作模数转换,控制上使用对电阻丝加电使其升温和开动风扇使其降温。此方案简易可行,器件的价格便宜,但8031内部没有程序存储器,需要扩展,增加了电路的复杂性。方案二:此方案采用89S52单片机实现,此单片机软件编程自由度大,可用编程实现各种控制算法和逻辑控制。控制电路部分采用SSR固态继电器控制电炉丝的通断此方案电路简单而且能够满足题目中的各项要求的精度。将两个方案相比较后可得出一个结论,采用Atmel单片机来实现本题目,无论是从结构上,还是从工作量上都有很大的优势,因此我最后选择使用AT89S52作为该控制系统的核心。根据水的温度变化慢,而且控制精度不易掌握的特点,我们设计了以AT89S52单片机为检测控制中心的水箱温度自动控制系统,总体框图如图2-2所示。图2-2控制器设计总体框图温度控制采用改进的PID数字控制算法,数码显示采用3位LED静态显示。该设计结构简单,控制算法新颖,控制精度高,有较强的通用性。图2-3为整个水温控制系统的原理图,分别由测温电路,继电器控制电路,串口通讯电路,LED显示电路等部分组成。图2-3水温控制电路原理图2.2.2温度控制系统算法分析系统算法控制采用工业上常见的位置型PID数字控制,而且结合特定的系统加以算法的改进,形成了变速积分PID—积分分离PID控制相结合的自动识别的控制算法。该方法不但大大减小了超调量,且有效地克服了积分饱和的影响,使控制精度大为提高。长期以来国内外科技工作者对温度控制器进行了广泛深入的研究,研究了大批温度控制器,如性能成熟应用广泛的PID调节器、智能控制PID调节器、自适应控制等。此处主要对一些控制器特性进行分析以便选择适合的控制方法应用于改造。常见的控制算法有以下几种:1.经典的比例积分微分控制算法;2.根据动态系统的优化理论得到的自适应控制和最优控制方法;3.根据模糊集合理论得到模糊控制算法。自适应控制、最优控制方法以及模糊控制算法是建立在精确的数学模型基础上的,在实时过程控制中,由于控制对象的精确数学模型难于建立,系统参数经常发生变化,运用控制理论进行综合分析要花很大代价。同时由于所得到的数学模型过于复杂难于实现。在实时控制系统中要求信号的控制信号的给出要及时,因此在当前的过程控制系统中较少采用自适应控制、最优控制方法和模糊控制算法。当前在过程控制中应用较多的还是PI控制算法、PD控制算法和PID控制算法。水温控制系统的控制对象具有热储存能力大,惯性较大的特点,水在容器内的流动或热量传递都存在一定的阻力,因此能够归于具有纯滞后的一阶惯性环节。对于大惯性系统的过渡过程控制,一般可采用以下几种控制方案:1.开关量控制这种方法经过比较给定值与被控参数的偏差来控制输出的状态,开通或关断,因此控制过程十分简单,也容易实现;但由于输出控制量只有两种状态,使被控参数在两个方向上变化的速率均为最大,因此容易引起反馈回路振荡,控制精度不高;这种控制方案一般在大惯性系统对控制精度和动态特性要求不高的情况下采用。如图2-4所示。tytyty图2-4开关量控制2.比例控制(P控制)比例控制的输出与偏差成比例关系,当负荷变化时,抗干扰能力强,过渡过程时间短,但过程终了存在余差;适用于控制通道滞后较小、负荷变化不大、允许被控量在一定范围内变化的系统。如图2-3所示。3.比例积分控制(PI控制)控制器的输出与偏差的积分成比例,积分的作用使过渡过程结束时无余差,但降低了系统的稳定性;PI控制适用于滞后较小,负荷变化不大,被控量不允许有余差的控制系统。如图2-4所示。4.比例积分加微分控制(PID控制)微分的作用使控制器的输出与偏差变化的速度成比例,它对克服对象的容量滞后有显著的效果;在比例基础上加入微分作用,使稳定性提高,再加上积分作用,能够消除余差;PID控制适用于负荷变化大、容量滞后较大、控制品质要求又很高的控制系统。如图2-5所示。tytyty图2-5PID控制结合本设计任务与要求,由于水温系统的传递函数事先难以精确获得,因而很难判断哪一种控制方法能够满足系统对控制品质的要求;但从以上对控制方法的分析来看,PID控制方法最适合本例采用:一方面,由于能够采用单片机实现控制过程,无论哪一种控制方法都不会增加系统硬件成本,而只需对软件作相应改变即可实现不同的控制方案;另一方面,采用PID的控制方式能够最大限度地满足系统对诸如控制精度、调节时间和超调量等控制品质的要求。由图2-6可知PID调节器是一种线性调节器,这种调节器是将设定值w与实际输出值y进行比较构成偏差(2-1)并将其比例、积分、微分经过线性组合构成控制量。其动态方程为:(2-2)其中为调节器的比例放大系数为积分时间常数为微分时间常数PID调节器的离散化表示式为;(2-3)其增量表示形式为:(2-4)其中T为采样周期。图2-6模拟PID控制温度PID调节器有三个可设定参数,即比例放大系数、积分时间常数、微分时间常数。比例调节的作用是使调节过程趋于稳定,但会产生稳态误差;积分作用可消除被调量的稳态误差,但可能会使系统振荡甚至使系统不稳定;微分作用能有效的减小动态偏差。图2-7中,初始水温为26℃。实现思想:Ui(k)为第k次采样温度值,Ur为设定值。e(k)≥ε使用PD算法;e(k)<ε使用变速积分PID算法。图2-7温度控制曲线图该控制系统是把输出量检测出来,经过物理量的转换,再反馈到输入端去与给定量进行比较(综合),并利用控制器形成的控制信号经过执行机构SSR对控制对象进行控制,抑制内部或外部扰动对输出量的影响,减小输出量的误差,达到控制目的。自动控制框图如图2-8所示,在此控制系统中单片机就相当于常规控制系统中的运算器控制器,它对过程变量的实测值和设定位之间的误差信号进行运算然后给出控制信息。单片机的运算规则称为控制法则或控制算法。图2-8自动控制框图3系统硬件设计3.1总体设计框图及说明本系统是一个简单的单回路控制系统。为了实现温度的自动测量和控制,根据系统总体方案,系统由单片机基本系统、前向通道、后向通道和人机对话通道等4个主要功能模块组成。单片机是整个控制系统的核心,AT89S52能够提供系统控制所需的I/O口、中断、定时及存放中间结果的RAM电路;前向通道是信息采集的通道,主要由传感器、信号放大、A/D转换等电路组成;由于水温变化是一个相对缓慢的过程,因此前向通道中没有使用采样保持电路;信号的滤波可由软件实现,并能够简化硬件、降低硬件成本。键盘设定:用于温度设定,共三个按键。数据采样:将由传感器及相关电路采集到的温度转为电压信号,经A/D转换后,送入AT89S52相应接口中,换算成温度值,用于控制和显示。数据显示:采用了共阴极数码管LED进行显示设置温度与测量温度。串行口传输:将采样温度值,上传至PC机,可利用PC机的端口下载程序。继电器/热电管:经过三极管控制继电器的开关来完成对热电炉的功率控制。图3-1系统框图3.2外部电路设计3.2.1温度采集电路本系统运放采用高精度单片运算放大器OP07,此运放具有很低的输入失调电压和漂移。OP07的优良特性使它特别适合作前级放大器,放大微弱信号。使用OP07一般不用考虑调零和频率问题就能够满足要求。主要特点:低输入失调电压:75uV(最大)低失调电压温漂:1.3uV/℃(最大)低失调电压时漂:1.5uV/月(最大)低噪声:0.6uVP-P(最大)宽输入电压范围:±14V宽电源电压范围:3V~18V温度采集采用的温度传感器铂电阻Pt1000,对于温度的精密测量而言,温度测量部分是整个系统设计的第一步。温度传感器的选择是这块电路的关键,它是直接影响整个系统的性能与效果的关键因素。这里采用的是精密级铂电阻温度传感器Pt1000,它的金属铂含量达99.9999%,因为铂电阻的物理和化学性能在高温和氧化介质中都很稳定、价格又便宜,常作为工业测量元件,以铂电阻温度计作基准器线性好,温度系数分散性小,在0~100摄氏度时,最大非线性偏差小于0.5摄氏度,性能稳定,广泛应用于精密温度测量和标定。铂热电阻与温度关系式:(3-1)其中:--温度为t摄氏度时的电阻;--温度为0摄氏度时的电阻;A、B--温度系数A=3.94*102/℃;其中B=-/℃;T--任意温度。图3-2测温电路3.2.2温度控制电路此部分时经过控制继电器的通断从而控制电加热管(俗称“热得快”),采用对加在电热管两端的电压进行通断的方式进行控制,以实现对水加热功率的调整,从而达到对水温控制的目的,即在闭环控制系统中对被控对象进行控制。此部分的继电器采用的是SSR继电器,即固态继电器。其工作原理为:固态继电器是一种无触点电子开关,主要由输入(控制)电路,驱动电路和输出(负载)电路三部分组成。固态继电器的输入电路是为输入控制信号提供一个回路,使之成为固态继电器的触发信号源。固态继电器的输入电路多数为直流输入,个别的为交流输入。固态继电器的输出电路是在触发信号的控制下,实现对固态继电器的通断切换。输出电路主要由输出器件(芯片)和起瞬态抑制作用的吸收回路组成,固态继电器是一种全电子电路组合元件,它依靠半导体器件和电子元件的电、磁和光特性来完成隔离和继电切换功能。固态继电器与传统的电磁继电器相比,是一种没有机械、不含运动零部件的继电器,但具有与电磁继电器本质上相同的功能。图3-3加热棒控制电路3.3单片机系统电路设计3.3.1A/D转换电路ADC0804引脚及使用说明:ADC0804是CMOS集成工艺制成的逐次比较型A/D转换器芯片。ADC0804分辨率为8位,转换时间为100μs,输出电压范围为0~5V,在增加某些外部电路后,输入模拟电压可为±5V。该芯片内有输出数据锁存器,当与计算机连接时,转换电路的输出能够直接连接到CPU的数据总线上,而不再需要附加逻辑接口电路。图3-4ADC0804引脚图图3-5ADC0804控制信号的时序图ADC0804引脚名称及意义如下:VIN+、VIN-:ADC0804的两模拟信号输入端,用以接收单极性、双极性和差模输入信号。D7~D0:A/D转换器数据输出端,该输出端具有三态特性,能与微机总线相连接。AGND:模拟信号地。DGND:数字信号地。CLKIN:外电路提供时钟脉冲输入端。CLKR:内部时钟发生器外接电阻端,与CLKIN端配合,可由芯片自身产生时钟脉冲,其频率为1/1.1RC。CS:片选信号输入端,低电平有效,一旦CS有效,就表明A/D转换器被选中,可启动工作。WR:写信号输入,接受微机系统或其它数字系统控制芯片的启动输入端,低电平有效,当CS、WR同时为低电平时,启动转换。RD:读信号输入,低电平有效,当CS、RD同为低电平时,可读取转换输出数据。INTR:转换结束输出信号,低电平有效。输出低电平表示本次转换已经完成。该信号经常作为向微机系统发出的中断请求信号。在使用时我们应注意以下几点:(1)转换时序ADC0804控制信号的时序图如图3-5所示,由图所示,各控制信号时序关系为:当CS与WR同为低电平时,A/D转换器启动,且在WR上升沿后100μS模数转换完成,转换结果存入数据锁存器,同时INTR自动变为低电平,表示本次转换结束。如果CS、RD同时为低电平,则数据锁存器三态门打开,数据信号送出,而RD高电平到来后三态门处于高阻状态。(2)参考电压的调节在使用A/D转换器时,为保证转换精度,要求输入电压满量程使用。如输入电压动态范围较小,则可调节参考电压VREF,以确保小信号输入时ADC0804芯片8位的转换精度。(3)接地模数、数模转换电路中要特别注意到地线的正确连接,否则将会产生干扰,以致影响转换结果准确性。A/D、D/A及取样-保持芯片上都提供了独立的模拟地(AGND)和数字地(DGND)。在线路设计中,一定要将所有器件的模拟地和数字地分别进行相连,然后将模拟地与数字地仅在一点上相连接。地线的正确连接方法如图3-6所示。图3-6正确的地线连接系统由微处理器、存储器和A/D转换器组成,它们之间经过数据总线(DBUS)和控制总线(CBUS)连接,系统信号采用总线传送方式。采集数据时,首先微处理器执行一条传送指令,在指令执行过程中,微处理器在控制总线的同时产生CS1、WR1低电平信号,A/D转换器启动开始工作,ADC0804经100μS后将输入模拟信号转换为数字信号并存于输出锁存器,在INTR端产生低电平表示转换结束,并通知微处理器可来取数。当微处理器经过总线查询到INTR为低电平时,立即执行输入指令,以产生CS、RD2低电平信号到ADC0804相应引脚,将数据取出并存入存储器中。整个数据采集过程中,微处理器有序地将执行若干指令完成。AD0804的连接图如图3-7所示图3-7AD0804连接图3.3.2串口通讯部分电路系统设计要求控制系统能同PC联机通信,以利用PC图形处理能力打印显示温度曲线以及下载程序。由于AT89S52串行口电平和PC不一致,AT89S52的I/O为TTL电平,PC串行口为RS232电平利用单片机片内串行口外加逻辑电平转换电路组成RS-232C标准接口以实现系统相互通道的扩展,逻辑电平转换电路采用了一片专用芯片MAX232,外加少量电容即可完成TTL到RS-232或RS-232到TTL的逻辑电平转换。表3-1RS-232C引脚型号定义名称信号方功能25芯脚9芯脚FRD保护地1TXD输出发送数据23RXD输入接收数据32RTS输出请求对方发送数据47CTS输入可向对方发送数据58DSR输入对方已经准备好接收数据66GND信号地75DCD输入对方已收到载波81DTR输出通知对方,本方能够接受数据204RJ输出对方送来的振铃指示信号229图3-8串口通讯电路UART模块提供了一个全双工标准通信口,用于完成AT89S52与外设之间的串行通信。根据RS-232的标准,AT89S52单片机是按照字节传输数据的。图3-9单片机连接电路单片机上的P25口接S1,P26口接S2,P27口接S3。S1:设置温度的十位数:0—9S2:设置温度的个位数:0—9S3:工作模式选择键,两种工作模式为:正常工作状态、温度重新设置。系统上电后,数码管全部显示为零,根据按S1次数,十位的数码管顺序增加。同样S2,也如此。按S3后,系统开始测温,并与采集的温度进行比较,经过软件来控制电炉的开关。3.3.3数码显示电路数码管作为单片机系统中最常见的输出器件,在显示时能够由数字和少量字母组合完成输出功能的系统中应用十分方便。图3-10为一个四位共阴数码管,DIG0、DIG1、DIG2、DIG3分别与单片机的P21、P22、P23、P24相连,每一个都拥有一个共阴级的位选端。从而能够经过单片机选通所需显示的数码管。SegA--SegDp口传输要显示的数据,利用其串/并转换功能,送入数码管显示。在另外接了一个10K的电阻来保护LED。图3-10数码管显示电路4系统软件设计4.1程序框架结构整体的系统软件设计是由各个在系统里起着不同作用的模块整合在一起,从而实现系统所要实现的功能。本系统硬件接口如下:P1--AD;P00~P07--LEDa~LEDdp.;P25~P27--S1~S3;P20~P23--COM1~COM3;系统包括主控制程序,A/D采样数据处理程序,PID算法程序,LED显示及按键处理程序。结构框架图如图4-1所示。图4-1程序结构图主程序模块负责对子程序模块的调用进行管理,它主要负责初始化IO口;等待键盘的被按下,并调用相应的模块进行处理;在适当的时候接受A/D采样的数据,并与所设定的值进行比较,然后经过调用PID算法处理数据,处理后而控制继电器的通断,从而控制热电管达到水温控制的目的。4.2程序流程图及部分程序4.2.1主程序模块由于模块化程序的设计,经过调用程序即可实现所用功能,主程序流程图如图4-2所示。图4-2主程序流程图主程序如下:intmain(void){intKeyValue;status=temperature_set;System_Initial(); PID_Initial(); //PID初始化 while(1){ KeyValue=GetCh(); //键盘扫描、去抖动处理、取键值 key_value_process(KeyValue); //键值处理 if(status=temperature_control) display_AD_temperature();//测量温度显示、PID计算 if(Out<=0)turn_off_timer();}}由以上程序我们能够看出,调用程序前首要先对系统进行初始化。然后对按键进行扫描,对按键事件做出相应的反应。接下来看是否采集到温度数据,如果有就进行A/D采样及PID处理数据,最后所得结果与设定值比较从而控制继电器通断。4.2.2系统初始化系统初始化包括A/D口初始化、按键初始化等。端口的初始化就是对端口相应位进行设置。这些初始化程序都嵌入在各个子程序里面,在下面介绍的各个子程序里会有所标注。A/D口初始化程序:voidSystem_Initial(void){ CS=1; WR=1; RD=1;}4.2.3按键程序(1)按键扫描:由于机械触点富有弹性,在按下或弹起时会出现弹跳抖动过程,从而从最初按下到接触稳定要经过数毫秒的弹跳时间,实际效果仿佛是重复按了几下,这一情况肉眼是不易看清的,可是计算机却能识别,于是出错的信号将导致完全错误、甚至更为严重的后果,如图4-3所描述的。因此为了保证探险键识别的准确性,必须消除抖动。消抖处理有硬件和软件两种方法:硬件消抖是利用加抖动电路滤避免产生抖动信号;软件消抖是利用数字滤波技术来消除抖动。我们采用的是软件消抖,利用主程序循环扫描,主程序每循环一次扫描到的键值相同时,则说明是某键按下。图4-3按键扫描键按下的过程sbitS1=P2^5;sbitS2=P2^6;sbitS3=P2^7;unsignedGetCh(void){unsignedchars=0,k=0;if(!S1)s=1;\\对于不同按键按下赋予不同的数值,以供后if(!S2)s=2;面程序判断if(!S3)s=3;k=s;if(s){while(s){delay(1000);s=0;if(!S1)s=1;if(!S2)s=2;if(!S3)s=3;}}returnk;}(2)键值处理:图4-4A/D转换流程图4.2.4A/D采样数据处理当采样到温度数据时,为了防止采样过程中外界干扰而造成采样数据的不准确,必须调用温度均值处理程序,然后确定温度系数使采样转换得到的电压信号转换成温度值,并进行十进制转换,用于显示和PID计算。其中均值处理是一个较为重要的环节,是A/D转换前必不可少的工具,流程图如图4-4所示,以下是子程序。voidAD(void){ CS=0; nop(); \\空操作 WR1=0; Delay(100); WR1=1; nop(); CS=1; while(!INTR);nop(); CS=0; nop(); RD1=0; nop(); dat=P2; RD1=1; nop(); CS=1;ch=dat;\\ch是全局变量}intadc_data; if(G_ADC_flag){//判断是否有温度采样1,有0,无 G_ADC_flag=0; adc_data=adc_data_cmp(); adc_data/=SET_ADC_TIME;//计算温度平均值 if(adc_data>0x0255)K=0.079;//确定温度系数 elseK=0.076; fT=adc_data*K;//换算成温度值//将温度值转换成十进制用于LED显示guiLED_Value[0]=(int)fT/10;guiLED_Value[1]=(int)fT%10;guiLED_Value[2]=(int)(fT*10)%10;stPID.Proportion=1;//设置PID比例值stPID.Integral=0.5;//设置PID积分值stPID.Derivative=0.0;//设置PID微分值Out=100*PIDCalc(&stPID,(int)(fT*10));//PID计算}}图4-5是数据采样中断服务程序的流程图,此中断程序采用的是2Hz中断定时0.5秒钟采样一次。图4-5数据采样的中断程序流程图intadc_data_cmp(){intmax;intmin;intSum;inti;max=ADC_DataSave[0];for(i=0;i<10;i++){ if(ADC_DataSave[i]>max) max=ADC_DataSave[i];//取出最大值}min=ADC_DataSave[i];for(i=0;i<10;i++){ if(ADC_DataSave[i]<min) min=ADC_DataSave[i];//取出最小值}for(i=0;i<10;i++)Sum+=ADC_DataSave[i];//计算累计值Sum=Sum-max-min;//排除最大最小值return(Sum);}4.2.5PID计算由于单片机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量,因此式2-1中的积分和微分项不能直接准确计算,只能用数值计算的方法逼近。在采样时刻t=iT(T为采样周期)。式2-1所示的PID调节规律可经过数值公式4-1近似计算。(4-1)由式4-1能够得到:(4-2)由式4-1,式4-2可得增量式算法公式:(4-3)这个计算的过程可用一个简单的程序来实现。voidPID_Initial(void){ stPID.LastError=0; stPID.PrevError=0; stPID.SumError=0;}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//微分项);}4.2.6继电器控制继电器是和AT89S52单片机的P25口相连,它的开断完全取决于P25口的输出,即PID计算的结果。当输出小于零说明设定值小于实际输出值,这就是要关闭电炉,同时关闭定时器的计时。当输出值大于设定值2摄氏度时,我们就能够开电炉对水开始加热。如果设定值与实际输出值差值在2摄氏度以内时,我们就调用中断程序定时加热。图4-6是控制程序的中断服务程序,用来对继电器定时加热。它利用中断定时器10ms确定加热时间,当加热时间未到时,继续时间累积,若加热时间到时,就调用关定时器子程序,从而停止计时。图4-6控制程序中断程序流程图voidactive(){ if(Out<=0){ turn_off_relay()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论