做D类功放这么久我最大的感触是很多人把LC输出滤波器当成一个“纯滤波元件”却忽略了它在开关频率附近贡献的移相这恰恰是决定整个方案成败的关键。今天分享的这套基于LC滤波器移相的D类功放方案核心思路不是去千方百计补偿这个相位而是把LC的相移特性直接变成自振荡环路的一部分。适合正在折腾分立D类、又对固定PWM调制器和EMI头疼的玩家参考。先说明白这个方案解决了什么问题。常规固定频率PWM的D类功放需要高频三角波发生器、比较器和一套复杂的补偿网络而且LC滤波器的相位滞后经常让反馈环路变得很不稳定。我的做法是把LC滤波器纳入闭环让它在开关频率附近提供的接近-180°相移直接参与自激振荡这样省掉载波发生器开关频谱摊开EMI压力小很多音频带内的失真和电源纹波抑制也能做得更好。1. 从固定PWM到自振荡LC移相从“麻烦”变成“资产”1.1 传统方案里LC滤波器为什么总在帮倒忙大多数入门级的D类功放设计都倾向于固定频率PWM调制一个高频三角波作为载波音频信号和三角波通过比较器得到PWM脉冲驱动功率管后面再接一级LC低通滤波器把开关频率和它的谐波滤掉剩下放大后的音频信号。这种结构看着直接实际做起来有一个隐蔽的矛盾——LC滤波器是有移相的。二阶LC低通滤波器在音频带内比如20kHz以下相位滞后还不大但到了开关频率附近它的相位会急剧地从0°往-180°方向走。如果你把反馈取样点放在LC滤波器的输出端那么LC的移相就进入了整个环路。环路穿越频率附近突然多出这么一段陡峭的相位下降相位裕度会被吃掉大半系统的稳定性就很难保证。所以很多工程师为了省事把反馈点放在功率级输出、LC之前只闭环功率级LC的谐振峰和电感饱和带来的问题全靠外部阻尼电阻硬扛。结果就是音频带内的失真做不到很低负载从8Ω换成4Ω时高频响应明显变化EMI也不理想。这是固定PWM方案中LC滤波器“帮倒忙”的典型表现。另一个麻烦点是固定PWM的频谱。载波和调制边带能量高度集中在开关频率附近EMI设计要花很大功夫去压低这个尖峰。输出滤波器的网孔、PCB布局、屏蔽都要为这个窄带尖峰额外优化。1.2 自振荡调制把相位滞后放进环路里用我们这个方案的思路完全反过来既然LC滤波器天然在带外提供接近-180°的相位滞后那就不去补它而是利用它来构成自振荡调制。所谓自振荡D类功放翻译成大白话就是不外加三角波发生器整个功率级、LC滤波器和反馈网络本身就构成一个振荡器。振荡产生高频方波这个方波经过LC滤波回到输出再由反馈网络送到输入端的误差放大器和音频信号比较。音频信号通过积分器的调制作用改变方波的脉宽于是输出端得到的就是携带音频信息的PWM波再被LC滤出。这里最关键的就是“LC滤波器移相”这个物理现象。在闭环环路中积分器本身在中高频提供一个接近-90°的相位滞后LC在开关频率附近再补上-120°到-160°的相位这样总相位就逼近-180°到-250°加上比较器翻转时的非线性相位环路满足自持振荡的相位条件。振荡频率由LC参数和环路增益共同决定而不是某个外部晶振或三角波发生器。这样做的好处是实打实的省掉了三角波发生器和相关电路开关频谱的能量被分摊在一个较宽的频段内EMI峰值明显下降滤波和屏蔽压力小很多环路的音频带宽可以做高反馈对电源纹波、输出级死区效应和LC非线性的抑制能力更强。缺点自然也有——开关频率不固定对LC和功率管的选型要求更细致调试时需要更多耐心。关于这部分我放到后面实测章节里细说。2. LC滤波器的移相到底怎么算从公式到工程参数2.1 二阶低通滤波器的相位表达式与三段式规律要利用移相首先得会算移相。单电感L和高频电容C组成的二阶低通滤波器等效电路就是经典的RLC串联到负载传递函数写成H(s) 1 / (1 s/(ω0·Q) s²/ω0²)其中 ω0 1/√(LC)Q R·√(C/L)R是负载等效电阻。相位表达式我习惯按三段口诀来速算当 f 远小于 fc相位约等于0°电容的作用可以忽略。当 f fc相位严格等于-90°这个点和Q值无关很便于记忆和使用。当 f 远大于 fc相位趋近于-180°但永远不会完全到-180°。在远离截止频率的高频段更精确的计算式可以写成φ ≈ -180° arctan[ (f/fc) / (Q·((f/fc)² - 1)) ]这个公式看起来有点吓人实际用起来很有用。它说明相位接近-180°的快慢取决于比值 f/fc 和 Q 值。Q越高相位靠近-180°越慢Q越低相位越早在比值较高时贴近-180°。举例如果 f/fc 4、Q 0.7那么相位大约在 -159°如果 f/fc 8、Q 0.7相位就到 -169°左右。如果Q升到1.5同样在 f/fc 4 的位置相位大约只有 -152°。这三个口诀和上面的公式是我做自振荡D类时反复用的基础。每当要判断某个LC参数在目标开关频率处能不能给出足够的相移我都会先按 fc 和 Q 快速估算再上仿真确认。补充一句上面说的Q是带载状态下的Q。空载时R趋近无穷大Q也跟着升高相位特性在带外会变得更“陡峭”一些这是后面第6节要聊的坑的来源。2.2 截止频率、Q值与目标开关频率的匹配设计一个自振荡D类功放第一步不是选LC而是先确定目标开关频率范围。我习惯把目标定在200kHz到400kHz之间。低于200kHz时音频带宽内做高环路增益的空间会被压缩LC的体积往往也更笨重高于400kHz时栅极驱动损耗、开关损耗明显上升对驱动器和比较器的速度要求也变高散热设计难度增加。定了开关频率范围再倒推LC截止频率。为了让LC在开关频率附近贡献足够的相位滞后同时又不至于让音频带内响应出现明显衰减和峰值fc一般取目标开关频率的1/4到1/5。假如目标开关频率250kHz那fc就取50~60kHz。这个比例下LC在开关频率处大约能贡献-155°~-165°的相位。相位太少不够起振裕量相位太接近-180°则可能让振荡频率偏离设计点太多留一点点余量比较好。Q值的工程选择要照顾两个矛盾。Q偏高比如1.0以上在fc附近会出现幅度谐振峰20kHz内的频响会翘起来反馈环路要额外费劲去压平Q偏低比如0.4以下相位虽较早接近-180°但LC阻尼偏大音频段损耗和功率管的电流应力增加。我的经验是把额定负载下的Q控制在0.6~0.9正好在临界阻尼上下。2.3 一个具体参数验算过程拿我最近搭的这版方案来说电源用单24VBTL全桥输出额定负载先按8Ω设计。我选了L22µH、C0.33µF先验算fcfc 1/(2π√(22e-6 × 0.33e-6)) ≈ 1/(2π × 2.69e-6) ≈ 59kHz再算8Ω负载下的QQ 8 × √(0.33e-6 / 22e-6) 8 × 0.122 ≈ 0.98这个Q接近1稍偏高8Ω下有一点轻微尖峰但通过闭环环路增益可以压住。4Ω负载时Q会降到0.49左右阻尼变大大信号下低频响应会稍微变软实际测试下来4Ω时把输入电平略降听感没有明显变差。然后验算目标开关频率250kHz处的LC相位f/fc 250/59 ≈ 4.24Q0.98代入高频段公式φ ≈ -180° arctan[4.24 / (0.98 × (4.24² - 1))] ≈ -180° arctan[4.24 / 16.05] ≈ -180° 14.8° ≈ -165.2°LC在开关频率处给出约-165°的相位。加上积分器在中高频的约-90°总相位约-255°等效到负反馈系统里就是约75°的“余角”这个角度配合比较器非线性翻转足以维持自振。选电感时要注意饱和电流。这版方案在4Ω负载下峰值电流能达到5A以上22µH的磁环电感如果额定饱和电流不到6A大信号时感值会明显跌落开关频率和相位特性都会跟着漂。所以我后来换成了能过8A饱和电流的铁硅铝磁环体积大一圈但参数稳。3. 方案整体架构谁负责“移相”谁负责“起振”3.1 环路信号流与各模块职责整套方案的结构说简单也简单可以拆成几个模块输入缓冲与误差积分器、高速比较器、栅极驱动与全桥功率级、LC输出滤波器、反馈取样网络。信号走向是这样的音频信号输入经过缓冲后进入误差积分器输出端LC之后的电压也通过反馈网络回到积分器积分器把两个信号的误差进行积分放大积分器输出送到比较器比较器输出方波方波经栅极驱动控制全桥功率管全桥输出方波经过LC滤波器变成模拟音频信号驱动负载。这里每个模块分工明确误差积分器的角色是“平均与放大”。它负责把输出反馈和输入信号之间的差值积分起来同时对高频开关纹波进行平均从而决定占空比。比较器的角色是“翻转与整形”。它把积分器的缓慢变化电压转成陡峭的方波。为了让翻转干净快速通常加一点正反馈形成滞回避免在阈值附近抖动。LC滤波器在这里有两个身份既是对外的音频低通滤波器又是环路里的移相网络。它的相移特性决定了自振荡能否成立所以选型要按第2节的公式来。反馈取样网络把LC输出端的高频方波衰减到合适的电平送回积分器同时提供足够的环路增益来压低失真。3.2 积分器和比较器的参数选取误差积分器我用了一个高速音频运放单位增益带宽要远高于开关频率。为什么强调这个如果运放在开关频率附近增益已经跌落它自己就会贡献多余的极点环路分析和实测对不上。建议选GBW在10MHz以上、压摆率足够的运放不要用普通音频运放去硬扛。积分电容和输入电阻的取值直接影响环路增益和开关频率。一个粗略的设计起点反馈取样电阻取10kΩ积分电容取220pF那积分器在开关频率250kHz处的增益大约为1/(2π×250k×10k×220p) ≈ 0.29也就是-10.7dB左右。这个增益大小不能太大否则会把比较器输入端的开关纹波也放大导致调制不稳定也不能太小否则环路增益不够。比较器我用的是带滞回的方案。滞回宽度决定了比较器翻转点的差值会影响自振荡频率和调制增益。一开始我把滞回做得很窄几毫伏结果发现开关频率受噪声影响抖动非常明显后来把滞回加宽到几十毫伏再把反馈分压比微调一下稳定性立刻好了很多。这里有个我反复踩的坑比较器输入端的噪声和纹波一定要先滤干净再判断阈值。很多自振荡D类“吱吱”响、频率乱飘问题不在LC而在比较器前端没有滤掉高频毛刺。方法是在比较器反向输入端对地加一个小电容10~33pF稍微慢一点点但换来的是干净的翻转。3.3 功率级与LC元件的选型思路功率级我用了BTL全桥两个半桥分别驱动LC负载跨接在两个输出电感之间。相比单端半桥BTL的优势是电源利用率高出一倍而且两个半桥的共模开关噪声可以在负载上大部分对消因此我的LC只用了两个电感和跨接电容没有额外的大电容耦合问题。MOSFET的选择主要看三个指标开关速度、栅电荷和导通电阻。BTL结构里每个半桥只有一个高边和一个低边但高频自振荡下栅极驱动损耗不容小觑。我实测过某款低栅电荷的MOSFET在250kHz下整体损耗明显低于大电流工业管宁可多花一点钱在栅电荷小的管子上。驱动部分选带内置死区和欠压锁定的半桥驱动器死区时间先按80ns起步。LC的选型前面已经说了大部分。再补充一点LC滤波电容一定不要用普通陶瓷电容。X7R、Y5V这类介质的电容在开关纹波电流下会发热、容量漂移而且等效串联电阻不理想。我用的是C0G/NP0陶瓷电容或聚丙烯薄膜电容容差控制在±5%以内。电感用铁硅铝或铁氧体磁环注意绕组直流电阻尽量低大电流下不要饱和。4. 仿真先行在电路仿真软件里把自振荡“看”明白4.1 仿真模型搭建要点电路方案在打样前我习惯先在仿真软件里把整个闭环跑通。仿真不是为了替代实验而是为了三件事确认起振、看清开关频率、快速摸参数边界。模型搭建有几个关键点比较器我建议直接用电压控制开关或比较器模型关键是设置合理的滞回。用具备滞回功能的受控电压源是最省事的但要留意收敛设置。也可以直接用软件自带的比较器符号把正反馈电阻网络放进电路里更接近实际。功率级不需要一开始就用真实MOSFET模型否则仿真时间会拖得很长。先用两个压控电压源模拟半桥输出一个源输出0到电源电压方向跟随比较器输出另一个源输出电源电压到0形成互补驱动。等整体行为验证通过后再替换成真实MOSFET和驱动器仿真开关损耗。反馈取样点放在哪里仿真里就要从哪里取。我特别强调这一点是因为不少人在仿真里图省事直接取功率级输出端电压做反馈等到画PCB时才发现反馈线要绕到LC后面去走线一长感性和容性变化都会让实测与仿真大相径庭。4.2 起振过程与频谱波形分析仿真搭好后输入1kHz、500mV的正弦信号观察LC输出节点和比较器输入节点。上电后大概几十个微秒内输出会从直流电平逐渐建立自振荡脉冲宽度随着输入音频信号变化。看FFT时注意区分输出端的信号频谱和开关噪声频谱1kHz处是主信号250kHz附近是开关基波及其边带。我在仿真里最关注两个指标THD和开关频率稳定性。THD不能直接看时间波形要跑一段足够长的瞬态让信号周期完整覆盖然后用FFT求各谐波幅度。开关频率我看比较器输出上升沿间隔或者在输出FFT里找基波峰。第一次调参时发现THD在低频段偏高。排查下来是积分器输入端的偏置和直流失调的问题误差积分器只要有几十毫伏的失调就会在音频输出上叠加直流分量开关波形都正常但THD就是降不下去。解决方法是加隔直电容或微调偏置仿真里直接把输入直流偏置设到积分器的比较平衡点。这个坑在做实物时同样存在。另外仿真里可以直观看到开关频率随输入信号的变化输入幅度升高时开关频率会下降输入接近静音时开关频率最高。这是自振荡调制“天然展频”的直接体现。只要LC移相参数选得合适频率变化范围控制在设计区间内就说明移相量给足了如果频率飘得太狠多半是LC截止频率离开关频率太近或者Q值太低。4.3 仿真中调参数的经验我调参数时固定的顺序是先调LC确定移相再调积分器增益最后调比较器滞回。如果起振困难我不会一股脑去加大环路增益而是先把LC的fc降一点让开关频率处的LC相位更接近-180°或者把Q值调低一点相位曲线更平缓环路更稳。如果起振后频率过高比设计值高出20%以上就先检查是不是反馈取样网络把高频分量衰减得太多削弱了移相作用。一个更微妙的问题是“起振幅度”。自振荡环路按理说应该稳定运行在某个平衡点但仿真有时会看到开关频率在两个值之间跳来跳去、幅度忽大忽小。这通常是比较器滞回和积分器增益共同作用的结果。我的做法是先加大滞回让比较器翻转更果断再看频率是否稳定若还不稳定就把积分电容缩小10~20%缩小环路时间常数让环路响应更快闭合。仿真得到的参数通常能和实物对得上八成左右剩下的两成差异主要来自PCB寄生参数和元件公差。所以仿真里最好把关键元件的容差扫描也跑一遍至少把LC的±5%容差组合扫出来看看开关频率和THD的散布范围能不能接受。5. 实测表现效率、失真与负载适应性5.1 测试平台与测什么仿真通过后我打了样板。测试平台是一套实验室常规设备直流稳压电源、音频信号发生器、数字示波器、失真仪和电子负载。测的内容主要是五样静态耗流、输出功率、THDN、效率、开关频率范围。测THDN时我习惯在固定1kHz信号下从1W往上扫输出功率记录每个功率点的失真数值。不要只看额定功率一点因为很多D类功放小功率段THD反而偏高开关纹波和反馈环路共同作用会造成“低电平失真”。测效率时用电源输入功率除以负载实际功率。电源电压波动对自振荡方案的影响比固定PWM方案更明显所以我会在24V、26V、22V三个电压下记录效率曲线看看电源变化会不会导致开关频率超出预想范围。5.2 不同负载和功率下的数据我这版方案在8Ω负载下1kHz、输出功率10W时THDN大约在0.03%~0.06%之间到额定功率约30W时THDN仍在0.1%以下。4Ω负载下输出功率20W时THDN约0.07%到接近60W时能维持在0.15%左右。作为分立自振荡方案来说这个数据已经可以接受核心原因就是LC移相给了环路足够的带宽和相位裕度反馈能扎实地压住失真。测试条件输出功率THDN效率开关频率近似值8Ω / 1kHz10W约0.04%88%约260kHz8Ω / 1kHz30W约0.09%85%约235kHz4Ω / 1kHz20W约0.07%85%约255kHz4Ω / 1kHz60W约0.15%82%约225kHz效率方面8Ω负载、半功率输出时实测约88%满功率略降到85%4Ω负载满功率时约82%。比固定PWM方案的典型效率低两三个点主要原因是自振荡方案的开关频率会随着负载和信号变化平均频率比固定频率高一些开关损耗也略大。但对听感和EMI的改善来说这点效率代价是值得的。我还专门记录了不同输出功率下的开关频率静音时约280kHz1W输出时约270kHz30W满功率输出时下探到约220kHz。这个变化范围和仿真基本一致。在整个范围内人耳听不到因为开关频率变化带来的可闻噪声LC滤波在最低开关频率处仍有足够的纹波衰减。5.3 开关频率随信号变化的“天然展频”效应用频谱仪看过D类功放的人都知道固定PWM方案在开关频率处会有一个尖锐的窄带辐射尖峰很容易在EMI测试中超标。自振荡方案的开关频率是随信号、负载和电源电压缓慢调制的频谱能量被拉开幅值峰值可以低好几个dB这是它最吸引我的地方。我用近场探头大概扫过LC输出端的辐射频谱250kHz附近的峰值确实比之前做的固定PWM方案低边带分布更宽更平坦。当然这不代表可以不用滤波和屏蔽但环路、PCB和外壳的EMI设计压力确实小很多。需要提醒的是“天然展频”也会带来一个副作用在某些负载阻抗曲线异常的音箱下开关频率可能发生明显跳变个别时候会听到“嘶嘶”的噪声。解决方法是加强反馈取样端的阻尼或者在比较器输入端做一点点高频滚降把频率变化范围限制住。6. 五个常见坑和对应的处理办法6.1 空载停振/间歇啸叫自振荡D类功放在空载或轻载时最容易出问题。我在最初版调试时不接音箱只接示波器探头发现输出会间歇性停振一会儿是完整的高频方波一会儿变成低频毛刺。原因就是空载时LC的Q值过高相位特性在开关频率附近变得过于陡峭环路在某些工作点上跑出了谐振稳定边界。办法是给LC输出端并联一个假负载。我用1kΩ/1W的电阻并在LC之前而不是直接并在喇叭端这样既能抑制Q值又不影响功率输出。等电路稳定后这个假负载还可以保留对效率影响很小。6.2 死区时间与交越失真死区时间设置得太大不管固定PWM还是自振荡都会有明显的交越失真。我在自振荡方案里发现这个问题更隐蔽因为开关频率不固定同一死区时间在不同频率下的失真贡献不一样。静音时死区效应不明显一到大功率输出波形在过零附近就会出现一个明显的台阶。处理思路是双管齐下一是把死区时间压到刚好避免直通的区间我最终用驱动器内部死区再外加RC微调确定到大约50ns二是在反馈环路里加一个小的超前电容补偿把LC移相带来的相位裕度损失补回来一部分。实测下来交越失真的改善非常明显。6.3 元件容差与饱和LC参数的容差问题在前面仿真部分说过实测中绝不能忽略。我最初买的电感的实际感值偏低开关频率整体上移了十几个千赫环路相位裕度也随之改变。换用饱和电流富余量更大的磁环后这个漂移就消失了。电容同样关键。C0G/NP0和其他陶瓷介质在音频小信号下的容量差异不大但在几安培纹波电流下普通介质的等效电容可能衰减20%以上而且会发热。我在打样时直接规定了C0G或薄膜电容容差±5%这样批量一致性才有保障。6.4 地回流导致噪声D类功放的大电流脉冲在PCB地线上会产生很大噪声如果反馈取样线和功率地共用一段走线自振荡环路会把这些噪声调制进PWM最终输出端出现明显的底噪。我第一版PCB就是吃了这个亏取消输入信号示波器看噪声毛刺一串串。解决方案是采用星形接地功率级的地、控制电路的地、反馈取样地分开走在电源端集中汇合。反馈取样线用屏蔽或紧贴地线走并且只取LC输出端的差分电压。改完PCB后底噪下降了差不多一个数量级。这个坑在任何D类功放里都存在但在自振荡方案里因为环路带宽更高表现得更突出。6.5 上电冲击和静音时序最后说一个平时不留意、一接音箱就吓一跳的问题上电瞬间自振荡环路还没有建立稳定的平衡功率输出可能出现一个短暂的低频脉冲直接冲击喇叭严重时会听到“砰”一声甚至损坏高音单元。我的做法是加了一个简单的静音控制上电时先把积分器输入端的音频信号短路到地等电源稳定、自振荡建立之后再逐步解除短路。另外电源端加了软启动电阻和继电器延时避免电源浪涌。这一套时序电路不复杂但对成品可靠性很重要。整套方案做到这里我觉得已经算是一个完整的可复制项目了。最后再分享一个个人经验调试自振荡D类时不要急着换元件先把反馈取样端和比较器输入端的波形同时挂到示波器上观察它们之间的关系多数问题都能从相位和纹波形态上看出端倪。LC移相这个参数说穿了就是让这些波形之间的关系符合你的预期理解了这一点这个方案就掌握了一大半。