MCU电源切换,在嵌入式系统开发里,MCU要在电池、USB、外部电源间灵活切换,这可不是件轻松事儿,稍有不慎,板子就可能直接黑屏或者是闪一下,再开机,其实在这几年的开发中也出现了这样的问题。 下面我就结合自己的实战经验,聊聊怎么把电源切换玩转,实现稳定的工作。
硬件设计,电源管理芯片选型,电源管理芯片绝对是硬件层面的核心。选芯片时,得综合考虑输入电压范围、输出电流能力、转换效率等因素,如果系统需要从电池和USB两种不同电压源切换,且对效率要求较高,就可以选那种支持多输入、能自动切换且具备高效率DC - DC转换功能的芯片。像TI的,国内的也有蛮多,只是要对这些芯片你要有一定的了解,它支持宽输入电压范围,能轻松应对电池和USB的不同电压,而且转换效率高,能有效减少能量损耗,为系统稳定运行提供保障。
防倒灌与隔离设计,不同电源之间切换,防倒灌是关键。要是没有防护措施,当插入USB时,USB的高电压可能会倒灌到电池端,损坏电池甚至引发安全问题。可以在电源路径上串联二极管,利用二极管的单向导电性来防止倒灌。不过,普通二极管有压降,会降低电源效率。这时候,肖特基二极管就是个不错的选择,它的压降相对较小,能在保证防倒灌的同时,减少能量损失。对于一些对电源隔离要求较高的系统,还可以使用光耦或继电器进行隔离,进一步增强系统的稳定性。
电源监测电路,为了实时掌握各路电源的状态,电源监测电路必不可少。可以通过分压电阻将电源电压分压后,接入MCU的ADC引脚,让MCU能够读取电源电压值。同时,还可以使用电压比较器,当电源电压低于或高于设定阈值时,产生中断信号通知MCU,以便及时做出切换决策。
状态监测与判断,MCU要时刻监测电池、USB和外部电源的状态。通过前面提到的电源监测电路,获取各路电源的电压值,并与预设的阈值进行比较。比如,当检测到USB插入且电压稳定在5V左右时,就可以考虑切换到USB供电;当USB拔出,电压下降到一定程度时,再切换回电池供电。
切换逻辑与延迟控制,电源切换不能操之过急,要有合理的切换逻辑和延迟控制。在切换前,先断开当前电源,经过一段短暂的延迟后,再接通目标电源。这个延迟时间要根据系统的实际情况进行调整,一般几十毫秒到几百毫秒不等。如果延迟时间太短,可能会出现电源不稳定、系统重启等问题;如果延迟时间太长,又会影响用户体验。比如,在从电池切换到USB供电时,先断开电池供电,等待100ms左右,确保USB电源已经稳定输出,再接通USB供电。
曾经有一次开发一个便携式设备,在电源切换设计上没考虑周全。当时为了节省成本,没有使用电源管理芯片,而是通过软件控制MOS管来进行电源切换。在测试过程中,当快速插拔USB时,系统经常出现黑屏死机的情况。经过仔细排查,发现是电源切换时没有处理好防倒灌和延迟控制,导致电源瞬间短路,MCU复位。后来,重新设计了硬件电路,增加了电源管理芯片和防倒灌二极管,优化了软件切换逻辑,才解决了这个问题。 MCU的电源切换是一个系统工程,需要硬件和软件协同配合。只有把每个环节都考虑周全,才能让电源切换稳如老狗,避免板子黑屏的悲剧发生。
贴一下电源切换的电路,弱电的,这是我现在在用的电路,后面还有ADC,和电源开关没有截图出来。
|