0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

幻彩灯珠的秘密

niebinfeng 来源:niebinfeng 作者:niebinfeng 2023-06-25 15:31 次阅读

幻彩灯珠介绍

一、幻彩灯珠其实我们可以理解为该灯珠内部有一颗LED驱动芯片外加R,G,B 3种颜色的LED的合封体。并且这颗LED驱动芯片可以驱动3路 LED,每一路LED驱动都跟内部的R,G,B通过封装打线连接好了。

1、幻彩灯珠的应用场所:

(1)、家庭照明。幻彩灯珠可以应用于家庭中的各种照明场景,如客厅、卧室、厨房等。多彩变幻的颜色可以为家庭营造出温馨、浪漫的氛围。

(2)、商业场所。幻彩灯珠可以应用于商业场所的装饰和照明,如商场、酒店、ktv等。多彩变幻的颜色可以为商业场所营造出艺术感和时尚感。

(3)、户外景观。幻彩灯珠可以应用于城市公园、广场、桥梁等户外景观,为城市增添艺术气息和夜间景观

2、幻彩灯珠对比传统灯珠优缺点

(1)、颜色多彩变幻。幻彩灯珠的多彩变幻可以为家庭、商业场所等营造出良好的氛围

(2)、相比传统的三基色LED灯珠+外置LED驱动芯片体积要小,更容易生产

(3)、相比传统的LED灯珠+外置LED驱动芯片 成本更低

幻彩灯珠内置驱动芯片介绍

一、市场常见的有WS2812,SM16703P,目前我们公司推出了AD2203芯片,该芯片性价比更高。

AD2203是三通道LED驱动IC,内部集成有MCU数字接口、数据锁存器、LED驱动等电路。通过外围MCU控制实现该芯片的单独灰度、级联控制实现户外大屏的彩色点阵发光控制 。 主要特征: 默认上电灯不亮,恒流12mA(可定制),256级灰度可调,数据自动整形,传输数率800---1200KHz,标准应用电压5V

poYBAGSX98mAWAPvAAAs73CSX4w965.png管脚定义 pYYBAGSX-BCASEbOAACZ_ftiRc0473.png

具体参数如下:

poYBAGSX-daATOhAAABDEjGgsHg302.png

六、通讯方式和应用电路

芯片设计为单线归零码通讯方式。芯片上电复位以后,接收DIN 的数据,足24 bit 后,DOUT 端口开始转发数据,输出到下一个芯片。在转发之前DOUT=0电位。芯片 OUTR、OUTG、OUTB 三个端口可输出相应24 bit 数据的不同占空比的信号。如果DIN 端输入信号为RESET 信号,芯片将接收到的数据送显示,芯片将在该信号结束后重新接收新的数据,在接收完开始的 24bit 数据后,通过DOUT口转发数据,芯片在没有接收到RESET 码前,OUTR、OUTG、OUTB 管脚原输出亮度保持不变,当接收到不小于80µs 低电平RESET 码后,芯片将刚才接收到的24 bit 亮度数据输出到OUTR、OUTG、OUTB 引脚上。 七、数据编码格式

T0H: 350ns T0L: 800ns T1H: 800ns T1L: 350ns (容错20%) Trst > 80us

pYYBAGSX_FGAPSZGAAAfdxv41H4878.png

八、级连方法

pYYBAGSX_KqAPnmtAAAc9R18rYM443.png

九、数据传输方法

单芯片24BIT数据发送顺序:高位先发,即R7先发送

poYBAGSX_QyAbcfPAAAmzJMnBco882.png

十、典型应用电路

pYYBAGSX_U-AWK8FAADWr5ywWe4687.png

AD2202 应用编程之炫彩渐变效果(MCU 应广150C)

#include "extern.h"

byte red, green, blue; //Could save these three bytes by using the rgb EWORD directly ( rgb$0, rgb$1, rgb$2)
byte mode;
byte hueinc;
byte firstinc;
EWORD rgb;
word pixels; //Only has to be a word if number of pixels > 255
word firstPixelHue;

#define definedPIXELS 300;//像素点

bit LED : pa.6;
bit BTN : pa.4;

int count;
//====================bit1
send1 MACRO
SET1 LED;
.DELAY 5;
$ LED low;
// .DELAY 1; //Going around is enough delay
ENDM
//===================bit0
send0 MACRO
SET1 LED;
.DELAY 2;
$ LED low;
.DELAY 2;
ENDM
//========================

void SendRGB (void)
{
DISGINT; //Let's not get interrupted

.FOR bitno, <23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0> //Regular for() loop doesn't work, but at least the compiler can do the hard work
if (rgb.bitno == 0)
{
send0;
}
else
{
send1;
}
.ENDM
ENGINT;
}

void show (void) {
rgb$0 = blue; //I lost track of MSB, LSB and endians.. This is what works. ????????
rgb$1 = red;
rgb$2 = green;
SendRGB();
}

