路灯自动调光系统.docx
《路灯自动调光系统.docx》由会员分享,可在线阅读,更多相关《路灯自动调光系统.docx(20页珍藏版)》请在冰豆网上搜索。
路灯自动调光系统
创新设计与实践
实训报告
题目:
路灯自动调光系统
院系名称:
专业班级:
学生姓名:
学号:
指导教师:
教师职称:
起止日期:
2011.12.12—2012.1.8地点:
成绩:
签名:
年月日
路灯自动调光系统
摘要
针对时下人们对灯具亮度实现智能化的要求,本文完成了一种基于光敏二极管的光探测器及亮度控制器。
首先使用光敏二极管驱动电路产生在ADC0809检测范围的亮度电压,然后通过51单片机读取亮度信号,亮度信号的等级送入数码管显示。
再根据亮度信号产生PWM信号,最后将调制后的PWM送入数码管和高亮度LED驱动电路而完成亮度控制的功能,也可以将PWM转换成所需调节亮度的灯具能接受的电量信号而完成亮度控制。
亮度控制等级由A/D转换的位数确定,共有8级,最高可以达到16级。
关键字:
路灯光强自动调控
引言...........................................................4
1光敏二极管的简介.............................................5
1.1光敏二极管简介.........................................5
1.2光敏二极管与光敏电阻的比较.............................5
1.3光敏二极管的驱动电路...................................5
2ADC00809的驱动电路..........................................7
2.1ADC0809简介...........................................7
2.2ADC0809的内部逻辑结构.................................7
2.3各引脚的功能及连接.....................................8
3数码管显示驱动电路...........................................11
3.14HC245简介............................................11
3.2位驱动电路............................................11
3.3脉冲宽度调制(PWM)简介................................12
3.4PWM控制数码管亮度原理.................................13
3.5PWM控制高亮度发光二极管亮度的驱动电路.................14
4单片机最小系统...............................................14
5系统整体框图.................................................15
6软件的设计...................................................16
6.1软件设计的思路..........................................16
6.2根据实录制作程序流程图..................................16
6.3根据流程图编写程序......................................16
7系统的扩展...................................................16
总结.........................................................18
参考文献.......................................................19
附录...........................................................20
引言
在哥本哈根世界气候大会中国承诺2020年国内单位国内GDP二氧化碳排放比2005年下降40%—45%。
作为约束性指标纳入国民经济和社会发展中长期规划,为了实现这一宏伟目标,我们需要从身边的事情做起。
值得一提的是我们平常接触到的灯具一般都是只有两种状态,要么黑要么最亮,也即是说灯具的亮度是不可调的,而且一般都需要人工操作,那么有没有一种能够智能地根据实时的光照情况调节灯具亮度的系统,以达到智能化以及节能环保的功能呢?
本文正是基于这样的思路设计了一种光探测器及亮度控制,实时地根据外部的亮度信号输出脉冲宽度调制(PWM)的PWM信号去控制数码管和LED的亮度;文中给出了生成PWM及调制原理和方法,通过数码管和高亮度LED的实际验证,只要灯具可以接受PWM信号均可以控制其亮度,即使不能接受也可以将PWM信号转换成模拟信号进行控制。
除些之外,文中对系统做出了扩展规划,可以根据实际要求将该系统设计成高精度的照度计。
1光敏二极管的简介
1.1光敏二极管简介
光敏二极管也叫光电二极管,光敏二极管与半导体二极管在结构上相似,其管芯是一个具有光敏特性的PN结,具有单向导电性,因此工作时需加上反向电压。
无光照时,有很小的饱和反向漏电流,即暗电流,此时光敏二极管截止,当收到光照时,反向饱和电流大大增加,形成光电流,它随着入射光强度的变化而变化。
当光线照射PN结时,可以使PN结产生电子,使少数载流子的密度增加。
这些载流子在反向电压下漂移,是反向电流增加。
因此可以利用光照强弱来改变电路中电流。
常见的有2CU.2DU等。
本系统用的是2CU系列的二极管。
1.2光敏二极管与光敏电阻的比较
1与光敏电阻相比,光敏二极管有更宽的光谱效应。
2光敏二极管是PN结机构,由于结构的不同,使得它具有更短的响应时间,通常情况比光敏电阻快三个数量级,并且特殊处理过的光敏二极管,如PIN结光电二极管和雪崩式光电二极管,响应速度极短,已经广泛用于光通信和光信号检测中。
3当所加的电源电压大于9V时,光敏二极管伏安特性近似平行于X轴〔X轴为电压X也即是说再增大电源电压它的光电流也不会再增加。
而光敏电阻的伏安特性是光电流随着电源电压的增大而增大,而且也没有饱和的迹象。
当供电出现波动后,输出电压也会出现相应的波动,所以光敏电阻的精度得不到保证。
4虽然光敏二极管有相比光敏电阻有许多优点,但是前者基于PN结结构,从而使得它的光电流收到温度的影响较大。
1.3光敏二极管的驱动电路
1.3.1晶体管连接方式
图1-1是光敏二极管与晶体管组合应用电路的实例,图1-1(a)为典型的集电极输出电路电路形式,而图4-4(b)为典型的发射极射出电路形式。
集电极输出电路使用于脉冲入射光电路,输出信号与输入信号相反,输出信号一般较大,而发射极输出电路使用于模拟信号电路,电阻RB可以减小暗电流,输出信号与输入信号的相位相同,这使得输出信号很小。
(a)(b)
图1-1
1.3.2运放连接方式
图1-2是光敏二极管VD与运放A组合应用实例团4-5(a)为无偏置方式,图4-5(b)为反向偏置方式。
(a)(b)
图1-2
无偏置电路可以用于测量宽范围的入射光,例如照度计等,但响应特性比不上反向偏置的电路,可用反馈电阻RF调整输出电压,反向偏置电路的响应速度快输出信号与输入信号同相位。
1.3.3直接连接方式
图1-3是直接连接方式的实例。
光敏二极管加反向偏置,响应速度可提高几倍以上。
图1-3(a)是接有较大负载电阻的电路.图1-3(b)是接有较小负载电阻的电路。
图1-3(a)所示电路的输出电压比图1-3(b)所示电路大,但响应特性不如图1-3(a)。
图1-3(b)所示电路的输出电压比图1-3(a)小,但响应速度比图1-3(a)快。
它们的响应特性都比无偏置电路好,但暗电流比无偏置电路大,如果要想提高精度可以使用运放的连接方式,并且在运放的反相输入端接上一个与同相输入相同的反向偏置的光敏二极管,并且要将它的透光窗口遮住,让它输出的只有暗电流,这样就可以补偿温度对输出的影响。
但是如果要这样做就需要使用专业的照度计进行标定,鉴于设备的因素,并且这次设计的精度没有这个要求,直接连接方式已经能够满足所要求的技术指标,所以就显示没有必要,显然直接方式在设计当中是最佳的性价比。
(a)(b)
图1-3
2ADC00809的驱动电路
2.1ADC0809简介
ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。
它是逐次逼近式A/D转换器,可以和单片机直接接口。
2.2ADC0809的内部逻辑结构
由图2-1可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
图2-1
2.3各引脚的功能及连接
2.3.1ADC0809各引脚功能
D0-D7:
8位数字量输出引脚。
IN0-IN7:
8位模拟量输入引脚。
VCC、GND:
5V工作电压。
REF(+):
参考电压正端。
REF(-):
参考电压负端。
START:
A/D转换启动信号输入端。
ALE:
地址锁存允许信号输入端。
EOC:
转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。
OE:
输出允许控制端,用以打开三态数据输出锁存器。
CLK:
时钟信号输入端(一般为500KHz)。
A.B.C:
地址输入线
图2-2
ADC0809对输入模拟量要求为:
输入信号单极性,电压范围是0-5V。
2.3.2地址输入和控制线
ALE为地址锁存允许输入线,高电平有效。
为ALE线为高电平时,地址锁存与译码器将A.B.C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进入转换器进行转换。
A.B和C为地址输入线,用于普通IN0-IN7上一路模拟量输入.容道选择如表2-1
由于设计中只需要检测一路光敏二极管的电压,所以将人A.B.C直接连到地,用IN0通道就行.
2.3.3数字量输出及控制线
START为转换启动信号。
当START上升沿时,所有内部寄存器清零;下降沿时,开始进行A/D转换;在转换期间,START应保持低电平。
EOC为转换结束信号。
当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。
OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。
OE=1,输出转换得到的数据;DE=0,输出数据线呈高阻状态。
D0—D7为数字量输出线。
CLK为时钟输入信号线,由于ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,在设计中使用两个触发器对单片机ALE端口的12/6MHz=2MHz进行两次,分频得到500K。
实际电路如图2-3
图2-3
VREF(+)和VREF(-)为参考电压输入,在设计当中直接将参考电压接到5V和地上。
ADC0809时序图如图2-4所示。
图2-4
3数码管显示驱动电路
3.174HC245简介
74HC245是总线驱动器,典型的TTL型三态缓冲门电路。
由于单片机的数据/地址/控制总线端口都有一定的负载能力,如果负载超过其负载能力,一般应加驱动器。
在实验当中发现如果将数码管的段选直接加到单片机中,虽然也能显示,但是由于单片机吸入的电流过大,单片机的温度明显增加,加74HC245可以起到保护单片机的作用。
图3-1是数码管采用HC245的段选电路。
3.2位驱动电路
如图3-2所示是数码管位选的驱动电路,WM输入为高电平时位选接通电源,当响应的SHE位高电平时数码管接通电源,响应的段选为低电平;PWM输入为低电平时关断电源,无论SEL和段选为何不亮。
3.3脉冲宽度调制(PWM)简介
脉宽调制(PWM:
(PulseWidthModulation)是利用单片机的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
简而言之,PWM是一种对模拟信号电平进行数字编码的方法。
通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。
PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。
电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。
只要带宽足够,任何模拟值都可以使用PWM进行编码。
如果要控制LED的亮度可以采用改变供电电压来改变,但是LED的亮度与电压的关系是非线性的,所以很难精确控制LED的亮度,如果采用来PWM控制那将会变得非常容易,因为LED的亮度与导通时间是成线性关系,所以只要根据光敏二极管采样回来的亮度信号去改变LED的导通时间就可以实现线性的亮度调节。
在实际中PWM广泛应用于LED显示屏的灰度控制,正是由于LED亮度的与导通时间的线性关系,如双色灰度LED显示屏和全彩LED显示屏的控制系统中的亮度控制均是采用这一技术。
3.4PWM控制数码管亮度原理
如3.3所述,数码管和LED灯的导通时间与亮度成线性关系,那么只要能控制导通时间就可以控制亮度,根据这一原理,做出如下设计。
如图3-4所示,脉冲周期=256us,刚好与ADC0809采样的256个电压等级相对应,只要使得光敏二极管驱动部分的输出电压在0-5V的范围,就可以根据采样回来的电压值直接去改变高电平持续的时间。
即是,当ADC0809采样回来的电压值为1则输出的时图2-8的PWM信号,当采样回来的是128时输出的是图3-5的PWM信号。
其余依此类推,这样就可以实现256级的亮度调节,如果增加人A/D的位数到16位,那么数码管和LED管的亮度等级也可以做到216=65536级。
但是只是要完成亮度等级那就没有这个必要,并且也没有做成照度计的要求,所以256级的亮度已经完全满足,在后期可以根据要求轻松地将本设计改成智能化的照度计或者将此亮度调节技术嵌入到其它的设计当中。
周期T=256ms
图3-4
周期T=256ms
图3-5
3.5PWM控制高亮度发光二极管亮度的驱动电路
只要将3.4产生的PWM信号输入到的基极,那么LED的亮度就会与PWM的高电平时间时间成线性关系。
4单片机最小系统
单片机最小系统如图4-1所示
图4-1
5系统整体框图
输出最大5V的电压,那么所接的负载电阻应为100K。
然后将这个电压输入ADC0809整体系统框图如图5-1所示,光敏二极管实际所测最大的光电流为50uA,为了使其输出最大5V的电压,那么所接的负载电阻应为100K。
然后将这个电压输入到ADC0809进行AD转换,单片机再根据电压值来修改PWM的高电平持续时间,用于控制数码管和高亮度发光二极管的亮度,同时将转换后的电压处理后送到数码管显示。
6软件的设计
6.1软件设计的思路
单片机利用读取光敏二极管输出的亮度信号,将这个信号值送入数码管显示,并且根据这个值产生相应脉冲宽度的PWM信号,再将这个信号送入到数码管和高亮度光敏二极管的亮度控制电路来控制它们的亮度。
在产生PWM信号时需要用到两个定时器,一个定时器用于产生周期T=256us的脉冲,另外一个定时器用于控制PWM的脉冲宽度,这样经调制后的PWM信号就会包含有亮度信息,用于控制数码管和高亮度发光二极管的亮度。
6.2根据实录制作程序流程图
图6-1
图6-1是根据6.1的软件设计思想设计的程序流程图
6.3根据流程图编写程序
根据程序流程图编写程序,关键程序如附图所示。
7系统的扩展
如果有专业的照度计进行测量及标定,可以将本系统扩展为照度计,但是由于AD的精度只有8位,作为照度计使用的话需要增加AD的位数,这需要根据技术的要求选择相应精度的AD。
除此之外,要作为照度计的话需要增加光敏二极管驱动电路的频率响应,使得光敏二极管所能检测到的光频率范围更宽,那么就需要减小光敏二极管的负载电阻,但是输出电压会随着负载电阻的减小而减小,所以需要对输出的电压进行放大,以达到AD转换的电压范围。
并且,由于光敏二极管的温度漂移比较严重,需要做出相应的处理;为了防止温漂的影响,在实际应用中我们可以采用差动的方式来获得精确的亮度信息,做法是多加一个与图1-3(a)元件特性参数相同的光敏二极管驱动电路,但是这个光敏二极管的需要特殊处理,使用它无法吸收光线,也即是只需要它的暗电流,然后输入到运算放大器的反相端,运放输出的是两个光敏二极管的差值,如果温度变化,那么两个管的暗电流都会跟着增大,但是只要亮度不发生变化,它们两个之间的差值就不会发生改变,这样整个系统的精度就会得到较大的提高。
除些之外该系统可以根据用户的设定,当外部光源达到用户所设定的值后输出一个控制信号作为开关,控制楼宇及道路的灯光。
如果灯具可以直接接受PWM信号那么就可以控制灯具的亮度,例如大功率发光二极管,如果不可以,也可以将PWM信号转换成模拟量,通过调节这个模拟量来调节灯具的亮度,由此而完成智能化。
也因此使得系统起到环保的作用。
总结
时间飞逝,四周短暂的创新设计实验就接近尾声了,虽然设计的同时也面临着找工作考研集结号,但仍克服重重困难,最终还是完满地完成了设计所做出的要求,出于时间的要求,有些地方做得在完成功能的基础上让硬件和软件更完美。
创新设计的要求还不是非常完美,软件和硬件都有些许缺陷,也只有先完成功能,再用光敏二极管等一步步地深入完成所有的项目。
在此过程中很多同学都在努力找工作、努力学习。
衷心感谢老师和同学的悉心指导和热情帮助,在我设计过程中提供了许多宝贵意见,让我学到了许多知识,开阔了眼界,增强了我的动手和动脑能力。
同时,感激所有我们班的同学,正是他们的努力和对我的帮助,我才能完成这次实训,并从中学到了更多的知识。
我水平有限,所以本设计方案也许存在许多不尽如人意的地方,欢迎老师和同学批评指正。
此外,我们也非常感谢我们学院为我们提供这个机会。
参考文献
[1]《传感器应用设计300例(上册)》[M].张供润编,北京航空航天大学出版社,2008
[2]《传感器原理与应用(第二版)》[M].黄贤武、郑筱霞编著,电大科技大学出版社,1999
[3]《电子器件与电路(第六版)》[M].TheodoreF.BogartJr.编著,清华大学出版社,2006
[4]《传感器和信号调节》[M].RomonPallas-Areny编,清华大学出版社,2003
附录
#include
sbitLED=P2^4;//PWM输出
sbitST=P3^0;//AD0809的START控制端
sbitOE=P3^1;//AD0809的使能控制端
sbitEOC=P3^2;//AD0809的转换完成标志
sbitSEG1=P2^0;//数码管1
sbitSEG2=P2^1;//数码管2
sbitSEG3=P2^2;//数码管3
sbitSEG4=P2^3;//数码管4
ucharDisp_Buf[4];//显示缓存
uintAdc_Data;//AD缓存
uinttemp_adc_data;//用于防止亮度等级范围漂动
ucharcounter_ad,test_data=0x80;//用于限定亮度等级的变化快慢//起始脉冲宽度
ucharcodeSeg_Dig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管段
码
voiddelay(Delay_Ms);//延时1ms
voiddisplay();//显示子程序
uintConver_ADC0809();//AD转换子程序
voidmain()
{
LED=0;//初始化为0
TMOD=0x22;//使用工作方式2
TH0=test_data;//初始化脉冲宽度
TL0=test_data;
TH1=0x00;TL1=0x00;//256us=0.2msf=5Khz
EA=1;//开总中断
ET1=1;//开定时器1使能
ET0=1;//开定时器0使能
TR1=1;//启动定时器1,生成周期为256us的PWM波形
while
(1){display();//调用显示子程序}
}
voiddisplay()//显示程序{
uchari,temp_light,light;
uinttemp,Adc_temp,temp_data;
counter_ad++;
if(counter_ad>=100){//显示100次后再读取ADC数据
temp_data=Conver_ADC0809();//调用AD转换
counter_ad=0;//清计数
if(temp_data>temp_adc_data){//如果AD转换值大于缓存值
if(temp_adc_data==0xff)temp_adc_data=0xff;
elsetemp_adc_data+=1;//缓存加1
}else{
if(temp_data==temp_adc_data)temp_data=temp_adc_data;//如果AD转换值等于缓存
值,则不变
else{
if(temp_adc_data==0x00)temp_adc_data=0x00;
elsetemp_adc_data-=1;//如果小于则减1
}if(temp_adc_data==0){//如果AD值为0,则关显示
ET1=0;//关定时器1
LED=0;//关PWM}
else{//非零则开户PWM
ET1=1;}}}
Adc_temp=temp_adc_data;//将缓存送入显示缓存
Disp_Buf[0]=Adc_temp%10;//将显示缓存转换到数码管显示缓存
temp=Adc_temp/10;Disp_Buf[1]=temp%10;temp=temp/10;
Disp_Buf[2]=temp%10;temp=temp/10;Disp_Buf[3]=temp%10;
for(i