基于AT89C51的智能电风扇调速器的方案设计书2.docx
《基于AT89C51的智能电风扇调速器的方案设计书2.docx》由会员分享,可在线阅读,更多相关《基于AT89C51的智能电风扇调速器的方案设计书2.docx(26页珍藏版)》请在冰豆网上搜索。
基于AT89C51的智能电风扇调速器的方案设计书2
2010届本科生毕业设计
题目:
基于AT89C51电风扇智能调速器的设计
作者姓名:
学号:
系(院):
专业:
指导教师姓名:
指导教师职称:
SuZhouUniversity
Year2010BachelorGraduationDesign
Title:
IntelligentfanspeedcontrolbasedonAT89C51Design
Author:
Jianchen
StudentID:
2006080168
Department:
ElectronicandElectronicEngineering
Major:
ElectronicEngineeringandAutomation
Instructor:
Liguangyu
ProfessionalTitle:
Lecturer
January15th,2010
摘要
本文介绍了一种基于AT89C51单片机的电风扇智能调速器的设计,该设计以AT89C51控制器为核心,巧妙利用温度传感器电路,及时而准确的采集环境温度,利用双向晶闸管对电机进行无级调速,把智能控制技术用于家用电器的控制中,用人体周围的环境温度对风扇进行温控。
关键词:
单片机;红外遥控;温度传感器;智能控制。
ABSTRACT
ThispaperpresentsanintelligentspeedregulatorbasedonAT89C51single-chipmicrocomputer.Itusessurroundingtemperaturetoregulatethespeedofanelectricfan.Abi-directionalthyristorisusedforthesteplessspeed.
Keywords:
Single-chipmicrocomputer;temperaturesensor;infraredremotecontrol;intelligentcontrol.
目录
绪论5
1系统概述6
1.1AT89C51单片机简介6
1.2本设计任务和主要内容6
2系统原理7
2.1系统总体设计7
2.2控制装置原理7
3系统主要硬件电路8
3.1温度检测电路和显示电路8
3.1.1DS18B20的温度处理方法8
3.1.2温度传感器和显示电路组成9
3.2控制装置原理10
3.2.1电机调速原理10
3.2.2电机控制模块设计11
3.3遥控电路12
3.3.1发射电路12
3.3.2接收电路和控制电路13
3.4控制键电路13
4系统软件设计15
4.1主程序15
4.2数字温度传感器模块和显示子模块16
4.3电机调速与控制子模块17
结束语19
参考文献20
附录一21
附录二25
绪论
近些年来,随着空调行业的迅速发展,空调价格的大幅度“跳水”,电风扇行业曾被普遍认为是“夕阳产业”。
其实并非如此,市场人士称,家用电风扇并没有随着空调的普及而淡出市场,近两年反而出现了市场销售复苏的态势。
其主要原因:
一是风扇和空调的降温效果不同;(空调有强大的制冷功能,可以快速有效地降低环境温度,但电风扇的风更温和,更加适合老人儿童和体质较弱的人使用。
)二是电风扇有价格优势,价格便宜而且相对省电,安装和使用都非常简单。
传统电风扇多采用机械方式进行控制,功能少,噪音大,各档的风速变化大。
随着科技的发展和人们生活水平的提高,家用电器产品趋向于自动化、智能化、环保化和人性化,使得由微机控制的智能电风扇得以出现。
1系统概述
1.1AT89C51单片机简介
AT89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内4bytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置用8位中央处理器(CPU)和Flash存储单元,功能强大。
AT89C51单片机可灵活应用于各种控制领域。
AT89C51单片机提供以下标准功能:
4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时、计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51单片机可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时、计数器,串行通行口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
1.2本设计任务和主要内容
本文以AT89C51单片机为核心,通过数字温度传感器对外界环境温度进行数据采集,从而建立一个控制系统,使电风扇随温度的变化而自动调节档位,实现“温度高、风力大、温度低、风力弱”的性能。
另外,通过红外发射和接收装置及按键实现各种功能的启动与关闭,并且可对各种功能实现遥控,用户可以在一定范围内设置电风扇的最低工作温度,当温度低于所设置温度时,电风扇将自动关闭,当高于此温度时电风扇又将重新启动。
本设计主要内容如下:
(1)风速设为从低到高共5个档位,可由用户通过键盘和遥控手动设定。
(2)每当温度降低2℃,则电风扇风速自动下降一个档位。
(3)每当温度升高2℃,则电风扇风速自动上升一个档位。
(4)用户可以设定电风扇最低工作温度,当低于该温度时,电风扇自动停转。
2系统原理
2.1系统总体设计
图1系统总体结构框图
2.2控制装置原理
传统电风扇供电采用的是220V交流电,电机转速分为几个档位,通过人工手动调整电机转速达到改变风速的目的,亦即,每改变一次风力,必然有人参与操作,这样就会带来诸多不便。
本文介绍了一种基于AT89C51单片机的智能电风扇调速器的设计,该设计巧妙利用红外线遥控技术、单片机控制技术、无级调速技术和温度传感技术,把智能控制技术应用于家用电器的控制中,将电风扇的电机转速作为被控制量,由单片机分析采集到的数字温度信号,再通过可控硅对风扇电机进行调速。
从而达到无须人为控制便可自动调整风速的效果。
3系统主要硬件电路
3.1温度检测和显示电路
可以选用LM324A运算放大器作为温度传感器,将其设计成比例控制调节器,输出电压与热敏电阻的阻值成正比,但这种方案需要多次检测后方可使采样精确,过于烦琐。
所以我采用更为优秀的DS18B20数字温度传感器,它可以直接将模拟温度信号转化为数字信号,降低了电路的复杂程度,提高了电路的运行质量。
3.1.1DS18B20的温度处理方法
DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。
与传统的热敏电阻相比,它能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源,因而使用DS18B20可使系统结构更趋简单可靠性更高。
他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。
DS18B20简介:
(1)独特的单线接口方式:
DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(2)在使用中不需要任何外围元件。
(3)可用数据线供电,电压范围:
+3.0~+5.5V。
(4)测温范围:
-55~+125℃。
固有测温分辨率为0.5℃。
(5)通过编程可实现9~12位的数字读数方式。
(6)用户可自设定非易失性的报警上下限值。
(7)支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。
(8)负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。
单线(1—wire)技术:
该技术采用单根信号线,既可传输时钟,也能传输数据,而且是双向传输。
适用于单主机系统,主机能够控制一个或多个从机设备,通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能释放该线,而让其他设备使用。
单线通常要求外接一个5K的上拉电阻,这样当该线空闲时,其状态为高电平。
主机和从机之间的通讯分成三个步骤:
初始化单线器件、识别单线器件和单线数据传输。
单线1—wire协议由复位脉冲、应答脉冲、写0、写1、读0、读1,这几种信号类型实现,这些信号中除了应答脉冲其他都由主机发起,并且所有指令和数据字节都是低位在前。
DS18B20直接将测量温度值转化为数字量提交给单片机,工作时必须严格遵守单总线器件的工作时序。
温度值/℃数字输出(二进制)数字输出(十六进制)
+125000001111101000007D0H
+8500000101010100000550H
+25.62500000001100100010191H
+10.125000000001010001000A2H
+0.500000000000010000008H
000000000000000000000H
-0.51111111111111000FFF8H
-10.1251111111101101110FF5EH
-25.6251111111101101111FF6FH
-551111110010010000FC90H
表1部分温度值与DS18B20输出的数字量对照表
3.1.2温度传感器和显示电路组成
本模块用更为优秀的DS18B20作为温度传感器,AT89C51单片机作为处理器,配以温度显示作为温度控制输出单元。
整个系统力求结构简单,功能完善。
电路图如图2所示。
系统工作原理如下:
DS18B20数字温度传感器采集现场温度,将测量到的数据送入AT89C51单片机的P3.3口,经过单片机处理后显示当前温度值,并与设定温度值的上下限值作比较,若高于设定上限值或低于设定下限值则控制电机转速进行自动调整。
图2DS18B20温度计原理图
3.2电机调速电路
电机调速是整个控制装置中的一个相当重要的方面。
通过控制改变双向可控硅的导通角,使输出端电压发生改变,从而使施加在电风扇的输入电压发生改变,以调节风扇的转速,实现各档位风速的无级调速。
3.2.1电机调速原理
双向可控硅的导通条件如下:
(1)阳-阴极间加正向电压;
(2)控制极-阴极间加正向触发电压;
(3)阳极电流IA大于可控硅的最小维持电流IH。
电风扇的风速从高到低设为5、4、3、2、1档,每档风速都有一个限定值。
在额定电压、额定功率下,以最高转速运转时,要求风叶最大圆周上的线速度不大于2150m/min。
且线速度可由下列公式求得
V=πDn×103
(1)
式
(1)中,V为扇叶最大圆周上的线速度(m/min),D为扇中的最大顶端扫出圆的直径(mm),n为电风扇的最高转速(r/min)。
代入数据求得n5≤1555r/min,取n5=1250r/min.又因为:
取n1=875r/min。
则可得出五个档位的转速值:
n1=875r/min,n2=980r/min,n3=1063r/min,n4=1150r/min,n5=1250r/min
又由于负载上电压的有效值
u0=u1
(2)
式
(2)中,u1为输入交流电压的有效值,α为控制角。
解得:
(1)当α5=0°时,t=0ms;
(2)当α4=23.5°时,t=1.70ms;
(3)当α3=46.5°时,t=2.58ms;
(4)当α2=61.5°时,t=3.43ms;
(5)当α1=76.5°时,t=4.30ms。
上述计算出的是控制角和触发时间,当检测到过零点时,按照所求得的触发时间延时发脉冲,便可实现预期转速。
3.2.2电机控制模块设计
本模块电路中采用了过零双向可控硅型光耦MOC3041M,集光电隔离、过零检测、过零触发等功能于一身,避免了输入输出通道同时控制双向可控硅触发的缺陷,简化了输出通道隔离2驱动电路的结构。
所设计的可控硅触发电路原理图见图3。
其中RL即为电机负载,其工作原理是:
单片机响应用户的参数设置,在I/O口输出一个高电平,经反向器反向后,送出一个低电平,使光电耦合器导通,同时触发双向可控硅,使工作电路导通工作。
给定时间内,负载得到的功率为:
(3)
式中:
P为负载得到的功率(kW);n为给定时间内可控硅导通的正弦波个数;N为给定时间内交流正弦波的总个数;U为可控硅在一个电源周期全导通时所对应的电压有效值(V);I为可控硅在一个电源周期全导通时所对应的电流有效值(A)。
由式(3)可知,当U,I,N为定值时,只要改变n值的大小即可控制功率的输出,从而达到调
节电机转速的目的。
图3电机控制原理图
3.3遥控电路
3.3.1发射电路
红外发射电路原理图见图4,K1~K8是遥控键输入键,它是一个由编码器(BA5104)和红外发射电路组成的。
Al~A6键分别为“定时”、“风速”、“风类”、“摇头”、“照明”、“开/关”控制按钮。
经对应开关发出的遥控指令,由脚D0输出经Q1和Q2放大后驱动D1发出经编码后的红外遥控信号。
图4遥控发射电路
3.3.2接收电路和控制电路
红外遥控接收电路如图5所示。
红外信号由通用红外接收器BA5302完成前置放大、载波选频、脉冲解调。
当有红外脉冲信号到来时,BA5302输出低电平,经Q1反相后,作用于解码电路SM5302C的DI端(HP/CP端)输出相应的控制信号。
SM5032C的HP1~HP6端输出持续电平信号。
当按下发射器K1~K5任一键时,SM5032C相应HP端输出持续高电平。
松开发射键,则输出低电平。
CP1、CP2端为反相电平输出端(自锁)。
当松下发射器K7键时,SM5032C相应CP端输出电平翻转,即“1”变为“0”或“0”变为“1”。
每按一次,输出电平即翻转一次。
图5接收及控制电路原理
3.4控制键电路
键盘是人机交互的重要部件。
本部件主要便于用户对电风扇进行操作,使用户只要进行一些简单的操作,就能实现所需的全部功能,键盘操作模块在电风扇底座部分有一个3x3小矩阵键盘,可以进行风的强度、类型、定时等系统设置,按键电路图如图6所示。
图6按键控制原理图
4控制器软件设计
本系统的运行程序采用C语言编写,采用模块化设计,整体程序由主程序和显示、键盘扫描、红外线接收以及电机控制等子程序模块组成。
4.1主程序
在主程序进行初始化后,开始反复检测各模块相关部分的缓冲区的标志,如果缓冲区置位,说明相应的数据需要处理,然后主程序调用相应的处理子模块。
如图7所示。
图7主程序模块流程图
4.2数字温度传感器模块和显示子模块
如图8所示,主机控制DS18B20数字温度传感器完成温度转换工作必须经过三个步骤:
初始化、ROM操作指令、存储器操作指令。
单片机所用的系统频率为12MHz。
根据DS18B20数字温度传感器进行初始化时序、读时序和写时序分别可编写3个子程序:
初始化子程序、写子程序、读子程序。
图8数字温度传感器模块程序流程图
DS18B20芯片功能命令表如下:
命令说明协议
READROM读取激光ROM64位33H
MATCHROM匹配ROM55H
SKIPROM跳过ROMCCH
SEARCHROM搜索ROMF0H
ALARMSEARCH告警搜索ECH
WRITESCRATCHPAD把字节写入暂存器的地址2和34EH
READSCRATCHPAD读取暂存器和CRC字节BEH
COPYSCRATCHPAD把暂存器内容拷贝到非易失性存储器中48H
CONVERTT开始温度转换44H
RECALLE2把非易失性存储器中的值召回暂存器B8H
READPOWERSUPPLY读电源供电方式:
0为寄生电源,1为外电源B4H
表2DS18B20功能命令表
4.3电机调速与控制子模块
本模块采用双向可控硅过零触发方式,由单片机控制双向可控硅的通断,通过改变每个控制周期内可控硅导通和关断交流完整全波信号的个数来调节负载功率,进而达到调速的目的。
因为INT0信号反映工频电压过零时刻,所以只要在外中断0的中断服务程序中完成控制门的开启与关闭,并利用中断服务次数对控制量n进行计数和判断,即每中断一次,对n进行减1计数,如果n不等于0,保持控制电平为“1”,继续打开控制门;如n=0,则使控制电平复位为“0”,关闭控制门,使可控硅过零触发脉冲不再通过。
这样就可以按照控制处理得到的控制量的要求,实现可控硅的过零控制,从而达到按控制量控制的效果,实现速度可调。
(1)中断服务程序:
执行中断服务程序时,首先保护现场,INT0中断标志置位,禁止主程序修改工作参数,然后开始减1计数,判断是否关断可控硅,最后INT0中断标志位清零,还原初始化数据,恢复现场,中断返回。
(设1秒钟通过波形数N=100)
(2)回路控制执行程序:
主回路控制执行程序的任务是初始化数据存储单元,确定
电机工作参数nmin/nmax,并将其换算成“有效过零脉冲”的个数;确定中断优先级、开
中断,为了保证正弦波的完整,工频过零同步中断INT0确定为高一级的中断源。
a
图9电机控制模块中断响应流程图
结束语
本系统以AT89C51单片机为核心,单片机主要完成对外界环境温度信号的采集、处理、显示等功能;用AltiumDesigner6软件绘制电路原理图和PCB电路印刷板图,由Protues软件进行访真测试,利用MCS-51C语言编制。
运行程序该系统的主要特点是:
(1)适用性强,用户只需对界面参数进行设置并启动系统正常运行便可满足不同用户对最适合温度的要求,实现对最适温度的实时监控。
(2)随时可以根据软件编写新的功能加入产品。
操作界面可扩展性强,只要稍加改变,即可增加其他按键的使用功能。
本系统温度控制采用DS18B20数字温度传感器作为感温元件。
可控硅串接在电源与负载电风扇,借改变定周期内可控硅的导通与截止时间之比来实现调速功能,其设计完使用方便就,适应人们睡办公等不同场合的使用。
基于AT89C51单片机所设计与研制的电风扇智能调速系统,造价低且具有稳定性高、性能优越、节约电能等优点,在夜间无需定时,同样能给人们带来更多的方便。
本设计在模拟检测中运行较好,但采样据不太稳定。
功能上的缺憾是对于两个档之间的临界温度处理不好,并且档位太少,还有待改进。
参考文献
[1]曹巧媛.单片机原理及应用.北京:
电子工业出版社,2002.2
[2]王伦.电风扇原理与维修技术[M].北京:
新时代出版社,1999
[3]张毅刚.新编MCS-51单片机应用设计.哈尔滨工业大学出版社,2006,10
[4]梁廷贵、王裕琛.可控硅触发电路语音电路分册[M].北京:
科学技术文献出版社,2003
附录一
数字温度传感器模块和显示子模块程序:
#include
#defineucharunsignedchar
#defineuintunsignedint
sfrDat_Port=0x80;
sbitge=P2^6;
sbitshi=P2^7;
sbitTMDAT=P3^7;
ucharcodetable[]={0x3F,0x06,0x5B,0x4F,
0x66,0x6D,0x7D,0x07,
0x7F,0x6F};
uchartmpbuf[2];
voidDelay(intuseconds)
{
ints;
for(s=0;s}
ucharReset_Bus(void)
{
ucharpresence;
TMDAT=0;
Delay(29);
TMDAT=1;
Delay(3);
presence=TMDAT;
Delay(25);
return(presence);
}
voidWrite_Bit(charbitval)
{
TMDAT=0;
if(bitval==1)TMDAT=1;
Delay(5);
TMDAT=1;
}
voidWrite_Byte(charval)
{
ucharI;
uchartemp;
for(i=0;i<8;i++)
{
temp=val>>i;
temp&=0x01;
Write_Bit(temp);
}
Delay(5);
}
ucharRead_Bit(void)
{
uchari;
TMDAT=0;
TMDAT=1;
for(i=0;i<3;i++);
return(TMDAT);
}
ucharRead_Byte(void)
{
uchari;
ucharvalue=0;
for(i=0;i<8;i++)
{
if(Read_Bit())value|=0x01<
Delay(6);
}
return(value);
}
uintDS18B20_Tmp_Read(void)
{
uintTEMP;
ucharTEMP_LSB,TEMP_MSB;
Reset_Bus();
Write_Byte(0xCC);
Write_Byte(0x44);
Delay(5);
Reset_Bus();
Write_Byte(0xCC);
Write_Byte(0xBE);
TEMP_LSB=Read_Byte();
TEMP_MSB=Read_Byte();
TEMP=TEMP_MSB;
TEMP=TEMP<<8;
TEMP=TEMP|TEMP_LSB;
returnTEMP;
}
voidDisplay(void)
{
ucharj;
j=tmpbuf[0];
Dat_Port=table[j];
shi=0;
Delay(5);
shi=1;
Delay(5);
j=tmpbuf[1];
Dat_Port=table[j];
ge=0;
Delay(5);
ge=1;
}
voidmain(void)
{
uinttmp;
ucharI,tmph;
while
(1)
{
tmp=DS18B20_Tmp_Read();
tmph=(uchar)((tmp>>4)&0xff);
tmpbuf[1]=tmph%10;
tmpb