第5章
CHAPTER 5


炫酷LED灯








视频讲解



5.1实验原理
LED(Light Emitting Diode,发光二极管)是一种固态的半导体器件,它可以直接把电转化为光。LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,整个晶片被环氧树脂封装起来。半导体晶片由两部分组成: 一部分是P型半导体(带正电的空穴占主导地位),另一部分是N型半导体(带负电电子占主导地位)。这两种半导体连接起来的时候,它们之间就形成一个PN结。当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。
曾经有人指出,高亮度LED是人类继爱迪生发明白炽灯后,最伟大的发明之一。随着国际国内的经济发展,LED的应用领域正在不断扩展。各种各样的LED灯如图5.1所示。


图5.1各种LED灯


在照明领域,LED正以绝对优势“吞噬”着整个领域。LED被称为第四代照明光源或绿色光源,具有节能、环保、寿命长、体积小等特点,可以广泛应用于各种指示、显示、装饰、背光源、普通照明和城市夜景等领域。
(1) 便携灯具: 手电筒、头灯、矿工灯、潜水灯等。
(2) 汽车用灯: 汽车内部的仪表板、音响指示灯、开关的背光源、阅读灯、外部的高位刹车灯、转向灯、倒车灯、尾灯、侧灯以及头灯等,大功率的LED已被大量用于汽车照明中。
(3) 特殊照明: 太阳能庭院灯、太阳能路灯、水底灯等。由于LED尺寸小,便于动态的亮度和颜色控制,因此比较适合用于建筑装饰照明。




(4) 普通照明: LED照明光源早期的产品发光效率低,光强一般只能达到几个到几十个mcd,适用于室内场合如家电、仪器仪表、通信设备、微机及玩具等方面的应用。LED筒灯、LED天花灯、LED日光灯、LED光纤灯已悄悄地进入家庭。目前直接目标是LED光源替代白炽灯和荧光灯,这种替代趋势已从局部扩展到了全球范围。
有趣的是,LED在装饰方面的应用也很广,如可广泛应用于发光立体字,建筑景观外观发光体,高架、高楼、公路、桥梁、地标、标志建筑发光源,广告立体字、标志、标识、指示光源,商业空间、机场、建筑工程、地铁、医院、饭店、白货商场、广场、餐馆、PUB设计灯光,汽车、运输、轮船、宣传指示警示光源,计算机、手机、通信、滑鼠、信号传输应用光源,其他应用例如一种广受儿童欢迎的闪光鞋,走路时内置的LED会闪烁发光,以及利用发光二极管作为电动牙刷的电量指示等。
本次实验需要完成的就是用Arduino控制LED灯,让它闪烁起来。


视频讲解


5.2材料清单及数据手册
5.2.1材料清单


实验所需要的材料清单如表5.1所示。表中列出了元器件名称、型号参数规格、数量及参考实物图,实验者可以在网上商店或实体元器件店进行购买。


表5.1实验所需要的材料清单



元器件名称型号参数规格数量参考实物图

Arduino开发板Uno R31

面包板840孔无焊板1
续表



元器件名称型号参数规格数量参考实物图

LED蓝色—5mm1

电阻220Ω,0.25W1

面包板专用插线—若干


5.2.2核心元件数据手册

