基于51单片机的自动恒温控制电路的设计
2015-07-27曾丽丽李瑞盈朱齐媛岭南师范学院信息科学与技术学院广东湛江524048
曾丽丽,李瑞盈,朱齐媛(岭南师范学院信息科学与技术学院,广东湛江524048)
基于51单片机的自动恒温控制电路的设计
曾丽丽,李瑞盈,朱齐媛*
(岭南师范学院信息科学与技术学院,广东湛江524048)
本文以ATMEL公司的AT89C51为控制核心,采用数字温度传感器DS18B20采集水温数据,通过继电器控制加热,使水温达到50℃到70℃的设定温度范围内,从而实现自动恒温控制。本设计在很大程度上可以实现对温度的控制,同时也提高了单片机的开发能力,具有一定的实用性。
51单片机;温度传感器;恒温控制
0 引言
在国外,关于恒温控制的课题研究起步较早,世界上各国在技术上发展很快,一些国家已经在实现自动化的基础上向着完全自动化、无人化方向发展。而我国关于恒温控制的课题研究起步较晚,目前在恒温控制技术这方面的总体技术处于20世纪80年代中后期水平,成熟产品主要以“点位”控制为主。由于这些温度控制系统都具有非线性时变、响应速度慢、时滞和的动态特性,能适应一般温度系统的控制,难以准确地实现良好的控制性能[1]。本文介绍了一种自动恒温控制系统,利用单片机AT89C51再结合PID控制调节实现水温的智能控制,采用DS18B20读出温度,对水温进行调节处理,使温度可以保持在设定的范围内,并在此基础上并通过液晶显示屏实现当前温度的实时显示。
1 硬件设计
本系统以AT89C51单片机为核心,加上电源电路、温度采集电路、温度设定及显示电路、保护电路等部分组成。系统硬件结构框图如图1所示。
1.1单片机系统
单片机是整个控制系统的核心,是整个控制系统的中枢神经。在选择单片机时,主要考虑到单片机的处理速度、数据储存能力、价格以及通信方式,采用ATMEL公司的AT89C51单片机作为系统控制器。该单片机具有算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且其功耗低、体积小、成本低等优点,有效水温采集和实时显示以及加热装置进行控制[2]。
1.2温度采集模块
温度采集模块采集实时水温,当水温低于设定温度值则加热装置自动启动,相反,当水温高于设定温度值则加热装置自动关闭。本文采用DS18B20作为温度采集模块芯片。DSl8B20是DALLAS公司生产的单线数字温度传感器芯片,一种具有精度更高、适用电压更宽、采用单总线、可组网等优点,在实际应用中可以将模拟信号转换为串行数字信号,以供单片机处理。它的供电范围为+3.0V~+5.5V,测温范围为-55~+125℃,温度检测精度可精确到0.0625℃,采用12位数字读写方式[3]。
本文拟设计的温度控制系统水温变动范围为50~70℃,水温测控精度为1℃,使用DS18B20可以很好的满足该电路。DSl8B20内部功能模块如图2所示,主要由4部分组成:64位光刻ROM、温度传感器、非易失性的温度报警触发器TH和TI、配置寄存器[4]。
1.3温度显示电路
本系统拟采用LCD12864液晶显示屏作为温度显示的元件。128X64是一种图形点阵液晶显示其,主要由驱动器/列驱动器及128x64全点阵液晶显示器组成,可完成图形显示,也可显示8x4个(16x16)汉字[5]。并且具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块。模块显示采用了分屏显示的方式进行,分为左半屏和右半屏,它是通过口线CS1和CS2进行控制的,高电平有效[6]。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。低电压低功耗是其又一显著特点。
1.4加热电路
系统根据温度采集电路,将检测到的当前温度值与下限温度50℃进行比较,判断是否需要起动加热电路。根据系统要求,当水温低于下限温度值50℃时加热;当水温大于上限温度值70℃时,保持当前温度。在正常条件下,使用光耦继电器可以很容易实现地通过较高的电压和电流,工作十分可靠[7]。本系统决定采用继电器控制加热电路,如图3所示。
1.5报警电路
本系统利用有源蜂鸣器进行报警输出,采用直流供电。当单片机长期检测不到温度或检测的温度长期达不到预定的温度限值或与预定的温度限值相差太大,均亮报警指示灯。
2 软件设计
2.1软件主程序的设计
主程序主要用来实现对单片机和加热控制系统各部件的初始化,以及实现各功能子程序的调用,协调各个功能模块,采用循环查询的方法来实现对温度的采集和控制以及温度的显示。主程序流程图如图4所示:
2.2子程序
主要由温度采集子程序、温度设定子程序、温度比较处理子程序、报警子程序、温度显示子程序等组成。温度采集子程序主要是运用了DS18B20进行温度采集及计算,温度设定子程序用于对系统进行设定适合的温度范围[8];温度处理比较子程序把采集的实际温度与设定温度值比较,调用PID算法[9],输出控制信号;报警子程序用于控制非法输入温度值。显示子程序用于显示设定温度和实际温度。其中PID调节程序、温度比较程序、温度处理子程序如下所示://PID初始化
voidPIDInit(structPID*pp)
{memset(pp,0,sizeof(structPID));
}
unintPIDCalc(structPID*pp)
{
unintdError,Error,pError;
Error=set_Temperature-Temperature;//ek
pError=Error-pp->LastError;//ek-e(k-1)
dError=Error-2*pp->LastError+pp->PrevError;//e(k)-2*e(k-1)+e(k-2)
pp->PrevError=pp->LastError;
pp->LastError=Error;
return(pp->Proportion*pError+pp->Integral*Error+pp->Derivative*dError);//增量型PID返回值
}
//温度比较
voidcompare_temperature()
{unchari;
if(set_Temperature>Temperature)
{if(set_Temperature-Temperature>20)
{JR=0;pwml=0xff;pidz=0;
}
else
{for(i=0;i<10;i++)
{pidz=PIDCalc(&pidfh);pwml=pidz;pwm();
}}}
if(set_Temperature<=Temperature)
{JR=1;pwml=0x00;pidz=0;
}}
//温度处理
voidchuliwendu(unchargaowei,unchardiwei)
{Temperature=(diwei+gaowei*256)*(0.0625*10);//Temperature=125
shiwei=Temperature/100;gewei=Temperature/10%10;xiaoshu=Temperature%10;}
3 结束语
本文介绍了基于AT89C51单片机的自动恒温控制电路,概述了电路的总体设计,硬件结构的各个模块以及软件设计的主体思路,运用数字式温度传感器DS18B20采集温度,电路设计简单,成本低廉,工作性能可靠,有较高的推广价值。该设计方案的运行结果如图4.1所示:
[1]Shiuh-JerHuang,Hung-YiChen.《Un-symmetricInputTemperatureControlbyusingFuzzySlidingModeControllerwithGainAuto-tuning》[M].InternationalJournalofControl,Automation,andSystems.201412(2):422-430.
[2]宋慧,王智檀.《基于单片机的温度控制系统研究》[J].信息工程,2014.
[3]张齐.《单片机原理与应用系统设计——基于C51的Proteus仿真实验与解题指导》[M].电子工业出版社,2011.
[4]刘坤,赵红波,张宪栋.《51单片机C语言应用开发技术大全(第
2版)》[M].人民邮电出版社,2012.
[5]孙鹏.《51单片机综合学习系统——12864点阵型液晶显示篇》[J].电子制作,2008.
[6]张志科,赵玉建.《点阵液晶显示屏SG12864-01D应用实践》[J].现代显示,2009(105).
[7]孙明超,靳亚林,肖术雷.基于AT89C51单片机的水温控制系统[J].数字技术与应用,2011.
[8]黄晓林.一种实用型智能恒温控制系统设计[J].自动化技术与应用,2011(30).
[9]王小虎,卢超.基于PID算法的温度控制系统的设计[J].实验室科学,2009.
广东省大学生创新创业训练计划项目
曾丽丽,在读本科生。