教室灯光自动控制系统嵌入式系统设计.docx
《教室灯光自动控制系统嵌入式系统设计.docx》由会员分享,可在线阅读,更多相关《教室灯光自动控制系统嵌入式系统设计.docx(28页珍藏版)》请在冰豆网上搜索。
![教室灯光自动控制系统嵌入式系统设计.docx](https://file1.bdocx.com/fileroot1/2023-1/12/b5cbbed1-3073-4d4d-bff2-3e52ca2d383b/b5cbbed1-3073-4d4d-bff2-3e52ca2d383b1.gif)
教室灯光自动控制系统嵌入式系统设计
系统设计说明书
题目:
教室灯光自动控制系统
学校:
昆明理工大学
学院:
信息工程与自动化学院
专业:
电子与通信工程
学号:
学生姓名:
成绩:
2014年12月14日
第1章引言
1.1教室灯光自动控制系统的研究目的
随着社会进步和科学技术的不断发展,人们的生活水平也在不断提高,导致用电负荷的加剧,人类社会的进步越来越依赖于资源的开发和利用。
又由于近几年世界出现的能源危机,以及与日俱增的能源需求,因此,能源缺乏成为世界面临的严重问题,尤其对于我国这样的人口大国来说尤为重要。
在寻找替代品、提高能源利用率和节约能源等几种缓解能源危机的途径中,节能无疑是符合可持续发展的要求。
教室是高等院校学习和交流的场所,随着教室的扩建,对教室照明的需求也越来越多。
同时,高等院校为了便于学生之间进行相互动态的交流,通常都采用分时段开放式自由管理模式,这样对教室照明系统的管理就加大了难度。
由于缺乏对应的高效调配管理自动化系统以及有些学生节能观念淡薄,很多教室能源浪费十分严重,通常出现教室只有几个人,甚至无人时灯光还全部亮着,或者在光照强度满足学习要求时,照明系统还处于工作状态,造成了电能的大量浪费。
因此,提高教室照明系统效率显得至关重要。
1.2教室灯光自动控制系统的研究背景
随着社会经济和科学技术的发展,人类社会的进步越来越依赖于资源的开发与利用,然而与日俱增的能源需求和有限的资源数量形成了巨大的矛盾,能源短缺问题日益突出,成为一个国家经济发展的“瓶颈”。
在寻找替代品、提高能源利用率和节约能源等几种缓解能源危机的途径中,节能无疑是符合可持续发展要求。
英国城市大型彻夜灯光照明现象很少见,无论公司和政府部门,都没有虚浮华丽的所谓“照明工程”。
夜晚漫步在伦敦街头,看不到大面积光华淌泻与楼体通明的景观,所有照明都基本以不影响人们的正常生活节奏为准。
许多店铺橱窗的灯光在打烊后会全部关闭,有些店铺还采用定时关灯装置。
在政府住宅楼和公寓楼内,楼道里的公用灯也大多采用自动断电装置。
作为提高能源使用效率最重要的途径之一,德国政府努力推动能源公司实施“供热供电结合”,鼓励能源公司将发电的余热尽可能用于供暖。
2002年,德国颁布了促进“供热供电结合”的法规,根据这一法规,政府向实施该措施的能源公司,尤其是小型能源公司提供补助,帮助他们置办相应设备。
中国城市每年用于公共照明的能源支出高达280多亿,节能空间巨大。
其中路灯照明能耗占30%以上。
发展城市道路照明的同时,路灯以供街道照明以外,还大力兴建了不少景观照明工程,美化城市的夜景,但同时也带来了能耗的极大浪费。
中国十二五规划已经将城市绿色照明规划纳入重点,该规划除了强调控制污染和产品回收的问题,还着重强调节能降耗,节能新产品的设计等内容,说明我国已经对照明系统方面的节能十分重视,教室照明系统的研究正逐步发展。
目前,我国的照明用电约占世界总用电量的13%左右,采用高效照明产品代替传统的低效产品可节电60%-80%。
如今,北京正大力推行绿色照明工程,已推出上百万只绿色照明光源和部分节能电器。
另外,我国各类院校中,由于同学们的自觉节能意识薄弱,在光线足够强时也开着灯,上完课教室空无一人时灯还亮着的现象普遍存在,而且节能规划极为欠缺,教室的灯光控制完全由管理人员手工代替,教室极多,管理人员忙不过来,这样就造成不必要的电能浪费和经济损失。
对于国外关于教室灯光的自动控制设计,也有一定的发展和研究。
例如,丹麦在能源利用方面很成功,他们不断提供一些节能供热系统,尽可能有效的利用资源,给世界各地对能源的高效利用提供了很好的借鉴;还有欧司朗—斯维尼亚公司不断的推出新型高输出的荧光灯,节约6%的总系统功率,并具有更高的光通量和平均光通量;飞利浦照明公司推出的陶瓷金卤灯代替过去的卤钨灯,可节能60%。
种种迹象表明世界各国都在采取不同的方式来节约能源、节约电能。
第2章系统总体设计
2.1教室灯光自动控制系统组成
教室灯光自动控制系统主要由硬件和软件两部分组成。
硬件部分是设计的前提,是整个系统执行的基础,为软件部分提供程序运行的平台。
软件部分是对硬件部分所体现的信号加以采集、分析、处理,是实现所希望系统达到预期效果必不可少的一部分。
通过硬件与软件配合使用,并结合相应外界可能出现的干扰对其进行消除和改进,最终实现控制系统所希望实现的各项功能的智能照明系统。
2.2教室灯光自动控制系统的功能
教室灯光自动控制系统,以环境光线强度和人体存在作为主要输入参数,同时结合对AT89C51单片机的软硬件进行控制,可以实现自动控制室内灯光的开与关。
当环境光线充足时,无论有无人,教室灯光均不亮;当环境光线较弱时,根据教室内人数决定打开灯的数量。
采用热释红外人体传感器检测人体的存在,采用光敏三极管构成的电路检测环境光的强度;根据教室合理开灯的条件,系统通过对人体的存在信号和环境光信号的识别和智能判断,完成对教室照明回路的智能控制。
整体系统由人体传感器感应信号,再送入单片机进行处理,再由单片机控制控制教室灯光。
另外,为了防止学生学习时间过长而作息不规律的问题,还设置了时钟电路和超时报警电路,在LCD显示器上显示当前时间,当22点时会报警一次,提醒该休息了,延时20秒后蜂鸣器会自动关闭。
2.2.1教室灯光自动控制系统需要的模块
本系统主要包括五个模块分别是:
环境采集模块、热释电红外传感器模块、始终模块、LED显示模块、超时报警模块。
环境采集模块,利用按钮开关模拟光敏三极管,当按钮开关按下时,表示环境光很强,此时灯都不亮;当按钮开关松开时,表示环境光变弱,此时灯亮。
热释电红外传感器模块,利用按钮开关模拟红外传感器检测室内人数,外界环境光较弱时,当人数在十人以下时亮一个灯,人数在十人以上时亮两个灯。
时钟模块,采用DS1302芯片控制,主要实现时分秒的显示。
LCD显示模块,主要实现的功能是显示系统时间和室内人数。
超时报警模块,为了更好地实现自动控制,特设超时报警电路,当系统达到夜间休息时间22:
00:
00时,蜂鸣器自动报警,延时20S后自动关闭。
2.2.2教室灯光自动控制系统的设计程序
此系统的软件设计主要包括环境光采集模块设计、红外传感器模块设计、时钟模块设计以及LCD显示模块设计,而环境光采集模块和红外模块是通过键盘来模拟的。
系统软件用C语言实现,源程序如下:
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineREAD_SEC0X81
#defineREAD_MIN0X83
#defineREAD_HOU0X85
#defineREAD_DAY0X87
#defineREAD_ZHO0X8B
#defineREAD_MON0X89
#defineREAD_YEA0X8D
#defineWRITE_SEC0X80
#defineWRITE_MIN0X82
#defineWRITE_HOU0X84
#defineWRITE_DAY0X86
#defineWRITE_ZHO0X81
#defineWRITE_MON0X88
#defineWRITE_YEA0X8C
#defineWRITE_PROTECT0X8E
/*ucharcodetemp0[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};*/
ucharmiao,fen,shi;
ucharnumber;
sbitS1=P1^0;
sbitS2=P1^1;
sbitS3=P1^2;
sbitrs=P2^0;
sbitrw=P2^1;
sbiten=P2^2;
sbitrst=P2^5;
sbitclk=P2^7;
sbitio=P2^6;
sbitring=P3^5;
sbitled0=P1^2;
sbitled1=P1^3;
sbitACC0=ACC^0;
sbitACC7=ACC^7;
voiddelay(uintk)
{
uinti,j;
for(i=k;i>0;i--)
for(j=110;j>0;j--);
}
voiddelay1()
{;;}
/************液晶显示********************/
voidwrite_1602date(uchardate)
{
rs=1;
delay(5);
rw=0;
delay(5);
en=1;
P0=date;
delay(5);
en=0;
}
voidwrite_1602com(ucharadd)
{
rs=0;
delay(5);
rw=0;
delay(5);
en=1;
P0=add;
delay(5);
en=0;
}
voidinit_1602()
{
write_1602com(0x38);
write_1602com(0x0c);//开显示,不显示光标,光标不闪烁
write_1602com(0x04);//读或写一个字符地址指针不加一,不移屏
write_1602com(0x01);//清屏
write_1602com(0x80);
//write_1602com(0x85);
//write_1602date(0x2d);
//write_1602com(0x88);
//write_1602date(0x2d);
write_1602com(0x80+1);
write_1602date('T');
write_1602com(0x80+2);
write_1602date('I');
write_1602com(0x80+3);
write_1602date('M');
write_1602com(0x80+7);
write_1602date(0x3a);
write_1602com(0x80+10);
write_1602date(0x3a);
write_1602com(0X80+0x40+1);
write_1602date('N');
write_1602date('U');
write_1602date('M');
}
/*****************1302程序********************/
/*********ds1302写入程序*************/
voidwrite_1302(ucharaddr,uchardat)
{
uchari;
rst=0;
clk=0;
rst=1;
//发送地址
for(i=0;i<8;i++)
{
clk=0;
ACC=addr;
io=ACC0;
addr>>=1;
clk=1;
}
//发数据
for(i=0;i<8;i++)
{
clk=0;
ACC=dat;
io=ACC0;
dat>>=1;
clk=1;
}
rst=0;
}
/*********ds1302读出程序*************/
ucharread_1302(uchartemp)
{
ucharreturndate,i;
rst=0;
clk=0;
delay1();
rst=1;
for(i=0;i<8;i++)
{
clk=0;
ACC=temp;
io=ACC0;
temp>>=1;
clk=1;
}
//读取数据
for(i=0;i<8;i++)
{
ACC7=io;
clk=1;
ACC=ACC>>1;
clk=0;
}
rst=0;
returndate=ACC;
returnreturndate;
}
voidinit_1302()//1302芯片初始化子函数(2012-06-18,12:
00:
00,week7)
{
rst=0;
clk=0;
write_1302(WRITE_PROTECT,0x00);//允许写,禁止写保护
write_1302(WRITE_SEC,0x40);//向DS1302内写秒寄存器80H写入初始数00
write_1302(WRITE_MIN,0x59);//向DS1302内写分寄存器82H写入初始数00
write_1302(WRITE_HOU,0x21);//向DS1302内写小时寄存器84H写入初始数12
//write_1302(WRITE_ZHO,0x01);//向DS1302内写周寄存器8aH写入初始数4
//write_1302(WRITE_DAY,0x02);//向DS1302内写日期寄存器86H写入初始数18
//write_1302(WRITE_MON,0x06);//向DS1302内写月份寄存器88H写入初始数06
//write_1302(WRITE_YEA,0x13);//向DS1302内写年份寄存器8cH写入初始数12
write_1302(WRITE_PROTECT,0x80);//打开写保护
}
voiddisplay_sfm(uchardd,uchardat)
{
ucharge,shi;
shi=dat/10;
ge=dat%10;
write_1602com(0x80+dd);
write_1602date(0x30+shi);
write_1602date(0x30+ge);
}
ucharBCD_de(ucharbcd)//将16进制数转换为十进制数
{
uchartemp,num;
temp=bcd/16;
bcd=bcd%16;
num=temp*10+bcd;
return(num);
}
voidkeyscanf(void)
{
if(S1==0)
{
delay(10);
if(S1==0)
{
while(!
S1);
number++;
}
}
if(S2==0)
{
delay(10);
if(S2==0)
{
while(!
S2);
number--;
}
}
}
voidmain()
{
ucharaa,bb;
init_1602();
init_1302();
delay1();
EA=1;
EX0=1;
while
(1)
{
keyscanf();
aa=number/10;
bb=number%10;
miao=BCD_de(read_1302(READ_SEC));
fen=BCD_de(read_1302(READ_MIN));
shi=BCD_de(read_1302(READ_HOU));
display_sfm(11,miao);
display_sfm(8,fen);
display_sfm(5,shi);
if(shi==22&&miao==0&&fen==0)//十点到,铃响
{
ring=0;
}
if(shi==22&&miao==20&&fen==0)//铃响20秒后自动关闭
{
ring=1;
}
if(number<10)//小于十人亮一个灯
{
led0=1;
led1=0;
}
if(number>10)//大于十人灯全亮
{
led0=0;
led1=0;
}
if(number==0)//无人灯灭
{
led0=1;
led1=1;
}
write_1602com(0X80+0x40+6);
write_1602date(0x30+aa);
write_1602date(0x30+bb);
}
}
voidiniter()interrupt0
{
led0=1;
led1=1;
}
2.3教室灯光自动控制系统的运行环境
教室灯光自动控制系统在Proteus软件中进行仿真。
Proteus软件是英国LabCenterElectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前比较好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
使用Proteus软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多媒体技术相结合的综合运用。
本系统首先在Proteus软件中调出所搭建的硬件电路图,再次检查电路连接是否合理,然后在Keil软件中编写实现系统所需功能的C语言程序,并创建“*.hex”文件,将其下载至AT89C51单片机中,运行此系统,检查是否达到了所希望的目的。
第3章硬件系统设计
3.1系统设计图
此系统控制单元主要以AT89C51单片机主控模块为核心,其次为由光敏三极管组成的环境光采集电路和由热释电红外传感器组成的人体存在采集电路为数据收集模块,以及由显示器构成的显示模块。
还有系统供电电源模块、看门狗模块、I2C总线读写EEPROM存储器模块、时钟电路模块、超时报警模块、灯控区模拟模块等。
此系统硬件结构框图如图3.1所示。
此硬件结构电路原理图如图3.2所示。
图3.1系统硬件结构框图
图3.2硬件结构电路原理图
3.2系统主要硬件电路
3.2.1系统主控电路
此系统主控单元是AT89C51单片机,AT89C51单片机是ATMEL公司的一种曾在我国非常流行的一类单片机。
具有与MCS-51产品完全兼容,具有4KB可在系统编程的Flash内部程序存储器,可擦/写1000次,128KB内部RAM,32根可编程I/O口线,2个16位定时器/计数器,6个中断源,可编程串行UART通道,低功耗空闲模式和掉电模式,有片内振荡器和时钟电路等特点;AT89C51共有40个引脚,其中接5V电源正端的40引脚Ucc和接5V电源地端的20引脚Uss未显示。
单片机P1口是一个内部有上拉的8位准双向I/O口;P2口除了是一个内部有上拉的8位准双向I/O口,当CPU以总线方式访问外部存储器时,P2口输出高8位地址;P3口除了是一个内部有上拉的8位准双向I/O口,还具有第二功能。
单片机P0口作为通用I/O口时,由于其内部没有上拉电阻,因此通常要在其外部加一个上拉电阻来提高电流驱动能力,本设计用一个排阻RP1来接单片机所有的P0口。
单片机内部有产生振荡信号的放大电路,通过外接晶振等器件构成稳定的自激振荡电路属于内部方式产生的时钟电路,图中电容C5、C6通常取33PF,可稳定频率并对频率有微调作用。
如图3.3是其最小单元。
图3.3单片机最小系统模块
单片机I/O口与其外围电路接口的分配情况如表1所示。
表1I/O口与外围电路的接口分配
单片机I/O口引脚
外围电路引脚
说明
P0.0-P0.7
D0-D7
LCD数据口
P1.0
JIN
进入教室内人数按钮
P1.1
CHU
走出教室人数按钮
P1.2
D1
LED指示灯
P1.3
D2
LED指示灯
P2.0
RS
LCD数据/命令选择端
P2.1
RW
LCD读写选择端
P2.2
E
LCD读写信号
P2.5
时钟芯片复位端
P2.6
I/O
时钟芯片数据端
P2.7
SCLK
时钟芯片时钟线
P3.2
光敏三极管输入端
P3.5
超时报警信号输入端
3.2.2系统供电电路
由于单片机的供电电压通常为DC5V,而市电电压为AC220V,因此,要得到直流+5V电压,必须进行变压。
变压器若选用输出电压为12V的变压器时,整流滤波后输出电压往往大于12V,因此,应选输出电压为9V的变压器。
当系统接通220V交流电源后,变压器就将220V交流电变压到9V;再经二极管整流桥进行全波整流,电解电容C1、C2滤波;再经一个三端稳压集成电路LM7805;另外,为了缓冲负载突变,改善瞬态响应,输出端还采用了电容C3、C4,最后得到直流+5V电源,用于给主控单元单片机系统及其他外围电路的VCC端供电。
其供电电路原理图如图3.4所示。
图3.4系统供电电路图
3.2.3环境光采集电路
环境光的采集是本设计输入参数之一,基本思想就是将采集到的光信号转换成单片机能够识别的电信号。
光敏电阻能够实现将光信号转变成电信号,而光敏三极管还具有放大信号电流的作用,比光敏电阻对光线的检测要高得多;并且光敏三极管的灵敏度要高于光敏二极管,因此,选用光敏三极管来采集环境光。
光敏三极管与普通半导体三极管一样,是采用半导体制作工艺制成的具有NPN或PNP结构的半导体管。
在结构上,它的引出电极通常只有两个,也有三个的。
当无光照时,流过光敏三极管的电流就是正常情况下光敏三极管集电极与发射极之间的穿透电流Iceo,它很小,是光敏三极管的暗电流;当有光照射基区时,产生的Ib增大,成为光电流Ie,而Ie的大小随光照强度的增强而增强,于是在负载电阻上就能得到随光照强度变化而变化的电信号。
由于本设计是在Proteus中仿真,故用按键开关K2模拟光敏三极管。
环境光采集模拟电路如图3.5所示,当环境光强大于一定程度,即相当于按键开关K2闭合时,三极管2N3416基极电压升高,使其饱和导通,其集电极输出低电平;当自然光强小于一定程度,即按键开关K2打开时,三极管2N3416截止,其集电极输出高电平[6]。
图3.5环境光采集模拟电路
3.2.4人体热释电红外传感器电路
自然界中的物体都会发射红外线,但波长各有不同。
热释电红外传感器主要是由一种高热电系数的材料,如锆钛酸铅系陶瓷、钽酸锂、硫酸三甘钛等制成的探测元件,在每个探测器内装入一个或两个探测元件,并将两个探测元件以反极性串联,以抑制由于自身温度升高而产生的干扰。
由探测元件将探测并接收到的红外辐射转变成微弱的电压信号,经装在探头内的场效应管放大后向外输出。
人体辐射的红外线中心波长为9~10微米,而探测元件的波长灵敏度在0.2~20微米范围内几乎稳定不变。
在传感器顶端开设了一个装有滤光镜片的窗口,这个滤光片可通过光的波长范围为7~10微米,正好适合于人体红外辐射的探测,同时将灯光、阳光及其他红外辐射滤除,因此热释电红外传感器只对运动的人体敏感。
热释电红外传感器有许多优点,例如:
其本身不发射任何类型的辐射,器件功耗很小,隐蔽性好,价格低廉;夜间也可工作;可以防小动物干扰、抗电磁干扰、抗灯光干扰等。
但容易受各种热源、光源干扰;当环境温度和人体温度接近时,探测灵敏度下降,有时会造成短时失灵。
目前,人体热