LED

LED开关电源的研发速度在最近几年中有了明显的技术飞跃,新产品更新换代的速度也加快了许多。作为最后一个设计环节,PCB的设计也显得尤为重要,因为一旦在这一环节出现问题,那么很可能会对整个的LED开关电源系统产生较多的电磁干扰,对于电源工作的稳定性和安全性也都会造成不利影响。那么,PCB的设计怎样做才是正确的呢?

通过最近几年中LED电源的元器件布局研究和市场实践结果证明,即使在研发初期所设计的电路原理图是非常正确,然而一旦PCB的设计出现问题,也会对电子设备的可靠性产生不利影响,例如由于电源、地线的考虑不周到而引起的干扰,就会使产品的性能下降,因此在设计PCB板的时候,就需要采用正确的方法。

在一块开关电源常用到的PCB板中,通常每一个开关电源都有四个电流回路,它们分别是输入信号源电流回路、电源开关交流回路、输出整流交流回路、输出负载电流回路。输入回路通过一个近似直流的电流对输入电容充电,滤波电容主要起到一个宽带储能作用。与之类似地,输出滤波电容也用来储存来自输出整流器的高频能量,同时消除输出负载回路的直流能量。所以,输入和输出滤波电容的接线端十分重要,输入及输出电流回路应分别只从滤波电容的接线端连接到电源。

输入和输出回路的设置和连接对于整个印刷线路版来说,是非常重要的,其合理与否将直接关系到电磁干扰的大小。如果在输入、输出回路和电源开关、整流回路之间的连接无法与电容的接线端直接相连,交流能量将由输入或输出滤波电容并辐射到环境中去。电源开关交流回路和整流器的交流回路包含高幅梯形电流,这些电流中谐波成分很高,其频率远大于开关基频,峰值幅度可高达持续输入、输出直流电流幅度的5倍,过渡时间通常约为50ns。这两个回路最容易产生电磁干扰,因此必须在电源中其它印制线布线之前先布好这些交流回路。

在LED开关电源的输入、输入回路中,每个回路都由三种主要的元件来构成,这三种元件分别是滤波电容、电源开关或整流器、电感或变压器。这三种重要的元件应彼此相邻地进行放置,调整元件位置使它们之间的电流路径尽可能短。建立开关电源布局的最好方法与其电气设计相似,最佳设计流程如下:放置变压器→设计电源开关电流回路→设计输出整流器电流回路→连接到交流电源电路的控制电路→设计输入电流源回路和输入滤波器。

来源:网络

围观 286

提供PLCC-2和超小尺寸MiniLED封装版本,器件通过AEC-Q101认证并具有1400 mcd的发光强度

日前,Vishay Intertechnology, Inc.(NYSE 股市代号:VSH)宣布,推出两款采用PLCC-2和超小尺寸MiniLED封装的全新汽车级表面贴装电源指示LED系列产品---VLMx335xx和VLMx235xx。威世VLMx335xx和VLMx235xx系列产品采用最小芯片尺寸以及最新的AllnGaP技术,为汽车、工业和消费级应用提供超高亮度和高达50mA的最大驱动电流。

今日发布的这两款LED产品通过AEC-Q101认证,热电阻低至400K/W,功率耗散为130mW,使其能够通过较大的驱动电流。VLMx235xx MiniLED封装尺寸小至2.3mm×1.3mm×1.4mm,而VLMx335xx发光强度高达1400mcd,使其成为汽车内外照明、信号灯、交通标志以及音频和视频设备、LCD开关和通用符号的指示灯和背光的理想选择。

产品有超级红、纯红、琥珀色、亮橙色和黄色版本可供选择,并且包含嵌在热塑性塑料中的引线框基盘,以及填充透明环氧树脂的内置反射镜。这些器件提供±60°的半强度角,正向电压低至1.8V,每个包装单位的发光强度比≤1.6,并以包装单位对发光强度和颜色进行分类。

器件符合RoHS标准,无卤素并符合Vishay绿色环保标准,产品提供8mm胶条版,根据JESD22-A114-B可承受高达2kV的静电,并且符合JEDEC 2a级的预处理兼容要求。

器件规格表:

Vishay推出具有最小外形尺寸和最新AllnGaP技术的新款汽车级电源指示LED

