资源描述
太阳能LED露台灯的设计
院 (系) ***
专 业 ***
班 级 ***
学生姓名 ***
指导老师 ***
2010年12月21日
课 程 设 计 任 务 书
1. 设计题目: 太阳能LED露台灯的设计
2. 应完成的项目:
3. (1)查阅资料,设计环保类型的作品,确定方案。
4. (2)通过搜索资料,完成LED灯和太阳能系统的基本设计。
5. (3)将两者进行可行性组合,进行调试,分析机构的合理性和安全性。
6. (4)撰写设计说明书, 总结、心得体会等。
7. 参考资料以及说明:
(1)王建华,吴季平,徐伟.太阳能应用研究进展[J].水电能源科学,2007(4)
(2)吴理博,赵争鸣,用于太阳能照明系统的智能控制器[J].清华大学学报
(3)郭廷玮,刘鉴民等.太阳能的利用[M].北京:北京科技文献出版社,1987
(4)华坤,李彦.太阳能LED路灯控制器的设计[J].微计算机信息,2009(2)
目 录
摘 要 1
第一章 绪论 2
1.1 引言 2
第二章 太阳能电池板与蓄电池的选取 3
2.1 太阳能电池板选取 3
2.2 蓄电池的选取 3
第三章 系统硬件设计 4
3.1 太阳能控制器硬件设计 4
3.2 LED的选择设计 5
3.3 LED组合及驱动方式 6
第四章 系统软件设计 7
4.1 工作原理介绍 7
4.2 太阳能控制器 7
4.3 单片机软件编程 7
总 结 9
参考文献 10
附 件 11
摘 要
由于全球性能源危机,世界普遍重视可再生能源的利用与研究。太阳能作为一种新兴的绿色能源,以其永不枯竭、无污染等优点,正得到迅速的推广应用。随着世界能源危机的加剧,各国都在寻求解决能源危机的办法,一条道路是寻找新能源和再生能源的利用;另一条是寻求新的节能技术,降低能源的消耗,提高能源的利用效率。太阳能是地球上最直接最普遍也是最清洁的能源,太阳能作为一种大量可再生能源,每天达到地球表面的辐射能大约等于2.5亿桶石油,可以说是取之不尽,用之不竭。LED的光谱几乎全部集中于可见光频段,所以发光效率高,一般人都认为,节能灯可节能4/5是伟大的创举,但LED比节能灯还要节能1/4,这是固体光源更伟大的改革。
为积极响应国家节能减排、大力开发利用新能源的号召,以实际应用为目的,围绕太阳能光伏发电技术和ID照明技术.设计了一套太阳能LED灯照明系统。介绍了太阳能电池功率的选取原则及与蓄电池容量的匹配方法,重点分析研究了基于ATmega128单片机和XLT604驱动器的太阳能照明系统中的太阳能控制器和LED驱动,同时就ID在芯片的功率选取、组合方式等问题上进行了分析。所设计的太阳能LED灯照明系统照度良好、环保节能,满足家庭所需照明的要求。
太阳能LED照明集成了太阳能与LED的优点。
关键词:太阳能, LED灯,节能
第一章 绪论
1.1 引言
跨入21世纪后,人类面临着实现经济和社会可持续发展的重大挑战,如何能在能源有限和环境保护的双重制约下发展经济已成为全球的热点问题。而能源问题更为突出,不仅表现在常规能源的匮乏,更严重的是化石能源的开发利用更加剧了环境的恶化。主要表现为以下几个方面:
(1)能源短缺。常规能源的有限性和分布不均匀,造成了世界上大部分国家能源供应不足,不能满足其经济发展的需求。从长远来看,全球已探明石油储量只能用到2020年,天然气也只能延续到2040年左右,即使储量丰富的煤炭资源也只能维持二三百年。因此,人类迟早要面临化石燃料枯竭的危机局面。
(2)环境污染。燃烧煤、石油等化石燃料,每年有数十万吨硫等有害物质排入天空,是大气环境遭到严重污染,直接影响居民的身体健康和生活质量;甚至在局部地区形成酸雨,严重污染水土资源。
(3)温室效应。化石能源的利用不仅造成环境污染,同时会排放大量的温室气体,产生温室效应,引起全球气候变化
近年来随着太阳能光伏发电技术和LED照明技术的发展,太阳能LED发光灯已进入了城市照明领域。LED作为照明光源与传统的照明光源相比具有直流低电压驱动、耗电量少、抗振动、寿命长、纳秒级的响应速度、设计空间大、环保、可连续开关闪断。能轻松实现0—100%调光功能等优点,被认为是新一代的绿色照明设备。太阳能LED节能灯是以太阳能作为能源。每个路灯均是独立的,安装方便,无需铺设电缆电线,无需交流电能和电费,采用直流供电,光控定时控制,安全可靠、节能、经济、环保,实用。
第二章 太阳能电池板与蓄电池的选取
2.1 太阳能电池板选取
目前单晶硅太阳能电池的光电转换效率约为15%,最高达到24%。是目前所有种类的太阳能电池中光电转换效率最高的,技术也最为成熟。使用寿命一般可达15A,最高可达25A。多晶硅太阳能电池比单晶硅太阳能电池的光电转换效率要降低不少,其光电转换效率约12%,同时多晶硅太阳能电池的使用寿命也要比单晶硅太阳能电池短。非晶硅薄膜太阳能电池光电转换效率偏低。
目前国际先进水平约为l0%,且不够稳定,随着时间的延长,其转换效率衰减,直接影响了其实际应用。所以目前多采用单晶硅太阳能电池。根据太阳能辐射原理。太阳能电池方阵面上所获得辐射量的多少与很多因素有关:当地的纬度、海拔、大气的污染程度或透明程度、一年当中四季的变化、一天时间的变化、到达地面的太阳辐射值、散分量的比例、地表面的反射系数、太阳能电池方阵的运行方式或固定方阵的倾角变化以及太阳能电池方阵表面的清洁程度等。太阳能照明系统充放电效率取0.75。太阳能电池组件组失修正系数取O.95,灰尘遮挡及其他损失修正系数取0.9O。经过查询资料和单位换算及简化处理后。
可得到太阳能电池总用量P的计算公式
P=-5 618xAxQd(KopxHL)
式中,Q为负载日功耗(WH);巩为水平面年平均13辐射量(KJ/(m2-d));Kop为斜面辐射最佳辐射系数;A为安全系数,一般取1.1~1.3。
2.2 蓄电池的选取
I21蓄电池的容量要根据太阳能电池板的功率和LE D路灯的功率以及照明时间来决定.蓄电池应与太阳能电池、LED路灯相匹配。可用一种简单方法确定它们之间的关系。太阳能电池功率必须高出负载功率4倍以上。系统才能正常工作。太阳能电池的电压要超过蓄电池的工作电压20%~30%,才能保证给蓄电池正常蓄电。因此,蓄电池容量必须比负载日耗量高6倍以上为宜。
蓄电池的容量Be的计算公式:
Be= (PLxlOxD)/(Kb·V)
式中.PL为日平均耗电量,D为阴雨天数, 6为安全系数,1.1~1.4 (包括了温度修正系数 :0℃上为l,一l0℃上为1.1,一1O℃下为1.2,放电深度cc=O.75),V为工作电压。根据上式可以估算出蓄电池的容量,同时蓄电池的充电效率的高低取决于充电的方式。根据系统要求和对各种指标的核定,这里选用12V/100Ah阀控密封式铅酸蓄电池。
第三章 系统硬件设计
3.1 太阳能控制器硬件设计
太阳能控制器全称为太阳能充放电控制器.是控制太阳能电池方阵对蓄电池充电以及蓄电池给负载供电的自动控制设备.能自动防止蓄电池过充电和过放电。它对蓄电池的充、放电条件加以规定和控制,并按照负载的电源需求控制太阳电池组件和蓄电池对负载的电能输出,是整个系统的核心控制部分。本文设计的充电控制器用ATmega128单片机作为主控器件,检测太阳能电池板的输出电压,选择适合的DC/DC支路,检测蓄电池的电压值,根据蓄电池的电荷状态,选择合适的充电方式,为蓄电池提供过充电、过放电保护。图1为采用斩波式PWM充电原理图,检测蓄电池的充电端电压,将检测得到的蓄电池端电压与给定点电压比较。若蓄电池的电压小于给定电压.斩波器全通,迅速给蓄电池充电;若大于给定电压,则根据比例调整功率管的占空比。充电进入慢充阶段,改善充电特性,最后进入涓流充电,防止过充。
下图是PWM原理图:
图1 PWM原理图
AVR128单片机(PB4)给出充电的控制信号,即PB4=I,NPN型0805的i极管导通,此时集电极接地,使得IRF4905栅源电压钳位在一1OV,IRF4905管导通,太阳能电池板向蓄电池充电;反之,NPN型0805三极管截止I,a=0 V,IRF4905管断开,太阳电池板不能向蓄电池充电。ATmega128内置1O位的逐次逼近型A/D转换器。A/D转换器与8通道的模拟多路复用器连接,采样端口F的8路单端输入电压。蓄电池正极与单片机PF1引脚相接,当电压低到lOV,单片机自动检测到并作出相应处理,如图2所示。
图2 系统硬件电路
3.2 LED的选择设计
按目前市场产品的输入功率对LED分类,其中输入功率为几十MW的,称为传统的小功率芯片;其输人功率小于1 W的,为功率LED:输入功率等于1 W 或大于1 W 的,则为W级功率(大功率)LED。目前大功率比较常见的有1,3,5,8,10 W。已批量应用的有1 W 和3 W LED,并正朝大电流(300 mA~1.4 A)、高效率(60~1 204 in1,)、亮度可调的方向发展。大功率LED节能灯采用单颗功率大于1 W以上的LED。选用美国CREE公司的3 W LED将多个芯片集成于印刷电路板上排列为一定间距的点阵作为平面发光源,组合成一个大功率LED单体模块,装入节能露台灯灯具中,借此提高芯片面积,并增加发光量。
将多个LED集中在一起设计露台照明,除足够的光通量和合理的光学设计保证合理的光分布外,更为重要的是散热问题。由于露台灯几本都是在户外夜间使用,散热面位于侧上面以及体型受限制较小等特点。有利于空气自然对流散热。所以LED灯选择自然对流散热方式.同时整灯采用高导热系数铝作为散热主体,解决了LED的散热问题。
3.3 LED组合及驱动方式
常用的LED组合方式有3种:并联、串联和混联。
1)并联方式要求LED驱动器输出较大电流,负载电压较低。分配在所有LED两端电压相同,当LE D的一致性差别较大时,通过每颗LED 电流不一致,其亮度也不同。
2)串联方式要求LED驱动器输出较高的电压。当LED的一致性差别较大时,分配在不同的LED两端电压不同,通过每颗LED的电流相同,LED的基本亮度一致。
3)混联方式在需要使用比较多LE D时,如果将所有LED串联,将需要LED驱动器输出较高的电压:如果将所有LED并联,则需要LED驱动器输出较大的电流。将所有LED串联或并联,不但限制着LED的使用量,而且并联LED负载电流较大,驱动器的成本也会大增。混联方式的LED数量平均分配,分配在一串LED上的电压相同,通过同一串每颗LED上的电流也基本相同,LED亮度一致。同时通过每串LED的电流也相近。
所以根据太阳能LED露台灯设计实际需要。选择LED混联方式.并选用XLT604驱动器设计驱动电路来驱动LED,如图3所示。
图3 XLT604功能框图
XLT604各引脚主要功能有:LD为线性输入调光端:ROSC为振荡电阻接人段;CS为LED 电流采样输入端;GND为芯片地;GATE为驱动外部MOSFET栅极;VDD为芯片电源:PWM为PWM输入调光端,兼作使能端。
第四章 系统软件设计
4.1 工作原理介绍
系统工作原理简单,利用光生伏特效应原理制成的太阳能电池白天太阳能电池板接收太阳辐射能并转化为电能输出,经过充放电控制器储存在蓄电池中,夜晚当照度逐渐降低至10lux左右、太阳能电池板开路电压4.5V左右,充放电控制器侦测到这一电压值后动作,蓄电池对灯头放电。蓄电池放电8.5小时后,充放电控制器动作,蓄电池放电结束。充放电控制器的主要作用是保护蓄电池。
4.2 太阳能控制器
太阳能控制器应用于太阳能光伏系统中,协调太阳能电池板、蓄电池、负载的工作,是光伏系统中非常重要的组件。使整个太阳能光伏系统高效,安全的运作。
太阳能路灯控制器主要用于家庭、商业区、工厂、交通、牧区、通信以等太阳能供电系统。作为太阳能路灯控制器应该具备以下基本功能:
• 过载保护
• 短路保护
• 反向放电保护
• 极性反接保护
• 雷电保护
• 欠压保护
• 过充保护
• 负载开机恢复设置
4.3 单片机软件编程
程序主流程图
主程序主要完成按键判断及按键操作、定时器自动引发电流检测。以及对按键的操作,和电流检测过放的响应等,是程序的主体部分。
用定时器定期检测负载是否过流,自动检测比手动按键更方便易行。程序中以定时器实现了看门狗的功能,使程序可用性、可靠性均加强。
主流程图如下:
图4 程序主流程图
总 结
通过此次课程设计,它锻炼了我的思考能力,用所学知识设计生活中常见的小小设备,加深了对单片机的了解和利用,并对一些传感器有一个全面的认识。也认识到了可编程控制器技术对人们生活的影响,假如,社会都进入了一个全自动化的时代,繁重的人力资源将得到解放。
在本次设计中,设计过程中感受到了科学的严谨性,三维建模的重要性。还需要大量的以前没有学过的知识,于是图书馆和Internet成为了我思路的源泉并成为了我很好的助手。我在设计的过程中发现了很多自身存在的不足之处,对以前上课的知识不能很好的融会贯通。证明了一切理论知识都必须与实践相结合才能深入得理解和掌握该方面的知识。在查询的过程中,要并不是将所查阅到的资料都一一采纳的,要判断优劣、适当的取舍相关知识。就这样,在不知不觉中我查阅资料的能力也得到了很好的锻炼。知识的学习是有限的,与具体项目相结合从而设计产品,不仅让我懂得了怎样把理论应用与实际,更让我懂得了在实践中遇到的问题是怎样用理论去解决的。这对于即将步入社会的我,对解决在未来的工作所遇到的许许多多问题的能力打下扎实的基础。
在设计过程中,总是遇到这样、那样的问题。有时发现一个问题的时候,需要做大量的工作,花大量的时间才能解决。自然而然,我的耐性便在其中建立起来了。这为我往后的工作积累了一定经验,增强了自信心。
人的一生有许许多多、形形色色的经历。然而每种经历都会给人留下各种各样的所思所想。你所经历的,你所感受的,都会为你将来的生活的前进起到了推波助澜的作用。这次课程设计让我感受到了在平时生活中所不能感受的许多东西,它不能用学到了什么东西来衡量,应该是留给了我什么,带给了我什么,这是我这次课程设计后所值得思考的。
参考文献
[1] 李朝青(编).单片机原理及接口电路[M]:北京航空航天大学出版社,2007.
[2] 黄根春,陈小桥,张望先(编)[M].电子设计教程: 电子工业出版社,2007.8
[3] 董尚斌(主编).电子线路[M]:清华大学出版社,2006.
[4] 王建华,吴季平,徐伟.太阳能应用研究进展[J].水电能源科学,2007(4)
[5] 吴理博,赵争鸣,刘建政.用于太阳能照明系统的智能控制器[J].清华大学学报(自然科学版),2003(09)
[6] 郭廷玮,刘鉴民等.太阳能的利用[M].北京:北京科技文献出版社,1987年版
[7] 华坤,李彦.太阳能LED路灯控制器的设计[J].微计算机信息,2009(2)
[8] 徐甦,郑展望,沈杭军.太阳能路灯技术的国内外研究动态及其在浙江新农村建设中的应用[J].污染防治技术,2007(5)
[9] 王化祥,张淑英(编).传感器原理及应用:天津大学出版社,2007
附 件
附件1
附 录
具体程序实现
1)主程序:
/////////////////////////////////////////////
//外部中断0用于AD采集,外部中断1用于距离设置,T0用于电路检测
/////////////////////////////////////////////
#include "stdafx.h"
//变量定义
float xdata distance=10; //距离
uchar setdis=0; //设置距离标志
uchar xdata num[10]; //存储距离每位字符
uchar xdata count=0; //距离位计数
uchar xdata *pCS_AD=0x8100; //AD地址
uchar cur=0; //存储AD采样电流
uchar cur_flag=0; //电流状态标志
sbit p16=P1^6; //使能AD模拟输入端
sbit p10=P1^0; //LED灯控制端
sbit p33=P3^3; //负载输出LM393控制端
/************延时指令****************/
void delay(int i)
{
while(i--);
}
void start_AD() //启动AD
{
*pCS_AD=0;
}
/**************AD电流采样***********/
void adopt_current() interrupt 0
{
cur=(*pCS_AD)*5/(0xff*3); //额定电流为1A ,额定电流的百分之十三,
//3欧30瓦的电阻
if(cur>=1.1)
{
delay(100);
p10=1; //断开LED
cur_flag=0x01;
ShowCurState();
}
}
/************初始化LCD显示程序****************/
void FirShowLCD()
{
setfocus(0x0000);
prints("Load Current:",14); //负载电流显示
setfocus(0x0016);
prints("mA",2); //显示mA
setfocus(0x0020);
prints("Battery Vpp:",12); //蓄电池电压
setfocus(0x0036);
printchar('V');
setfocus(0x0040);
prints("Distance:",9);
}
/**********************************************************
主函数,数据初始化,键盘扫描及其响应
**********************************************************/
void main()
{
char c;
//定时器初始化设置
TMOD=0x01; //定时器模式选择
TH0=0xff; //THO,TL0赋值
TL0=0xff;
IE=0x87; //允许中断
TCON=0x15; //开定时器
//LCD初始化设置
startup();
FirShowLCD(); //LCD基本显示
/***********按键扫描************************/
while(1)
{
c=get_key_code();
if(c>=0)
{
switch(c)
{
case 0x00:on_00_down();break;
case 0x01:on_01_down();break;
case 0x02:on_02_down();break;
case 0x03:on_03_down();break;
case 0x10:on_10_down();break;
case 0x11:on_11_down();break;
case 0x12:on_12_down();break;
case 0x13:on_13_down();break;
case 0x20:on_20_down();break;
case 0x21:on_21_down();break;
case 0x22:on_22_down();break;
case 0x23:on_23_down();break;
case 0x30:on_30_down();break;
case 0x31:on_31_down();break;
case 0x32:on_32_down();break;
case 0x33:on_33_down();break;
default:break;
}
delay(15000);c=-1;
}
while(get_key_code()==c); //wait for key up
}
}
/**************************************************************
输入距离计算,响应响应操作并显示在LCD上
**************************************************************/
void on_33_down()
{
uchar i;
if(count)
{
distance=0;
for(i=0;i<count;i++)
{
distance+=num[i]*pow(10,(count-i-1));
}
ShowDistance();
if(distance<40)
p10=0; //点亮LCD
for(i=0;i<count;i++) //存储距离数据变量清零
num[i]=0;
count=0;
}
}
2)按键模块
#include "key.h"
static uchar xdata *pCS;
/**********判断是否有键按下****************/
char is_key_down()
{
char a;
pCS=0x8000;
*pCS=0xf0;
a=((*pCS)&0x0f);
if(a^0x0f)
return 1;
return 0;
}
/*****************取得键值*****************/
char get_key_code()
{
char i,a,ret=0;
if(is_key_down())
{
a=((*pCS)&0x0f);
if(a^0x0f)
{
for(i=0;i<4;i++)
if(!(0x01&(a>>i))) {ret|=i;break;}
for(i=0;i<4;i++)
{
*pCS=0xf7>>(3-i);
a=(*pCS)&0x0f;
if(a^0x0f) {ret|=i<<4;break;}
}
return ret;
}
}
return -1;
}
3)LCD
显示程序:
#include "lcd.h"
#include "stdarg.h"
#include "string.h"
#include "stdio.h"
static char xdata * pCS;
//////////////////////////////////////////////////////////////////////
//LCD12864底层驱动
//////////////////////////////////////////////////////////////////////
/**********等待状态操作允许****************/
void _wait(STATE s)
{
uchar a=0;
pCS=CS_CMD;
while(!(a&s)) a=*pCS;
}
/*****************LCD写数据*****************/
void _writedata(uchar dat)
{
_wait(STA1);
pCS=CS_DAT;
*pCS=dat;
}
/*****************LCD读数据*****************/
uchar _readdata()
{
_wait(STA1);
pCS=CS_DAT;
return *pCS;
}
//LCD中层驱动
uchar swth_status=0x9f; //文本模式和光标及图形模式开启状态
uint focus_addr=0; //当前指针和光标所在
#define text_addr 0 //文本模式首地址
#define image_addr 0x0400 //图形模式首地址
#define CGRAM_custom_addr 0x1400 //CGRAM起始地址 0x1000,加上内部字符1k(0x0400)
//普通变量,类似于寄存器功能
uchar ch=0;
uint i=0;
/****************清CGRAM存储区****************/
void clear_cgram_area()
{
set_addr(CGRAM_custom_addr);
auto_write();
for(i=0;i<(1<<10);i++)
_writedata(0);
auto_quit();
}
/****************LCD初始化********************/
void startup()
{
_write2(0,0,CMD_DIS_AREA); //文本首地址
_write2(16,0,CMD_DIS_AREA|0x01); //文本宽度
_write2(LOW(image_addr),HIGH(image_addr),CMD_DIS_AREA|0x02); //图形首地址
_write2(16,0,CMD_DIS_AREA|0x03); //图形 宽度
_write0(CMD_CUR_SHAP); //光标形状
_write2(0,0,CMD_POT_POSI|1); //光标地址
_write2(0x02,0,CMD_POT_POSI|0x02); //CGRAM地址设置
_write0(CMD_DIS_STYL); //显示方式设置
_write0(CMD_DIS_SWTH|0x0f); //显示开关设置, 启用文本显示
_write2(0,0,CMD_POT_POSI|0x04); //地址指针设置
clear_text_area();
clear_imag_area();
clear_cgram_area();
_write2(0,0,CMD_POT_POSI|0x04); //恢复地址指针
}
}
/*************得到浮点数位数****************/
void cal_float(float f,uchar a[],uchar n)
{
float temp=f;
uchar j=cal_bit(f);
uchar i;
for(i=j;i>0;i--)
{
a[i-1]=(ulong)temp%10;
temp/=10;
}
if(j==0)
{
a[0]=0;
j++;
}
a[j]=0x2e;
temp=f;
for(i=j+1;i<n;i++)
{
temp*=10;
f=(ulong)temp;
a[i]=(ulong)f%10;
}
}
20
展开阅读全文