4. 电源电路设计:DC-DC降压与LDO稳压
电源是整个FOC驱动板的“心脏”。我见过不少方案,算法写得漂亮,电机转得丝滑,结果一上强电,电源纹波直接把ADC采样干翻,电流环当场崩溃。所以这一章,咱们把电源电路从头捋一遍。
GD32F303主控需要3.3V,栅极驱动需要12V,而母线输入是24V。怎么从24V得到干净的3.3V?我的做法是:24V → DC-DC降到12V → DC-DC降到5V → LDO稳到3.3V。为什么中间要过一道5V?后面细说。
核心思路:前级DC-DC负责效率,后级LDO负责纯净。千万别指望DC-DC直接出3.3V给ADC用——那纹波会让你怀疑人生。
4.1 DC-DC降压:24V→12V
24V转12V,我习惯用TPS5430或者LM2596。这类芯片耐压40V以上,开关频率500kHz左右,效率能做到90%以上。选型时注意一点:输入电容的耐压要留余量。24V系统实际可能有30V以上的浪涌,我至少用50V耐压的铝电解。
电感怎么选?有个经验公式:
L = (Vin - Vout) × Vout / (Vin × ΔI × fsw)
其中 ΔI 取输出电流的 20%~30%
fsw 是开关频率
举个例子:Vin=24V, Vout=12V, Iout=1A, fsw=500kHz, ΔI取0.3A:
L = (24-12) × 12 / (24 × 0.3 × 500k) ≈ 40μH
实际我取47μH,留点余量。电感饱和电流要大于1.3倍峰值电流,这个不能省。
注意:DC-DC的SW节点是高频开关节点,PCB走线要短粗。我见过有人把SW走线绕了半块板子,结果辐射超标,ADC读数跳得像心电图。
4.2 DC-DC降压:12V→5V
为什么不用24V直接降到5V?压差太大,DC-DC的占空比太小,轻载时容易进入脉冲跳跃模式,纹波反而变大。所以我中间过一道12V。
12V转5V,我常用MP2359或者SY8201。这类芯片体积小,频率高(1.2MHz以上),外围元件少。输出电容用陶瓷电容就够了,ESR低,纹波小。
这里有个坑:输出电容的直流偏压特性。陶瓷电容加直流电压后容值会下降,X5R材质可能掉到标称值的30%。我一般用X7R或X7S材质,并且容值留2倍余量。
| 参数 | 24V→12V (TPS5430) | 12V→5V (MP2359) |
|---|---|---|
| 输入电压 | 24V | 12V |
| 输出电压 | 12V | 5V |
| 最大电流 | 3A | 2A |
| 开关频率 | 500kHz | 1.2MHz |
| 电感值 | 47μH | 10μH |
| 输出电容 | 220μF 铝电解 | 22μF ×2 陶瓷 |
4.3 LDO稳压:5V→3.3V
GD32的ADC参考电压、内部PLL、VCO都对电源噪声敏感。DC-DC出来的5V直接给模拟部分?不行,纹波太大。必须过一级LDO。
我选AMS1117-3.3或者RT9013。AMS1117压差1.1V,5V进3.3V出,压差1.7V,够用。RT9013的PSRR在1MHz时还有40dB,对高频纹波抑制更好。
LDO的输入输出电容不能省。输入电容10μF,输出电容10μF,靠近引脚放置。我习惯在输出端再加一个0.1μF的MLCC,滤除高频噪声。
我的习惯:3.3V电源平面分成模拟和数字两路,中间用磁珠隔离。模拟3.3V只给ADC、运放、霍尔传感器供电。数字3.3V给GD32、通信接口。这样ADC的噪声能再降5~10dB。
4.4 电源纹波抑制
纹波抑制,说白了就是让电源更“干净”。FOC控制对电流采样精度要求高,ADC的参考电压如果被纹波污染,电流环的精度直接打折。
我的纹波抑制三板斧:
- 前级滤波:DC-DC输入加π型滤波器(C-L-C),抑制共模噪声。L用1μH~10μH,C用10μF+0.1μF。
- 后级滤波:LDO输出加RC低通滤波,R=10Ω,C=10μF,截止频率约1.6kHz,对开关频率纹波有20dB衰减。
- 布局隔离:DC-DC的电感和SW节点远离模拟电路。我在项目中吃过亏——DC-DC的电感紧挨着电流采样运放,结果运放输出全是开关噪声,电流环根本锁不住。
纹波测量也有讲究。示波器探头要用接地弹簧,不能用长地线夹。长地线夹会引入天线效应,测出来的纹波比实际大好几倍。我曾经被这个坑过,折腾了两天才发现是测量方法不对。
4.5 上电时序设计
GD32和栅极驱动芯片对上电时序有要求。GD32先上电,然后栅极驱动再上电。如果反过来,GD32的IO口还没初始化,栅极驱动已经输出高电平,可能把MOS管误导通。
我的做法:
- 3.3V先建立(LDO输出)
- GD32复位释放,IO口初始化为高阻或低电平
- 然后12V使能(通过EN引脚控制DC-DC)
- 栅极驱动芯片的EN引脚由GD32的GPIO控制
具体电路:在12V DC-DC的EN引脚上接一个RC延时电路(R=100kΩ, C=1μF),延时约100ms。这样3.3V稳定后,12V才慢慢建立。GD32的GPIO在初始化完成后,再拉高栅极驱动的EN引脚。
上电时序时间轴:
t=0ms : 24V接入
t=10ms : 3.3V建立 (LDO输出)
t=20ms : GD32复位释放,IO初始化
t=120ms : 12V建立 (RC延时100ms)
t=130ms : GD32拉高DRV_EN,栅极驱动启动
t=140ms : 电机准备就绪
注意:如果使用自举电容的栅极驱动芯片(如IR2104),12V建立后需要等待几ms让自举电容充电。我一般在上电初始化代码里加一个10ms的延时,再开始PWM输出。