VLMx335xx和VLMx235xx系列的样品及批量订单将于2018年第四季度开始供货,交货周期为六周。

围观 273

最新LED和电机控制解决方案将亮相2018慕尼黑上海电子展

近日,德国elmos公司日前宣布elmos推出基于E522.90/91/92/93系列芯片用于汽车尾灯LED线性恒流驱动器的系列解决方案,包括车辆尾灯、车内氛围灯和48V电池系统的BLDC电机控制。E522.9x系列的每个通道输出电流为14mA至55mA,并联工作时单颗芯片最高输出165mA,即使在恶劣的散热条件下,这款拥有专利的电源管理芯片也可确保LED的恒流特性。该方案设计有外部分流电阻,可以把额外的功耗通过外部电阻耗散掉,这个方案将功耗成比例的分配到外部器件和PCB上,避免PCB上出现局部过热点。这个独特的方案中,功耗一部分通过芯片本身耗散,另外一部分则由外部器件耗散,减小了芯片自身的温升,为客户带来更多的设计余量。该家族系列产品还具有更高电流和相同特性的芯片(每通道48-151mA或并联工作450mA)E522.8x产品系列,该系列产品已经在汽车照明产品中有多个成功应用案例。

据悉,该系列最新应用解决方案将在2018年慕尼黑上海电子展(3月14日至16日)期间向观众现场展示并做详细说明。

elmos推出基于E522.90系列芯片的汽车尾灯解决方案elmos推出基于E522.90系列芯片的汽车尾灯解决方案

elmos还将带来LIN自动寻址的单芯片RGB驱动方案E521.36,该方案用在车内RGB氛围灯应用中,采用才方案的RGB模块可直接连接到LIN总线上,elmos的 E521.36芯片实现了简单、灵活、经济高效且节省空间的设计。 该器件包括一个基于MSP430的16位微控制器,具有32k字节的NVM,128字节的 EEPROM,带有集成BSM自动寻址(总线分流法)的LIN收发器(符合LIN 2.2规范),四路高达40mA/单通道的恒流源驱动和三个16位PWM发生器。 48MHz PWM时钟确保732Hz刷新频率下提供全面的16位色彩分辨率,实现无闪烁效果,可以满足目前所有的OEM要求。
elmos推出基于E522.90系列芯片的汽车尾灯解决方案

除此之外,此次展会上您还将看到基于E523.52芯片,elmos可以专门带来了48V电池系统的无刷直流(BLDC)电机单芯片控制器。 该芯片的最大输入电压为72V, 它集成了一个功能强大的16位微控制器,具有特殊的电机控制硬件支持。 该芯片可控制3路半桥NMOS,驱动的电机功率高达约1000W。 集成的DC / DC降压转换器设计用于11V / 100mA的门极驱动和其他负载的驱动。此外,该芯片还具有对MOSFET的各种监视和诊断功能。
elmos推出基于E522.90系列芯片的汽车尾灯解决方案

欢迎莅临上海新国际博览中心E4馆4208展位,我们期待与您见面。

围观 565

作者:Mark Pallones Microchip Technology Inc. 8位单片机产品部 主任应用工程师

开关模式可调光LED驱动器凭借其高效性以及对LED电流的精确控制而闻名。这类LED驱动器还可以提供调光功能,使得最终用户在营造奇幻灯光效果的同时有效降低自身功耗。基于8位单片机(MCU)的解决方案可针对此类应用提供必要的模块,从而实现通信、定制和智能控制功能。此外集成的独立于内核的外设,与纯模拟或ASIC实现相比可显著提升灵活性,扩展照明产品功能的同时塑造产品差异化,从而实现创新。这类智能照明解决方案具备故障预测和维护、能量监测,色温维持以及远程通信和控制等功能,功能之丰富不胜枚举,并且将因此而倍受青睐。

虽然LED驱动器与先前的照明解决方案相比具备诸多优势,但其实现过程中也会面临许多挑战。但您不必担心,阅读完本文章后,您将会了解如何使用8位MCU来轻松应对这些设计挑战,从而打造出高性能的开关模式LED驱动解决方案,功能之丰富令传统解决方案只能望其项背。