LED是利用化合物材料制成PN结的光电器件,它具备PN结型器件的电学特性、IV特性、CV特性和光学特性、光谱响应特性、发光光强指向特性、时间特性以及热学特性。下面是LED的重要参数,通过了解LED的参数,可以帮助实验者更好地根据自己的需求选择合适的LED,并在实验过程中能合理地使用LED,以免造成不必要的损坏。
(1) 正向工作电流IF: 指发光二极体正常发光时的正向电流值。在实际使用中应根据需要选择IF在0.6·IFm以下。
(2) 正向工作电压VF: 该正向工作电压是在给定的正向电流下得到的,一般是在IF=20mA时测得的。发光二极体正向工作电压VF为1.4~3V。在外界温度升高时,VF将下降。
(3) VI特性: 发光二极体的电压与电流的关系。在正向电压小于某值(称为阈值)时,电流极小,不发光; 当电压超过某值后,正向电流随电压迅速增加,发光。
(4) 发光强度IV: 指法线(对圆柱形发光管来讲是指其轴线)方向上的发光强度。若在该方向上辐射强度为(1/683)W/sr,则发光1坎德拉(符号为cd)。由于一般LED的强度小,所以发光强度常用烛光(毫坎德拉,mcd)为单位。
(5) LED的发光角度: -90°~+90°。
(6) 光谱半宽度Δλ: 表示发光管的光谱纯度。
(7) 半值角θ1/2: θ1/2是指发光强度值为轴向强度值一半的方向与发光轴向(法向)的夹角。
(8) 全形: 根据LED发光立体角换算出的角度,也叫平面角。
(9) 视角: 指LED发光的最大角度,根据视角不同,应用也不同,也叫光强角。
(10) 半形: 法向0°与最大发光强度值/2之间的夹角。严格上来说,是最大发光强度值与最大发光强度值/2所对应的夹角。LED的封装技术导致最大发光角度并不是法向0°的光强值,因此引入偏差角,指的是最大发光强度对应的角度与法向0°之间的夹角。
(11) 最大正向直流电流IFm: 所允许加的最大正向直流电流,超过此值可损坏二极体。
(12) 最大反向电压VRm: 所允许加的最大反向电压即击穿电压,超过此值,发光二极体可能被击穿损坏。
(13) 工作环境温度topm: 发光二极体可正常工作的环境温度范围。低于或高于此温度范围,发光二极体将不能正常工作,效率大大降低。
(14) 允许功耗Pm: 允许加于LED两端正向直流电压与流过它的电流之积的最大值。超过此值,LED发热、损坏。
与白炽灯相比,LED光源具有如下特点。
(1) 电压: LED使用低压电源,供电电压在6~24V范围内,因产品不同而异,所以是比使用高压电源更安全的电源,特别适用于公共场所。
(2) 能耗: 消耗能量较同光效的白炽灯降低80%。
(3) 适用性: 每个单元LED小片是3~5mm的正方形,很小,所以可以制成各种形状的器件,并且适合于易变的环境。
(4) 稳定性: 10万小时,光衰为初始的50%。
(5) 响应时间: 白炽灯的响应时间为毫秒级,LED灯的响应时间为纳秒级。
(6) 对环境污染: 无有害金属汞。
(7) 颜色: 改变电流可以变色,发光二极管可方便地通过化学修饰方法,调整材料的能带结构和带隙,实现红黄绿蓝橙多色发光,如小电流时为红色的LED,随着电流的增加,可以依次变为橙色、黄色,最后为绿色。
(8) 价格: 较之于白炽灯,LED的价格比较昂贵,几只LED的价格与一只白炽灯的价格相当,而通常每组信号灯需用到300~500只二极管。
5.3硬件连接
实验的硬件连接原理如图5.2所示。为避免电流过大损坏LED,Arduino实验板连接LED时需要串接一个限流电阻,限流电阻的取值会影响LED的亮度。电路图如图5.3所示。


图5.2单个LED闪烁连接原理图





图5.3单个LED闪烁连接电路图



5.4程序设计
5.4.1设计思路及流程图

实现LED灯闪烁的原理十分简单,只需要先设置一个引脚为高电平,点亮LED灯,然后延时一段时间,接着设置该引脚为低电平,熄灭LED灯,再延时。这样使LED灯交替亮灭,在视觉上就形成闪烁状态。如果想让LED快速闪烁,可以将延时时间设置得小一些,但不能过小,延时过小,肉眼无法分辨出来,看上去就像LED灯一直在亮着; 如果想让LED慢一点闪烁,可以将延时时间设置得大一些,但也不能过大,过大的话就没有闪烁的效果了。这里将延时的时间定为1s。实验流程如图5.4所示。


图5.4单个LED闪烁流程图

5.4.2程序源码
硬件电路搭建好后,就轮到软件部分了,软件部分的主要工作就是编写程序。为达到实验要求,编写的参考程序源代码为: 



