一、项目介绍
本项目基于 Microchip dsPIC33CK64MC105 Curiosity Nano评估板和一些分立器件设计和实现一个LED升压驱动电路。该电路支持恒流驱动功能和负载断路保护,并通过按键实现多档调光功能。用户可以通过按键在1到6档之间切换亮度,当处于第6档时再次按下按键可以关闭灯光,满足不同照明需求。
1.1 硬件介绍
- dsPIC33CK64MC105 Curiosity Nano评估板:这是一块集成了 dsPIC33CK64MC105 微控制器的开发板,具有丰富的I/O接口,非常适合进行嵌入式系统的开发和评估。
- 分立器件:包括电感、电容、二极管、MOSFET等器件,用于搭建升压转换器的外围电路。
1.2 功能概览
- LED升压驱动:使用BOOST拓朴有效实现提高输入电压以驱动高电压需求的LED。
- 恒流驱动:提供稳定的电流输出以保证LED亮度的稳定性。
- 负载断路保护:在检测到负载断路时自动限制输出电压以保护电路。
- 6档调光功能:通过按键实现LED亮度的多档调节,支持六档调光并可最终关闭灯光(1档最暗→6档最亮→关闭)。
- 串口数据上报:通过串口实时上报当前电路状态,包括设定电流,输出电压ADC,LED电流采样ADC,输出电压,目标电压ADC,目标电流ADC,输出电流等。
1.3 设计思路
本项目采用BOOST升压电路设计,通过 dsPIC33CK64MC105 Curiosity Nano评估板 实现驱动信号的生成与调节。输出电压采用1/10电阻分压后接入ADC采集,LED驱动电流使用ADC采集100Ω电阻电压,使用PID进行控制PWM输出的恒压和恒流以及负载断路保护。部调光功能通过评估板板载用户按键切换。
二、功能实现
2.1 软件流程图
该系统通过上电初始化配置时钟、PWM、ADC及GPIO,进入主循环后并行处理按键检测与ADC采样。按键触发时,更新亮度等级并计算对应PWM占空比以调节LED亮度;ADC实时监测电流/电压,电流波动时通过PID算法动态调整PWM实现恒流驱动,电压异常(>20V)则触发过压保护机制,限制输出并进入安全模式,确保系统稳定运行。
2.2 实现过程
2.2.1 硬件仿真与面包板电路
上图为使用 CircuitJs 搭建的硬件仿真图,以下是根据仿真硬件搭建的面包板实验电路:
2.2.2 恒流控制
电流采样:通过 100Ω 采样电阻获取电压信号, ADC每 1μs 采样一次(配置为软件触发),MCC配置截图如下:
根据采集的电流电压信号数据,使用PID计算得到控制输出的PWM占空比,关键代码如下:
uint16_t dutyCycleSetAValue = update(&pid, (((0.1 * set_current) / 3.3) * 4095.0), output_a_adc_value * 1.0);
pwm->DutyCycleSet(dutyCycleSetAValue);
2.2.3 调光功能
使用外部中断检测按键按下,实现按键响应迅速,能够准确切换1至6档亮度,并在最高档后熄灭灯光。MCC配置截图如下:
产生外部中断时,在按钮中断回调函数中进行 0 ~ 6 档的循环切换。关键代码如下:
void EXT_INT1_Callback(void) {
set_current ++;
if(set_current > MAX_CURRENT_SET) {
set_current = 0; // 循环切换
}
printf("用户按键按下,当前电流设定为:%d!\r\n", set_current);
}
2.2.4 保护机制
由于BOOST升压电路的特性,当负载突然断开时,会导致输出电压升高,如果不及时调整会导致输出电压异常从而击穿输出电路器件。为了防止以及保护输出电路这里使用软件进行控制,同时使用PID进行参数调节,当负载开路时限制输出的最大电压在20V以下。
三、功能展示
3.1. 调光演示:
短按按键:亮度从1→2→3→4→5→6档平滑过渡 第7次按下:LED完全熄灭。
3.2. 恒流特性:
设置好调试档位后,通过切换灯珠数量,可看出万用表电压变化为2.5V左右,而电流始终保持,可以支持2~5串LED驱动。 通过拍摄的视频可看出LED无频闪,这是典型的恒流驱动模式才有的特点。
3.3. 保护测试:
断开LED回路后,输出电压限制在20V以下。效果图中万用表中显示为22V左右,因为电路器件误差所致,程序中设定保护电压为20V。
3.4. 串口数据图形化展示:
通过串口实时上报当前电路状态,包括设定电流,输出电压ADC,LED电流采样ADC,输出电压,目标电压ADC,目标电流ADC,输出电流等。 下图中为上位机图形化展示LED驱动电路的高光档位、输出电压、输出电流采样电压。
四、总结
遇到的问题
- 原本仿真时使用NMOS搭建电路感觉一切正常,实测发现NMOS不太好控制,很容易导致电流过大而烧录NMOS。只好改用三级管进行驱动,这样比较好控制开关管的电流。
- 输出电压的误差较大,约达到10%左右,因缺乏这方面的知识而不知所措。但推测可能是分立器件的精度导致。
- 输出电流过大时会有闪烁,但那种闪烁不是频闪,而是驱动电流不足导致的明暗闪烁。这就需要更换更大功率的三极管或使用MOS管来实现。
心得体会
本项目成功利用dsPIC33CK64MC105 Curiosity Nano评估板实现了LED的升压驱动,具备恒流输出和负载断路保护功能。通过按键进行调光非常直观且易于操作。此设计不仅展示了微控制器在电源控制中的应用潜力,还提供了一种高效、可靠的LED驱动方案。后续可以进一步优化电路和算法以提高效率和响应速度。
最后,感谢硬禾学堂联合 DigiKey 推出的这次活动!此次活动带给我许多宝贵实践经验和机会,在此表示感谢!