8位单片机可独立控制最多四个LED通道,这是大多数现成LED驱动器控制器所不具备的一项独特能力。在图1中,LED调光引擎可由单片机中提供的外设构成。这些引擎均具有独立的封闭通道,极少需要甚至不需要中央处理单元(CPU)干预即可控制开关模式电源转换器。这样可以释放CPU以执行其他重要任务,比如系统中的监控功能、通信功能或新增的智能功能。

LED调光引擎:基于8位MCU的开关模式可调光LED驱动器解决方案
图1:通过Microchip的PIC16F1779 8位单片机控制四个LED串的图示

LED调光引擎

在图2中,基于电流模式升压转换器的LED驱动器由LED调光引擎控制。该引擎主要由互补输出发出发生器(COG)、数字信号调制器(DSM)、比较器、可编程斜坡发生器(PRG)、运算放大器(OPA)和脉宽调制器3(PWM3)等独立于内核的外设(CIP)组成。这些CIP与固定稳压器(FVR)、数模转换器(DAC)和捕捉/比较/PWM(CCP)等其他片上外设一起组成完整的引擎。COG将高频开关脉冲提供给MOSFET Q1,从而将能量和供电电流传输给LED串。COG输输出的开关周期通过CCP和占空比设置,用于维持LED恒定电流,具体取决于比较器输出。每当Rsense1两端的电压超过PRG模块的输出时,比较器就会产生一个输出脉冲。PRG的输入源自反馈电路中的OPA输出,它被配置为斜率补偿器,以在占空比大于50%时抵消固有次谐波振荡的影响。

OPA模块实现为具有II型补偿器配置的误差放大器(EA)。FVR用作DAC输入,根据LED恒定电流规范为OPA同相输入提供参考电压。

为了实现调光目的,PWM3用作CCP输出的调制器,同时驱动MOSFET Q2以使LED快速循环亮起和熄灭。调制操作可通过DSM模块来完成,调制后的输出信号馈送到COG。PWM3可提供占空比可变的脉冲,用于控制驱动器的平均电流,实际上控制的是LED的亮度。

LED调光引擎不仅可以实现典型LED驱动器控制器的功能,而且还具备解决LED驱动器典型问题的能力。现在,我们将探讨这些问题并分析如何使用LED调光引擎来加以避免。

LED调光引擎:基于8位MCU的开关模式可调光LED驱动器解决方案
图2.LED调光引擎

频闪

频闪是典型开关模式可调光LED驱动器可能面临的挑战之一。虽然精心策划的频闪会带来有趣的效果,但如果LED发生意外频闪,则会破坏用户期望的灯光设计。为了避免频闪并提供平滑调光体验,应确保驱动器从最高档位(即100%灯光输出)一直到最低档位的调光效果都是连续流畅的。由于LED会瞬间响应电流变化并且不具有阻尼效果,因此驱动器必须具有足够多的调光档位才能确保人眼察觉不到变化。为了满足这一要求,LED调光引擎采用PWM3来控制LED的调光。PWM3是16位分辨率的PWM,从100%到0%占空比共有65536个档位,可保证亮度平滑切换。

LED色温转换

LED驱动器还可以转换LED的色温。 此颜色变化是人眼能够察觉得到的,削弱了客户对享受优质LED照明体验的主张。图3给出了典型的PWM LED调光波形。当LED熄灭时,由于输出电容缓慢放电,LED电流会逐渐减小。此事件会导致LED发生色温漂移且功耗增大。

LED调光引擎:基于8位MCU的开关模式可调光LED驱动器解决方案
图3.LED调光波形

可以使用负载开关来防止输出电容缓慢放电。例如,在图2中,电路使用Q2作为负载开关,LED
调光引擎会同步关闭COG PWM输出和Q2,以便切断电流衰减路径,让LED快速熄灭。

峰值电流

当使用开关模式功率转换器驱动LED时,将采用反馈电路来调节LED电流。但是,如果在调光期间操作不当,反馈电路会产生峰值电流(见图3)。回顾图2,当LED点亮时,电流传输到LED,RSENSE2两端的电压馈送到EA。当LED熄灭时,没有电流传输到LED,RSENSE2电压变为零。在此调暗期间,EA输出会增加到最大值,并使EA补偿网络过充。当调制的PWM再次导通时,如果有高峰值电流驱动到LED,则需要若干个周期才能恢复。此峰值电流会削减LED的使用寿命。