//项目一——LED闪烁灯

int LEDPin=13;

void setup()

{

pinMode(LEDPin,OUTPUT);//13脚设置为输出

}

void loop()

{

digitalWrite(LEDPin,HIGH);        //设定PIN13脚为HIGH = 5V左右

delay(1000);                   //设定延时时间,1000 = 1s

digitalWrite(LEDPin,LOW);        //设定PIN13脚为LOW = 0V 

delay(1000);                   //设定延时时间,1000 = 1s

}





5.5调试及实验现象
单个LED闪烁实验的实物连接如图5.5所示,将程序下载到实验板后,就可以观察到发光二极管以1s的时间间隔闪烁。


图5.5单个LED闪烁实物连接图


5.6代码回顾
代码的第一行如下所示: 



//项目一——LED闪烁灯




这是代码中的说明文字,可以叫它们注释,因为是以“//”开始的,这个符号后面所有的文字编译器都将忽略。注释在代码中是非常有用的,能帮助读者理解代码是如何工作的。
接下来的一行程序是这样的: 



int LEDPin=13;




这就是所谓的变量,变量是用来存储数据的。在上面的例子里定义了一个变量,类型是int或者说整型。整型表示一个数,范围为-32768~32767,接下来指定了这个整型数的名字是LEDPin,并且给它赋了一个值13。
接下来是setup()函数: 



void setup() {

pinMode(LEDPin,OUTPUT);//13脚设置为输出

}




Arduino程序必须包含setup()和loop()两个函数,否则它将不能工作。setup函数只在程序的开头运行一次。在这个函数里可以在主循环开始前为程序设定一些通用的规则,如设置引脚形式、波特率等。一般情况下,函数是一组集合在一个程序块中的代码。



void loop()

{

digitalWrite(LEDPin,HIGH);//设定PIN13脚为HIGH = 5V左右

delay(1000);                   //设定延时时间,1000 = 1s

digitalWrite(LEDPin,LOW);        //设定PIN13脚为LOW = 0V 

delay(1000);//设定延时时间,1000 = 1s

}




loop()函数是主要的过程函数,只要Arduino打开就一直运行。每一条loop()函数(在花括号内的代码)中的代码都要执行,并按顺序逐个执行,直到函数的最后。然后loop函数再次开始,从函数顶部开始运行,一直这样循环下去,直到按下Arduino重启按钮。
5.7拓展实验
在完成了LED闪烁实验后,如果还有兴趣的话,在LED闪烁实验的基础上为大家提供一个利用LED灯实现广告牌效果的拓展实验。同时,大家可以充分发挥自己的想象,编写出自己想要的LED灯效果,玩转多彩LED灯。
在生活中经常会看到一些由各种颜色LED灯组成的广告牌,广告牌上各个位置上的LED灯不断地亮灭变化,就形成各种不同的效果。
本实验就是利用LED灯编程模拟广告灯的效果。共需要LED灯6个、220Ω的电阻6个、面包板1块、跳线若干。实验原理图如图5.6所示,电路图如图5.7所示。


图5.6广告灯拓展实验原理图





图5.7广告灯拓展实验电路图


广告灯拓展实验参考程序为: 



//设置控制LED的数字I/O引脚

int LED1 = 1; 

int LED2 = 2; 

int LED3 = 3; 

int LED4 = 4; 

int LED5 = 5; 

int LED6 = 6; 

//LED灯花样显示样式1子程序

void style_1(void) 

{ 

unsigned char j; 

for(j=1;j=6;j++)//每隔200ms依次点亮1~6引脚相连的LED灯

{ 

digitalWrite(j,HIGH);                      //点亮与j引脚相连的LED灯

delay(200);                             //延时200ms 

} 

for(j=6;j=1;j--)                      //每隔200ms依次熄灭与6~1引脚相连的LED灯

{ 

digitalWrite(j,LOW);                     //熄灭与j引脚相连的LED灯

delay(200);                            //延时200ms 

}  

} 

//灯闪烁子程序






void flash(void) 

