电冰箱控制系统设计.docx
《电冰箱控制系统设计.docx》由会员分享,可在线阅读,更多相关《电冰箱控制系统设计.docx(9页珍藏版)》请在冰豆网上搜索。
![电冰箱控制系统设计.docx](https://file1.bdocx.com/fileroot1/2022-10/19/cee6bf59-35db-48df-882c-e79aebaa2b8b/cee6bf59-35db-48df-882c-e79aebaa2b8b1.gif)
电冰箱控制系统设计
电冰箱控制系统设计
设计题目:
系别:
专业班级:
指导老师:
姓名学号:
HEFEIUNIVERSITY自动化综合设计
冰箱温度控制设计11电子系自动化2班
1
摘要
近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
电冰箱温度控制系统是利用温度传感器DS18B20采集电冰箱冷藏室和冷冻室的温度以及蒸发表面温度。
通过INTEL公司的高效微控制器MCS-C51单片机进行数字信号处理,从而达到智能控制的目的。
本系统可实现电冰箱冷藏室和冷冻室的温度设置、电冰箱自动除霜、开门报警等功能。
通过对直冷式电冰箱制冷系统的改进和采用模糊控制技术,实现了电冰箱的双温双控,使电冰箱能根据使用条件的变化迅速合理地调节制冷量,且节能效果良好。
关键词:
单片机;温度传感器;电冰箱;温度控制
2
一、设计内容
家用电冰箱一般是双门冰箱,分为冷冻室和冷藏室两个部分。
冷冻室用于冷冻食品和制冰。
长时间存放,食品中的水份也会凝结成冰。
冷冻室的温度为-6~-18℃。
为保证冷冻室良好的制冷效果。
当霜厚达3mm时,能自动检测霜厚并进行除霜。
冷藏室用于在较低的温度中存放食品。
要求有一定的保鲜而不冻伤食物的功能。
冷藏室的温度一般为0~10℃。
对家用电冰箱的要求是:
较高的温度控制精度和最优的节能效果。
系统结构框图:
二、硬件设计
直冷式电冰箱的控制原理是根据蒸发器的温度控制制冷压缩机的启动与停止,使冰箱内的温度保持在设定的温度范围内。
本电冰箱控制系统要完成冷冻室及冷藏室的温度检测和动态显示的功能,霜厚检测及除霜的功能,温度设置功能,。
控制系统硬件结构如图所示,主要由电源电路,AT89C52最小系统,温度传感器,功能按键,ADC0809转换电路,时钟电路,键盘电路,显示电路,复位电路,测霜、除霜装置。
3
系统总体设计硬件方框图
三.各部分电路作用及介绍
1.AT89C52单片机简介AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
MCS-51系列单片机是美国Inter公司在1980年推出的高性能8位单片微型计算机,较原来的MCS-48系列更为先进,功能更强。
2.时钟电路
时钟电路用于产生单片机工作所需的时钟信号,时序是指令执行中各信号之间的相互关系。
单片机本身就如同一个复杂的同步时序电路,为了
4
保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。
在单片机内部带有时钟电路,因此,只需要在片外通过XTAL1和XTAL2引脚接入定时控制元件(晶体振荡器和电容),即可构成一个稳定的自激振荡器。
XTAL1和XTAL2之间跨接晶体振荡器和微调电容。
晶体呈感性,与C1、C2构成并联谐振电路。
振荡器的振荡频率主要取决于晶体;电容的值则有微调作用,通常取30pF左右。
电容的安装装置应尽量靠近单片机芯片。
MCS8051的时钟电路如图所示:
C1
3复位电路
复位是单片机的初始化操作,其主要功能是使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化以外,当由于程序运行出错或操作错误使系统处于死锁状态时,本单片机系统采用自动复位方式复位。
5
Vcc
+5VR10kΩ1
+C3RSTC1
100pF+C210μF
10μFMCS-805
4温度检测
我们选用DS18B20单线数字温度传感器。
1.DS18B20单线数字温度传感器的主要技术指标:
(1)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(2)测温范围-55℃~+125℃,固有测温分辨率0.5℃。
(3)支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定,实现多点测温。
(4)工作电源:
3~5V/DC。
(5)在使用中不需要任何外围元件。
(6)测量结果以9~12位数字量方式串行传送。
2.DS18B20外形和内部结构
DS18B20内部结构如图所示,主要由4部分组成:
64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的外形及管脚排列如图和表所.
6
DS18B20的内部结构
DS18B20的管脚排列
DS18B20引脚定义:
3、DS18B20接口设计
下图为DS18B20接入电路的两种方法:
(a)寄生电源工作方式(b)外接电源工作方式
5.键盘与显示电路
键盘是人与MCS8051联系的重要手段,用于向CPU输入运行参数,控制系统的运行状态。
键盘电路形式分为直接编码输入键盘和矩阵键盘。
前者接口电路简单,一般应用于需要少量按键的控制系统。
后者因占用I/O引脚数少,常被按键较多的控制系统所采用。
本课程设计采用直接编码输
7
入键盘,系统采用了5个按键,分别设置为加一键、减一键、正常键、冷藏室温度显示键、冷冻室温度显示键。
显示器是常用的输出器件。
显示器件种类很多,有LED发光二极管、LED数码管、液晶显示器LCD、阴极射线管CRT等。
本电冰箱的电控系统使用的液晶显示器LCD。
端读入键盘信号,若读得“0”表示有键按下,转入处理键功能程序。
6.制冷与除霜控制电路
用机械方法来增加气体压力的设备称为压缩机。
在电冰箱制冷系统中,用于压缩制冷剂蒸气,并使制冷剂在系统中循环的设备称为制冷压缩机。
电冰箱制冷系统所选用的压缩机属于容积型压缩机。
容积型压缩机是指气缸内制冷剂蒸气直接受到压缩,使其容积变小,压力增高的压缩机。
所以,在整个电冰箱的制冷系统中,压缩机的正常有序的运行是非常重要的,因此,需恰当的设计制冷压缩机的启动与停止控制电路。
本设计中的电冰箱的电控系统中,含有自动除霜的功能,所以,也需要设计自动控制除霜电热丝的启动与停止的控制驱动电路。
7.驱动控制电路的设计
(1)制冷压缩机和除霜电热丝的启动和停止控制驱动电路如图所示:
8
125KΩ
制冷压缩机和除霜电热丝的启动和停止控制驱动电路
四.软件设计
本电冰箱的软件设计是在硬件电路设计的基础上,此电冰箱电控系统控制设计过程中主要完成以下几个功能:
冷冻室及冷藏室温度采样并进行模拟到数字的转换,自动除霜功能,键盘扫描和Lcd显示。
本系统软件主要由主程序、功能子程序、中断服务程序组成。
采用主程序调用功能子程序,子程序尽可能少的调用其它子程序,以保证系统的稳定运行。
主程序
主程序是整个电冰箱的总控制程序,如控制各单元初始化、控制中断、定时、显示、键盘程序的启动与重复等,为系统软件的主干部分。
本电冰箱的电控系统的核心部分是冷冻室和冷藏室的温度检测及控制电路。
主程序中对是否为冷冻室和冷藏室的温度键进行了逐步的判断,通过判断
9
调用不同的子程序来实现对冷冻室和冷藏室的温度的控制。
主程序框图如图所示:
主程序流程图
2打开、关闭压缩机子程序
程序流程图如下图如示:
10
开始
启动/停车?
初始化1
调启动子程序
有无反应
无调停车子程序
回复
1结束
接收数据
压缩机子程序调用框图
总程序附表
#include<reg52.h>
#include<intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
/*定义按键-------------------------------------------------------------------*/sbitK1=P1^4;//K1-设置
sbitK2=P1^5;//K2-确认、返回
sbitK3=P1^6;//K3-加
sbitK4=P1^7;//K4-减
sbitK5=P3^2;//电机开关
sbitbeep=P3^6;
sbitjdq=P2^5;
sbitLED=P3^1;
sbitfan=P2^6;
11
bitf_low=0;
ucharflag,shan;
intbeep_tmp=40,shu,beep_jdq=-20,shu_j;
/**************************************************/voiddelay1ms(uintms)//延时1毫秒
for(i=0;i<ms;i++)
for(j=0;j<110;j++);
}
voiddelaynms(uintms)//延时1毫秒
uinti;
for(i=0;i<ms;i++)
delay1ms
(1);
}
#include"1602.h"
#include"18b20.h"
voidinit()
{
beep=1;
jdq=1;
fan=1;
}
12
voidbeep_scan()
{
WriteAddress(0xc0+0);//设定屏幕上的显示位置delaynms(5);
WriteData('B');
WriteData(':
');
if(beep_tmp>=0)
{
}
else
{
shu=~beep_tmp+1;WriteData('-');if((shu%1000/100)==0){WriteData('');}
13WriteData('');if((beep_tmp%1000/100)==0){WriteData('');}else{WriteData(beep_tmp%1000/100+0x30);delaynms(5);}WriteData(beep_tmp%100/10+0x30);delaynms(5);WriteData('.');delaynms(5);WriteData(beep_tmp%10+0x30);delaynms(5);
}else{WriteData(shu%1000/100+0x30);delaynms(5);}WriteData(shu%100/10+0x30);delaynms(5);WriteData('.');delaynms(5);WriteData(shu%10+0x30);delaynms(5);
tmp(0xc0+7);
WriteAddress(0xc0+8);//设定屏幕上的显示位置delaynms(5);
WriteData('J');delaynms(5);
WriteData(':
');delaynms(5);
if(beep_jdq>=0)
{
}
else