为了避免这一问题,LED调光引擎允许将PWM3用作OPA的改写源。当PWM3为低电平时,EA的输出呈三态,将补偿网络与反馈回路完全断开,并将保持最后一个稳定反馈点作为补偿电容中存储的电荷。当PWM3为高电平且LED再次点亮时,补偿网络重新连接,EA输出电压立即跳到其先前的稳定状态(PWM3为低电平之前),并且几乎立即恢复LED电流设定值。

完整解决方案

如前文所述,LED调光引擎极少需要甚至不需要CPU干预即可正常工作。因此,在将所有对于LED驱动器的控制工作分配给各个CIP时,CPU将具有充足的带宽来执行其他重要任务。 此外,通过对检测到的输入和输出电压进行处理,可以执行欠压锁定(UVLO)、过压锁定(OVLO)和输出过压保护(OOVP)等保护功能。这样可确保LED驱动器按照规范要求工作,并且LED不受异常输入和输出条件的影响。CPU还可以处理来自传感器的温度数据,以实现对LED的热管理。而且,当设置LED驱动器的调光级别时,CPU可以处理来自简单外部开关或串行通信命令的触发信号。此外,LED驱动器的参数可以通过串行通信的方式发送到外部设备以进行监控或测试。

除了上述功能之外,设计师还可以在自己的LED应用中尽情添加更多智能功能,包括通信(例如,DALI或DMX)和定制控制功能等。图4给出了使用LED调光引擎的完整开关模式可调光LED驱动器解决方案示例。

LED调光引擎:基于8位MCU的开关模式可调光LED驱动器解决方案
图4.开关模式可调光LED驱动器解决方案

结论

LED调光引擎可用于打造高效型开关模式可调光LED驱动器。高效性体现在其能够驱动多个LED串、提供高效能源、确保LED达到最佳性能、维持较长的LED使用寿命以及在系统中增添智能功能。

来源: http://www.microchip.com.cn/newcommunity/

围观 407

理解PWM需要知道的知识

(1)脉冲

解释:电子设备中电平状态发生的突变,通常突变时间很短,突变后极短时间后重新变为为原来的电平状态.(突变状态很短,两次突变间的时间相对较长)

(2)脉冲循环

解释:可以理解为一次突变到下一次突变所花的时间如下图:

浅析LED呼吸灯的实现和PWM的关系

(3)*(重点)占空比

解释:一个脉冲循环内通电时间所占的比例.,如下图:

浅析LED呼吸灯的实现和PWM的关系

举个例子:脉冲宽度1μs,信号周期5μs的脉冲序列即t=1,T=5,经过公式-占空比=t/T可以得到占空比为0.2.

(4)滤波器

解释:滤波器的组成为电感,电容,电阻等元器件.虽然PWM能通过通过改变占空比的方法.使电压的平均值达到稳压值,但输出稳定电压是靠PWM之后接的的滤波器来实现的。

(5)平均电压/输出电压

解释:
平均电压电压在一个周期T内积分之后再除以T.
也可以等同于写成:
输出电压 = (接通时间 / 脉冲时间)* 最大电压值

计算方式(平均电压)的示意图如下:

浅析LED呼吸灯的实现和PWM的关系

PWM的定义

PWN(Pulse-width modulation)的中文名是脉冲宽度调制.那么我们来看一下wikipedia对它的定义:

脉冲宽度调制(英语:Pulse Width Modulation,缩写:PWM),简称脉宽调制,是将模拟信号变换为脉冲的一种技术,一般变换后脉冲的周期固定,但脉冲的占空比会依模拟信号的大小而改变.在模拟电路中,模拟信号的值可以连续进行变化,在时间和值的幅度上都几乎没有限制,基本上可以取任何实数值,输入与输出也呈线性变化。所以在模拟电路中,电压和电流可直接用来进行控制对象,例如家用电器设备中的音量开关控制、采用卤素灯泡灯具的亮度控制等等 ...

计算PWN等效电压

PWM的等效电压计算公式为:

(此处我认为因为是方波所以可以将其视作平均电压)
U =(T1*Umax)/(T1+T2)
T1:导通时间
T2:断流时间
T1+T2 脉冲周期
Umax:电压幅值