{      

unsigned char j,k; 

for(k=0;k=1;k++) //闪烁两次

{

for(j=1;j=6;j++)                     //点亮与1~6引脚相连的LED灯

digitalWrite(j,HIGH);                     //点亮与j引脚相连的LED灯

delay(200);                            //延时200ms 

for(j=1;j=6;j++)                    //熄灭与1~6引脚相连的LED灯

digitalWrite(j,LOW);                    //熄灭与j引脚相连的LED灯

delay(200);                           //延时200ms 

} 

} 

//LED灯花样显示样式2子程序

void style_2(void) 

{ 

unsigned char j,k; 

k=1;                                   //设置k的初值为1 

for(j=3;j=1;j--) 

{      

digitalWrite(j,HIGH);                      //点亮灯

digitalWrite(j+k,HIGH);                    //点亮灯

delay(400);                             //延时400ms 

k +=2;                                 //k值加2 

} 

k=5;                                  //设置k值为5 

for(j=1;j=3;j++) 

{ 

digitalWrite(j,LOW);//熄灭灯

digitalWrite(j+k,LOW);                   //熄灭灯

delay(400);                            //延时400ms 

k -=2;                                //k值减2 

} 

} 

//LED灯花样显示样式3子程序

void style_3(void) 

{ 

unsigned char j,k;                       //LED灯花样显示样式3子程序

k=5;                                 //设置k值为5 

for(j=1;j=3;j++) 

{ 

digitalWrite(j,HIGH);                    //点亮灯

digitalWrite(j+k,HIGH);                  //点亮灯

delay(400);                           //延时400ms 

digitalWrite(j,LOW);                    //熄灭灯

digitalWrite(j+k,LOW);                  //熄灭灯

k -=2;                               //k值减2 

} 

k=3;                                //设置k值为3 

for(j=2;j=1;j--) 






{    

digitalWrite(j,HIGH); //点亮灯

digitalWrite(j+k,HIGH);                //点亮灯

delay(400);                         //延时400ms 

digitalWrite(j,LOW);                  //熄灭灯

digitalWrite(j+k,LOW);                 //熄灭灯

k +=2;                              //k值加2 

}  

} 

void setup() 

{  

unsigned char i; 

for(i=1;i=6;i++)                    //依次设置1~6个数字引脚为输出模式

pinMode(i,OUTPUT);                   //设置第i个引脚为输出模式

} 

void loop() 

{      

style_1();                             //样式1 

flash();                               //闪烁

style_2();                              //样式2 

flash();                                 //闪烁

style_3();                               //样式3 

flash();                                  //闪烁

}





5.8拓展实验调试及现象
广告灯拓展实验实物连接如图5.8所示。将程序下载到实验板,程序执行流程图如图5.9所示。



图5.8广告灯效果实物连接图(注: 此处未连接限流电阻)




图5.9程序执行流程图



首先执行第一种方式(间隔200ms依次亮灭),间隔200ms依次点亮LED 1~6,随后间隔200ms依次熄灭LED 1~6; 然后执行第二种方式,即间隔200ms每个LED依次闪烁2次,循环完成一个流程; 最后执行第三种方式,LED灯每隔400ms间隔地点亮和熄灭,每个LED灯依次闪烁2次。
实验者可以根据需求自行设置k值来确定间隔的时间。另外,如果闪烁的现象不够明显,那么就延长延时函数的参数,以达到最佳的闪烁效果。
5.9技术小贴士
5.9.1解析LED正负极判别方法

LED灯在焊接过程中,常遇到如何辨认LED的正负极,这点尤其重要,灯亮不亮关键在此。下面讲解判断LED正负极的技巧和方法。
1) 判断草帽型LED正负极
草帽型LED正负极判别如图5.10所示。LED内部两根块状的引脚称为LED的支架,其中负极支架比较大,正极支架比较小,原因是负极支架托载着LED的芯片。所以得出的结论就是: 目测LED,大支架连接为负极,小支架连接为正极。



图5.10草帽LED正负极判别


