家用电扇控制器设计.docx
《家用电扇控制器设计.docx》由会员分享,可在线阅读,更多相关《家用电扇控制器设计.docx(18页珍藏版)》请在冰豆网上搜索。
家用电扇控制器设计
南昌工学院
家用风扇控制器的设计
班级
学号
学生姓名
指导教师
课程设计任务书
课程名称
院(系)电子工程学院专业电子信息工程
班级学号姓名
课程设计题目家用风扇控制器的设计
课程设计时间:
年月日至年月日
课程设计的内容及要求:
一、设计说明
设计一个家用风扇控制器电路。
二、技术指标
1。
控制器面板按钮有三个,分别为风速、风种和停止,LED指示灯有六个,指示风速强、中和弱,指示风种为睡眠、自然和正常。
2.电扇处于停转状态时,所有指示灯都不亮,只有按下“风速”键时,才会响应,进入起始工作状态;电扇在任何状态,只要按下停止键,则进入停转状态。
3。
处于工作状态时,有
(1)初始状态为:
风速为“弱”,风种为“正常”;
(2)按“风速”键,其状态由“弱”→“中”→“强”→“弱”→……往复循环改变,每按一下按键改变一次状态;
(3)按“风种"键,其状态由“正常"→“睡眠”→“自然"→“正常"→……往复循环改变;
4。
风速的弱、中、强对应于电扇的转动由慢到快;
5。
风速的不同选择,分别为:
(1)正常:
电扇连续运转;
(2)自然:
电扇模拟自然风,即转4秒,停4秒;
(3)睡眠:
电扇慢转,产生轻柔的微风,运转8秒,停转8秒;
6。
按照风速和风种的设置输出相应的控制信号.
三、设计要求
1。
采用电路仿真软件设计电路;或采用VHDL语言编写程序,并在MAX+plusⅡ平台中进行仿真,下载到EDA实验箱进行验证;或编写单片机程序,并仿真。
2。
编写设计报告,要求包括方案选择、程序清单、调试过程及心得体会等。
3.画出电路原理图(元器件标准化,电路图规范化)。
四、实验要求
1.根据技术指标制定实验方案;验证所设计的电路.
2.进行实验数据处理和分析。
五、推荐参考资料
1.沙占友、李学芝著.中外数字万用表电路原理及维修技术.[M]北京:
人民邮电出版社,1993年
2.童诗白、华成英主编者.模拟电子技术基础。
[M]北京:
高等教育出版社,2006年
3.戴伏生主编。
基础电子电路设计及实践.[M]北京:
国防工业出版社,2002年
4.谭博学主编。
集成电路原理及应用.[M]北京:
电子工业出版社,2003年
六、按照要求撰写课程设计报告
成绩评定表
评语、建议或需要说明的问题:
指导教师签字:
日期:
成绩
一、概述
电风扇在我国,是80年代开始兴起的一种小型的家用电器,刚开始它的功能单一,而且耗电量大,随着技术的不断更新,它的功能更加强大,更加趋于人性化。
作为一种老式的家电,电风扇具有价格便宜,摆放方便,体积轻巧等特点,面临庞大的市场需要的同时,也要提高电风扇的市场竞争力。
使之在技术含量上有所提高,使风速不仅功能多样,操作简便,而且更加安全可靠。
本设计采用了单片机作为该电风扇系统的控制核心,使得家用电扇更加满足用户的需求.
在国际市场上,单片机产品的类型很多。
其中Intel公司的产品比较领先占有较大销售份额。
在我国Intel公司的MCS—48系列,MCS—51系列,MCS-96系列的各种机型用得最多,占主流地位。
本设计以ATMEL公司的AT89C51单片机为核心,通过按键扫描电路和显示电路建立一个控制系统,使电风扇人为的变换档位,能够满足人们的需求。
实现按“风速"键,其状态由“弱”→“中”→“强”→“弱"→……往复循环改变,每按一下按键改变一次状态;并且按“风种"键,其状态由“正常”→“睡眠”→“自然”→“正常”→……往复循环改变;强、中、弱的状态改变对应电风扇电机转速的快慢,而正常、睡眠、自然的状态改变对应于电机运转的状态,即睡眠对应电机转八秒停八秒,自然对应电机转四秒停四秒,正常则电机一直转动。
二、方案论证
对于实现如以上那样对电扇的控制,可以有多种方法实现,现列出简单的两种方法,再从中选取最优秀的方案完成.
方案一:
采用电压比较电路作为控制部件。
集成运放组成的比较电路判决电路控制风扇的转速。
用常见的555芯片构成单稳态电路实现电机状态改变时需要的延时,当高于或低于某值时将风扇切换到相应档位。
方案二:
采用单片机作为控制核心,以软件编程的方式进行风速控制,并在端口输出控制信号。
控制外围状态显示电路以及按键检测和按键控制电路。
对于以上两种方案,各有其优缺点,对于方案一,采用电压比较电路具有电路简单、易于实现,采用的都是常见的元器件,在成本上占有一定的优势,以及无需编写软件程序的特点,但控制方式过于单一,不能自由设置上下限动作及定时时间,无法满足不同用户以及不同工作环境下的要求,故不采用此方案。
对于方案二,采用单片机控制,可以实现更复杂的电路要求,而且单片机运行起来稳定,能满足不同环境,不同条件下的控制,而且在电路要求上面需要更改时只需做程序上的修改以及相应电路连接的改动就行,比方案一方便,而且成本上也不比方案一的成本高太多,故采用此方案。
•电路设计
本系统由四个模块组成,分别是输入模块、显示模块、电机控制模块以及单片机控制系统。
其中单片机控制系统是核心,由AT89C51、晶振和复位电路组成。
它通过处理输入的各种信息来对其它模块发出指令,进行相应的操作。
输入模块由3个按键组成,分别控制电机的风速和风种选择,以及电扇总开关.显示模块由六个LED发光二极管组成,显示风速和风种。
1、单片机控制系统
对于单片机中央处理系统,根据要求,可以选择AT89C51单片机作为中央处理器,作为整个控制系统的核心,AT89C51内部包含了定时器,程序存储器、数据存储器等硬件,其硬件能符合整个控制系统的要求,不需要外接其它存储器和定时器件、方便,整个系统结构紧凑,抗干扰能力强,性价比高,AT89C51单片机温度测控仪采用ATMEL公司的AT89C51单片机,采用双列直插(DIP),有40个引脚。
该单片机采用ATMEL公司的高密度非易失性存储技术制造,及美国INTEL公司生产的MCS—51系列单片机的指令和引脚设置兼容。
单片机应用系统的设计是及单片机直接接口的数字电路范围内电路芯片的设计。
如存储器和并行接口的扩展、定时系统、中断系统扩展,一般的外部设备的接口,图1是单片机以及其外围复位电路,晶振电路等组成的最小单片机系统,选择频率为12MHz的晶振,根据时钟周期的计算式,算得时钟周期为1/12微秒(us),根据机器周期=12*时钟周期,可算得机器周期为1微秒(us):
图1单片机最小系统
2、按键电路
按键电路如图2所示,设计中输入模块靠按键电路实现,按键共有三个,分别为停止、风速、风种;按键采用触发式按键,在单片机上只需检测输入端的触发电平,在按键连接时,需要在按键及地之间并联一个值不大的电容,以消除按键产生的按键抖动时带来的冲激等。
图2按键电路
3、显示电路
显示部分采用的是六个LED发光二极管,二极管的输入端直接连单片机的I/O口输出端,前三个分别显示电扇的强、中、弱风速,后三个分别显示电扇的自然、正常、睡眠风种,当相应按键按下时,显示风速和显示风种的LED会点亮,连续按下时,显示会由“弱"→“中”→“强”、以及“正常”→“睡眠”→“自然”重复不断变化,同时在单片机的控制电机端输出相应的状态改变量以控制电机状态.图3是按键状态采集的电路。
图3显示电路
•电机控制电路
设计中采用PROTUES中自带的直流电机来代替电风扇,直流电机是靠输入的信号占空比来控制的,占空比越大转速就越高,所以在电路中控制风速就控制输入给直流电动机的占空比,对于控制电扇的风种,那就要控制给电机的占空比的时间就行,设计中的睡眠和自然状态是控制输入占空比的时序,控制电机的间断工作达到题目的要求。
以下是电机控制电路图,在电机及地连接的地方,需并联一个电容,因为在旋转时,转子的电流是经碳刷和整流子接触,供给转子绕组,在工作时,接触点有火花,并产生电磁波,连电容就是为了消除或减小电磁干扰.
图4电机控制电路
四、程序设计流程图
程序的流程图表示程序各个步骤的内容以及它们的关系和执行的顺序,它说命了程序的逻辑结构,可以按照它顺利地写出程序,而不必在编写时临时构思,甚至出现逻辑错误,流程图不仅可以指导编写程序,而且可以在调试程序中用来检查程序的正确性,图5是本设计用流程图.
图5程序流程图
五、性能的测试
1、风速的测试
在仿真图中,第一条线为风速,第二条线为风种,第三条线为输出控制电机转速信号线。
A、风速有三个档,其中,慢速档的仿真结果图如图6所示,此时状态为正常,图7是电动机转速,控制电机转速的占空比是30%,此时,有电机上的显示最大转速为50转左右,到达50转之后将上下浮动不超过3转:
图6慢速、正常状态下输出信号的仿真图
图7慢速、正常状态下电机转速
B、中速档的测试。
其中,中速档时控制电动机转速的占空比是50%,此时状态为正常,相应的仿真为图8所示,图9是电动机转速显示,中速档时电动机转速基本在100转左右,上下浮动不超过2转:
图8中速、正常状态下输出信号仿真图
图9中速、正常状态下电机转速
C、快速档的测试.快速档时控制电动机转速的占空比是95%,此时状态为正常,相应的仿真图为图10所示,图11为电动机转速,在占空比为95%时电动机转速在200转左右,上下浮动不超过1转;
图10快速、正常状态下输出信号仿真图
图11快速、正常状态下电机转速
2、风种的测试
A、选择风速为中,控制电机转速的占空比为50%,选择风种的状态为自然,此时的仿真图如图12所示,图中,最后的输出信号表示的意思是电机转一秒,停转一秒,最后的输出信号是由风速信号及风种信号相及得到的;
图12中速、自然状态下输出信号仿真图
B、选择风速为中,控制电机转速的占空比为50%,选择风种的状态为睡眠,此时的仿真图如图13所示,最后输出的信号的意思是电机转两秒,停转两秒;
图13中速、睡眠状态下输出信号仿真图
六、结论
该设计基本能满足课设的要求,通过实验仿真的结果可得,按下按键改变风速的状态后,电机的转速会随着改变而改变,而在改变风种的状态后,电机也随着改变而做相应的响应,但是,在电路设计上面,或者是在单片机程序控制上面可能还有些缺陷或者需要改进的地方,在实际仿真的时候,得到的占空比以及最后的输出的信号等等都存在着一些失真,不是理论上的标准方波,在跳变过后任然有着少许上升或者下降的趋势,但是这个并不影响电机的运转响应。
单片机的控制是在按键的响应下进行的,在输出方波信号时,采用的是51单片机内部自己带有的定时器中断,51单片机中的两个定时/计数器中断一个用来定时产生不同占空比的信号,另一个用来执行中断程序;期间在按键消抖时要用到延时程序,以免发生按键之后的跳变,延时程序是以循环耗时方式编写。
七、性价比
设计中使用的电阻,电容,晶振,触发式按键,发光二级管等是市场是很容易买到的材料,价格便宜,AT89C51单片机现在作为大多数的教学用具,也很容易买到,而且不贵,一块单片机能烧写程序上千次,不容易损坏,而且具有寿命长、速度快、低功耗、低噪声、可靠性高的特点,整个设计性价比高.
八、课设体会
在写课设论文时我深深体会到搞设计的艰辛及困难,电风扇我们都熟悉,但要想把单片机技术运用到电风扇上是不简单的事情。
这次课程设计让我学到了许多课本上没有的知识,使我受益匪浅,我不仅对单片机有了理论上的更进一步的认识,而且更是将理论运用到实践里去了,这对于我们来说是更珍贵的,在课堂上接受的教育远远没有真正做一个课程设计来的实际,但是也必须要有课堂上的理论才能完成,这一点是毫无疑问的.并且让我认识到无论做任何事情,都要认真对待,要知道自己要做什么,怎么样才能做到,是否能够做好,因此,这些都需要我们认真的分析,遇到困难要及时寻求老师的帮助。
我相信,没有解决不了的问题。
我会一步一个脚印,踏踏实实的向我的目标前进。
在对单片机的控制当中,我对单片机的内部了解更清晰了,包括中断定时/计数等功能,在及同学讨论以及解决问题的过程中,也学习了很多.单片机的强大功能是毋庸置疑的,但是要熟练的运用控制它,是一个不简单的问题,在课程设计过程中遇到了很多的问题,诸如没有认识到延时对单片机运行代码的重要性等,这次的课程设计,也培养了我的创新精神,增强了解决问题的能力。
在这过程中收获的东西是宝贵而且不可代替的,如果有机会,自己也应该多多练练,增强自己的专业素质能力.
参考文献
[1]沙占友。
李学芝著.中外数字万用表电路原理及维修技术.[M]北京:
人民邮电出版社,1993年
[2]童诗白、华成英主编者.模拟电子技术基础.[M]北京:
高等教育出版社,2006年
[3]戴伏生主编.基础电子电路设计及实践.[M]北京:
国防工业出版社,2002年
[4]谭博学主编.集成电路原理及应用。
[M]北京:
电子工业出版社,2003年
附录I总电路图
附录II元器件清单
序号
编号
名称
型号
数量
1
U1
单片机
89C51
1
2
R1—R6
电阻
270Ω
6
3
R7
10Ω
1
4
R8
2k2Ω
1
5
R9
10kΩ
1
6
M1
直流电机
DC-MOTOR
1
7
C2—C3
电容
33p
2
8
C1、C4-C7
10u
5
9
K1—K4
触发按键
button
4
10
X1
晶振
12MHz
1
11
L1—L6
LED
bule
6
附录III源程序
#include"reg52。
h”
#defineuintunsignedint
#defineucharunsignedchar
voiddelay(uintz);
uinta,b,count,m,n,num;
sbitkey1=P1^0;
sbitkey2=P1^1;
sbitkey3=P1^2;
sbitpwm=P1^5;
sbitcd=P1^6;
sbitef=P1^7;
voidclose()
{
count=0;
}
voiddisplay()
{
while
(1)
{
if(key1==0){P2=0x00;P3=0x00;close();delay(5);}
else
if(key2==0)
{
a++;
if(a==1){P2=0x01;count=6;delay(5);}
else
if(a==2){P2=0x02;count=10;delay(5);}
else
if(a==3){P2=0x04;count=19;delay(5);}
else
if(a==4)a=0;
delay(10);
}
else
if(key3==0)
{b++;
if(b==1){P3=0x01;num=2;delay(5);}
else
if(b==2){P3=0x02;num=40;delay(5);}
else
if(b==3){P3=0x04;num=80;delay(5);}
else
if(b==4)
b=0;
delay(10);
}pwm=ef&cd;
}
}
voidinit()
{
EA=1;
TMOD=0x11;
ET1=1;
TR1=1;
ET0=1;
TR0=1;
delay
(1);
}
voidmain()
{
m=0;
n=0;
a=0;
b=0;
P2=0x00;
P3=0x00;
init();
display();
}
voidtime0_isr()interrupt1using1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
m++;
if(mef=1;
else
ef=0;
if(m==20)
m=0;
}
voidtime1_isr()interrupt3using2
{
TH1=(65536-50000)/256;
TL1=(65536—50000)%256;
n++;
if(n<(num/2))
cd=0;
else
cd=1;
if(n〉num)
n=0;
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x—-)
for(y=110;y〉0;y--);
}