tag 标签: led驱动

相关博文
  • 热度 5
    2024-4-23 11:52
    534 次阅读|
    1 个评论
    随着LED在各个领域的不同应用需求, LED驱动电路也在不断进步和发展。本文从LED的特性入手,推导出适合LED的电源驱动类型,再进一步介绍各类LED驱动设计。 设计必读:LED四个关键特性 在设计LED电路之前,我们先来了解下LED的几个特性: 特性一:非线性。 以QT Brightek HP686-IWH-CW举例,电压0-2.5V不发光,2.5V逐渐开始发光,到3.4V时发光最亮。电压继续上升,很快就会烧坏。所以LED工作在很窄的前向电压范围内。 图1,前向电压VS电流 (QT Brightek HP686-IWH-CW) 特性二:发光强度与流经的电流大致成正比。 详见以下图2。 图2,电流VS发光强度 (QT Brightek HP686-IWH-CW) 特性三:每一个LED的前向电压都不完全相同。 即使是同一个供应商的同一批物料,也会存在着差异。比如QT Brightek HP686-IWH-CW在前向电流150mA的情况下,前向电压范围从最小2.8V到最大3.4V。绝大多数供应商在LED制作过程中都先按LED颜色来分类,很多相同颜色的LED可能来自于不用的批次。 图3,前向电压(QT Brightek HP686-IWH-CW) 特性四:LED的前向电压还会随着环境温度的变换而变换。 一般是在相同的电流下,温度越高,所需的电压会下降。 图 4 电压与温度(Samsung SPMWHT541MP5WAPKS4) 选择恒流源:解决前向电压差异大问题 在LED驱动中往往是用恒流源而非恒压源。恒流源作为LED驱动电源有很明显的优势。 在一个串联LED电路中,即使LED的前向电压有所差异,相同的电流使他们的亮度基本相同。 当温度变化时,恒流源自动调节保持输出电流恒定,从而保证LED发光强度恒定。而恒压源10%的电压波动很可能造成50%的电流波动。 当串联LED时,任何一个LED不会过载。且任何一个LED短路,其他LED继续正常工作。 图5,LED串联 设计实战:LED恒流源方案选型 1. 最简单的恒流源:电压源加电阻 电阻起的作用是在供电电源波动时,稳定电流的波动,同时限制最大电流。图5中,供电电源如果有10%的电压波动,LED也会有10%的前向电压波动,这可能会引起LED电流50%的波动,这不是一个非常可靠地设计。如果把最后一个LED换成一个电阻,如图6所示,如果电阻两端的电压与LED的正向导通电压一样,LED正向导通电压增加10%,电流增加幅度也大概为10%。此方案最为简单但是功耗很大。 图6,电压源加电阻的恒流源 2. 使用线性稳压器做恒流源 使用线性稳压器组成恒流电路:I=Ig+Vref/R。其中Vref是Pin Vout与Pin ADJ之间的参考电压。 比如On semi LM317MBDTRKG的Vref=1.25V,为了电流达到150mA,电阻值可以取1.25V/150mA≈8.45 ohm。 Ig为Pin ADJ的漏电流,该电流非常小,On semi LM317MBDTRKG的Ig最大值为0.1mA. 对于一些精度要求不是特别高的场合常常可以忽略。线性稳压器做恒流源同样有着很大的功耗。 图7,线性稳压器做恒流源 3. 压控恒流源 该方案使用一个运算放大器作为比较器,形成一个反馈回路。I = Vmcu/R。其中Vmcu一般接MCU, 该方案可以达到很高的电流控制精度,并且电流可由MCU控制。缺点还是功耗大。 4. 开关稳流器 这种方案价格往往会比较贵一点,但是各方面的要求都比较兼顾。比如Recom RCD-24-0.35转换效率可以高到96%,输出电流精度可以达到±3%,输入输出电压范围也比较宽。 图9,开关稳流器 总结 本文归纳了LED的几个特性:非线性、发光强度与流经的电流大致成正比、每一个LED的前向电压都不完全相同。基于这样的特性,选择恒流源作为驱动电源有很明显的优势。进而,我们从实际应用的角度出发,介绍了几种LED恒流源设计方案以及相关的资源,帮助大家形成一个从概念到实战的完整LED驱动设计的“套路”。 来源:digikey 作者: Alan Yang
  • 2023-12-26 11:29
    60 次阅读|
    0 个评论
    超大電流 1.5A 單通道定電流驅動器 NU405ES
    ( 產品型號 : NU405ES) 数能 1.5A 单通道 LED 驱动 IC NU405ES 最大電流 1.5A 單通道定電流驅動器 輸出電流由外部電阻設定 快速的電位爬升時間 / 電位下降時間 低輸出電流差異少於± 3% 電源及負載調變率少於± 0.1%/V 工作環境溫度 -40 ° C ~ 85 ° C 無鉛環保封裝 品說明 NU405 系列是一簡單的恒流元件,在各種 LED 照 產品的應用上非常容易使用。其具有絕佳的負載與電 調變率和極小輸出電流誤差。在大面積的光源上,即 電源及負載的變動範圍很大時,都能讓 LED 亮度保持 勻一致,並增長 LED 使用壽命。 品應用 一般 LED 照明 商業照明 RGB 裝飾燈 腳位定義 : 腳位名稱 / 功能描述 GND : 接地 Rext : 電流設定電阻 OPT : 電流輸出 ( 與封裝散熱片等電位 ) NC : 空腳 / 閒置 VDS : 電源輸入
  • 热度 3
    2023-5-10 07:03
    1511 次阅读|
    0 个评论
    二、LED子系统——硬件驱动层 上篇文章我们了解了子系统的框架,下面我们来分析驱动框架中每层的实现以及作用。 在 LED 子系统中,硬件驱动层相关文件在包括: kernel/drivers/leds/ 目录下,其主要的函数有: led-gpio.c 、 led-xxx.c ,其中 led-gpio.c 为通用的平台驱动程序, led-xxx.c 为不同厂家提供的平台驱动程序。 我们在这里主要分析 led-gpio.c 1、gpio _ led _ probe分析 打开该文件,直接找到加载驱动的入口函数 gpio_led_probe 1.1 相关数据结构 1.1.1 gpio _ led _ platform_data struct gpio_led_platform_data { int num_leds ; const struct gpio_led * leds ; ​ #define GPIO_LED_NO_BLINK_LOW 0 /* No blink GPIO state low */ #define GPIO_LED_NO_BLINK_HIGH 1 /* No blink GPIO state high */ #define GPIO_LED_BLINK 2 /* Please, blink */ gpio_blink_set_t gpio_blink_set ; }; 结构体名称 : gpio_led_platform_data 文件位置 : include/linux/leds.h 主要作用 : LED 的平台数据,用于对 LED 硬件设备的统一管理 这个结构体用于父节点向子节点传递的数据时使用 1.1.2 gpio _ leds _ priv struct gpio_leds_priv { int num_leds ; struct gpio_led_data leds 根据获取的 num_leds 个数,分配对应的空间,来初始化相关数据 1.2 实现流程 static int gpio_led_probe ( struct platform_device * pdev ) { struct gpio_led_platform_data * pdata = dev_get_platdata ( & pdev dev ); // 检索设备的平台数据 struct gpio_leds_priv * priv ; int i , ret = 0 ; ​ if ( pdata && pdata num_leds ) { // 判断平台数据LED数量 priv = devm_kzalloc ( & pdev dev , sizeof_gpio_leds_priv ( pdata num_leds ), GFP_KERNEL ); if ( ! priv ) return - ENOMEM ; ​ priv num_leds = pdata num_leds ; for ( i = 0 ; i < priv num_leds ; i ++ ) { ret = create_gpio_led ( & pdata leds , & priv leds , & pdev dev , NULL , pdata gpio_blink_set ); if ( ret < 0 ) return ret ; } } else { priv = gpio_leds_create ( pdev ); // 创建LED设备 if ( IS_ERR ( priv )) return PTR_ERR ( priv ); } ​ platform_set_drvdata ( pdev , priv ); ​ return 0 ; } 函数介绍 : gpio_led_probe 是 LED 驱动的入口函数,也是 LED 子系统中,硬件设备和驱动程序匹配后,第一个执行的函数。 实现思路 : 通过 dev_get_platdata 检索设备的平台数据,如果平台数据中的 LED 数量大于零,则使用 devm_kzalloc 为其分配内存空间,并且使用 create_gpio_led 进行初始化 如果平台数据不存在或 LED 的数量为零,则使用 gpio_leds_create 创建LED。 最后,设置驱动程序数据,并返回0,表示操作成功。 数据结构 :该函数主要包括了两个数据结构 gpio_led_platform_data 和 gpio_leds_priv 2、gpio _ leds _ create分析 2.1 相关数据结构 2.1.1 gpio_led /* For the leds-gpio driver */ struct gpio_led { const char * name ; // LED名称 const char * default_trigger ; // 默认触发类型 unsigned gpio ; // GPIO编号 unsigned active_low : 1 ; // 低电平有效 unsigned retain_state_suspended : 1 ; unsigned panic_indicator : 1 ; unsigned default_state : 2 ; // 默认状态 unsigned retain_state_shutdown : 1 ; /* default_state should be one of LEDS_GPIO_DEFSTATE_(ON|OFF|KEEP) */ struct gpio_desc * gpiod ; // GPIO Group }; 结构体名称 : gpio_led 文件位置 : include/linux/leds.h 主要作用 : LED 的硬件描述结构,包括名称, GPIO 编号,有效电平等等信息。 该结构体的信息大多由解析设备树获得,将设备树中 label 解析为 name , gpios 解析为 gpiod , linux,default-trigger 解析为 default_trigger 等 2.1.2 gpio _ led _ data struct gpio_led_data { struct led_classdev cdev ; // LED Class struct gpio_desc * gpiod ; // GPIO description u8 can_sleep ; u8 blinking ; // 闪烁 gpio_blink_set_t platform_gpio_blink_set ; // 闪烁设置 }; 结构体名称 : gpio_led_data 文件位置 : drivers/leds/leds-gpio.c 主要作用 : LED 相关数据信息,主要在于 led_classdev ,用于注册设备节点信息 由设备树解析出来的 gpio_led ,然后将部分属性赋值到 gpio_led_data 中,并且初始化 led_classdev 相关属性,并且实现 led_classdev 结构体中的部分函数。 2.2 实现流程 static struct gpio_leds_priv * gpio_leds_create ( struct platform_device * pdev ) { struct device * dev = & pdev dev ; struct fwnode_handle * child ; struct gpio_leds_priv * priv ; int count , ret ; ​ count = device_get_child_node_count ( dev ); // 获取子节点数量 if ( ! count ) return ERR_PTR ( - ENODEV ); ​ priv = devm_kzalloc ( dev , sizeof_gpio_leds_priv ( count ), GFP_KERNEL ); if ( ! priv ) return ERR_PTR ( - ENOMEM ); ​ device_for_each_child_node ( dev , child ) { struct gpio_led_data * led_dat = & priv leds ; // 与gpio_leds_priv结构体关联 struct gpio_led led = {}; const char * state = NULL ; struct device_node * np = to_of_node ( child ); ​ ret = fwnode_property_read_string ( child , "label" , & led . name ); // 读设备树属性,赋值gpio_led结构体 if ( ret && IS_ENABLED ( CONFIG_OF ) && np ) led . name = np name ; if ( ! led . name ) { fwnode_handle_put ( child ); return ERR_PTR ( - EINVAL ); } ​ led . gpiod = devm_fwnode_get_gpiod_from_child ( dev , NULL , child , GPIOD_ASIS , led . name ); if ( IS_ERR ( led . gpiod )) { fwnode_handle_put ( child ); return ERR_CAST ( led . gpiod ); } ​ fwnode_property_read_string ( child , "linux,default-trigger" , & led . default_trigger ); ​ if ( ! fwnode_property_read_string ( child , "default-state" , & state )) { if ( ! strcmp ( state , "keep" )) led . default_state = LEDS_GPIO_DEFSTATE_KEEP ; else if ( ! strcmp ( state , "on" )) led . default_state = LEDS_GPIO_DEFSTATE_ON ; else led . default_state = LEDS_GPIO_DEFSTATE_OFF ; } ​ if ( fwnode_property_present ( child , "retain-state-suspended" )) led . retain_state_suspended = 1 ; if ( fwnode_property_present ( child , "retain-state-shutdown" )) led . retain_state_shutdown = 1 ; if ( fwnode_property_present ( child , "panic-indicator" )) led . panic_indicator = 1 ; ​ ret = create_gpio_led ( & led , led_dat , dev , np , NULL ); // 将gpio_led结构体、gpio_led_data关联起来 if ( ret < 0 ) { fwnode_handle_put ( child ); return ERR_PTR ( ret ); } led_dat cdev . dev of_node = np ; priv num_leds ++ ; } ​ return priv ; } 函数介绍 : gpio_leds_create 主要用于创建 LED 设备。 实现思路 : 通过 device_get_child_node_count 获取设备树中 LED 子节点的数量,根据获取到的子节点数量,分配 LED 设备对应的内存空间 通过 device_for_each_child_node 遍历每个子节点,并为每个子节点创建对应的 LED 设备 对于每个子节点,使用 fwnode_property_read_string 接口,读取设备树中相关的属性信息,如: label 、 linux,default-trigger 等,将这些信息赋值给 gpio_led 结构体中 最后将遍历的每个 LED ,调用 create_gpio_led 进行设备的创建 3、create _ gpio _ led分析 3.1 相关数据结构 3.1.1 led_classdev 该数据结构属于核心层,在硬件驱动层需要与其进行关联,遂在此介绍。 struct led_classdev { const char * name ; enum led_brightness brightness ; enum led_brightness max_brightness ; int flags ; ​ /* Lower 16 bits reflect status */ #define LED_SUSPENDED BIT(0) #define LED_UNREGISTERING BIT(1) /* Upper 16 bits reflect control information */ #define LED_CORE_SUSPENDRESUME BIT(16) #define LED_SYSFS_DISABLE BIT(17) #define LED_DEV_CAP_FLASH BIT(18) #define LED_HW_PLUGGABLE BIT(19) #define LED_PANIC_INDICATOR BIT(20) #define LED_BRIGHT_HW_CHANGED BIT(21) #define LED_RETAIN_AT_SHUTDOWN BIT(22) ​ /* set_brightness_work / blink_timer flags, atomic, private. */ unsigned long work_flags ; ​ #define LED_BLINK_SW 0 #define LED_BLINK_ONESHOT 1 #define LED_BLINK_ONESHOT_STOP 2 #define LED_BLINK_INVERT 3 #define LED_BLINK_BRIGHTNESS_CHANGE 4 #define LED_BLINK_DISABLE 5 ​ /* Set LED brightness level * Must not sleep. Use brightness_set_blocking for drivers * that can sleep while setting brightness. */ void ( * brightness_set )( struct led_classdev * led_cdev , enum led_brightness brightness ); /* * Set LED brightness level immediately - it can block the caller for * the time required for accessing a LED device register. */ int ( * brightness_set_blocking )( struct led_classdev * led_cdev , enum led_brightness brightness ); /* Get LED brightness level */ enum led_brightness ( * brightness_get )( struct led_classdev * led_cdev ); ​ /* * Activate hardware accelerated blink, delays are in milliseconds * and if both are zero then a sensible default should be chosen. * The call should adjust the timings in that case and if it can't * match the values specified exactly. * Deactivate blinking again when the brightness is set to LED_OFF * via the brightness_set() callback. */ int ( * blink_set )( struct led_classdev * led_cdev , unsigned long * delay_on , unsigned long * delay_off ); ​ struct device * dev ; const struct attribute_group ** groups ; ​ struct list_head node ; /* LED Device list */ const char * default_trigger ; /* Trigger to use */ ​ unsigned long blink_delay_on , blink_delay_off ; struct timer_list blink_timer ; int blink_brightness ; int new_blink_brightness ; void ( * flash_resume )( struct led_classdev * led_cdev ); ​ struct work_struct set_brightness_work ; int delayed_set_value ; ​ #ifdef CONFIG_LEDS_TRIGGERS /* Protects the trigger data below */ struct rw_semaphore trigger_lock ; ​ struct led_trigger * trigger ; struct list_head trig_list ; void * trigger_data ; /* true if activated - deactivate routine uses it to do cleanup */ bool activated ; #endif ​ #ifdef CONFIG_LEDS_BRIGHTNESS_HW_CHANGED int brightness_hw_changed ; struct kernfs_node * brightness_hw_changed_kn ; #endif ​ /* Ensures consistent access to the LED Flash Class device */ struct mutex led_access ; }; 结构体名称 : led_classdev 文件位置 : include/linux/leds.h 主要作用 :该结构体所包括的内容较多,主要有以下几个功能 brightness 当前亮度值, max_brightness 最大亮度 LED 闪烁功能控制: blink_timer 、 blink_brightness 、 new_blink_brightness 等 attribute_group :创建 sysfs 文件节点,向上提供用户访问接口 由上面可知,在创建 gpio_led_data 时,顺便初始化 led_classdev 结构体,赋值相关属性以及部分回调函数,最终将 led_classdev 注册进入 LED 子系统框架中,在 sysfs 中创建对应的文件节点。 3.2 实现流程 static int create_gpio_led ( const struct gpio_led * template , struct gpio_led_data * led_dat , struct device * parent , struct device_node * np , gpio_blink_set_t blink_set ) { int ret , state ; ​ led_dat gpiod = template gpiod ; if ( ! led_dat gpiod ) { /* * This is the legacy code path for platform code that * still uses GPIO numbers. Ultimately we would like to get * rid of this block completely. */ unsigned long flags = GPIOF_OUT_INIT_LOW ; ​ /* skip leds that aren't available */ if ( ! gpio_is_valid ( template gpio )) { // 判断是否gpio合法 dev_info ( parent , "Skipping unavailable LED gpio %d (%s)\n" , template gpio , template name ); return 0 ; } ​ if ( template active_low ) flags |= GPIOF_ACTIVE_LOW ; ​ ret = devm_gpio_request_one ( parent , template gpio , flags , template name ); if ( ret < 0 ) return ret ; ​ led_dat gpiod = gpio_to_desc ( template gpio ); // 获取gpio组 if ( ! led_dat gpiod ) return - EINVAL ; } ​ led_dat cdev . name = template name ; // 赋值一些属性信息 led_dat cdev . default_trigger = template default_trigger ; led_dat can_sleep = gpiod_cansleep ( led_dat gpiod ); if ( ! led_dat can_sleep ) led_dat cdev . brightness_set = gpio_led_set ; // 设置LED else led_dat cdev . brightness_set_blocking = gpio_led_set_blocking ; led_dat blinking = 0 ; if ( blink_set ) { led_dat platform_gpio_blink_set = blink_set ; led_dat cdev . blink_set = gpio_blink_set ; } if ( template default_state == LEDS_GPIO_DEFSTATE_KEEP ) { state = gpiod_get_value_cansleep ( led_dat gpiod ); if ( state < 0 ) return state ; } else { state = ( template default_state == LEDS_GPIO_DEFSTATE_ON ); } led_dat cdev . brightness = state ? LED_FULL : LED_OFF ; if ( ! template retain_state_suspended ) led_dat cdev . flags |= LED_CORE_SUSPENDRESUME ; if ( template panic_indicator ) led_dat cdev . flags |= LED_PANIC_INDICATOR ; if ( template retain_state_shutdown ) led_dat cdev . flags |= LED_RETAIN_AT_SHUTDOWN ; ​ ret = gpiod_direction_output ( led_dat gpiod , state ); if ( ret < 0 ) return ret ; ​ return devm_of_led_classdev_register ( parent , np , & led_dat cdev ); // 将LED设备注册到子系统中 } 函数介绍 : create_gpio_led 创建 LED 设备的核心函数 实现思路 : 先通过 gpio_is_valid 接口,判断 GPIO 是否合法 将上层从设备树解析出来的信息,填充到 gpio_led_data 字段中,并且初始化部分字段,如: led_classdev 、 gpio_desc 等 填充回调函数,实现相应的动作,如: gpio_led_set 、 gpio_led_set_blocking 、 gpio_blink_set 等 最后调用 devm_of_led_classdev_register 接口,将 LED 设备注册到 LED 框架之中。 4、回调函数分析 硬件驱动层,肯定包括最终操作硬件的部分,也就是上面提到的一些回调函数,属于我们驱动工程师开发的内容。 4.1 gpio _ blink _ set static int gpio_blink_set(struct led_classdev *led_cdev, unsigned long *delay_on, unsigned long *delay_off) { struct gpio_led_data *led_dat = cdev_to_gpio_led_data(led_cdev); blinking = 1; gpiod, GPIO_LED_BLINK, delay_on, delay_off); } 函数介绍 : gpio_blink_set 主要用于设置闪烁的时延 4.2 gpio _ led _ set 和gpio _ led _ set_blocking static inline struct gpio_led_data * cdev_to_gpio_led_data(struct led_classdev *led_cdev) { return container_of(led_cdev, struct gpio_led_data, cdev); } static void gpio_led_set(struct led_classdev *led_cdev, enum led_brightness value) { struct gpio_led_data *led_dat = cdev_to_gpio_led_data(led_cdev); int level; if (value == LED_OFF) level = 0; else level = 1; blinking) { gpiod, level, NULL, NULL); blinking = 0; } else { can_sleep) gpiod, level); else gpiod, level); } } static int gpio_led_set_blocking(struct led_classdev *led_cdev, enum led_brightness value) { gpio_led_set(led_cdev, value); return 0; } 函数介绍 : gpio_led_set 和 gpio_led_set_blocking 主要用于设置亮度,区别在于 gpio_led_set 是不可睡眠的, gpio_led_set_blocking 是可休眠的。 5、总结 上面我们了解了硬件驱动层的实现流程以及相关数据结构,总结来看: 5.1 数据结构之间的关系如下 5.2 函数实现流程如下 gpio_led_probe(drivers/leds/leds-gpio.c) gpio_leds_create create_gpio_led // 创建LED设备 devm_of_led_classdev_register 5.3 主要作用如下 从设备树获取 LED 相关属性信息,赋值给 gpio_led 结构体 将 gpio_led 、 gpio_leds_priv 、 led_classdev 等数据结构关联起来 将 LED 设备注册进入 LED 子系统中
  • 热度 6
    2023-1-4 00:21
    818 次阅读|
    0 个评论
    新一代混合信号LED驱动控制器芯片 LED照明产品标准迭代升级,以及使用者对照明光质量的追求,是制造厂商创新产品方案的动力。英飞凌广泛的LED照明产品组合,一直以来是国际国内照明制造厂商青睐的选择。 ICL88xx家族系列为新一代LED通用照明而设计研发,创新的混合信号控制技术,使得产品具有超高性价比。ICL88xx适用于反激AC-DC控制拓扑。基于ICL88xx设计的系统在提供高质量光输出同时,具有高功率因素,低谐波失真,低EMI,高效率等性能。ICL8800具有家族系列全部基本功能,ICL8810及ICL8820在ICL8800基础上增加额外功能,包括支持智能照明的低待机功耗,支持更好EMI性能的频率抖动功能。 英飞凌AC-DC LED 驱动控制芯片,分为两大类别:数字控制器XDPL系列,针对高性能需求设计;混合信号控制器ICL系列,针对更高性价比需求场合。 跟市场上其他方案相比,ICL88xx具明显优势:满足最新IEC61000-3-2谐波要求及欧盟ERP2019年后的新标准要求;动态响应快;满足智能照明要求的低功耗;支持 应急照明 设计;支持小型化高功率密度设计。 ICL88xx全系列高度集成AC-DC LED驱动 ICs,支持功率可达150W,非常适合中小功率LED驱动电源设计,以及其他需要高PF或低待机功耗的应用领域。 CL88xx功能描述 ICL88xx系统概述 ICL88xx组成的典型LED照明系统框图如图1所示,ICL88xx控制的反激输出恒压给后级,图示两级方案不但减小了输出纹波,提高了光输出的质量,而且降低了单级系统对设计余量的要求,大幅提高了整个系统的性能。基于这种拓扑架构可以设计从简单入门级的 LED驱动器 到复杂的智能LED 驱动器 ,灵活性和可扩展性非常高。 图1 ICL88xx组成典型两级LED驱动器系统 ICL88xx可以实现副边反馈控制或者原边反馈控制,根据项目的需求可自主选择。原边控制的优点在于不需要光耦,BOM成本相对节省;副边控制比原边控制具有更多优点: 变压器 设计更容易更简单,直接测量输出电压,不需要泄放电路,降低了过电压的风险,同时也节省了成本;副边控制可以和线性恒流控制器配合使用,减少DC-DC级的压降,提升了效率;副边控制在极轻载比如深度调光时仍能保持输出恒定,同时保持高效率。对于深度调光的LED驱动器设计,副边控制是最适合的。典型副边控制ICL88xx系统如图2所示。 图2 典型ICL88xx副边恒压系统 ICL88xx集成创新混合信号控制技术,采用DSO-8封装。家族系列一共有三款产品,ICL8800基本款具有优异的PFC和THD性能,完善的功能及相关保护;ICL8810在ICL8800的基础上增加了间歇模式,以支持智能照明低功耗需求;ICL8820在ICL8810的基础上集成了了频率抖动功能,在直流输入模式下有更优异的EMI性能。全系列支持以下功能: ● 反激恒压输出; ● 副边反馈控制或原边控制; ● 全电压输入(90Vac to 300Vac,45Hz to 66Hz)和直流输入; ● 可调节最大导通时间,低压输入限功率以保证安全; ● 开机软起动; ● 间歇工作模式; ● 频率抖动功能 此外,全系列集成过电压,过电流,过温度保护,及输入过压欠压检测保护,开环保护。 工作模式 ICL88xx电压模式工作有利于功率因数校正,基于工作条件比如输入电压输入频率负载状况等自动选择最优的工作模式。支持的工作模式有: ● 准谐振模式 这种模式通过控制导通时间让开关在谷底开通,最小化开关损耗,以最大化系统效率。 图3 第一个谷底开关波形 ● 间歇模式 这种模式提高了系统在轻载时的效率,扩展了宽电压输入的功率范围,满足低待机功耗要求。 在高功率时,控制器工作在准谐振模式,功率降低时导通时间减少;功率降到一定程度时,控制器增加谷底数,避免频率过高;谷底数改变时,导通时间会同步优化使得功率相对恒定。 为了输出最小的功率,ICL8810和ICL8820会进入间歇模式,间歇频率是交流输入频率的四倍。 图4 开关特性VS相对功率(ICL8810/ICL8820) 反馈环 脉冲的产生基于从VS引脚引出的电流。这种方法具有更好的抗噪性。在包括突发模式在内的整个脉冲宽度范围内,VS电流从200μA指数映射到600μA。在20μs到1μs的范围内,映射相对良好,每50μA光电流的脉冲持续时间减少一半。 图5 导通时间与vs引脚电流的映射 为确保反馈回路正常运行,需要从VS引脚接一个12 kΩ接地。该引脚的最小电流(通过光耦的电流加上12 k Ω 电阻的电流)导致最大功率传输,VS引脚输出的最大电流导致最小功率工作点。为了获得最佳的THD和PF结果,建议使用几Hz的交叉频率。 图6 VS引脚电路 功率因数校正和THD校正 栅极驱动GD通过导通时间控制在电压模式下驱动 功率MOSFET 。通过外部反馈回路抑制输出纹波,可在交流半正弦波期间获得准恒定的导通时间。这已经确保了基本的高功率因数和低THD性能。 此外,ZCD引脚用于THD校正功能,根据检测到的IZCD电流扩展驱动信号的脉冲宽度。这优化了输入电流波形,尤其是在接近交流电压过零的区域。原理如图7所示。 图7 THD校正原理 设计案例 以下为设计案例的部分信息结果(基于运放反馈)。 副边控制案例 由于一次侧功率扩展以及二次侧功能扩展更加方便,两级拓扑越来越流行。高光质、深度调光,以及带有 传感器 和MCU的更复杂系统,需要通过二次侧调节(SSR)拓扑实现稳定的输出电压(CV)。闪烁和总谐波失真(THD)以及谐波的更严格标准也更有利于SSR拓扑。SSR配置中使用的控制器适用于开/关LED驱动器,是深度调光至0.1%和调灭的最佳解决方案。 本案例是基于SSR控制的43W设计。主要设计规格如下: ● 输入电压:90 to 305Vac; ● 输出电压: 54Vdc ● 输出电流: 0-800mA ● 最低效率 (满载): 91% ● 最小工作频率(满载):52kHz ● 谐波:EN61000-3-2 ● EMI:EN55015 电路板实物及PCB布局如下图8所示。 图8 43W SSR 电路板 输出电压调整率如下图9: 图9 电压调整率 效率曲线如图10: 图10 效率曲线 空载待机功耗如图11: 图11 待机功耗 THD如图12: 图12 THD曲线 PF测量结果如图13: 图13 PF曲线 其他测试结果请参考相关文档,比如谐波,EMI,Jitter, Burst mode及相关保护功能等。 原边控制案例 如果只需要调光到5%到10%,并且可以接受更大的输出电压公差(3%到5%),那么就有可能采用PSR设计,与SSR解决方案相比,系统成本更低,省去了光耦,电压基准和误差放大器。ICL88xx系列可用于SSR系统以及PSR拓扑中的所有功能。 买电子元器件现货上唯样商城 本案例为基于PSR控制模式设计的42W参考设计。主要规格如下: ● 输入电压 100-264Vrms ● 输出电压设定 Vout,setpoint 54V ● 输出电流 Iout 0-750mA ● 最大效率(Pout,max)91% ● 目标最小频率(Pout,max) 52kHz 图14为设计电路板。 图14 PSR设计案例电路板 图15是输出电压调整率。 图15 输出电压与负载 效率曲线如图16所示。 图16 参考设计效率 PF和THD分别如图17和图18所示。 图17 PF曲线 图18 THD曲线 小型化设计案例 小型化,高功率密度是电源产品设计的趋势之一。提高工作频率有利于缩小变压器和被动器件的体积。使用ICL88xx有两种小型化设计的方式。 ICL88xx SSR模式结合DC-DC 降压变换器,使用电压差值控制,可以显著提高系统效率,降低后级Buck级温度,并降低buck电感等组件的尺寸及成本,从而减少系统的尺寸和成本。系统简图如图18所示,具体信息请参阅:《ILD8150E 高效率参考设计报告》。 图19 ICL88xx+ILD8150高效率方案示意图 使用ICL88xx做小型化方案还可以直接用高频工作模式,ICL88xx可以工作在250kHz以上,搭配市面上开关速度最快的CoolMOS,或者搭配氮化镓器件,可以使整个系统的体积大幅度减少。 设计工具 英飞凌提供基于ICL88xx的开发设计工具,方便设计者使用。点击此处即可下载图19所示界面的 开发工具 。 图20 ICL88xx设计工具 结论 本文描述了英飞凌LED AC-DC控制器ICL88xx的概况,并配以设计案例测试结果。ICL88xx非常适合LED驱动器电源系统的AC/DC一级,高PF,低THD,高效率,支持0.5%以下的调光,支持低待机功耗,支持小型化设计。能够满足绝大多数智能照明对控制芯片的要求。 参考文献 Infineon _Datasheet_ICL88xx_Rev1.0 Infineon-Design_guide_Lighting_ICs_ACDC_LED_Driver_ICs_ICL88xx-ApplicationNotes-v02_00-EN Infineon-Reference_board_REF_ICL8810_LED_42W_PSR-ApplicationNotes-v01_01-EN Infineon-Reference_boards_REF_ICL88xx_LED_xxx-ApplicationNotes-v01_00-EN Infineon-Engineering_report_ILD8150E_LED_Driver_high_efficiency_reference_design-ApplicationNotes-v01_00-EN Power and Sensing Selection Guide 2022 来源:英飞凌科技 作者:李纪明 首席工程师 作者:陈杰 高级主任工程师
  • 2022-11-21 11:01
    0 个评论
    概述 AP5151 是一种低压差、线性降压、 固定输出电流的 LED 恒流驱动器。 除 LED 外,AP5151 无需外接其它元 器件即可构成一个恒流输出的 LED 驱动 电路。 AP5151 内置过热保护功能,可有效 保护 芯片 ,避免结温超过 120oC 时因过热 而造成损坏。AP5151 还集成了 LED 短路 保护、电源欠压保护功能。此外,AP5151 自带软启动功能。 AP5151 可提供多个规格的输出电流 供客户选择,输出电流可以从 100mA 到 380mA,步长为 10mA,并可通过多芯片 并联的方式扩展 LED 的电流驱动能力。 AP5151 采用 SOT-89-3 的封装形式。 特点 ? 电源电压:2.7V~5.5V ? 输出电流:100mA 到 380mA ? 低压差:150mV@350mA ? 输出电流精度:优于±5% ? 过热保护阈值:120oC ? 欠压保护:2.5V ? LED 短路保护 ? 软启动 应用领域 ? 线性 LED 照明驱动 ? LED 手电筒、LED 台灯、LED 矿灯、 LED 指示灯等
相关资源
  • 所需E币: 0
    时间: 2022-8-17 13:56
    大小: 1.03MB
    上传者: 百盛电子666
    一般说明FP7209是针对LED驱动器的升压拓扑开关调节器。它提供了内置的门驱动销,用于驱动外部N-MOSFET。误差放大器的非反相输入端连接到一个0.25V的参考电压。如UVP、OVP、OCP等,保护系统电路有三个功能。LED电流可以通过一个连接到DIM针脚的外部信号来调整。DIM引脚接受直流电压或PWM信号。PWM信号滤波器组件包含在芯片中。电流模式控制和外部补偿网络使系统稳定简单灵活。FP7209可在小占用空间的SOP-8L(EP)包中使用,以适合为应用领域节省空间的PCB布局。特征启动电压:2.8V宽电源电压工作范围:5V至24V精密反馈参考电压:0.25V(最大值)模拟和数字调光控制关机电流:6μA(最大值)固定开关频率:150KHz输入下电压保护(UVP)输出过电压保护(OVP)开关MOSFET过电流保护(OCP)过温保护(OTP)包:SOP-8L(EP)应用LED模块显示背光汽车照明便携式LED照明
  • 所需E币: 0
    时间: 2022-8-17 13:58
    大小: 274.06KB
    上传者: 百盛电子666
    一般说明FP7208A是针对LED驱动器的增压拓扑开关调节器。它提供了内置的门驱动销,用于驱动外部N-MOSFET。误差放大器的非反相输入端连接到一个0.2V的参考电压。它具有由外部电容器设置的可编程的软启动时间,以及由外部电阻设置的过电压保护。LED电流可以通过一个连接到EN针脚的外部信号来调整。EN引脚接受直流电压或PWM信号。PWM信号滤波器组件包含在芯片中。特征启动电压:2.5V宽电源电压工作范围:4.5V至24V精密反馈参考电压:0.2V(最大值)模拟和数字调光控制关机电流:6μA(最大值)内部固定开关频率:300KHz可编程软启动功能(SS)可编程过电压保护(OVP)过温保护(OTP)软件包:SOP-8L(EP)应用LED模块显示背光汽车照明便携式LED照明
  • 所需E币: 4
    时间: 2019-12-26 12:36
    大小: 1.14MB
    上传者: givh79_163.com
    OC5205中文规格书……
  • 所需E币: 4
    时间: 2019-12-26 01:06
    大小: 162.24KB
    上传者: quw431979_163.com
    包含一个完整的开发实例的源文件(包括LED驱动),已经通过编译,供upsd3200开发参考……
  • 所需E币: 3
    时间: 2019-12-28 19:39
    大小: 829.25KB
    上传者: rdg1993
    infineonILD41202WLED驱动方案Driving2WLEDswithILD4120ApplicationNoteAN270Revision:0.4Date:13September2011LEDDriver&AFDiscretesEdition2011-09-13PublishedbyInfineonTechnologiesAG81726Munich,Germany2011InfineonTechnologiesAGAllRightsReserved.LEGALDISCLAIMERTHEINFORMATIONGIVENINTHISAPPLICATIONNOTEISGIVENASAHINTFORTHEIMPLEMENTATIONOFTHEINFINEONTECHNOLOGIESCOMPONENTONLYANDSHALLNOTBEREGARDEDASANYDESCRIPTIONORWARRANTYOFACERTAINFUNCTIONALITY,CONDITIONORQUALITYOFTHEINFINEONTECHNOLOGIESCOMPONENT.THERECIPIENTOFTHISAPPLICATIONNOTEMUSTVERIFYANYFUNCTIONDESCRIBEDHEREININTHEREALAPPLICATION.INFINEONTECHNOLOGIESHEREBYDISCLAIMSANYANDALLWARRANTIESANDLIABILITIESOFANYKIND(INCLUDINGWITHOUTLIMITATIONWARRAN……
  • 所需E币: 4
    时间: 2019-12-28 19:39
    大小: 661.8KB
    上传者: 238112554_qq
    ILD4035驱动LED1w芯片电压输出范围4.5-42V模拟或PWM输出Driving1WLEDswithILD4035ApplicationNoteAN215Revision:1.3Date:20Jul2011LEDDriver&AFDiscretesEdition2011-08-12PublishedbyInfineonTechnologiesAG81726Munich,Germany2011InfineonTechnologiesAGAllRightsReserved.LEGALDISCLAIMERTHEINFORMATIONGIVENINTHISAPPLICATIONNOTEISGIVENASAHINTFORTHEIMPLEMENTATIONOFTHEINFINEONTECHNOLOGIESCOMPONENTONLYANDSHALLNOTBEREGARDEDASANYDESCRIPTIONORWARRANTYOFACERTAINFUNCTIONALITY,CONDITIONORQUALITYOFTHEINFINEONTECHNOLOGIESCOMPONENT.THERECIPIENTOFTHISAPPLICATIONNOTEMUSTVERIFYANYFUNCTIONDESCRIBEDHEREININTHEREALAPPLICATION.INFINEONTECHNOLOGIESHEREBYDISCLAIMSANYANDALLWARRANTIESANDLIABILITIESOFANYKIND(INCLUDINGWITHOUTLIMITATIONWARRANT……
  • 所需E币: 5
    时间: 2019-12-28 19:39
    大小: 648.63KB
    上传者: wsu_w_hotmail.com
    使用ILD4001驱动LED(2w-5w)芯片电压输出范围4.5-42V模拟或PWM输出最大3A输出Driving2Wto5WLEDswithILD4001ApplicationNoteAN213Revision:1.1Date:23June2011LEDDriver&AFDiscretesEdition2011-07-01PublishedbyInfineonTechnologiesAG81726Munich,Germany2011InfineonTechnologiesAGAllRightsReserved.LEGALDISCLAIMERTHEINFORMATIONGIVENINTHISAPPLICATIONNOTEISGIVENASAHINTFORTHEIMPLEMENTATIONOFTHEINFINEONTECHNOLOGIESCOMPONENTONLYANDSHALLNOTBEREGARDEDASANYDESCRIPTIONORWARRANTYOFACERTAINFUNCTIONALITY,CONDITIONORQUALITYOFTHEINFINEONTECHNOLOGIESCOMPONENT.THERECIPIENTOFTHISAPPLICATIONNOTEMUSTVERIFYANYFUNCTIONDESCRIBEDHEREININTHEREALAPPLICATION.INFINEONTECHNOLOGIESHEREBYDISCLAIMSANYANDALLWARRANTIESANDLIABILITIESOFANYKIND(INCLUDINGWITHOUTLIMITATIONW……
  • 所需E币: 3
    时间: 2019-12-28 19:39
    大小: 628.58KB
    上传者: 978461154_qq
    infineonBCR402R20ma-60maLED驱动方案ApplicationNote,Rev.2.0,Jan.2007ApplicationNoteNo.066BCR402R:LightEmittingDiode(LED)DriverICProvidesConstantLEDCurrentIndependentofSupplyVoltageVariationRF&ProtectionDevicesEdition2007-01-04PublishedbyInfineonTechnologiesAG81726München,GermanyInfineonTechnologiesAG2009.AllRightsReserved.LEGALDISCLAIMERTHEINFORMATIONGIVENINTHISAPPLICATIONNOTEISGIVENASAHINTFORTHEIMPLEMENTATIONOFTHEINFINEONTECHNOLOGIESCOMPONENTONLYANDSHALLNOTBEREGARDEDASANYDESCRIPTIONORWARRANTYOFACERTAINFUNCTIONALITY,CONDITIONORQUALITYOFTHEINFINEONTECHNOLOGIESCOMPONE……
  • 所需E币: 5
    时间: 2019-12-28 19:39
    大小: 1MB
    上传者: wsu_w_hotmail.com
    infineonMR167w-10wLED驱动方案MR167W/10WcontrolboardusingILD4001stepdownLEDcontrollerApplicationNoteAN-EVALRevision:1.0Date:08March2012PowerManagementandMultimarketEdition2012-03-08PublishedbyInfineonTechnologiesAG81726Munich,Germany2012InfineonTechnologiesAGAllRightsReserved.LEGALDISCLAIMERTHEINFORMATIONGIVENINTHISAPPLICATIONNOTEISGIVENASAHINTFORTHEIMPLEMENTATIONOFTHEINFINEONTECHNOLOGIESCOMPONENTONLYANDSHALLNOTBEREGARDEDASANYDESCRIPTIONORWARRANTYOFACERTAINFUNCTIONALITY,CONDITIONORQUALITYOFTHEINFINEONTECHNOLOGIESCOMPONENT.THERECIPIENTOFTHISAPPLICATIONNOTEMUSTVERIFYANYFUNCTIONDESCRIBEDHEREININTHEREALAPPLICATION.INFINEONTECHNOLOGIESHEREBYDISCLAIMSANYANDALLWARRANTIESANDLIABILITIESO……
  • 所需E币: 4
    时间: 2019-12-28 19:39
    大小: 1.4MB
    上传者: 2iot
    infineonLED驱动概念,器件总览BodyPower/H.HopfgartnerLEDDrivingConceptsandInfineonBasicLEDDriversApplicationNoteV1.12011-06-29AutomotivePowerLEDDrivingConceptsandInfineonBasicLEDDriversBasicLEDDriverRevisionHistory:V1.1,2011-06-29PreviousVersion:V1.0PageSubjects(majorchangessincelastrevision)9BCR42xPremovedApplicationNote2V1.1,2011-06-29LEDDrivingConceptsandInfineonBasicLEDDriversTableofContentsTableofContents1Abstract……
  • 所需E币: 3
    时间: 2019-12-28 21:43
    大小: 22.75MB
    上传者: 238112554_qq
    05年模块电源与电源管理技术高级研讨会演讲稿……
  • 所需E币: 5
    时间: 2019-12-25 11:02
    大小: 55.2KB
    上传者: wsu_w_hotmail.com
    4511CMOSBCD-7段锁存/译码/LED驱动……
  • 所需E币: 4
    时间: 2020-1-3 18:04
    大小: 524.46KB
    上传者: 微风DS
    照明用LED驱动电源设计详细图解照明用LED驱动电源设计详细图解LED的排列方式及LED光源的规范决定着基本的驱动器要求。LED驱动器的主要功能就是在一定的工作条件范围下限制流过LED的电流,而无论输入及输出电压如何变化。最常用的是采用变压器来进行电气隔离。文中论述了LED照明设计需要考虑的因素。一、LED驱动器通用要求驱动LED面临着不少挑战,如正向电压会随着温度、电流的变化而变化,而不同个体、不同批次、不同供应商的LED正向电压也会有差异;另外,LED的“色点”也会随着电流及温度的变化而漂移。另外,应用中通常会使用多颗LED,这就涉及到多颗LED的排列方式问题。各种排列方式中,首选驱动串联的单串LED,因为这种方式不论正向电压如何变化、输出电压(Vout)如何“漂移”,均提供极佳的电流匹配性能。当然,用户也可以采用并联、串联-并联组合及交叉连接等其它排列方式,用于需要“相互匹配的”LED正向电压的应用,并获得其它优势。如在交叉连接中,如果其中某个LED因故障开路,电路中仅有1个LED的驱动电流会加倍,从而尽量减少对整个电路的影响。图1常见的LED排列方式LED的排列方式及LED光源的规范决定着基本的驱动器要求。LED驱动器的主要功能就是在一定的工作条件范围下限制流过LED的电流,而无论输入及输出电压如何变化。LED驱动器基本的工作电路示意图如图2所示,其中所谓的“隔离”表示交流线路电压与LED(即输入与输出)之间没有物理上的电气连接,最常用的是采用变压器来电气隔离,而“非隔离”则没有采用高频变压器来电气隔离。……
  • 所需E币: 5
    时间: 2020-1-3 18:06
    大小: 69.06KB
    上传者: 微风DS
    LightEmittingDiodes,orLED's,arediscretecompo-nentsabletoproducelightwhenacurrentpassesthroughthem.MostmicrocontrollerdesignsuseoneormoreLED's.ThisapplicationhighlightstheutilityofdrivingmultipleLED'swithaminimumnumberofI/Opins.Typically,eachI/OdrivesorsourcesasingleLED.Todrivemorethanone,ahighI/Ocountisrequired.InordertoreduceI/Orequirements,LED'saremulti-plexedinamatrix(asfoundonakeyboard).Thecom-plementaryLEDdrivemethodproposestoimplementevenmoreLEDswhileusingfewerI/O.LEDsarepolarizedandcanonlyoperatewhencurrentflowsfromanodetocathode(unlikeaswitch).Wecanthereforetakeadvantageofthisfact.Table1showsthenumberofpossibleLEDswithrespecttothenumberofI/Opinsrequired.Fifty-sixLEDscanbedrivenusingonly8pins.TheonlydrawbackisthatonlyoneLEDcanbedrivenatatime.MTB029ComplementaryLEDDriveTHEORYOFOPERATIONAuthor:Jean-ClaudeRebicPioneer-StandardSomemicrocontrollersavailabletodaycansinkhighcurrent,whileothersofferalimitednumberofpinstosourcehighcurrent.MicrochipmicrocontrollershaveaINTRODUCTIONveryexiblepinstructure.Whenapinisconguredasaninput,th……
  • 所需E币: 4
    时间: 2020-1-3 18:51
    大小: 476.68KB
    上传者: 2iot
    在简要介绍超高亮LED的特点以及特性的基础上,详细介绍了LED的电阻限流、线性调节器和开关调节器等驱动方式,在此基础上介绍了超高亮LED的驱动芯片MLX10801的功能和应用.并给出了当前主要超高亮LED驱动芯片的主要特点。……
  • 所需E币: 3
    时间: 2020-1-3 18:52
    大小: 107.49KB
    上传者: 978461154_qq
    驱动7段LED显示器有许多种选择,但大都局限于低输出电流。这里描述的方案采用一个作为移位寄存器连接的74ALS374或74AS374八路锁存器,对每位进行移位。……
  • 所需E币: 4
    时间: 2020-1-3 19:15
    大小: 192.94KB
    上传者: rdg1993
    利用计算机并口和MAX7221驱动LED程序……
  • 所需E币: 3
    时间: 2020-1-6 12:12
    大小: 56.54KB
    上传者: rdg1993
    CMOSBCD-7段锁存、译码、LED驱动……
  • 所需E币: 3
    时间: 2019-12-24 18:16
    大小: 460.34KB
    上传者: 二不过三
    WhiteLEDDriverwithPWMDimmingISL97634DataSheetMarch7,2008FN6264.3WhiteLEDDriverwithWidePWMFeaturesDimmingRangeDrivesUpto7LEDsinSeries(3.5V/20mAtype)TheISL97634representsanefficientandhighlyintegratedOVP(14V,18V,and26Vfor3,4and7LEDsApplications)PWMboostLEDdriverthatissuitablefor1.8”to3.5”LCDsthatemp……
  • 所需E币: 4
    时间: 2020-1-6 15:07
    大小: 232.05KB
    上传者: 978461154_qq
    mc1413实际应用……