电子系统设计大赛作品申报.docx
《电子系统设计大赛作品申报.docx》由会员分享,可在线阅读,更多相关《电子系统设计大赛作品申报.docx(19页珍藏版)》请在冰豆网上搜索。
电子系统设计大赛作品申报
作品简介
实物图片
我们设计的智能窗帘有自动控制和远程遥控控制两种模式,窗帘在光强时自动开启,在光弱时自动关闭。
同时遥控也能控制它的开闭,1键是窗帘总开关,控制窗帘的启动和停止。
2键控制窗帘打开,3键控制窗帘关闭,4键是由遥控模式转换到自动模式,根据光照情况,窗帘自动开关。
用两个电机来带动窗帘的动作,在两端安装了两个光电开关,当窗帘到头时会自动停止。
为增加窗帘的实用性,我们还增加了防盗报警功能,利用人体感应模块、语音芯片、扬声器组合设计而成,当人体接近感应模块时,会自动发出报警的声音来提醒主人。
平台选型说明
单片机开发板(以STC15F2K61S2芯片为控制核心)
设计说明
摘要
随着现代社会的高速发展,人们对室内设计智能化的要求也越来越高。
方便与享受的智能窗帘对于现代快节奏的人们生活来说,是适应现代化办公和生活环境的需要,是人们生活水平提高的一个标志。
本课题介绍基于stc15f2k60s2单片机控制的智能窗帘系统,它采用了无线遥控技术,实现在室内任何地方,只要轻按遥控器,窗帘就会随心所欲地打开或关闭功能。
控制系统模式分为红外模式和光敏电阻模式以及按键模式,实现了窗帘的智能化控制。
关键词:
智能家居;stc15f2k60s2单片机;智能窗帘;红外线遥控;光敏电阻模块;H桥式电机驱动电路;
1功能简介
电路可以由三种不同的方式来控制窗帘动作,主要通过不同的控制模式控制。
手动模式拥有最高优先处理权,有两个按键对其进行操作,可以控制电机的正反转,即可实现窗帘的开关;若处于自动状态下,用光敏电阻对外部环境进行采光,通过单片机对电机进行控制,实现天亮窗帘自动打开,天黑窗帘自动关闭这一功能;若采用遥控方式,用遥控电路对其控制,实现遥控开启关闭窗帘及自动模式的开启关闭的功能。
2工作原理
远程遥控功能本智能窗帘通过stc15f2k60s2单片机、红外发射器、一体化接收头以及电机控制系统实现对窗帘的远程控制。
用户通过对遥控器的操作发射红外信号,装在窗帘上的一体化接收头接收到信号后通过解码,再将解码后的信号传给单片机的响应输入口,单片机立即处理信号,控制电机系统拉动窗帘,使其打开或者关闭到用户所需状态。
光控调节功能在屋内合适的地点安放光敏模块,当光照强度改变时,光敏电阻的阻值会随着改变,通过光敏模块的A/D转换器将模拟信号转化成数字信号,单片机处理此信号后控制直流电机,通过直流电机的转动方向控制窗帘的开关。
按键控制功能本系统设计两个按键,分别实现电机正反转,以应对遥控失灵等意外情况。
体现了本系统的人性化设计。
3单元电路原理
(1)电源模块
设计说明
三端集成稳压器的组成包括了串联型直流稳压电路的各个组成部分,另外加上保护电路和启动电路。
在W7800系列三端集成稳压器中,已将三种保护电路集成在芯片内部,作用是限流保护电路、过热保护电路和过压保护电路。
三端集成稳压器电路
当输出电压比较高,应在输入端与输出端之间跨接一个保护二极管VD,如图中有断线点。
其作用是在输入端短路时,使Co通过二极管放电,以便保护集成稳压器内部的调整管。
(2)遥控模块
1号键为整个系统的电源总开关键,1键按下,电机停止转动。
2号健是电机正转键,窗帘打开。
3号键电机反转,窗帘关闭键。
4号键负责开启和关闭自动模式。
自动模式状态下,用光敏电阻对外部环境进行采光,通过单片机对电机进行控制,实现天亮窗帘自动打开,天黑窗帘自动关闭这一功能。
1、红外线发射电路
使用由常规集成电路组成的双通道红外遥控电路,这种遥控电路不需要使用较贵的专用编译码器,因此成本较低。
红外发射模块
设计说明
2、红外线接收电路
采用是一种一体化的红外线接收头,体积小巧、价格低廉、使用方便、无须调整、抗干扰能力强、工作稳定可靠。
三个输出脚依次为:
OUT(红外线接收后经解调、整形的输出脚步)、GND(地)、+(电源正端)。
红外接收模块
设计说明
红外接收模块原理图
(3)光敏电阻模块
应用光控原理工作,天亮窗帘自动打开,天黑窗帘自动关闭。
由运放组成比较电路,同向输入端有两个电阻分压得到一个电压值,作为基准电压进行比较,而反相输入端用一个光敏电阻对外部环境的光线进行采集,利用光敏电阻暗时电阻大,亮时电阻小的特点,来确定反向输入端的电压值。
再两者进行比较,比较后的信号再送入stc15f2k60s2单片机的P3.2口,从而控制电机的正反转。
来实现天亮窗帘自
设计说明
动打开,天黑窗帘自动关闭这一自动控制功能。
(4)光电开关
采用光电开关来判定窗帘开合是否达到设定要求,控制电机自动关闭
光电对射模块
设计说明
程序流程图
设计说明
附录1:
原程序
/*-----------------------------------------------
名称:
智能窗帘
日期:
2012.11
------------------------------------------------*/
#include"STC15F2K.h"//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
sbitIR=P3^2;//红外接口标志
sbitx=P1^0;//窗帘开启停止
sbity=P1^1;//窗帘关闭停止
sbitt=P1^2;//光敏
sbitMA=P0^0;//电机
sbitMB=P0^1;
sbitMC=P0^2;
sbitMD=P0^3;
/*------------------------------------------------
全局变量声明
------------------------------------------------*/
unsignedcharirtime;//红外用全局变量
bitirpro_ok,irok,z=0;
unsignedcharIRcord[4];
unsignedcharirdata[33];
/*------------------------------------------------
函数声明
------------------------------------------------*/
voidDelay(unsignedintt);
voidIr_work(void);
voidIrcordpro(void);
voidgm(void);
/*------------------------------------------------
定时器0中断处理
------------------------------------------------*/
voidtim0_isr(void)interrupt1using1
{
irtime++;//用于计数2个下降沿之间的
设计说明
}
/*------------------------------------------------
延时函数,含有输入参数unsignedintt,无返回值
unsignedint是定义无符号整形变量,其值的范围是
0~65535
------------------------------------------------*/
voidDelay(unsignedintt)
{
while(--t);
}
/*------------------------------------------------
外部中断0中断处理
------------------------------------------------*/
voidEX0_ISR(void)interrupt0//外部中断0服务函数
{
staticunsignedchari;//接收红外信号处理
staticbitstartflag;//是否开始处理标志位
if(startflag)
{
if(irtime<63&&irtime>=33)//引导码TC9012的头码,9ms+4.5ms
i=0;
irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1
irtime=0;
i++;
if(i==33)
{
irok=1;
i=0;
}
}
else
{
irtime=0;
startflag=1;
}
}
/*------------------------------------------------
定时器0初始化
------------------------------------------------*/
voidTIM0init(void)//定时器0初始化
{
设计说明
TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值
TH0=0x00;//重载值
TL0=0x00;//初始化值
ET0=1;//开中断
TR0=1;
}
/*------------------------------------------------
外部中断0初始化
------------------------------------------------*/
voidEX0init(void)
{
IT0=1;//指定外部中断0下降沿触发,INT0(P3.2)
EX0=1;//使能外部中断
EA=1;//开总中断
}
/*------------------------------------------------
键值处理
------------------------------------------------*/
voidIr_work(void)//红外键值散转程序
{
switch(IRcord[2])//判断第三个数码值
{
case0x0c:
MA=0;MB=0;MC=0;MD=0;z=0;break;//1相应的按键值
case0x18:
MA=1;MB=0;MC=1;MD=0;z=0;break;//2
case0x5e:
MA=0;MB=1;MC=0;MD=1;z=0;break;//3
case0x08:
z=1;break;//4
default:
break;
}
irpro_ok=0;//处理完成标志
}
/*------------------------------------------------
红外码值处理
------------------------------------------------*/
voidIrcordpro(void)//红外码值处理函数
{
unsignedchari,j,k;
unsignedcharcord,value;
k=1;
for(i=0;i<4;i++)//处理4个字节
{
设计说明
{
for(j=1;j<=8;j++)//处理1个字节8位
{
cord=irdata[k];
if(cord>7)//大于某值为1,这个和晶振有绝对关系,这里使用12M计算,此值可以有一定误差
value|=0x80;
if(j<8)
{
value>>=1;
}
k++;
}
IRcord[i]=value;
value=0;
}
irpro_ok=1;//处理完毕标志位置1
}
/*------------------------------------------------
主函数
------------------------------------------------*/
voidmain(void)
{
EX0init();//初始化外部中断
TIM0init();//初始化定时器
MA=0;
MB=0;
MC=0;
MD=0;
while
(1)//主循环
{
if(irok)//如果接收好了进行红外处理
{
Ircordpro();
irok=0;
}
if(irpro_ok)//如果处理好后进行工作处理,如按对应的按键后显示对应的数字等
{
Ir_work();
设计说明
}
if(z==1)
{
if(t==1)
{
MA=0;MB=1;MC=0;MD=1;
if(x==0)
{
Delay(200);
if(x==0)
{
MA=0;MB=0;MC=0;MD=0;
while(t)
{
if(irok)//如果接收好了进行红外处理
{
Ircordpro();
irok=0;
}
if(irpro_ok)//如果处理好后进行工作处理,如按对应的按键后显示对应的数字等
{
Ir_work();
}
}
}
}
}
else
{
MA=1;MB=0;MC=1;MD=0;
if(y==0)
{
Delay(200);
if(y==0)
{MA=0;MB=0;MC=0;MD=0;
while(!
t)
{if(irok)//如果接收好了进行红外处理
{
Ircordpro();
irok=0;
}
设计说明
if(irpro_ok)//如果处理好后进行工作处理,如按对应的按键后显示对应的数字等
{
Ir_work();
}
}
}
}
}
}
}
}
附录2:
电路图
设计说明
作品特色
对于室内的窗帘而言,它不仅要具有遮光作用和美化功能,更要具有方便智能的使用功能。
红外远程控制窗帘的开合程度;根据光强度自动调节窗帘以使屋内达到舒适惬意的环境;还可以进行定时开闭窗帘。
我们的设计兼容自动模式和遥控模式,使得我们的设计更加人性化、智能化,使得我们的设计更具有实用性和创新性。
另外,我们所涉及的报警功能,是利用人体感应模块,人体发射的红外线被模块感应,一定距离内报警,这比以往的红外对射报警或接触性报警更安全、可靠,更具先进性。
声明
本参赛队伍所有成员一致同意,在不涉及技术泄密的情况下,大赛主办方及相关技术支持单位,可以将该参赛作品用于大赛等有关活动使用。