所以根据公式可知,由于T1/(T1+T2)正是空占比,所以改变空占比就等于改变了等效电压,所以使得灯泡的亮度发生了变化

为什么Analogwrite的值是0-255?

LED亮度通过调节LED驱动器的PWM占空比来对亮度控制,一个PWM周期可以划分成2的控制位的次方个时钟周期而对大部分LED而言,控制位通常是8位,所以8位PWM能够提供256个亮度级的电平,因此PWM周期由256个时钟周期组成.

脉冲周期/频率和人眼的关系

LED的典型时钟频率是32kHz,那么根据公式PWM周期为256/32kHz=8ms.那么这样对于人眼而言这个闪烁频率很安全的避免了人眼能够觉察的闪烁.

在ARDUINO中使用PWM控制LED灯模拟呼吸灯的实验

实验准备:

实验主设备: Arduino UNO R3(图片来自NRIOBOT)

浅析LED呼吸灯的实现和PWM的关系

其他:
LED灯(若干)
面包板(一块)
杜邦线(双头公若干)
电阻(若干)(可选择/非必需)

连接图示意(通过Fritzing软件制作的简易电路图)

浅析LED呼吸灯的实现和PWM的关系

实验代码:

/*先要介绍一下analogwrite的用法
将模拟值(PWM波)输出到管脚。可用于在不同的光线亮度调节发光二极管亮度或以不同的速度驱动马达。调用analogWrite()后,该引脚将产生一个指定占空比的稳定方波,直到下一次调用analogWrite()(或在同一引脚调用digitalRead()或digitalWrite())

这种方法也叫快速PWM方式*/

需要上传到ARDUINO中的代码:

//设定使用9号口
void setup (){
pinMode(9,OUTPUT);
}
void loop(){
//由于上文中提到的所以为256种亮度
for (int a=0; a<=255;a++) //控制PWM亮度的增加
{
analogWrite(9,a);
delay(8);
}
for (int a=255; a>=0;a--) //控制PWM亮度减小
{
analogWrite(9,a);
delay(8);
}
delay(300); //完成一个循环
}

Analogwrite和占空比的关系

analogwrite(x,y)

X是管脚,而y(value)就是亮度级(在LED中)

占空比的计算方法就是: 占空比=y/256

对于Analogwrite占空比的一个特殊之处的解释

对于快速PWM模式,如果我们代码用了analogWrite(9, 0)即Y(value)=0,实际上应该有1/256的占空比,然而实际输出的电平为0.这是因为在Arduino的强制设定,当检测到AnalogWrite的value为0,那么就等于关闭了PWM.所以带来的问题是,如果我们设置analogWrite(9, 1),那么占空比2/256,所以在0到1之间产生了一个跳跃,丢弃了占空比为1/256的情况.

总结

这次的python实验中,让我们尝试了怎么使用Arduino和LED灯做出呼吸灯的效果,因为对于机器是怎么输出高电平(5v)和低电平(0v)之间的电压好奇,所以探究了一下原理,总结来说就是机器通过pwm在管脚产生了一定占空比的方波,改变空占比就等同于改变了等效电压,所以使得灯泡的亮度发生了变化.

转自: xlxw<-博客园/a>

围观 1015

1、前言

在软件开发的过程中,debug(调试)是一个很重要的事情,因为没有百分之百正确的代码,一旦结果不符合预期,我们需要知道问题出在哪里了。

在PC环境下开发应用程序,我们不需要太操心,因为有各式各样的模拟器、调试器可供使用,我们可以追踪到每一行代码的执行过程和执行结果,找出问题只是时间问题而已。但在嵌入式环境下,就有些麻烦了,能用的手段,无外乎两种:

1)使用硬件仿真器定位问题。

2)使用日志输出定位问题。

对嵌入式工程师(特别是linux工程师)而言,鉴于使用硬件仿真器的诸多不便(成本高,无法保证人手一个;硬件连接复杂,需要预留特定接口;使用不方便;等等),日志输出几乎成为必备且唯一的debug手段。但是,总会有例外:

系统刚刚启动,在日志输出的通道(通常是UART接口)ready之前,怎么debug?

在不得不使用仿真器之前,我们还有一个简单的方法,就是点LED灯,本文将结合“X Project”“【任务2】启动到u-boot command line”实现的过程,对这个方法进行简单的介绍和总结。

