原创 情景式LED节能灯设计

2010-5-5 18:44 9989 13 15 分类: MCU/ 嵌入式


最初这个想法是源于周工网上的一期嵌入式对话中——TI的LED解决方案。


本作品参加:第三届全国大学生节能减排社会实践与科技竞赛 


虽然实用性不强,不过本人确实是做了不少事情,传上来分享一下!


摘要:本研究设计了一款情景可调的LED节能灯,该灯具利用TNY279P设计出高效率开关电源,使用低功耗微控制器LM3S1138控制PWM输出,从而调节电源输出和SN3350的驱动电流大小,最后实现了LED亮度可调、颜色可变的多情景节能灯具。通过实验表明,该情景可调的LED节能灯可大大提高能源的使用效率,降低能耗。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


关键词:LED节能灯;情景可调;SN3350驱动芯片;PWM调节


 


作品简介


通过实验设计了一款情景式LED节能灯具,情景照明的LED驱动线路工作于交流220V市电,主电路采用离线式反激降压拓扑结构,隔离的输出方式有利于提高照明灯具的使用及操作安全性。采用低功耗微控制器LM3S1138控制PWM输出调节电源输出以及SN3350的驱动电流大小实现LED亮度可调、颜色可变,同时微控制器监测电路中电压和电流当驱动电流不足预先设定的值时自动调节TNY279P的电源输出恢复至原来调节的状态。微控制器不用于调节时自  动进入Sleep模式直到用户再次调节时唤醒MCU,做到低功耗控制。


本实验设计的情景照明LED驱动线路设计以白光LED驱动为主,以彩色LED驱动为辅,驱动输出白光LED功率为10W,驱动输出三基色LED功率为3×4W,能满足对彩色情景照明的一般要求。本情景照明的LED驱动线路设置两个主按钮和一个情景模式选择轻触按钮,两个主按钮分别用于主白光LED亮度调节和彩色LED亮度的调节,情景模式选择轻触按键开关用于切换照明情景模式,三个辅按钮用于微调混合色色调或者个人偏好的色调。


 


1 研制背景及意义


LED具有寿命长、节能、安全、绿色环保、色彩丰富等显著优点,随着科学技术的发展,LED的光效逐年提高,LED照明将成为照明技术的发展主流已成为共识。然而通过调查发现还没有一款LED灯具具有颜色可调的功能而且调光普遍采用电位器调节,能耗大。因此我们研制了一款通过微控制器来达到情景可变、颜色可调的LED节能灯具。


情景式LED节能灯,适应于形势、时代的要求,首先考虑的是高效率,驱动的高效率才能充分体现和发挥LED节能高效的优势,其次驱动线路实现以人为本,按需调亮,在不影响正常照明照度的同时,极大限度地节约能源,保护照明灯具。调光节能,随心所欲极大限度地按需控制能源,在照度和节电率间获得最佳平衡。


情景式LED节能灯可以按照人们的意愿调节LED灯光的色调、色彩,从而可实现单个光源能轻易创造变化的照明情景。夏天天气比较炎热,如果家里的灯光属于暖色调的,无疑给人感觉更加热,从而是人的内心烦躁不安,容易引起发脾气等,而冬天正好相反,由于天气严寒,而家里的灯具属于冷色调的,就会使空间显得更加的冷清,也会影响人的情绪的,LED情景照明可满足人们能随时随心调节灯光色温、色调的需要,创造出一个使人们更舒适的照明环境。


2设计方案


情景照明的LED驱动线路工作于交流220V市电,主电路采用离线式反激降压拓扑结构,隔离的输出方式有利于提高照明灯具的使用及操作安全性。采用低功耗微控制器控制PWM输出,调节电源输出和SN3350的驱动电流大小,实现LED亮度可调颜色可变。当微控制器不用于调节时自动进入Sleep模式,直到用户再次调节时才唤醒,做到低功耗控制。


2.1控制电路


340d2f5f-d485-4708-a32e-e9d651dbafe7.jpg


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


1 控制电路框图


由图1可见,控制部分选取低功耗的单片机作为主控电路的核心,本设计中选取TI公司的LM3S1138微控制器。配置LM3S1138输出四路PWMTPY279P开关电源的输出电流用于控制主照明LED的亮度,三路SN3350ADJ控制端用于控制彩灯的颜色和亮度。键盘模块设有一键情景式选择按钮和每一路PWM的调节按钮。


2.2电源和LED驱动部分


点击看大图



 


