历史上的今天
返回首页

历史上的今天

今天是:2024年11月28日(星期四)

正在发生

2019年11月28日 | 51单片机+PID算法水温控制系统设计

2019-11-28 来源:51hei

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


设计任务和主要内容


  • 基本要求

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

  • 主要性能指标

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

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

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

  • 拓展功能

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

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

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

  •                       系统设计原理
    0.png?imageView2/2/w/550 

该水温控制系统主要由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的液晶显示模块,通过软件编程,可以实现所需要的显示。此外,液晶模块的使用也比较简单,只要连接数据总线,选通端口和命令/数据端口即可。


  • 软件设计

系统的硬件设计尽量简单,故工作任务主要在程序的设计上。
0.png?imageView2/2/w/550 

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:{TH1=0xfd;TL1=0xa8;}break;

default:{TH1=0xff;TL1=0xfa;}break; 

          } 

         }

else {TH1=0xff;TL1=0xfa;}

}   


程序用T0和T1的嵌套来实现PWM波,T0控制波的频率,T1控制占空比,其效果图如下:


0.png?imageView2/2/w/550 


PID控制器:

PID控制器采用单片机软件实现。输出PWM控制信号,定时器采用T0,T1的嵌套,T0定时是10MS,T1控制低电平的输出。由于加热器属于带滞后的一阶对象,故式中Kp,Ki,Kd的选择取决于加热器的阶跃响应特性和实际经验,为了实现PID参数的实时整定,各温度区间由实验测取最佳的Kp,Ki,Kd值。


  • 测试结果及分析

1、动态温控测量         

测量方式:接上系统的加热装置,装入1L室温的水,设定温控温度。记录调节时间、超调温度、稳态温度波动幅度等。

测量条件:环境温度18℃,加热器功率1000W。

                 测量结果数据

设定温度/℃

     40

     50

     65

     80

超调温度/℃

     1.1

     0.8

     0.2

     0.3

稳态误差/℃

     0.6

     0.4

     0.6

     0.6

调节时间/min

     3.37

     5.85

     10.05

     15.22

2、结果分析

由以上测量结果可见,系统性能基本达到了所要求的指标。

在温控指标中,影响系统性能的因素很多,最关键的是加热器本身的物理

性质及控制算法。传感器必须加上防水设施,故温度传感难免迟滞,加热器的加热本身有延迟,水对流传热也会造成测温的延迟,这些都会直接影响系统的控制性能。控制算法方面,需反复实验比较,在上升时间和超调量之间做权衡,选出综合效果最好的PID系数。

  • 设计总结

  • 设计中遇到的问题及其解决方法

因为是直接接入220V的市电,当电路一通电,板面温度突然升高,以致烧坏电路板。于是之后我们在电路中加上了散热片。

温度传感器DS18B20不能直接浸在水中测温度,故我们将其固定在一导热性相对好的金属筒内,再没入水中测量。

功率电路的输出端原本应该加上一个电容来矫正零相位,然而当硬件电路都装好后,进行调试,发现加热器一直工作,没有办法实现温度的控制,检查发现是电容的问题。当加上电容时,在交流电的作用下,电路直接导通,根本不需要外加控制,故我们去掉了该电容,加热器这才受控。

  • 设计总结

     本系统设计是以AT89S51单片机为核心,采用软件编程,运用PID算法来控制PWM波的产生,继而控制加热器的加热时间来实现温度的控制。在软硬件的调试过程中,出现了不少问题,如电路板发烫,程序不起作用,加热速度较慢等,但是在老师和同学的指导和帮助下,通过电路检查,程序修改等工作,问题基本上都得到了解决。在这一次设计过程中,我们了解了很多专业知识,动手能力也得到了提高。然而,系统还存在着一些问题,如水温达到稳定的时间。

单片机源程序如下:

/***************************************************************

项目名称:水温控制系统设计;

功    能:通过STC89C52单片机控制可控硅驱动加过零检测电路作为

          功率控制电路来控制加热过程,通过键盘扫描来设定水温,

          DS18B20实时测量水的温度,将实际水温与设定水温比较

          通过PID控制算法调节,是实际水温与设定水温接近。从而

          达到控制水温的目的。

***************************************************************/

#include

#include

#define uchar unsigned char 

#define uint unsigned int

sbit s1=P2^0;

sbit s2=P2^1;

sbit s3=P2^2;

sbit s4=P2^3;

sbit s5=P2^4;

sbit ds=P2^5;

sbit beep=P2^6;

sbit rd=P1^0;

sbit rs=P1^1;

sbit wr=P1^2;

sbit lcden=P1^3;

sbit PWM=P1^6;

sbit led1=P1^4;

sbit led2=P1^5;

uchar set_temp,keytemp;

uint temp;

uchar c;

bit flag,flag1,flag2;

float f_temp,t;

int timecount,z;

float KP,KI,KD;

float e1,e2,e3;

float uk,duk;

uchar HighL,HighH,PWMH;

float k;

uchar code table[]={"设定温度:"};

uchar code table1[]={"实测温度:"};

uchar code table2[]={"加热"};

uchar code table3[]={"保温"};

uchar code table4[]={"作者:0903锋仔@"};

uchar code table5[]={"系统初始化"};

uchar code table6[]={"measured Temperature"};

uchar code table7[]={"水温控制系统设计"};

uchar code table8[]={"    "};

void delay(uint z)//延时函数,延时5ms

{

        uint x,y;

        for(x=z;x>0;x--)

                for(y=110;y>0;y--);

}

