基于AT89C52的恒温箱设计.docx
《基于AT89C52的恒温箱设计.docx》由会员分享,可在线阅读,更多相关《基于AT89C52的恒温箱设计.docx(25页珍藏版)》请在冰豆网上搜索。
信阳职业技术学院
目录
1前言 1
2总体方案设计 2
2.1主控芯片选择 2
2.2测温电路方案选择 2
2.3调温电路方案选择 3
2.4单片机设计 4
2.5温度传感电路设计 5
2.6温控电路的设计 6
3软件程序设计 7
3.1主程序设计 7
3.2DS18B20初始化设计 7
3.3DS18B20读写子程序设计 8
3.4键盘扫描子程序设计 10
3.5温度调节子程序设计 12
4功能总结与说明 14
5结束语 17
6参考文献 18
附录一:
系统总图 19
附录二:
相关程序 20
1前言
在国民经济各部门,如电力、化工、机械、冶金、农业、医学以及人们的日常生活中,温度检测是十分重要的。
在许多模拟量控制和监视应用中,温度测控通常是基于-40℃~125℃温度范围内的应用,如环境监测、蔬菜大棚、粮库、热电偶冷端温度补偿、设备运行的可靠性等应用。
实时采集温度信息,及时发现潜在故障,并采取相应的处理措施,对确保设备良好运行具有重要意义。
本文介绍了一个基于单片机的温度控制系统,该系统可以方便地实现温度采集、温度显示等功能。
本系统的温度控制部分采用单片机完成。
单片机有着体积小、功耗低、功能强、性能价格比高、使用电子元件较少、内部配线少、制造调试方便等显著优点,将其用于温度检测和控制系统中可大大地提高控制质量和自动化水平,具有良好的经济效益和推广价值。
利用单片机对温度进行测控的技术,日益得到广泛应用。
2总体方案设计
2.1主控芯片选择
方案一:
可以用运放等模拟电路搭接一个控制系统,用模拟方式实现PID控制,稍显麻烦。
况且附加的显示,温度的设定等功能无法在模拟电路中实现,实现还要附加许多电路,同样的用逻辑电路实现的话,总体的电路设计和制作较运放还要繁琐,所以舍弃这个方案。
方案二:
查阅网上资料发现使用FPGA可以实现控制功能,并且使用FPGA电路设计比较简单,只需要通过相应的编程设计,可以很容易实现控制、显示、键盘等功能。
但是价格较高,并且对FPGA的具体应用方式不清楚,所以该方案也舍弃。
方案三:
使用单片机作为核心,同时温控系统的温度显示和温度的设定也可用LED显示和3*3键盘控制。
当环境温度低于设定的最低温度值时,采用蜂鸣器进行报警。
电路设计和制作比较简单合理,因此选择该方案。
具体框图如下:
图2.1总体设计框图
2.2测温电路方案选择
方案一:
可以使用热敏电阻作为测温元件,通过热敏电阻实现A/D转换,但是热敏电阻的精度比较高,并且需要配合电桥电路整流等,整个电路设计稍显麻烦,故不采用此方案。
方案二:
采用最新的单线数字温度传感器DS18B20作为测温元件,它能够直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,只需要和单片机相连接即可实现。
温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源,因此比较方便,同时其价格适中,使用比较简单,其读写时序主要有复位、读时间片和写时间片三种时序操作。
芯片本身带有命令集和存储器,微处理器通过发出控制命令,对芯片存储器进行读写,完成温度测量。
芯片电源也可由微处理器的一个I/O口提供。
微处理器在读写DS1820前先使其复位,检测到其应答信号后,微处理器发ROM操作命令,然后再发控制命令。
多点温度测量时,只需并联多只DS1820并放在各测温点上,在使用前对各个芯片进行ROM搜索并将各个芯片的序列号保存起来。
以后对每个DS1820寻址时,只要发相应的序列号,然后再对其进行其它操作即可。
与DS1820类似的芯片还有DS1822,故采用该方案。
具体电路如下:
图2.2DS18B20电路的连接
2.3调温电路方案选择
根据题目,可以使用220V、40W的灯泡加热,当温度过高时,降温控制系统可以采用低压直流电风扇。
当温度高于设定最高限温度时,启动风扇降温,当温度降到指定最高限温度以下后,风扇自动停止运转。
加热电源选用220V交流电,制冷电源为5V直流电。
根据查阅资料和网上参考可以使用固体继电器来控制加热,制冷的工作。
固态继电器使用比较简单,而且没有触电,可以频繁工作,是一个比较好的方案,其在protues中RELAY即可选用。
固态继电器的电路连接如下:
图2.3固态继电器的电路连接
2.4单片机设计
本次设计采用AT89C52单片机,AT89S51单片机是低功耗的,具有4KB在线可编程FLASH存储器的单片机。
它与通用AT89C51单片机的指令系统和管脚兼容。
AT89C52单片机的引脚图如图4:
图2.4AT89C52引脚图
对于AT89C52接口的使用:
(1)电源及时钟引脚:
Vcc:
电源接入引脚;
GND:
接地引脚;
XTAL1:
晶体振荡器接入的一个引脚(采用外部振荡器时,此引脚接地);
XTAL2:
晶体振荡器接入的另一个引脚(采用外部振荡器时,此引脚作为外部振荡信号的输入端)。
(2)控制线引脚
RST:
复位信号输入引脚。
(3)并行I/O口引脚
P0.0~P0.7:
作为数码管的输出;
P1.0~P1.2:
用来作为数码管的片选和蜂鸣器与LED灯的选择;
P1.3:
DS18B20的单线接口端;
P2.1~P2.3与P2.5~P2.7:
构成一个3*3的键盘;
P3.6:
控制灯泡的启动与关断;
P3.7:
控制风扇的启动与关断。
2.5温度传感电路设计
DS18B20的性能特点:
(1)采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位);
(2)测温范围为-55℃-+125℃,测量分辨率为0.0625℃;
(3)内含64位经过激光修正的只读存储器ROM;
(4)适配各种单片机或系统机;
(5)用户可分别设定各路温度的上、下限;
(6)内含寄生电源。
DS18B20内部结构主要由四部分组成:
64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。
DS18B20的管脚排列如图所示:
图2.5DS18B20的管脚排列
在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。
无论是内部寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电阻.我们采用的是第一种连接方法,如图3.3所示:
把DS18B20的数据线与单片机的P1.0管脚连接,再加上上拉电阻。
DS18B20有六条控制命令,如下表所示:
表2.1DS18B20控制命令
指 令
约定代码
操 作 说 明
温度转换
44H
启动DS18B20进行温度转换
读暂存器
BEH
读暂存器9个字节内容
写暂存器
4EH
将数据写入暂存器的TH、TL字节
复制暂存器
48H
把暂存器的TH、TL字节写到E2RAM中
重新调E2RAM
B8H
把E2RAM中的TH、TL字节写到暂存器TH、TL字节
读电源供电方式
B4H
启动DS18B20发送电源供电方式的信号给主CPU
2.6温控电路的设计
单片机的P3.6、P3.7分别与SN74LS245N的9引脚和7引脚连接来控制灯泡与风扇的开断。
当实际温度高于温度上限时,置P3.7口为低电平,风扇启动,同时利用蜂鸣器和LED灯进行声光报警;当实际温度低于温度下限时,置P3.6口为低电平,灯泡启动,同时点亮LED灯表明加热器正在加热。
仿真电路图如下:
图2.6温控电路仿真连接图
3软件程序设计
3.1主程序设计
开始
程序初始化
给温度上下限赋值
采集温度值并显示实际温度和温度上下限
判断实际温度是否在温度范围内并进行调节
检测键盘并执行相应键功能
图3.1主程序框图
3.2DS18B20初始化程序
初始化开始
清除DQ,向DS18B20发出reset脉冲
等待480us以上?
置位DQ,等待15~60us
DQ变低电平?
置FLAG标志并延时200us
初始化结束
Y
N
Y
N
清除FLAG标志
图3.2DS18B20初始化程序框图
3.3DS18B20读写子程序设计
DS18B20读写子程序WRITE_1820、READ_1820、READ_18200完成对18B20的读写功能,其中,READ_1820从DS18B20中读出一个字节的数据,READ_18200从DS18B20中读出两个字节的温度数据。
3.3.1DS18B20写入子程序框图
开始写入
DS18B20初始化
写入44H,发转换命令
写入CCH,SKIPROM
清除DQ,准备发送
延时15us
写入1位数据
延时15~45us
SETBDQ,完成1位写入
8位写完
结束
Y
N
图3.3DS18B20写入程序框图
3.3.2DS18B20读取子程序框图
DS18B20初始化
写入CCH,SKIPROM
写入BEH,发转换命令
SETBDQ
延时1us以上
清除DQ准备发送
延时1us以上
SETBDQ释放总线
读取1位数据
延时15~45us
8位读完
开始读取
结束
Y
N
图3.4DS18B20读取程序框图
3.3键盘扫描子程序设计
开始
计数单元清零
Y
置列为输入
延时20ms消抖
有键按下?
有键按下?
Y
Y
计数单元加一
带进位位右移输入码
C为0吗?
输入码高低四位互换
计数单元加四
带进位位右移输入码
C为0吗?
Y
下
N
N
结束
N
N
延时20ms消抖
按键释放?
Y
上
按键释放?
Y
N
结束
N
根据计数单元的内容执行相应键值功能
图3.5键盘扫描程序框图
3.4温度调节子程序设计
前文讲述了其中P3.6作为灯泡启动关闭的控制引脚,P3.7作为风扇启动关闭的控制引脚。
由于每次采集温度值时,DS18B20会先给温度赋初值85,这样在判断实际温度是否小于温度上限时,会受到干扰,因此判断之前我先命令:
如果实际温度大于80就跳出温度调节程序。
框图如下:
实际温度比温度上限大吗?
声光报警
N
N
关风扇
风扇已启动?
灯泡已启动?
N
N
Y
实际温度比温度上限大吗?
实际温度小于80吗?
Y
Y
点亮加热指示灯
Y
关灯泡
实际温度比温度上限小吗?
开启灯泡、点亮指示灯、开启定时
N
开启风扇、声光报警、开启定时
Y
Y
N
结束
N
实际温度比温度下限大吗?
开始
Y
图3.6温度调节程序框图
4功能总结与说明
以下是我制作的简易温度控制系统可实现的功能:
1、实时显示实际温度和设定温度,最小区分度为1℃。
2、温度上下限可实现任意调整,调节范围为0℃~90℃,根据本次设计要求将上限设为20,下限设为60。
3、当温度高于温度上限时,启动风扇降温,同时声光报警。
温度降到温度上限以下后,风扇自动关闭。
4、当温度低于温度下限时,自动启动灯泡加热,同时亮灯表示加热器正在加热。
温度超过温度下限后,灯泡自动关掉。