void clearLED (void)
{
rgb = 0;
//pixels = definedPIXELS;
pixels = 300; //Debug
do
{
SendRGB();
} while (--pixels);
.delay 2000; //If you want to make sure the LED-reset is caught, use a longer one. 0.125us *2000 = 250us

}

void FPPA0 (void)
{
.ADJUST_IC SYSCLK=IHRC/2 // SYSCLK=IHRC/2 16MH 2?? 8M

count = 0;

$ T16M IHRC, /4, BIT15; // BIT15 Time increment of each T16M = 16MHz / 4 = 4 MHz
// generate INTRQ.T16 = 16,384 uS every 2^16 times
ENGINT;
$ INTEN T16; // Enable the T16M interrupt

$ LED out,low; //LED ????? ???
$ BTN in, pull; //?????????
count = 0;
unsigned word hue = 0;
firstPixelHue = 0;
byte current;
mode = 0;
firstinc = 1;

//Let's start by clearing LED's and going to sleep - we don't want anything to consume current if we restarted by mistake
clearLED();
rgb = 0;
SendRGB();//
$ LED high;
CLKMD = 0xF4; // -> ILRC
CLKMD.En_IHRC = 0; // close IHRC
while (1)
{
STOPSYS;

if (BTN == 0) break; // examine and determine whether toggle to STOPSYS or execute at high speed.
}
CLKMD = 0x34; // -> IHRC / 2
count = 0; //

//========================???===========================================
while (1) //Main loop
{
if ( BTN == 1)
{ //If button is not pressed
pixels = definedPIXELS;//300

if (mode < 3) 
{ //Rainbow
hue = firstPixelHue;//0
if (mode == 0)
{
hueinc = 5;
firstinc = 1;
}
if (mode == 1) hueinc = 0;
if (mode == 2)
{
hueinc = 10;
firstinc = 0;
}

do
{
if (hue>=768)
{
hue -= 768;
}
current = (hue & 0xFF);
if (hue < 256)
{
red = ~current;
green = current;
blue = 0;
show();
}

if (hue > 255 && hue < 512)
{
red = 0;
green = ~current;
blue = current;
show();
}

if (hue > 511 && hue < 768)
{
red = current;
green = 0;
blue = ~current;
show();
}
hue+=hueinc;

} while (--pixels);


.delay(8000); //Should be increased if fewer LED's are used
firstPixelHue+=firstinc;
if (firstPixelHue > 3072) firstPixelHue = 0; //Has to be reset sometime.
} //End rainbow

//=================??======================
if (mode == 3)
{ //Red - not too bright
red = 150;
green = 0;
blue = 0;
do {

show();
} while (--pixels);
.delay(2000);
}
//=================??=======================
if (mode == 4)
{ //Green - not too bright
red = 0;
green = 150;
blue = 0;
do {
show();
} while (--pixels);
.delay(2000);
}
//====================??==================
if (mode == 5)
{ //Blue - not too bright
red = 0;
green = 0;
blue = 125;
do {
show();
} while (--pixels);
.delay(2000);
}

if (mode == 6)
{ //Princess! - not too bright
green = 0;
red = 200;
blue = 200;
do {
show();
} while (--pixels);
.delay(2000);
}
}
else
{ //Button pressed - go to sleep
clearLED();
rgb = 0;
SendRGB();
$ LED high; //I think I remember something about setting the WS2812B signal line high, reduces leak current. Maybe not.

if (count > 10)
{ //Unless we just woke up go to sleep
//Maybe disable wakeup from other pins - PADIER
CLKMD = 0xF4; // -> ILRC
CLKMD.En_IHRC = 0; // close IHRC
while (1)
{
STOPSYS;
if (BTN == 0) break; // examine and determine whether toggle to STOPSYS or execute at high speed.
}
CLKMD = 0x34; // -> IHRC / 2
mode++;
if (mode > 6) mode = 0;
}

/* //Change mode if button held longer when coming out of sleep
count = 0;
while (count < 30) {
if (BTN == 1) {

break;
}
}
*/
count = 0;
}
// wdreset;
}
}


void Interrupt (void)
{
pushaf;
if (Intrq.T16)
{
Intrq.T16 = 0;
count ++; // 16,384uS 61 == 999,424 uS ≤ 1S
}
popaf;
}

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    242

    文章

    23459

    浏览量

    665388
  • 驱动芯片
    +关注

    关注

    13

    文章

    1322

    浏览量

    55180
  • DIN
    DIN
    +关注

    关注

    0

    文章

    16

    浏览量

    10819