2.电源和驱动电路框架图


由图2可见,通过LM3S1138输出一路PWM控制主电源芯片TNY279P的电压输出,采用光电耦合器隔离避免不必要的干扰。同时低功耗微控制器两路差分AD采样分别采集主电路中的电压和电流,实时监测。当驱动电流不足预先设定的值时自动调节TNY279P的电源输出恢复至原来调节的状态。不但有保护LED的功能同时也做到了智能化调节。


情景照明的LED驱动线路设计以白光LED驱动为主,以彩色LED驱动为辅。驱动输出白光LED功率为10W,驱动输出三基色LED功率为3×4W,三基色可以组合千变万化的绚丽色彩。本情景照明的LED驱动线路设置两个主按钮和一个情景模式选择轻触按钮,以及三个辅助按钮。两个主按钮分别用于主白光LED亮度调节和彩色LED亮度的调节,情景模式选择轻触按键开关用于切换情景模式,三个辅按钮用于微调混合色色调或个人偏好的色调。


3工作原理及性能分析


3.1工作原理


(1)电源电路模块


情景照明LED驱动线路设计,主电路选用PI公司TinySwitch-III系列的一个器件TNY279P,电路结构相对简单,并有较高电源效率。在满功率输出时,电源效率为89%。电路采用反激式转换器模式,隔离输出,保证了使用操作的安全性,电路总输出功率为24W。整流桥选取低压降的肖特基二极管,提高了电路效率。


TNY279PEN/UV端通过光电耦合器隔离连接至LM3S1138的一路PWM输出同时用AD监测输出主干路上的电流电压值随时通过按钮调节电源输出。


 点击看大图


3.TNY279NP电源电路


 


(2)LED驱动电路模块


LED驱动采用矽恩公司的SN3350SN3350 是一款DC/DC 高效率LED 驱动,输入电压为6V~40V,输出电流典型值为330mA,效率高发热少提供两种封装形式,SOT23-5 封装应用于350mA输出电流,SOT89-5封装应用于700mA 输出电流。本研究选取SOT89-5配置输出电流为350mA。通过反复实验选取合适的外围元件参数最终确定电路如下:


点击看大图



4.LED驱动电路


 


(3)核心控制电路:


点击看大图



5 核心控制部分


控制电路采用TI公司的LM3S1138作为核心控制器,配置四路可调PWM输出和两路差分AD输入。由于主电路中电压高于AD采样的最大值,所以采用运放来调节电压至适当范围,另一路差分AD采集主电路中的电流。当调节LED的亮度时,MCU会记录下此刻回路中的电流,此后不论什么原因导致主电路中电流变化,都会自动调节PWM输出来维持LED亮度不变,不但有保护LED的功能同时也做到了智能化调节。


3.2性能分析


SN3350驱动电路按图5搭建测试电路,各个外围元件参数见图中标注。用实验电源供给恒压13.5V作为输入,测得数据记录分析如表1-3所示。



点击看大图


6 四只白光LED串联外围元件参数


 


1 四只白光LED串联测试输入参数




输入参数


高级输入参数