2、 思路

从本质上讲,软件debug最高效的手段,是良好的设计、优秀的编码、细致的代码检查,当然,百密总有一疏。但大多数时候,我们只要能找到出现问题的大概位置,再辅以代码的检查,就可以百分之九十九的解决问题,这也是通过日志输出的方法定位问题的基本逻辑。

因此,在日志输出通道ready之前,我们也可以使用同样的思路,借助LED灯,实现问题的定位。大致思路如下:

1)如果系统只有一个LED灯,可以在代码中,正确执行某一个步骤之后,点亮LED,以此类推,一步一步检查代码执行的正确与否(其实“X Project”“【任务1】启动过程-Boot from USB”就是借用了这个思路)。

2)当然,如果系统有多个LED,例如四个,我们可以将这四个LED编码成一个4bit的数字(0~15),这样就可以表示更多的状态,下面是“X Project”基于bubblegum-96平台,实现的一个简单的接口(代码逻辑很简单,我就不解释了):

/* https://github.com/wowotechX/u-boot/blob/x_integration/board/actions/bub... */
/*
* A simple debug function for early debug, in which,
* we use four LEDs to display sixteen debug codes, from 0 to 15.
* Using it, we can know, at least roughly, at where out code is run.
*/
void bubblegum_early_debug(int debug_code)
{
uint8_t val;

val = debug_code & 0x1;
setbits_le32(GPIOA_OUTEN, 1 << DEBUG_LED0_GPIO);
clrsetbits_le32(GPIOA_OUTDAT, 1 << DEBUG_LED0_GPIO,
val << DEBUG_LED0_GPIO);

val = (debug_code >> 1) & 0x1;
setbits_le32(GPIOA_OUTEN, 1 << DEBUG_LED1_GPIO);
clrsetbits_le32(GPIOA_OUTDAT, 1 << DEBUG_LED1_GPIO,
val << DEBUG_LED1_GPIO);

val = (debug_code >> 2) & 0x1;
setbits_le32(GPIOF_OUTEN, 1 << DEBUG_LED2_GPIO);
clrsetbits_le32(GPIOF_OUTDAT, 1 << DEBUG_LED2_GPIO,
val << DEBUG_LED2_GPIO);

val = (debug_code >> 3) & 0x1;
setbits_le32(GPIOF_OUTEN, 1 << DEBUG_LED3_GPIO);
clrsetbits_le32(GPIOF_OUTDAT, 1 << DEBUG_LED3_GPIO,
val << DEBUG_LED3_GPIO);
}

3、一个例子

利用上面的debug接口,在调试串口驱动的时候,发挥了很大的作用,如下:

/* https://github.com/wowotechX/u-boot/blob/x_integration/drivers/serial/se... */
extern void bubblegum_early_debug(int debug_code);
static int owl_serial_probe(struct udevice *dev)
{
/* only for UART2, TODO */
bubblegum_early_debug(4);

/* pinmux */
setbits_le32(MFP_CTL2, 1 << 22);

bubblegum_early_debug(5);

/* device clock enable */
setbits_le32(CMU_DEVCLKEN1, 1 << 8);

bubblegum_early_debug(6);

/* reset de-assert */
setbits_le32(CMU_DEVRST1, 1 << 7);

bubblegum_early_debug(7);

/* set default baudrate and enable UART */
owl_serial_setbrg(dev, 115200);

/* enable uart */
setbits_le32(UART2_BASE + UART_CTL, UART_CTL_EN);

bubblegum_early_debug(8);
return 0;
}

串口驱动编写好之后,发现系统会死在owl_serial_probe中,于是添加了一系列的"点灯"操作,发现最后停留在“bubblegum_early_debug(5); ”上面(LED2和LED0亮),于是就可以确定这条语句出了问题:

setbits_le32(CMU_DEVCLKEN1, 1 << 8);

经过仔细检查,发现CMU_DEVCLKEN1寄存器定义错了(可能是抄Action的代码笔误了)。

4、总结

步骤很简单,之所以要写一篇文章,是想告诉大家,嵌入式开发其实挺简单的,只要有足够的细心和耐心,一切皆有可能。

作者:wowo

文章来源 :蜗窝科技

围观 547

页面

订阅 RSS - LED