起因是…
两年前捣鼓的一个启发自稚晖君瀚文键盘的项目。当时照着瀚文的规格在淘宝用 WS2812 为关键词随便找了一家买了一小卷 RGB 灯珠(键圈通常称之为反贴 3528)。
当时虽然已经知道 WS2812 是来自 WORLDSEMI 公司的一种通过数字信号控制的 RGB LED、且国内大家实际在用的都是各种大小厂做的协议兼容但根据需要衍生出了各种封装的变体。但想着估计都是同一种东西应该大差不差吧。就没怎么留意。
是的,当时我设计的电路是照着 WORLDSEMI 家的原版 WS2812B 的资料,用的是 5V 的 VDD。板子到了后擦电开机一顿输出,不亮。然后发现改成 3.3V 供电就好了。然后想着可能是这些给键盘用的反贴封装就是 3.3V 的?于是这事就这么着了,后面也没继续深究。
然后!
前阵子又要捣鼓一个键盘项目。这么多年摸爬打滚觉得做东西也该稍微正规点了,最起码用的料不能是连厂家都不知道的。项目必须要足够 DFM,必须要足够 reproducible。
于是,就开始考究,选定了欧思科光电的 SK6812MINI-E。
这里插一嘴,
既然是反贴安装,并且打算量产(或者说照着量产的标准)的话,那么一定要留意 datasheet 里的包装信息。只有下图这种屁股朝外的编带才是对的。不留意的话可能找了发光面朝外的版本,工厂看了估计会骂娘。为啥?你想想,贴片的时候 PCB 焊盘朝上刷锡膏,同时机器会将编带透明面朝上剥开用吸盘把元件吸起来摆放到 PCB 上。如果你的编带是发光面朝上,那就是正贴,是不会有人帮你挨个翻面摆成反贴的…
好了,回到正题。
看到 datasheet 的时候多留意了一眼电压范围。嗯?3.7V ~ 5.5V?不是应该支持 3.3V 的吗?我记得 5V 明明点不亮啊?
抱着必须把这个疑问解决的想法,我终于去找了当时淘宝上的卖家要了当时那一小卷料的 datasheet。嘿,人家或许真的支持 3.3V(没写 VDD 最小值)。但也不对,它明明支持 5V 甚至可以到 7.5V,为什么当时我用 5V 点不亮呢?
这个疑问其实看到这里我已经大概知道怎么回事了。只需要把 datasheet 往下翻一点。虽然这两家 3528 的可用电压范围不一样,但是有两个参数是一致的:高电平电压最小值 (VIH) 和低电平电压最小值 (VIL)。
如图所示,VIH 最小是 0.7*VDD
,代入一下即可得:5V 供电下 DIN 的输入至少要达到 3.5V 才能被认为是高电平(逻辑1)。然而我的 MCU 是 3.3V 逻辑电平,所以灯珠没有收到有效的控制信号输入,难怪就不亮了。
同理把公式反一下,即可得出在 3.3V 逻辑电平下,我的 VDD 最高不能超过 4.714V。
到这里,原理是解释清楚了,
但是!问题得回溯啊朋友们。
我清晰地记得当时我折腾瀚文键盘,没两天就被静电劈坏了出厂的 LED,自己修的时候用的就是当时买的那小卷 3528 灯珠。证明至少在瀚文的设计上它是可互换的。那瀚文是怎么设计的呢?于是我随手翻了一下稚晖君做的原理图:
瀚文的 RGB 供电是直接接在 VCC_BAT 上的,而 VCC_BAT 是充电管理芯片 TP4056 的输出。查阅芯片 datasheet 得知电池充满电后 BAT 脚恒定 4.2V。
4.2V 既大于灯珠所需要的 3.7V,也小于之前得出的 4.714V。而瀚文是单模的(电池只是为了应对 FOC 旋钮输出力矩时的电流需求),电池总是处于满电状态。所以的它总是满足工作条件。
总之,一直以来的疑问都能解释得通了。
总结
- 如果你使用电池供电(且 MCU 逻辑电平是 3.3V):直连电池输出,无需经过任何 LDO 和 DC-DC 的降压/升压
- 如果你使用 5V VDD:你需要一些 MOS 把输入的控制信号转换为 5V 电平
- 如果你使用 3.3V 的逻辑电平:你需要一颗 DC-DC 把 VDD 调节到满足工作条件的电压范围内(比如 3.7V)
恰好最近手上两个项目都分别适用第一条和第二条的情况。
解决了一些之前「虽然不懂但总之这样能用」和「我也不知道为啥那样不能用反正改成这样就能用了」的问题。爽!
知其所以然的快乐