电源电压(VIN


13.5V


环境温度


25oC


LED的数目


4


HL延时


50ns


LED正向电压


3.4V


LX电压上升时间


20.0ns


二极管正向压降


0.30V


LX电压下降时间


30.0ns


当前敏感电阻


0.3?


开关管的开关电阻


0.9?


线圈电感


47uH


封装热阻


45oC/W


线圈电阻


0.25?


ADJ引脚电压


1.2V


2 四只白光LED串联测试输出数据




时间信息


LED电流信息


打开时间


6.5us


最大LED电流


371.2mA


关闭时间


0.98us


最小LED电流


318.9mA


占空比


0.9


峰峰值纹波电流


148.3mA


开关频率


125.7K


平均LED电流


344.8mA


 


3 四只白光LED串联测试功率统计




输出功率


6.2W


在二极管的功率损耗


26.2mW


芯片电源电流


480.5uA


检测电阻的功率损失


66.3mW


开关功率损耗


345.3mW


在线圈功率损耗


110.3mW


开关电源损失


9.5mW


理论效率


91.9%


芯片功耗


358.4mW


输入电流


329.6mA


 


由表1-3的统计结果可见,用SOT89-5封装的SN3350通过更改外围元器件的参数可以使驱动效率达到91.9%,相比SOT23-5封装的SN3350可使驱动电流由以前的330mA提高到350mA,可为本研究选取的LED提供最佳驱动电流,从而达到极佳的照明效果。


5 创新点及应用


本设计有以下创新之处:


(1)采用TNY279P构成PWM恒流控制的开关电源供电效率可达到85%以上且体积小、重量轻、方便安装。


(2)采用Ti公司低功耗微控制器(LM3S1138)控制PWM输出调节电源输出以及SN3350的驱动电流大小实现LED亮度可调、颜色可变,同时一键切换选择情景式照明。当微控制器不用于调节时自动进入睡眠模式(Sleep)直到用户再次调节时才唤醒,做到低功耗控制。


(3)情景照明的LED驱动线路可以按照人们的意愿调节LED灯光的色调、色彩,实现单个光源能轻易创造变化的照明情景。通过驱动线路对不同色彩LED输出的调整,来弥补白光LED其显色性指数(CRI)偏低的问题,使LED照明在白光应用中保持很高的显色指数(CRI),满足人们对高质量灯光照明的需求。


(4)微控制器(LM3S1138)及时采集主电路中的电压和电流当驱动电流不足预先设定的值时自动调节TNY279P的电源输出恢复至原来调节的状态。不但有保护LED的功能同时也做到了智能化调节。


LED是由无毒的材料制成,不像荧光灯含水银会造成污染,同时LED也可以回收再利用.情景式LED节能灯可以按照人们的意愿调节LED灯光的色调、色彩,情景式选择按钮提供七种照明情景。相信情景式LED节能灯,一定可以创造非常好的市场


 


参考文献


[1] 周志敏,周纪海,纪爱华. LED照明技术与应用电路[M]. 电子工业出版社.2009125176


[2] 陈大华. 绿色照明LED实用技术[M]. 化学工业出版社.20091943


[3] 刘胜利. 高亮度LED照明与开关电源供电[M]. 电子工业出版社.201067109



附图(完整电路和实物图)


点击看大图



 


点击看大图


附部分程序:


控制器是LM3S1138,以后会移植到MPS430上去,听说MPS430的功耗可以设置的很低。


(1)情景式选择:


    Void Select ()


{


    Int i="0";


SysCtlPeriEnable(SYSCTL_PERIPH_GPIOA);               


// 使能LED所在的GPIO端口


GPIOPinTypeOut(GPIO_PORTA_BASE, GPIO_PIN_0|GPIO_PIN_1| GPIO_PIN_2);                             // 设置LED所在的管脚为输出



    SysCtlPeriEnable(KEY_PERIPH);                           // 使能KEY所在的GPIO端口


    GPIOPinTypeIn(KEY_PORT, KEY_PIN);                       // 设置KEY所在管脚为输入


   


        if (GPIOPinRead(KEY_PORT, KEY_PIN) == 0x00)         // 如果按下KEY


        {


            i++;


            GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_0|GPIO_PIN_1| GPIO_PIN_2, i);         


             if(i>7)


            {


               i="0";


             }


        }



        SysCtlDelay(10 * (TheSysClock / 3000));             // 延时约10ms


}


GPIOPinWrite 函数说明——向指定管脚写入一个值


a函数原型:


GPIOPinWrite(unsigned long ulPort,


unsigned char ucPins,


unsigned char ucVal)


b参数:


ulPort是GPIO端口的基址。


ucPins是管脚的位组合(bit-packed)表示。


ucVal是写入到指定管脚的值。


c描述:将对应的位值写入ucPins指定的输出管脚。向配置用作输入的管脚写入一个值不会产生任何影响。


(2)深度睡眠模式:



   Void Sleep Status ()


    {


// 允许Timer1模块在深度睡眠模式下继续工作


    SysCtlPeriDSlpEnable(SYSCTL_PERIPH_TIMER1);



    // 允许Buzzer所在的GPIO端口在深度睡眠模式下继续工作


    SysCtlPeriDSlpEnable(SYSCTL_PERIPH_GPIOG);



    // 允许KEY所在GPIO端口在深度睡眠模式下继续工作


    SysCtlPeriDSlpEnable(KEY_PERIPH);



    // 允许在深度睡眠下外设采用寄存器DCGCn配置时钟


    SysCtlPeriClkGating(true);



    // 置位DSLPCLKCFG寄存器中的IOSC位,将来进入深度睡眠模式后,系统时钟改由IOSC提供


    HWREGBITW(SYSCTL_DSLPCLKCFG, 0) = 1;



        // 延时一段时间,此时Timer模块的时钟由PLL提供


SysCtlDelay(2500 * (TheSysClock / 3000));



        // 进入深度睡眠,等待按键唤醒,PLL被禁止,Timer模块的时钟改由IOSC/16提供


   SysCtlDeepSleep();                                  // 蜂鸣器发声约150Hz,低沉


    }



