彻底理解带IC的彩色灯珠控制器WS2812B以及使用ESP8266对其进行控制的要点
彩色LED灯珠,目前有2种主流类型,一种是灯珠内布置了R/G/B3种颜色LED,通过3路PWM分别控制3种LED亮度进行混色,另一种是灯珠内部除了3色LED还直接内置了灯控制器,称为IC灯珠,你只需要输入24bit的RGB控制信号,它内部会自动产生驱动pwm信号,并且自带信号转发,对连续的输入信号,截取前24bit后,后面的数据自动从DOUT口输出转发到下一颗灯珠。
在封装上两者都是4脚的,如果是不带ic的,则每颗灯珠需要3路控制信号,数目一多,想搞个点阵屏什么的,连驱动ic都要排阵列,简直要打人,所以在彩色LED方面,如果成本没有要压到极限的,还是选择IC灯珠来做阵列会比较省心。
(看看下面的512像素彩色led点阵屏,只需要4根线就可以流畅控制,可达30 fps的刷新率)
WS2812的详细参数详见其官网datasheet,网上也大把中文资料,我们着重在其数字信号控制上。
PIN-MAP 见下图所示,非常简单,VDD , VSS 分别为电源和地, DIN为数据输入,DOUT为数据输出 ,每颗灯珠须要24bit的控制数据,超过24bit的数据会通过DOUT流到下一个灯珠
所以多个WS2812灯珠串接时候,将前一个的DOUT接到下一个的DIN即可,参考下图WS官方推荐的LED灯带原理图和PCB。所以也可以理解为啥上图的512 LED点阵屏只需要4根线就能控制了吧,它只是把灯带折叠起来做成正方形屏幕的样子,本质上是连续的灯带。
WS2812B数据输入只需要一个管脚,它使用的是自定义的脉宽控制协议,下表摘自 ws2812 datashee
总结一下就是:
bit 1 : 先输出 0.8us 高电平,然后输出 0.45us 低电平
bit 0 : 先输出 0.4us 高电平,然后输出 0.85us 低电平
输出一个bit需时 1.25us ,通过控制2种脉冲宽度来进行1和0位编码,如果持续输出超过50us以上的低电平,就表示reset,也可以理解为帧结束.
如此短的脉宽保证了ws2812的高刷新率,其通讯数据速率可达800kbps,
那很明显,调试这种器件,你起码要有个逻辑分析仪来调整你的输出时序.
那接下来结合ESP8266来对WS2812灯带驱动,通过实例了解驱动一个led灯和驱动一条灯带
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。