2、硬件平台选型:主控芯片对比、LED驱动方案、电源模块设计

好,咱们进入第二章。这一章我打算聊聊硬件选型。说实话,很多初学者容易在这上面栽跟头——芯片选得太强,成本压不住;选得太弱,功能跑不动。我当年做第一个照明项目时,就吃过这个亏。

嵌入式照明系统,说白了就是「怎么让灯听话」。主控芯片是大脑,驱动方案是肌肉,电源模块是心脏。这三样选不好,后面软件写得再漂亮也白搭。

2.1 主控芯片三巨头:STM32、ESP32、Arduino

这三款芯片,我估计你们多少都接触过。但用在照明系统里,侧重点完全不同。我一个个说。

2.1.1 STM32——工业级的「老黄牛」

STM32是我个人最常用的方案。为什么?稳。它的PWM定时器精度极高,做调光控制时,几乎感觉不到闪烁。

举个例子,我去年帮一家灯具厂做智能筒灯,要求调光深度到1%。用STM32的16位定时器,配合DMA,轻松搞定。换成别的芯片,可能就得费点劲了。

核心优势:
  • PWM分辨率高,调光细腻
  • 工业级温度范围(-40°C ~ 85°C)
  • 外设丰富:I2C、SPI、UART一应俱全
  • 生态成熟,HAL库用起来顺手

不过,STM32也有短板。它不带Wi-Fi或蓝牙,要做物联网照明,得外挂无线模块。另外,价格这两年涨得厉害,选型时得掂量掂量成本。

2.1.2 ESP32——物联网的「瑞士军刀」

ESP32,嗯,这芯片我一开始是瞧不上的。总觉得它不够「正经」。直到有一次,客户要求一周内出样机,带手机App控制。我二话不说,抄起ESP32就开干。

为什么?它自带Wi-Fi和蓝牙,省了外挂模块的麻烦。而且,它的双核处理器,一个核跑协议栈,一个核跑应用逻辑,互不干扰。

我的经验: ESP32的ADC精度一般,做模拟调光时要注意。我习惯用外置的DAC或PWM芯片来弥补。

ESP32的缺点也很明显——功耗偏高。做电池供电的照明设备,得小心伺候。另外,它的GPIO电平是3.3V,驱动5V的LED灯带需要电平转换。

2.1.3 Arduino——快速原型的「乐高」

Arduino,说实话,我不太建议用在正式产品里。但做原型验证,它确实快。我记得刚入行时,用Arduino Uno搭了个呼吸灯效果,从焊接到出效果,不到两小时。

它的优势是上手简单,库函数丰富。但缺点也明显:性能弱、内存小、不适合复杂控制。如果你只是做个台灯玩玩,Arduino没问题。但要是做商业产品,还是换STM32或ESP32吧。

对比项 STM32 ESP32 Arduino
主频 72MHz ~ 240MHz 240MHz 16MHz
无线功能 无(需外挂) Wi-Fi + 蓝牙 无(需外挂)
PWM精度 16位 8位(可扩展) 8位
适用场景 工业/商业照明 物联网照明 原型验证
成本 中高

2.2 LED驱动方案:恒流还是恒压?

LED驱动,说白了就是给灯珠提供稳定的电流。为什么强调电流?因为LED是电流型器件,电压稍微波动,电流就会剧烈变化,导致亮度不稳甚至烧毁。

我个人习惯用恒流驱动。恒压驱动虽然简单,但一致性差。你想想看,同一批灯珠,正向电压可能有0.2V的差异,用恒压源的话,亮度就不一样了。

2.2.1 线性恒流驱动

线性驱动,电路简单,成本低。适合小功率照明,比如指示灯、装饰灯带。

// 线性恒流驱动示例(基于STM32 PWM控制)
// 通过调节PWM占空比,控制LED亮度
TIM_HandleTypeDef htim2;
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, 500); // 50%占空比

但线性驱动有个毛病——效率低。电流大了,调整管发热严重。我做过一个10W的射灯,用线性驱动,散热片烫得能煎鸡蛋。后来果断换了开关驱动。

2.2.2 开关恒流驱动(Buck/Boost)

开关驱动,效率高,适合大功率照明。Buck电路用于降压,Boost用于升压。比如,你要用12V电源驱动6颗串联的LED(总压降约18V),就得用Boost升压。

避坑指南: 我曾经在选电感时偷懒,用了标称电流偏小的型号。结果一上电,电感饱和,电流失控,LED瞬间烧毁。嗯,从那以后,我选电感都会留30%以上的余量。

常用的开关驱动芯片有:

  • PT4115:便宜,适合小功率
  • LM3409:可调光,适合中功率
  • MP24894:高精度,适合商业照明

2.3 电源模块设计:稳定是王道

电源模块,是整个系统的根基。电源不稳,芯片再牛也白搭。我见过太多项目,因为电源纹波大,导致LED闪烁、通信丢包。

2.3.1 输入保护

首先,输入端一定要加保护。防反接、过流、浪涌,一个都不能少。

// 电源输入保护电路要点
// 1. 防反接:串联肖特基二极管(如SS34)
// 2. 过流保护:自恢复保险丝(PTC)
// 3. 浪涌保护:TVS管(如SMBJ5.0A)

我有个习惯,在电源入口处加一个100μF的电解电容,再加一个0.1μF的瓷片电容。电解电容滤低频,瓷片电容滤高频。双管齐下,纹波能压到50mV以内。

2.3.2 降压方案

照明系统常用12V或24V供电,但主控芯片需要3.3V或5V。降压方案有两种:

  • LDO(线性稳压器):适合小电流(<100mA),纹波小,但效率低。比如AMS1117-3.3。
  • DC-DC(开关稳压器):适合大电流,效率高,但纹波大。比如MP1584、TPS5430。
我的建议: 如果系统总电流小于50mA,用LDO就够了。超过100mA,老老实实用DC-DC。别为了省几毛钱,把系统稳定性搭进去。

2.3.3 电源布局注意事项

PCB布局时,电源部分要单独处理。我总结了几条铁律:

  1. 大电流回路要短,走线要宽(至少1mm/A)
  2. 模拟地和数字地要分开,单点接地
  3. 电感远离敏感信号线(比如I2C、PWM)
  4. 反馈电阻要靠近芯片引脚,减少噪声耦合

嗯,这些细节看似琐碎,但往往决定成败。我记得有一次,客户投诉产品在强电磁环境下会死机。我排查了半天,发现是电源走线绕了个大圈,形成了天线效应。改了一版PCB,问题就解决了。

好了,这一章就聊到这儿。下一章我们开始讲软件架构,到时候会结合今天选的硬件,一步步搭建代码框架。你们先把芯片和驱动方案定下来,有问题随时问我。