第四章 光源控制硬件:DAC/数字电位器选型、MOSFET开关电路、PWM调光原理
各位同学,今天我们聊聊光源控制的硬件实现。这部分内容,说白了就是怎么让LED灯听话——让它亮它就亮,让它暗它就暗,而且亮度要稳、要准。
我在做第一代内窥镜的时候,光源控制这块踩了不少坑。当时选型没经验,结果调光的时候画面闪烁,医生反馈说看着头晕。嗯,从那以后我就特别重视这部分的设计。
4.1 DAC与数字电位器选型
先说说DAC。DAC的作用是把数字信号转成模拟电压,用来控制LED的驱动电流。选型时主要看三个参数:分辨率、建立时间、输出范围。
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 分辨率 | 12位以上 | 低于12位,调光步进太粗,画面会有跳变感 |
| 建立时间 | < 10μs | 内窥镜需要快速响应,尤其是自动曝光场景 |
| 输出范围 | 0-3.3V或0-5V | 匹配LED驱动芯片的参考电压输入 |
我个人习惯用SPI接口的DAC,比如AD5662。为什么?因为I2C在高速场景下容易受干扰,SPI更稳。我曾经在一个项目中,I2C总线上的DAC在强电磁环境下频繁丢包,换成SPI后问题就解决了。
数字电位器呢?它其实是个可调电阻。用在光源控制里,主要是做电流限制。选型时注意两点:
- 端到端电阻:常见的有10kΩ、50kΩ、100kΩ。我建议选50kΩ,调节范围适中。
- 抽头数量:256抽头是底线。少于这个数,调光曲线不够平滑。
4.2 MOSFET开关电路
MOSFET在这里的作用,说白了就是个电子开关。控制LED的通断,或者配合PWM实现调光。
选型时我重点关注三个参数:
- Vgs(th):阈值电压。3.3V系统要选逻辑电平型MOSFET,Vgs(th)在1-2V之间。
- Rds(on):导通电阻。越小越好,否则发热严重。
- Qg:栅极电荷。这个参数影响开关速度,Qg越小,开关越快。
给大家一个典型电路:
// N沟道MOSFET驱动LED的简化电路
// 栅极接MCU的PWM输出,源极接地,漏极接LED负极
// LED正极通过限流电阻接电源
// 关键参数计算:
// 假设LED电流ILED = 500mA,Vgs = 3.3V
// 选型:AO3400 (Vgs(th)=1.4V, Rds(on)=30mΩ)
// 导通损耗:P = I² × R = 0.5² × 0.03 = 7.5mW,完全OK
这里有个坑:MOSFET的栅极不能浮空。MCU上电瞬间,GPIO可能是高阻态,MOSFET会误导通。我建议加一个10kΩ的下拉电阻,确保上电时MOSFET是关断的。
4.3 PWM调光原理
PWM调光,说白了就是让LED快速开关。人眼有视觉暂留效应,只要开关频率够高,看到的就不是闪烁,而是平均亮度。
频率选多少?我建议不低于1kHz。低于这个值,人眼能感知到闪烁,尤其是在内窥镜这种需要长时间注视的场景下,容易引起视觉疲劳。
占空比和亮度的关系:
- 占空比0%:全暗
- 占空比50%:半亮
- 占空比100%:全亮
但要注意,LED的亮度与电流不是完全线性关系。实际项目中,我通常会做一条亮度-占空比校准曲线,存在EEPROM里。这样调光时查表映射,效果更准。
// PWM初始化代码示例(STM32 HAL库)
// 定时器2,通道1,频率2kHz
void PWM_Init(void) {
TIM_OC_InitTypeDef sConfigOC = {0};
htim2.Instance = TIM2;
htim2.Init.Prescaler = 84-1; // 84MHz / 84 = 1MHz
htim2.Init.Period = 500-1; // 1MHz / 500 = 2kHz
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
HAL_TIM_PWM_Init(&htim2);
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 250; // 初始占空比50%
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);
}
// 设置占空比函数
void Set_LED_Brightness(uint16_t brightness) {
// brightness范围:0-1000,对应0%-100%
__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, brightness);
}
4.4 三种方案的对比与选型建议
这三种方案各有优劣,我整理了一个对比表:
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| DAC + 恒流驱动 | 精度高、无闪烁 | 成本高、电路复杂 | 高端内窥镜、科研设备 |
| 数字电位器 | 成本低、控制简单 | 精度有限、不耐大电流 | 低成本产品、调试阶段 |
| PWM + MOSFET | 效率高、成本适中 | 有潜在闪烁风险 | 大多数内窥镜产品 |
我个人建议:如果是量产产品,优先考虑PWM方案。效率高,成本可控。如果对光质量要求极高,比如手术显微镜,那就用DAC方案。
好了,这一章的内容就到这里。下一章我们讲白平衡算法的软件实现,到时候会用到今天讲的硬件知识。记住,硬件是基础,基础不牢,地动山摇。