基于单片机的恒温箱控制器的设计.docx
《基于单片机的恒温箱控制器的设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的恒温箱控制器的设计.docx(22页珍藏版)》请在冰豆网上搜索。
![基于单片机的恒温箱控制器的设计.docx](https://file1.bdocx.com/fileroot1/2023-1/28/8c4e0e0f-ffec-4eb7-852c-ac229ac56054/8c4e0e0f-ffec-4eb7-852c-ac229ac560541.gif)
基于单片机的恒温箱控制器的设计
基于单片机的恒温箱控制系统设计
[摘 要]恒温控制在工业生产过程中举足轻重,温度的控制直接影响着工业生产的产量和质量。
本设计是基于AT89C51单片机的恒温箱控制系统,系统分为硬件和软件两部分,其中硬件包括:
温度传感器、显示、控制和报警的设计;软件包括:
键盘管理程序设计、显示程序设计、控制程序设计和温度报警程序设计。
编写程序结合硬件进行调试,能够实现设置和调节初始温度值,进行数码管显示,当加热到设定值后立刻报警。
另外,本系统通过软件实现对按键误差、加热过冲的调整,以提高系统的安全性、可靠性和稳定性。
本设计从实际应用出发选取了体积小、精度相对高的数字式温度传感元件DS18B20作为温度采集器,单片机AT89C51作为主控芯片,数码管作为显示输出,实现了对温度的实时测量与恒定控制。
[关键词]单片机;温度传感器;恒温;控制;报警
TheDesignofRefrigeratorDoorShellShapingControlSystem
BasedonSiemensWINCC
Abstract:
ThesystemmakesuseofthesinglechipAT89C51asthetemperaturecontrollingcenter,usesnumeralthermometerDS18B20whichtransmitsas1-wirewayasthetemperaturesensor,throughthepressedkey,thenumericalcodedemonstratedcompositeoftheman-machineinteractiveconnection,torealizesetandadjusttheinitialtemperaturevalue.Afterthesystemworks,thedigitaltubewilldemonstratethetemperaturevalue,whentemperaturearrivingtothesettingvalue,thebuzzerwillbeworkimmediately.Inaddition,thesystemthroughthesoftwareadjustingtothepressedkeyerror,andtheexcessivelyhutting.Alloftheseareinordertoenhancethesystem’ssecurity,reliabilityandstability.
Keywords:
DS18B20;MCU;Constanttemperaturecontrol;1-wiretransmission
目 录
1 引言1
2 系统概述1
2.1 简述1
3 设计思路分析2
4 方案论证2
4.1 温度传感器2
4.2 显示部分2
4.3 输出控制3
5 硬件设计及工作原理3
5.1 系统功能及工作流程介绍3
5.2 功能模块5
5.3 系统硬件设计5
5.3.1 DS18B20测温电路5
5.3.2 DS18B20的特点介绍6
5.3.3 单线(1-wire)技术6
5.3.4 DS18B20的引脚及功能介绍7
5.3.6 输出控制电路9
5.3.7 温度越线报警电路10
6 系统的应用软件设计10
6.1 软件描述10
6.1.1 键盘管理模块10
6.1.2 显示模块11
6.1.3 控制模块11
6.1.4 温度报警模块12
6.1.5 主程序和中断服务程序流程12
7 系统调试与仿真14
7.1硬件调试14
7.1.1 脱机检查14
7.1.2 仿真调试14
7.1.3 检查CPU的时钟电路14
7.1.4 对扩展的RAM、ROM进行检查调试15
7.2软件调试15
7.2.1 交叉汇编15
7.2.2 用汇编语言15
7.2.3 手工汇编15
7.3系统仿真15
8 抗干扰技术18
8.1 硬件抗干扰技术18
8.2 软件抗干扰技术18
9 系统制作与测试19
结束语21
参考文献22
致谢23
1 引言
温度控制是工业生产过程中经常遇到的过程控制,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用,其温度的控制效果直接影响着产品的质量,因而设计一种较为理想的温度控制系统是非常有价值的。
对于不同场所、不同工艺、所需温度高低范围不同、精度不同,则采用的测温元件、测温方法以及对温度的控制方法也将不同;产品工艺不同、控制温度的精度不同、时效不同,则对数据采集的精度和采用的控制算法也不同。
因而,对温度的测控方法多种多样。
随着电子技术和微型计算机的迅速发展,微机测量和控制技术也得到了迅速的发展和广泛的应用。
利用微机对温度进行测控的技术,也便随之而生,并得到日益发展和完善,越来越显示出其优越性。
然而现有的温度传感元件大多为模拟器件(热电耦)体积大、应用复杂、而且不容易实现数字化等缺点,阻碍了应用领域的扩展。
本设计从实际应用出发选取了体积小、精度相对高的数字式温度传感元件DS18B20作为温度采集器,单片机AT89C51作为主控芯片,数码管作为显示输出,实现了对温度的实时测量与恒定控制。
2 系统概述
2.1 简述
单片机已经在测控中获得了广泛的应用,它除了可以测量电信号以外,还可以用于温度、湿度等非电信号的测量,能独立工作的单片机温度检测、温度控制系统已经广泛应用到很多领域。
单片机的接口信号是数字电信号,要想用单片机获取温度这类非电信号的信息,毫无疑问,必须使用温度传感器。
温度传感器的作用是将温度信息转换为电流或电压输出,如果转换后的电流或电压输出是模拟信号,那么还必须进行A/D转换,以满足单片机接口的需要。
传统的温度检测大多以热敏电阻为温度传感器,但热敏电阻的可靠性差、测量温度准确率低,而且必须经过专门的接口电路转换成数字信号后才能由单片机进行处理。
随着微电子技术的发展,单片微处理器功能日益增强,价格低廉,在各方面得到广泛应用。
在温度控制器中应用单片机,具有设计简单、可靠性高、控制精度高,功能易扩展,有较强的通用性等优点。
温度控制器主要实现对恒温箱温度的控制,并满足不同用户的个性需求。
因此一个较完善的控制器应具有以下功能:
温度的测量与显示;用户设定功能(如温度设定,定时设定等);对电加热管的控制功能;一些功能键(如定时自动加热,恒温控制,手动加热等);安全措施(漏电检测,安全失效保护,限温保护等)。
本文将采用一种数字温度传感器来实现基于51单片机的恒温箱控制系统设计。
整个控制系统分为硬件电路设计和软件程序设计两部分。
3 设计思路分析
设计51单片机的恒温箱控制系统设计时,需要考虑下面3个方面的内容:
●选择合适的温度传感器芯片。
显然,本文中的核心器件是单片机和温度传感器,单片机采用常用的51单片机即可,而温度传感器的选择则需慎重。
●单片机和温度传感器的接口电路设计。
●控制温度传感器实现温度信息采集以及数据传输的软件设计。
4 方案论证
4.1 温度传感器
方案一:
采用热敏电阻,可满足40~90℃的测量范围,但热敏电阻精度、重复性、可靠性都比较差,其测量温度范围相对较小,稳定性较差,不能满足本系统温度控制的范围要求。
方案二:
采用温度传感器铂电阻Pt1000。
铂热电阻的物理化学性能在高温和氧化性介质中很稳定,它能用作工业测温元件,且此元件线性较好。
在0—100摄氏度时,最大非线性偏差小于0.5摄氏度。
铂热电阻与温度关系是,Rt=R0(1+At+Bt*t);其中Rt是温度为t摄氏度时的电阻;R0是温度为0摄氏度时的电阻;t为任意温度值,A,B为温度系数。
方案三:
采用模拟温度传感器AD590K,AD590K具有较高精度和重复性(重复性优于0.1℃),其良好的非线性可以保证优于±0.1℃的测量精度。
但其测量的值需要经过运算放大、模数转换再传给单片机,硬件电路较复杂,调试也会相对困难,所以本系统不宜采用此法。
方案四:
采用数字温度传感器DS18B20,DS18B20提供九位温度读数,测量范围-55℃~125℃,采用独特1-WIRE总线协议,只需一根口线即实现与MCU的双向通讯,具有连接简单,高精度,高可靠性等特点。
并且,DS18B20支持一主多从,若想实现多点测温,可方便扩展。
综合以上四种方案,本设计采用第四种方案,利用数字温度计DS18B20作为温度传感器。
4.2 显示部分
方案一:
采用I/O口直接驱动,需要占用大量可贵的I/O口资源,且系统运行后,更换元件不易,不符合系统设计的可靠性、易扩展性原则。
方案二:
采用串行口驱动、静态显示,利用单片机的串行口输出数据,显示多位数码,可节省大量的I/O口,但每个数码管必须有一个驱动芯片,且每位段码须接一个限流电阻,所须元件多,硬件电路比较复杂。
方案三:
采用串行口驱动、动态扫描显示,利用单片机的串行口输出数据,显示多位数码,多个数码管可共用驱动芯片和限流电阻。
这样既可以简化硬件电路,又可以节省大量的I/O口线,为功能扩展留下空间。
综合以上三种方案,本设计采用方案三:
串行口驱动、动态显示。
根据系统具体指标要求,可以对每一个具体部分进行分析设计。
4.3 输出控制
方案一:
采用继电器,易于控制,且实行比较简单,但强电和弱电不能很好的隔离,抗干扰能力极差。
方案二:
采用光电藕合器,控制信号与输出信号可以很好的隔离,增强了系统的安全性和抗干扰能力。
综合以上两种方案,本设计采用光电藕合器控制负载工作。
5 硬件设计及工作原理
5.1 系统功能及工作流程介绍
根据恒温箱控制器的功能要求,并结合对51系列单片机的资源分析,即单片机软件编程自由度大,可用编程实现各种控制算法和逻辑控制。
所以采用AT89C51作为电路系统的控制核心。
恒温箱控制器的总体布局如图1所示。
按键将设置好的温度值传给单片机,通过温度显示模块显示出来。
初始温度设置好后,单片机开启输出控制模块,使电热器开始加热,同时将从数字温度传感器DS18B20测量到的温度值实时的显示出来,当加热到设定温度值时,单片机控制声光报警模块,发出声光报警,同时关闭加热器。
当自然冷却到设定温度3摄氏度以下时,单片机再次启动加热器,如此循环反复,以达到恒温控制的目的。
系统结构框图如图1所示,系统基本硬件电路图如图2所示,在本系统中,DP1~DP3用于七段数码显示;P1.0用于接收DS18B20采集到的数字温度信号;FUZA1控制光电开关,决定电加热器是否工作;K1~K3用于按键控制;BELL和P1.4、P1.5用于控制扬声器和发光二极管,进行声光报警;串行口用于输出显示段码;P2.0、P2.1用于对数码管进行动态扫描。
图1系统结构框图
图2基本硬件电路图
5.2 功能模块
根据上面对工作流程的分析,系统软件可以分为以下几个功能模块:
(1)键盘管理:
监测键盘输入,接收温度预置,启动系统工作。
(2)显示:
显示设置温度及当前温度。
(3)温度检测及温度值变换:
完成A/D转换及数字滤波。
(4)温度控制:
根据检测到的温度控制电炉工作。
(5)报警:
当预置温度或当前炉温越限时报警。
5.3 系统硬件设计
5.3.1 DS18B20测温电路
DS18B20数字温度计是Dallas公司生产的1-Wire器件,即单总线器件。
与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化成串行数字信号,以供单片机处理,具有连线简单、微型化、低功耗、高性能、抗干扰能力强、精度高等特点。
因此用它来组成一个测温系统,具有电路简单,在一根通信线上可以挂很多这样的数字温度计,十分方便。
目前已被众多行业进行广泛的运用(锅炉、温控表粮库、冷库、工业现场温度监控、仪器仪表温度监控、农业大棚温度监控等)。
通过编程,DS18B20可以实现9~12位的温度读数。
信息经过单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18B20仅需连接一条信号线和地线。
读、写和执行温度变换所需的电源可以由数据线本身提供,而不需要外部电源。
每片DS18B20在出厂时都设有唯一的产品序列号,因此多个DS18B20可以挂接于同一条单线总线上,这允许在许多不同的地方放置温度传感器,特别适合于构成多点温度测控系统。
5.3.2 DS18B20的特点介绍
(1)独特的单线接口方式,与单片机通信只需一个引脚,DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(2)在使用中不需要任何外围元件。
(3)可用数据线供电,电压范围:
+3.0~+5.5V。
(4)测温范围为-55~+125℃。
在-10~+85℃范围内误差为0.5℃。
(5)通过编程可实现9~12位的数字读数方式。
(6)用户可自设定非易失性的报警上下限值。
(7)支持多点组网功能,通过识别芯片各自唯一的产品序列号从而实现单线多挂接,多个DS18B20可以并联在唯一的线上,简化了分布式温度检测的应用,实现多点测温。
(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
(9)告警寻找命令可以识别和寻址那些温度超出预设告警界限的器件。
5.3.3 单线(1-wire)技术
目前常用的微机和外设之间数据传输的串行总线有I2C总线、SPI总线等,其中,I2C总线采用同步串行两线(一根时钟线、一根数据线)方式,而SPI总线采用同步串行三线(一根时钟线、一根输入线和一根数据出线)方式。
这两种总线需要至少两根或两根以上的信号线。
美国达拉斯半导体公司推出了一项特有的单线(1-wire)技术。
该技术与上述总线不同,它采用单根信号线,即可传输时钟,又能传输数据,而且数据传输是双向的,因而这种单线技术具有线路简单、硬件开销少、成本低廉、便于扩展的优点。
单线技术适用于单主机系统,单主机能够控制一个或多个从机设备。
主机可以是微控制器,从机可以是单线器件,它们之间的数据交换、控制都由这根线完成。
主机或从机通过一个漏极开路或三态端口连至数据线,以允许设备在不发送数据时能够释放该线,而让其他设备使用。
单线通常要外接一个约5KΩ的上拉电阻,这样,当该线闲置时,其状态为高电平。
主机和从机之间的通信主要分3个步骤:
初始化单线器件、识别单线器件和单线数据传输。
由于只有一根线通信,所以它们必须是严格的主从结构,只有主机呼叫从机时,从机才能应答,主机访问每个单线器件必须严格遵循单线命令序列,即遵守上述3个步骤的顺序。
如果命令序列混乱,单线器件将不会响应主机。
所有的单线器件都要遵循严格的协议,以保证数据的完整性。
1-wire协议由复位脉冲、应答脉冲、写0、写1、读0和读1这几种信号类型组成。
这些信号中,除了应答脉冲,其他均由主机发起,并且所有命令和数据都是字节的地位在前。
5.3.4 DS18B20的引脚及功能介绍
DS18B20的外形及TO-92封装引脚排列见左图,其引脚功能描述见表1,实测温度和数字输出的对应关系见表2.
表1DS18B20详细引脚功能描述
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
表2温度值分辨率配置表
温度
数字输出(二进制)
数字输出(十六进制)
+125℃
0000011111010000
07D0H
+85℃
0000010101010000
0550H
+25.0625℃
0000000110010001
0191H
+10.125℃
0000000010100010
00A2h
+0.5℃
0000000000001000
0008H
0℃
0000000000000000
000H
-0.5℃
1111111111110000
FFF8H
-10.125℃
1111111101011110
FF5EH
-25.0625℃
1111111001101111
FF6FH
-55℃
1111110010010000
FC90H
5.3.5 DS18B20的使用方法
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:
初始化时序、读时序、写时序。
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
(1)DS18B20的复位时序,见图3
图3DS18B20的复位时序图
置总线为低电平并保持至少480us,然后拉高电平,等待从端重新拉低电平作为响应,则总线复位完成。
(2)DS18B20的读时序,见图4。
图4DS18B20的读时序图
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。
DS18B20在完成一个读时序过程,至少需要60us才能完成。
(3)DS18B20的写时序,见图5。
图5DS18B20的写时序图
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。
(4)DS18B20在电路中的连接,见图6。
1-wire总线支持一主多从式结构,硬件上需外接上拉电阻。
当一方完成数据通信需要释放总线时,只需将总线置高点平即可;若需要获得总线进行通信时则要监视总线是否空闲,若空闲,则置低电平获得总线控制权。
图6DS18B20测温电路
5.3.6 输出控制电路
MOC3041内部带有过零控制电路,MOC3041输出端额定电压为400V。
加热电路中采用MOC3041的目的有两个:
其一是实现强电与弱电的隔离;其二是实现双向可控硅的过零触发,从而使流过双向可控硅的电流波形为正弦波,减少谐波。
电路连接如图6所示,其在电路中的工作原理是单片机根据传感器和设定开关输入的控制指令,控制电器的电源通断。
Q2为MAC97A6型小型塑封双向晶闸管,其最大通态电流为1A。
当电源控制电路的输出管脚送出的开关控制指令为高电平,MOC3041截止,Q2截止,电器被关闭;当电源控制电路送出的开关控制指令为低电平,MOC3041导通,Q2导通,电器被打开。
通过MOC3041内部的过零触发电路,保证Q2在电压过零时导通和截止,对供电系统干扰极小。
R8和C6是Q2的保护电路。
图7光耦控制输出
5.3.7 温度越线报警电路
报警电路如图8所示,该电路采用一个小功率三极管Q1驱动蜂鸣器BELL,当单片机接收到超额温度信号或危险信号时,输出脚BELL输出高点平,Q1导通,致使蜂鸣器BELL得电工作,发出报警声。
同时,电路中的发光二极管指示出电路的工作状态。
图8报警电路
6 系统的应用软件设计
6.1 软件描述
在软件设计时,必须先弄清恒温控制系统的操作过程和工作过程。
加热器开始时处于停止状态,首先设定温度,显示器显示温度,温度设定后则可以启动加热。
温度检测系统不断检测并显示系统中的实时温度,当达到设定值后停止加热,当温度下降到下限(小于设定值3℃)时再自动启动加热,这样不断的循环,使温度保持在设定范围之内。
启动加热以后就不能再设定温度,因为温度的设定可以根据实验要求改变。
若要改变设定的温度,可以先按复位/停止键再重复上述过程。
根据以上对操作和工作过程的分析,程序应分为两个阶段:
一是通电或复位后到启动加热,程序主要是按键设定、显示器显示设定温度;二是检测并显示系统的实时温度,并根据检测的结果控制电热器,这时系统不接收键盘的输入。
因此,程序可以分为以下几个功能模块:
温度设定和启动;显示;温度检测;温度控制以及报警。
6.1.1 键盘管理模块
键盘管理子程序流程如图9所示。
图9键盘处理程序流程
当通电或复位以后,系统进入键盘管理状态,单片机只接收设定温度和启动。
当检测到有键闭合时先去除抖动,这里采用软件延时的方法,延时一段时间后,再确定是否有键闭合,然后将设定好的值送入预置温度数据区,并调用温度合法检测报警程序,当设定温度超过最大值如90℃时就会报警,最后当启动键闭合时启动加热。
键盘设定:
用于温度设定。
共三个按键。
KEY1(P1.1):
状态切换;温度设置确认;温度重新设置。
KEY2(P1.2):
设置温度“+”。
KEY3(P1.3):
设置温度“-”。
系统上电后,数码管全部显示为零,根据按KEY1次数,决定显示的状态,根据相应的状态,利用KEY2、KEY3进行加减,当温度设定好之后,再按KEY1确定,系统开始测温,开启加热器。
6.1.2 显示模块
显示子程序的功能是将缓冲区的二进制数据先转换成3个BCD码,再将其分别存入百位、十位、个位3个显示缓冲区,送往串行口,利用单片机的P2口进行扫描,让数据动态的显示出来,可显示设置温度和测量温度。
6.1.3 控制模块
温度控制子程序流程如图10所示,将当前温度与设定好的温度比较,当当前温度小于设定温度时,开启电热器;当当前温度大于设定温度时,关闭电热器;当二者相等时,电热器保持这一状态。
图10控制模块程序流程
6.1.4 温度报警模块
报警子程序流程如图11所示。
根据设计要求,当检测到当前温度值高于设定温度值3℃时报警,报警的同时关闭电热器。
为了防止误报,设置了报警允许标志,只有在允许报警的情况下,温度值高于设定温度值时才报警。
图11报警子程序流程
6.1.5 主程序和中断服务程序流程
主程序采用中断嵌套方式设计,各功能模块可直接调用。
主程序完成系统的初始化,温度预置及其合法性检测,预置温度的显示及定时器0设置。
定时器0中断服务子程序是温度控制体系的主体,用于温度检测、控制和报警(包括启动温度转换、读入采样数据、数字滤波、越限温度报警和越限处理、输出控制脉冲等)。
中断由定时器0产生,根据需要每隔15s中断一次,即每15s采样控制一次。
但系统采用6MHz晶振,最大定时为130ms,为实现15s定时,这里另行设了一个软件计数器。
图12主程序流程图
图13中断服务程序流程图
7 系统调试与仿真
7.1硬件调试
根据设计的原理电路做好实验样机,便进入硬件调试阶段。
调试工作的