常见外围电路

本页目录

外围电路的正确性不只体现在稳态:按键会弹跳,GPIO 在复位期间可能高阻,线圈在关断时仍有电流,软件卡住时监控任务可能还在运行。把这些状态变化补进电路与软件模型,才能解释“元件都接上了,为何仍偶发误动作”。

需求核心机制本篇重点
可靠启动电源、复位、时钟和默认电平配合先建立可重复的初始状态
按键只产生一次事件连续稳定时间与状态变化消抖不等于延时后反复处理
GPIO 控制功率负载MOS 栅极驱动与电流回路默认关闭、续流和耐压
跨隔离边界传递信号光传输与输出电流能力CTR、逻辑边沿与两侧供电
LED 调光限流与占空比恒流不自动代表高效率
软件异常恢复有效进展证据与复位喂狗条件、窗口和故障记录

启动前,先让电路有明确状态

按所选 MCU 的参考设计核对每个供电脚、去耦回路、模拟电源、内部稳压电容及上电顺序。去耦电容负责局部瞬态电流,不能因板上已有一颗大电容就忽略电源引脚附近的回路;也不能给不同 MCU 的特殊电容脚统一套一个数值。

复位必须覆盖电源尚未稳定的阶段。简单 RC 的释放时刻受上电斜率、阈值、漏电与快速断电重启影响;需要有保证的欠压行为时,应结合片内 BOR/POR 或外部监控器。启动配置引脚的采样时机要按芯片手册确认,外接按钮或外设不能在该窗口把芯片带到错误启动模式。

外部晶体还涉及负载电容、寄生、驱动等级和振荡器增益裕量;频率相同不等于可随意替换。输出负载应在软件初始化前有确定默认电平,复位期间的引脚状态尤其不能让继电器或电机意外动作。

按键消抖:确认状态变化,而非重复确认电平

机械触点的瞬时开合会制造多个边沿,持续时间随器件和操作而变。软件消抖可保存原始候选电平及其开始时间,只有候选电平持续稳定超过设定窗口,才更新确认状态;仅在确认状态从松开变为按下时产生一次事件。长按与重复触发应另外定义,不能让每次循环都执行按下动作。

下面的模型假设每毫秒采样一次、低电平表示按下,使用 5 ms 稳定窗口展示算法。真实窗口应根据按键特性与响应要求确定,5 ms 不是通用规格;离散采样也无法观察采样点之间的所有毛刺。

raw = [1]*3 + [0,1,0,1] + [0]*20 + [1,0,1] + [1]*10
stable = candidate = 1
since = 0
presses, releases = [], []
for now, level in enumerate(raw):
    if level != candidate:
        candidate, since = level, now
    if candidate != stable and now-since >= 5:
        stable = candidate
        (presses if stable == 0 else releases).append(now)
assert presses == [12]
assert releases == [34]
print('弹跳与长按轨迹:只产生一次按下和一次释放')

在 MCU 上还需用合适的无符号时间差处理计数器回绕,并保证比较窗口小于所用时间基准的安全范围。外部中断可唤醒系统或启动检查,不能把每个原始中断都立即当作业务按键事件。

硬件 RC 降低快速变化,但慢边沿要与施密特输入或相应消抖器件配合。最简单的上拉 R、节点对地 C、按钮对地电路,松开时电容经 R 充电,按下时则通过按钮快速放电;两个方向的时间常数不一样,必要时加限流电阻并重新计算终值与阈值时间。τ = RC 也不是逻辑翻转延时,例如从 0 充到 0.7VCC 需要 −RC ln(0.3) ≈ 1.204RC。TI:按键消抖与施密特触发器

确认的是稳定电平,还是新的按下事件?

修改稳定低电平中间的一个样本,使它短暂回到1:候选计时会重新开始,但已经确认的按下不会因此立刻释放。把窗口缩短,则可能把原本想过滤的弹跳当成事件。窗口选择是在响应延迟与误触发之间取舍。

正在呈现知识画面
确认的是稳定电平,还是新的按下事件?

候选电平每次变化都重新计时;确认状态变化才产生事件,持续按住不重复触发。

MOS 负载开关:栅源电压与默认状态

GPIO 驱动能力要按保证的 VOH/VOL、单脚及端口总电流核对,不能只用绝对最大电流设计。较大负载由功率开关承载,GPIO 负责控制;MOS 导通后虽几乎不需要直流栅极电流,切换时仍需搬运栅极电荷。

低边 NMOS 的 S 接返回端、D 接负载下端。栅极串联电阻限制充放电速度并帮助抑制振铃,G-S 下拉在 GPIO 高阻时提供默认关闭;电阻值还要兼顾米勒耦合、漏电与驱动速度,不能保证有下拉就永远不误导通。栅极钳位应参照 S,不应把所有高边或浮动开关一律“栅极对地加齐纳”。

高边 PMOS 开关通常 S 接正电源,D 接负载,G 向 S 上拉以关闭,再由合适电平转换级拉低开启。这里的端点安排与专门的单管防反接拓扑不同。若电源为 12 V,3.3 V GPIO 不能直接把栅极拉到接近 12 V 完成关闭,还可能损坏 GPIO;是否需要电平转换取决于电源域和实际栅源窗口,不是所有 PMOS 都必需相同转换电路。

导通电阻按实际 VGS 和温度选,VGS(th) 只描述微小测试电流下开始导通,不能作为负载充分开启的依据。耐压则按电源、钳位和寄生尖峰确定,不用“供电电压乘 1.5”代替完整应力预算。

直流继电器:把关断回路画完整