收藏 人收藏

    相关推荐

    AC6951C功放30W彩灯电路

    AC6951C功放30W彩灯电路
    发表于 02-18 15:33 2次下载

    彩灯4脚彩灯电路

    仅供参考
    发表于 02-18 15:30 0次下载

    穿心磁的原理及应用

    穿心磁也叫磁滤波器,是一种EMI噪音滤波器,主要用于抑制高频噪音。实物与电感相似,原理与电感基本一样,所以部分厂家会将穿心磁归类为电感。电感是一种储能器,对于抑制噪音的主要原理有点类似电网调节
    的头像 发表于 01-21 09:31 714次阅读
    穿心磁<b class='flag-5'>珠</b>的原理及应用

    直插式双色灯和贴片双色灯区别

    厂家选择: 选择像海隆兴这样的中、高端灯厂家,可以确保灯参数功能要求较高、品质有保障。 这类厂家对封装材料、工艺、技术有严格要求,能够提供稳定、可靠的双色灯产品。
    的头像 发表于 12-20 10:58 299次阅读
    直插式双色灯<b class='flag-5'>珠</b>和贴片双色灯<b class='flag-5'>珠</b>区别

    SMD灯的性能特点 常见SMD故障及解决方法

    SMD(Surface-Mounted Device,表面贴装器件)灯是一种常见的LED封装形式,广泛应用于照明、显示、指示等领域。以下是关于SMD灯的性能特点、常见故障及解决方法的概述
    的头像 发表于 12-13 09:31 601次阅读

    COB光源与LED灯的区别

    COB(Chip on Board)灯和LED(Light Emitting Diode)灯都是用于照明的光源技术,但它们在结构和性能上有一些区别。 结构: COB灯: COB灯
    的头像 发表于 09-19 09:33 6453次阅读

    的电感值怎么看

    的电感值可以通过专门的测量仪器和方法来确定。以下是一些常用的测量方法和步骤: 一、使用LCR表或网络分析仪 LCR表和网络分析仪是测量磁电感值常用的高精度仪器。 步骤: 设置仪器 : 对于
    的头像 发表于 09-13 18:19 1241次阅读

    是电感还是电阻

    (Ferrite Bead)既不是纯粹的电感也不是电阻,而是一种特殊的电子元件,其工作原理结合了电感性和电阻性的特性,但主要侧重于其高频衰减特性。 磁主要用于高频电路中,用于抑制高频噪声和电磁
    的头像 发表于 09-13 18:16 1271次阅读

    和电感怎么区分好坏

    和电感是电子电路中常用的被动元件,它们在滤波、信号处理、电源管理等方面发挥着重要作用。磁通常用于抑制高频噪声,而电感则用于储存能量、滤波和振荡电路。要区分磁和电感的好坏,需要从多个方面进行
    的头像 发表于 09-13 18:06 742次阅读

    的参数有哪些种类

    的参数种类多样,这些参数对于评估磁的性能和选择合适的应用场景至关重要。以下是一些主要的磁参数种类: 1. 磁性参数 磁化度 :衡量磁能够在多大程度上被磁化的量度,是磁
    的头像 发表于 09-13 18:02 886次阅读

    的工作原理是利用电流不能突变吗

    的工作原理并非直接基于“电流不能突变”这一原理,而是更为复杂地涉及到电磁感应和能量耗散的过程。以下是对磁工作原理的解释: 磁的基本构造与特性 构造 :磁通常由一个导线穿过环形
    的头像 发表于 09-13 16:48 688次阅读

    LED灯带断点续传是什么意思

    led彩跑马灯带分带断点续传和不带断点续传的。灯带断点续传是指采用双信号线交叉传输的方案,当其中一个信号中断后,另一条备用信号线能绕开故障点,将信号传输到下一个像素点。简单来说就是一个灯坏了
    发表于 07-18 18:20

    的参数怎样测量好坏

    是一种电子元件,主要用于抑制高频噪声,提高信号质量。磁的参数测量对于评估其性能和选择合适型号至关重要。本文将介绍磁参数的测量方法和注意事项。 磁的基本概念 磁
    的头像 发表于 07-12 09:11 4880次阅读

    【GD32F303红枫派开发板使用手册】第八节 TIMER-RGB彩灯实验

    本例程中使用的RGB彩灯采用共阳极驱动方式,使用三路PWM进行驱动,对应引脚输出低电平的时候对应RGB灯点亮,调节不同路的PWM占空比可以实现多种多样的颜色,每个通道可以输出0%-100%的占空比,组合起来可以输出100*100*100种色彩。
    的头像 发表于 06-04 09:49 642次阅读
    【GD32F303红枫派开发板使用手册】第八节 TIMER-RGB<b class='flag-5'>彩灯</b>实验

    贴片磁是什么 贴片磁和贴片电感有什么区别

     使用万用表测量电阻值:通过测量磁引脚两端的电阻值,可以判断其是否完好。当电阻值小于1欧时,通常表示磁处于正常状态。
    的头像 发表于 03-26 16:55 4098次阅读