×
单片机 > 单片机程序设计 > 详情

51单片机+PID算法水温控制系统设计

发布时间:2020-06-05 发布时间:
|

本系统设计采用基于PID算法的单片机控制来实现水温的调控。单片机控制部分采用AT89C51单片机为核心,采用软件编程,实现用PID算法来控制PWM波的产生,继而控制电炉的加热来实现温度控制。通过编程对PID各参数的调整,来达到提高加温速度,减小超调的目的。


设计任务和主要内容


  • 基本要求

一升水在1kw电炉下加热,要求水温在一定范围内可由人工设定,并能在环境温度降低时自动调节,以保证设定的温度基本不变。

  • 主要性能指标

  • 温度设定范围为40~90℃,最小区分度为1℃,标定温度小于等于1℃。

  • 环境温度降低时温度控制的静态误差小于等于1℃。

  • 用十进制数码管显示水的温度。

  • 拓展功能

  • 采用适当的控制方法,当设定的温度突变时,减小系统的调节时间和超调量。

  • 温度控制的静态误差小于等于0.2℃。

  • 在设定温度发生突变时,自动打印水温随时间变化的曲线。

  •                       系统设计原理
     

该水温控制系统主要由AT89S52单片机控制系统、温度采样转换器、温度控制电路。键盘显示电路等四部分组成,总体框图如上。

  • 方案论证与比较

(一)总体方案论证

根据题目的要求,我们提出了以下三种方案:

    方案1:采用传统的二位模拟控制方法,选用模拟电路,用电位器设定给定值,采用上下限比较电路将反馈的温度值与给定的值比较后,决定加热或者不加热。由于采用的模拟控制方式,系统受环境影响较大,不能实现复杂的控制算法使控制精度做得较高,而且不能用于显示和键盘设定。

    方案2:采用单片机AT89S52为核心。采用数字温度传感器DS18B20采集温度变化信号,将其转换成数字信号并通过单片机处理后去控制温度,使其达到稳定。使用单片机具有编程灵活,控制简单的优点,使系统能简单的实现温度的控制及显示,并且通过软件编程能实现各种控制算法使系统还具有控制精度高的特点。

    比较上述两种方案,方案2明显改善了方案1的不足,具有控制简单、控制温度精度高的特点,因此本设计电路采用方案2。


(二)各部分电路方案论证

1、温度采样部分

    方案1:采用热敏电阻,可满足35℃--95℃的测量范围,但热敏电阻精度、重复性和可靠性都比较差,对于检测精度小于1℃的温度信号是不适用的。

    方案2:采用数字温度传感器DS18B20。DS18B20是支持一线总线接口的温度传感器,具有抗干扰性强,体积小,灵活经济的特点。它的测量温度范围为-55℃~+125℃,在-10℃~+85℃范围内,精度为±0.5℃且有9~12位分辨率可调,使用电压为3~5V无需备用电源。此外DS18B20集合了64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器,可以直接实现温度的测量和转换,无需再另接外部电路。

    方案3:采用温度传感器AD590。AD590具有体积小、质量轻、线性度好、性能稳定等优点。其测量范围在-50℃~+150℃,满刻度范围误差为   ±0.3℃,当电源电压在5~10之间,稳定度为1%时误差只有±0.01℃,此外,AD590是温度—电流传感器,对于提高系统抗干扰能力有很大帮助。

     从系统电路设计的复杂度,性价比等方面考虑,决定选用方案2。


2、控制电路部分

方案1:可以用逻辑电路搭建一个控制器,实现PID控制。但系统还要附加显示、温度设定等功能,要附加很多电路,总体的电路设计和制作比较繁琐。

   方案2:采用8031芯片,其内部没有程序存储器,需要进行外部拓展,这给电路增加了复杂度。

   方案3:本方案的CPU模块采用2051芯片,其内部有2KB单元的程序存储器,不需要外部拓展程序存储器,但由于系统用到较多的I/O口,因此此芯片的资源不够用。

   方案4:采用AT89S52单片机,其内部有8KB单元的程序存储器,不需要外部扩展程序存储器,而且其I/O口达32个,完全满足本次设计需要。

   比较这4种方案,综合的考虑单片机各部分资源,本次设计选用方案4。


3、加热方案和功率电路的选择