+V线圈R、LNMOSD 上 · S 下KA续流二极管RgGPIORGS关断后:线圈下端 → 二极管 → 线圈上端二极管提供关断电流回路;它不是串在线圈上,也不是接在漏极与地之间。低边驱动直流线圈:续流二极管与线圈并联

正常导通时,电流从电源经过线圈、NMOS 回到返回端,续流二极管反偏。MOS 关断后,线圈电流仍按原方向流动,线圈下端电压升高,使二极管从下端导向上端,形成局部闭环。因此二极管 K 接电源侧、A 接漏极侧⁠,它与线圈并联。

假设 5 V 线圈直流电阻 70 Ω,稳态电流约 71.4 mA;若电感为 0.1 H,储能约 0.255 mJ。仅以 0.7 V 恒定反向压降且忽略线圈电阻估算,电流下降时间 LI/V 约 10.2 ms;真实电流还受线圈电阻、磁路变化及钳位特性影响,这不是继电器的实测机械释放时间。

普通二极管钳位较低,会延长电流衰减,进而影响释放速度;需要较快释放时可设计较高电压钳位,但必须重新核对开关耐压与抑制器能量。因此必须安排适当的能量释放路径,却不等于所有线圈只能使用同一颗续流二极管。OMRON:继电器抑制电路与释放时间

线圈驱动保护与触点所切负载的保护是两回事。触点负载如果也具有电感、浪涌或大启动电流,需要另行评估触点额定、灭弧与负载侧抑制;在驱动侧加二极管不能解决所有触点应力。

光耦:隔离边界与 CTR 都要闭合

光耦输入 LED 的电流经光转换为输出响应,两侧不需要导电连接。若电源、调试线或地线又跨接两边,就可能绕过原本的隔离边界。器件的耐压测试值也不等于整个 PCB 的长期工作隔离能力,还要符合应用所需的间距、绝缘与供电设计。

对光电晶体管输出,CTR = IC/IF,随器件分档、输入电流、温度、老化和测试条件变化。假设某设计条件下可用最低 CTR 为 50%,IF 为 2 mA,则输出电流预算为 1 mA;3.3 V 经 10 kΩ 上拉、希望低电平 0.2 V,需要约 0.31 mA,静态预算有余量。但 CTR 通常在指定 VCE 下测量,仍须核对饱和低电平能力及动态传播时间,不能从这个比例直接证明全部逻辑指标。Vishay 光电晶体管光耦资料

上拉电阻过大使边沿受输出电容拖慢,过小又要求更多灌电流;深饱和还可能延长关断。高速逻辑光耦与普通光电晶体管输出结构不同,需要按器件电源和接口规范连接,不能仅把 LED 电流调大就实现任意波特率。

LED:PWM 控平均值,限流控制瞬时值

串联电阻的电流为 (V供电 − VF − 开关压降)/R,应按最高供电、最低 VF 及容差核对最大电流。PWM 调光改变导通比例,不会替代限流;20% 占空比也不能随意把瞬时电流提高到额定连续值的五倍,脉冲额定与热约束仍须满足。

恒流驱动也需要电压裕量和允许工作范围。线性恒流器在 12 V 输入、3 V LED、100 mA 时约消耗 0.9 W,而 LED 电功率为 0.3 W,忽略控制耗电的效率只有 25%。开关恒流方案可以改善某些条件下的效率,但复杂度、纹波和 EMI 也不同。可寻址 RGB LED 则把控制与驱动集成在产品中,其数据协议、电压与供电瞬态需单独核对。

看门狗:用进展证明健康

把喂狗放在主循环并非天然错误:如果循环必须完成所有关键工作才到达喂狗点,卡死通常会阻止刷新。反过来,独立监控任务若无条件喂狗,即使其他任务全部停滞,也可能永久掩盖故障。

采样任务完成一批有效数据处理任务完成一轮处理通信任务完成进展或受控恢复监控:新一轮健康证据齐全?是:按窗口喂狗;否:记录并等待复位喂狗应证明关键任务有进展,而不只是监控线程还活着签到按周期更新,不能永久保留一次成功标志;掉线等可预期状态应有明确的健康定义。

每个关键任务应在完成有意义的进展后更新本轮健康证据,监控汇总后才刷新。某些任务允许等待外部输入,应把有界等待、超时重试或受控离线视作明确状态,而不是要求一直收到数据。健康标志需要逐周期清除或使用递增序列,不能一次置位后永久有效。

超时与窗口根据最长合法阻塞、启动、Flash 擦写、低功耗状态和时钟容差设置,不能固定为最长任务的两倍。独立时钟与“窗口检查”是不同属性,有些独立看门狗也有窗口功能;具体休眠/调试冻结及启动后可否关闭,按型号手册确认。ST STM32WB 独立看门狗与窗口选项

复位后尽早读取原因,保留必要的故障上下文,并限制连续异常重启造成的执行器动作。看门狗用于从失控恢复,不能证明程序逻辑正确,也不能代替失效时的硬件默认安全状态。

复算电路预算

from math import isclose, log
assert isclose(-log(1-0.7), 1.203972804325936)
i, inductance = 5/70, 0.1
assert isclose(i*1000, 71.42857142857143)
assert isclose(0.5*inductance*i*i*1000, 0.2551020408163265)
assert isclose(inductance*i/0.7*1000, 10.20408163265306)
assert isclose((3.3-0.2)/10000*1000, 0.31)
assert isclose((12-3)*0.1, 0.9)
assert isclose(3/12, 0.25)
print('RC 阈值、线圈储能、CTR 负载与线性 LED 损耗计算通过')

消抖轨迹和数值预算验证的是模型关系;线圈、触点与隔离性能仍须在实际工作条件下测量。

继续查阅