还有一个比较简单的方法: 如果手头的LED是新购买的,引脚都还健全的话,直接看引脚的长短,通过“正极引脚长,负极引脚短”的原则就可以区分了。
2) 判断贴片LED正负极
贴片LED常用在LED节能灯照明行业中,但是很多用户在拿到贴片LED后,不知道怎么焊接,原因就是不知道如何区分贴片LED正负极。
贴片LED正负极判定方法如图5.11所示。尺寸大的LED在极片引脚附近有一些标记,如切角、涂色或引脚大小不一样,一般有标志的,引脚小的、短的一边是阴极(即负极)。尺寸小的在底部有T字形或倒三角形符号,T字形“横”的一边是正极; 三角形符号的“边”靠近的是正极,“角”靠近的是负极。


图5.11贴片LED正负极判别


3) 万用表检测LED
用万用表检测发光二极管时,分为普通模拟万用表和数字万用表两种情况。
(1) 当使用模拟万用表检测时,必须使用R×10k挡。因为发光二极管的管压降大约为3V,而万用表处于R×1k及以下各电阻挡时,表内电池仅为1.5V,低于管压降,无论正、反向接入,发光二极管都不可能导通,也就无法检测。用R×10k挡时,表内接有9V(或15V)高压电池,高于管压降,所以可以用来检测发光二极管。
检测时,将两表笔分别与发光二极管的两条引线相接,如表针偏转过半,同时发光二极管中有一个发亮光点,表示发光二极管是正向接入,这时与黑表笔(与表内电池正极相连)相接的是正极,与红表笔(与表内电池负极相连)相接的是负极。
再将两表笔对调后与发光二极管相接,这时为反向接入,表针应不动。
如果不论正向接入还是反向接入,表针都偏转到头或都不动,则表明该发光二极管已损坏。
(2) 当使用数字万用表检测时,应采用数字万用表中的“二极管”测试挡。
检测时,将两表笔分别与发光二极管的两条引线相接,如数字表显示在0.7~2.5V范围内且LED有一个发亮光点,表示发光二极管是正向接入,这时与红表笔(与表内电池正极相连)相接的是正极,与黑表笔(与表内电池负极相连)相接的是负极。
再将两表笔对调后与发光二极管相接,这时为反向接入,显示应为无穷大。
如果不论正向接入还是反向接入,都显示无穷大,LED也不发光,则可以判断该发光二极管已损坏。
5.9.2LED分类
1) 按发光管发光颜色分类
按发光管发光颜色分类,可分成红色、橙色、绿色(又细分为黄绿、标准绿和纯绿)、蓝色等。此外,有的发光二极管中包含两种或三种颜色的芯片。根据发光二极管出光处掺或不掺散射剂、有色还是无色,上述各种颜色的发光二极管还可分成有色透明、无色透明、有色散射和无色散射四种类型。
2) 按发光管出光面特征分类
按发光管出光面特征分为圆灯、方灯、矩形灯、面发光管、侧向管、表面安装用微型管等。圆形灯按直径分为2mm、4.4mm、5mm、8mm、10mm及20mm等。国外通常把3mm的发光二极管记作T1; 把5mm的记作T1(3/4); 把4.4mm的记作T1(1/4)。
由半值角大小可以估计圆形发光强度角分布情况。
从发光强度角分布图来分类,分为高指向性、标准型及散射型三类。
高指向性: 一般为尖头环氧封装,或是带金属反射腔封装,且不加散射剂。半值角为5°~20°或更小,具有很高的指向性,可作局部照明光源用,或与光检出器联用以组成自动检测系统。
标准型: 通常作指示灯用,其半值角为20°~45°。
散射型: 视角较大的指示灯,其半值角为45°~90°或更大,散射剂的量较大。
3) 按发光二极管的结构分类
按发光二极管的结构分为全环氧包封、金属底座环氧封装、陶瓷底座环氧封装及玻璃封装等结构。
4) 按发光强度和工作电流分类
普通亮度的LED,发光强度为100mcd; 把发光强度在10~100mcd范围内的叫高亮度发光二极管。一般LED的工作电流在十几毫安至几十毫安,而低电流LED的工作电流在2mA以下。