方案1:加热的装置,根据题目,可以使用电热炉进行加热,控制电炉的功率岂可控制加热速度。水温过高时,一般只能关掉电炉,让其自然冷却。为求更好的控制效果,也可以装置一个小风扇,电炉加热时风扇关闭,水温超高时关闭电炉开启风扇加速散热。

  方案2:可以采用可控硅控制加热器的工作。通过单片机产生PWM信号来控制可控硅的导通和关断,控制加热器的加热时间,从而控制加热器的功率。

   

从加热的响应速度考虑,采用方案2。因为加热的功率较大,故电源采用市电220伏。                                                

设计电路图如图2所示                                          




                                                          DS18B20

                                    

ISP下载口


AT89S52主控电路      MOC3041功率电路            LCD液晶显示


  

PCB图如下:


功率电路

主控电路


  • 硬件电路设计

  本设计总体包括四个部分:主机控制部分、温度采样转换部分、温度控制部分、键盘显示部分。

  • 温度采样转换电路

   系统的温度采样转换由DS18B20集成芯片来实现。电路图如右

  DS18B20性能描述

    测量范围在-55℃~+125℃,在-10℃~+85℃范围内,精度为±0.5℃且有9~12位分辨率可调,使用电压为3~5V,无需备用电源。

DS18B20采用单总线通信技术,通信稳定可靠,且线路简单,容易实现。

其基本的通信过程如下:

主机拉低单总线产生至少480us的Tx复位脉冲;

然后由主机释放总线,进入Rx接收模式,主机释放总线时会产生一个由低电平变为高电平的上升沿;

单总线器件检测到该上升沿后,延时15~60us;  

单总线器件通过拉低总线60~240us来产生应答脉冲;

主机接收到从机的应答信号后,说明有单总线器件在线,然后主机就可以开始对从机进行ROM命令和功能命令操作。


DS18B20直接输出数字量,可直接与单片机进行通信,读取测温数据,电路非常简单。使用它,主要工作量集中在了单片机编程上。

  •      温度控制电路

此部分电路主要由光电耦合器MOC3041和双向可控硅BTA16组成。以脉宽调制输出控制电炉与电源的接通和断开比例,以通断控制调压法控制电炉的输入功率。MOC3041的内部集成了发光二极管、过零检测电路和一个小功率双向可控硅。当单片机PWM输出为1,MOC3041中的发光二极管发光,用于过零检测电路的同步作用,内部的双向可控硅在过零后马上导通,从而使触发双向可控硅BTA16导通,负载中有电流通过,反之当单片机PWM输出为0,双向可控硅截止,负载中没有电流通过。光电耦合的耐压值为400v,它的输出级由过零触发的双向可控硅构成,它控制着主电路双向可控硅的导通和关闭。


3、单片机控制部分

此部分是该系统的核心,系统的控制采用了单片机AT89S52。单片机AT89S52内部有8KB字节的可编程FLASH存储器和256字节的数据存储器。故系统不必外拓存储器,这样大大减少了系统的硬件电路。电路原理图如下:






4、按键及显示部分

系统仅采用五个按键来进行温度的控制。

在显示方面,我们采用了LCD1602的液晶显示模块,通过软件编程,可以实现所需要的显示。此外,液晶模块的使用也比较简单,只要连接数据总线,选通端口和命令/数据端口即可。


  • 软件设计

系统的硬件设计尽量简单,故工作任务主要在程序的设计上。
 

PID算法控制PWM输出:
程图如下

void timer0() interrupt 1 

   { 

uchar flag;

TH0=0xd8 ;                                   有

TL0=0xf0 ;

TR1=1 ;                                 无

P24=1 ;     //启动输出

CJ++;   

if(stemp>Wtemperature)       flag=0

{

ei=stemp-Wtemperature;                    flag=1

E=E+ei;

ex=ej-ei;

ej=ei;

if(ei<6)

{Ui=U0-Kp*(ei+Ti*E-Td*ex);}

else Ui=U0-Kp*ei;

flag=Ui/100;

switch(flag)

{

case 9:{TH1=0xdc;TL1=0xd8;}break;

case 8:{TH1=0xe2;TL1=0xb4;}break;

case 7:{TH1=0xe8;TL1=0x90;}break;

case 6:{TH1=0xec;TL1=0x78;}break;

case 5:{TH1=0xf0;TL1=0x60;}break;

case 4:{TH1=0xf2;TL1=0x54;}break;

case 3:{TH1=0xf4;TL1=0x48;}break;

case 2:{TH1=0xf8;TL1=0x30;}break;

case 1:{TH1=0xfc;TL1=0x18;}break;

case 0:{T


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于arm的指纹识别门禁系统是如何设计的