/***************************************

                键盘扫描函数

通过S5,S4,S3,S2,S1键来分别实现温度设定值的

粗加,粗减,精加,精减,和确定功能。

***************************************/

void keyscan()

{

        if(set_temp>=100)//将设定温度限定在0-100度之间

                set_temp=100;

        if(set_temp<=0)

                set_temp=0;

        if(s5==0)//此键按下设定温度加5

        {

                delay(10);

                if(s5==0)

                {

                        flag1=0;

                        set_temp+=5;

                        if(set_temp>=100)

                        {

                                set_temp=100;

                                beep=0;

                                delay(1000);

                                beep=1;

                        }

                }while(s5==0);

推荐阅读

史海拾趣

Anderson Electronics Inc公司的发展小趣事

在取得一系列辉煌成就的同时,Anderson Electronics Inc公司始终关注可持续发展和环境保护。公司积极推行绿色生产理念,采用环保材料和节能技术,努力降低生产过程中的能耗和排放。同时,公司还关注社会责任和公益事业,积极参与社会公益活动,回馈社会。展望未来,公司将继续坚持创新驱动、质量为本的发展理念,不断推动技术创新和产业升级,为电子行业的发展贡献更多的力量。


请注意,以上内容仅为一个通用的框架,具体的故事内容需要根据Anderson Electronics Inc公司的实际情况进行创作。在撰写时,您可以结合公司的历史背景、发展历程、技术创新、市场拓展、国际合作、产业升级等方面的信息进行详细描述,以展现公司在电子行业中的发展历程和成就。

Directed Energy Inc公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。Directed Energy Inc深知这一点,因此始终将品质保障作为公司的核心竞争力之一。公司建立了严格的质量管理体系,从原材料采购到生产制造、再到产品检验和售后服务,每一个环节都严格把控,确保产品的高品质。这种对品质的执着追求赢得了客户的广泛信赖和好评,为公司赢得了更多的市场份额。

ETC1公司的发展小趣事

金溢科技是国内ETC行业的领军企业之一。公司自创立之初,就致力于ETC技术的研发与应用。通过不断的技术创新,金溢科技成功推出了多款具有自主知识产权的ETC设备,并在市场中获得了广泛应用。同时,公司还积极参与国家标准的制定和修订工作,推动ETC行业的规范化发展。金溢科技凭借其在ETC领域的卓越表现,逐渐成为了行业的标杆企业。

Ampex Data Systems Group公司的发展小趣事

万集科技是ETC行业中另一家知名的企业。公司专注于ETC设备的研发、生产和销售,以及ETC系统的集成与服务。在市场拓展方面,万集科技采取了多元化的策略,不仅与国内众多高速公路管理机构建立了合作关系,还积极开拓海外市场。通过不断的市场拓展和品牌建设,万集科技逐渐成为了ETC行业中的佼佼者。

南晶电子(DGNJDZ)公司的发展小趣事

在发展过程中,南晶电子始终秉持合作共赢的理念。公司与上下游企业建立了紧密的合作关系,共同推动产业链的发展。同时,南晶电子还积极参与社会公益事业,为社会进步和发展贡献自己的力量。通过与各方的共同努力,南晶电子在电子行业树立了良好的企业形象和口碑。

Crouzet公司的发展小趣事

随着市场竞争的加剧,Crouzet开始注重提供定制化的解决方案,以满足客户不断变化的需求。公司凭借强大的研发能力和丰富的行业经验,能够根据客户的具体需求,提供量身定制的产品和服务。这种以客户需求为导向的经营理念,使得Crouzet在市场上赢得了更多的客户和合作伙伴。

问答坊 | AI 解惑

protel模拟电路仿真详解.

protel模拟电路仿真详解. 文件大小: 441 K 软件等级: ★★★ 软件类别: 国产软件…

查看全部问答>

SPWM与SVPWM的比较

SPWM与SVPWM的比较作者:power   来源:网络   点击: 699    日期:2007-09-04    SPWM与SVPWM的比较                  SPWM原理  ...…

查看全部问答>

请教一下关于用PB定制wince的问题

我用PB定制了wince后,在最后编译的时候提示:first-chance exception  in gwes.exe (0xc0000005:access violation) 就是不能出来wince界面,只出来一个黑框,没有我的电脑,回收站等 请问这是什么原因呢?…

查看全部问答>

用什么工具开发wm5.0的应用程序?

vs? 可以用什么语言?  用什么语言比较好?  谢谢…

查看全部问答>

问个硬件方面问题!

请问大家一个问题,自认为在eeworld是高手如林的地方! 865GV双通道(注意是865GV双通道)主板能用一条好的DDR内存带一条坏的DDR内存点亮主板,其它大部分主板都不行!请大家解析一下这其中的原因! 现在想求一个有865GV同样功能的上DDR2内存的主 ...…

查看全部问答>

单片机读取usb鼠标数据,并显示坐标

我想用单片机读取鼠标的数据,哪位大侠做过,程序能不接我看看啊。谢谢了。…

查看全部问答>

250元求一套TI 8962开发套件

新手上路求一套 LM3S8962开发套件,套件闲置,有意割爱的朋友请联系我。邮箱:jacmore@163.com 谢谢…

查看全部问答>

请教在V3.41中定义变量的问题

出问题的代码如下: #pragma memory = dataseg(DATA16_N) float fa; ... 我的本意是想把变量定义在非易失RAM中(0x200~5ff),在编译后,从第二句开始就提示如下警告信息: Warning[Be008]: a #pragma dataseg is active but is not applica××e to ...…

查看全部问答>