(3)电压采集:// ADC初始化
void adcInit(void)
{
    SysCtlPeriEnable(SYSCTL_PERIPH_ADC);                    // 使能ADC模块
    SysCtlADCSpeedSet(SYSCTL_ADCSPEED_500KSPS);             // 设置ADC采样速率
    ADCSequDisable(ADC_BASE, 1);                            // 配置前先禁止采样序列


    // 采样序列配置:ADC基址,采样序列编号,触发事件,采样优先级
    ADCSequConfig(ADC_BASE, 1, ADC_TRIGGER_EXTERNAL, 0);


    // 采样步进设置:ADC基址,采样序列编号,步值,通道设置
    ADCSequStepConfig(ADC_BASE, 1, 0, ADC_CTL_D |           // 差分输入采样
                                      ADC_CTL_CH0);        // 差分通道0:ADC0和ADC1
                      


     ADCSequStepConfig(ADC_BASE, 1, 1, ADC_CTL_D |           // 差分输入采样
                                      ADC_CTL_CH1 |         // 差分通道1:ADC2和ADC3
                                      ADC_CTL_END |
                                      ADC_CTL_IE);


    ADCIntEnable(ADC_BASE, 1);                              // 使能ADC中断
    IntEnable(INT_ADC0);                                    // 使能ADC采样序列中断
    IntMasterEnable();                                      // 使能处理器中断


    ADCSequEnable(ADC_BASE, 1);                             // 使能采样序列
}


Void DataGet ()
    {
        iVal = adcSample();                                 // ADC采样
        iVal = iVal - 0x1FF;                                // 转换成差分数值
        iVal = (iVal * 3000) / 1024;                        // 转换成电压值
        sprintf(cBuf, "ADC0 = %d(mV)\r\n", iVal);           // 输出格式化
        SysCtlDelay(1500 * (TheSysClock / 3000));           // 延时约1500ms
    }

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户847065 2013-6-22 15:33

资料不错,谢谢楼主先.

用户174417 2010-5-5 21:50

麻烦大家帮忙点一下左下角的顶一下 第一次申请Blog精华 谢谢了
相关推荐阅读
用户174417 2010-12-04 09:54
利用MSP430定时器A测量脉冲宽度
1、程序描述     利用MSP430单片机定时器A和捕获/比较功能模块结合使用,实现脉冲宽度的测量。     本例程用到了定时器A的CCI1A端口(例如MSP430F14X的P1.2引脚)作捕获外部...
用户174417 2010-12-04 09:52
MSP430中断服务函数的定义
//为了保证代码可以在IAR编译器的任何版本中都能正确得到编译,所以作以下的条件编译。#ifdef __IAR_SYSTEMS_ICC__              //如果编译器是IAR, 那么以下...
用户174417 2010-12-04 09:33
事无巨细——MSP430学习之时钟
        很久没有没来EDN了,可能是之前比较忙的缘故,大约半年的时间了。然而现在自己也由一个在校学生的角色转变为嵌入式研发工程师(呵呵,只是一个称呼,多少水平自己清楚着呢)。所以我想以后会多些...
用户174417 2010-05-07 16:42
TI DSP USB2.0仿真器(自制)
TI DSP USB2.0仿真器自制资料:原理图CPLD配置:JTAG.V程序:module JTAG(TRST,rdy,pa0,pa1,pa2,led,rdyout,JTAG_VCC,INT_899...
用户174417 2010-05-07 16:15
一种用STM21F103实现的PLC
这个想法最初是在STM32的2009年全国巡回研讨会的资料上看到的。至从看到以后一直有自己动手搞一台PLC的念头。最终还是经受不了诱惑也就是这幅图片了。原资料是一个PDF上传一下静下心来,先前是查阅了...
用户174417 2010-05-07 15:52
LM317电源
前不久在搞大功率LED驱动问题,本想使用LM317提供恒流来驱动LED的后来发现功耗有点大,没办法只好换掉采用了SN3350来驱动,效果还不错。那LM317拿来做什么呢,呵呵。搞台简单的电源:电路图很...
EE直播间
更多
我要评论
2
13
关闭 站长推荐上一条 /3 下一条