做了几年电源方向的项目市面上OBC车载充电机和直流充电桩的功率级方案翻来覆去就那么几个但真正能稳定量产、效率和可靠性都扛得住的核心组合还得是PFCLLC。最近在整理一套基于DSP的OBC充电桩控制工程工程代号就叫OBC_PFC_LLC里面包含完整DSP源码、控制板与功率板硬件设计、以及对应的调试说明。这篇文章就从软件到硬件、从原理到调试把整套方案的核心设计和踩坑记录捋一遍给正在做同类项目的朋友一份能“抄作业”的参考。这套东西解决的是OBC和充电桩功率变换里最核心的两个问题一个是交流侧的功率因数和谐波另一个是后级隔离DC/DC的宽范围调压与高效率变换。PFC负责把电网的交流电变成稳定的直流母线顺便把功率因数拉到0.99以上LLC负责把母线高压变成满足电池充电曲线需求的直流输出同时利用软开关特性把效率顶上去。两者加起来就构成了一个完整的AC/DC隔离电源主链路。适合看这篇文章的人主要是两类一类是刚接触数字电源、想了解PFC和LLC在DSP上怎么落地的新手另一类是已经做过模拟电源、想切换到数字控制方案但不知道软件框架、环路调参和硬件布局要注意什么的工程师。这里不绕弯子直接把工程里的关键决策、设计思路和实测经验讲清楚。1. 项目定位为什么OBC充电桩离不开PFCLLC这个组合1.1 单级拓扑为什么撑不住OBC这种宽范围场景OBC的典型输入是220V交流市电输出侧要跟随动力电池的电压变化通常覆盖200V到420V甚至更宽的范围同时还要满足充电曲线里的恒流、恒压切换。这个需求如果只用一级拓扑来扛问题会非常明显。举个例子反激拓扑虽然可以做隔离和调压结构简单、成本低但在功率超过1kW之后开关管应力大、变压器利用率低、效率撑不起来同时反激在输入侧没有功率因数校正能力交流输入电流会严重畸变谐波指标过不了认证。再看移相全桥它能做中大功率隔离变换但开关管是硬开关轻载下寄生振荡明显效率曲线不平坦而且控制环路复杂度和调校成本都不低。单级PFC拓扑比如图腾柱PFC无桥结构本身可以把功率因数做得很好但它不提供输出与输入的电气隔离无法直接当作OBC的后级。如果硬要做隔离还得在桥后面挂一个隔离变换器那本质上又回到了两级结构。所以OBC这个场景几乎没有悬念地选择了PFCLLC两级架构。前级负责“整形”后级负责“隔离和调压”各管一段互不干扰设计和调试起来思路也清晰。1.2 PFCLLC两级架构的分工逻辑这两级的分工可以用一句话概括PFC管“入网”LLC管“出门”。PFC级是一个Boost变换器输入是经过整流后的正弦半波控制目标是让输入电流波形跟踪输入电压波形使等效负载呈阻性。它同时把输出电压钳在400V左右的直流母线上为后级提供一个稳定的电压源。这样后级LLC不需要面对市电整流后那种高低起伏的直流电压工作状态稳定很多。LLC级是一个谐振变换器它通过调节开关频率来控制输出电压。它的核心优势是原边开关管可以实现ZVS零电压开通副边二极管可以实现ZCS零电流关断在整个负载范围内开关损耗都很低这直接决定了OBC的充电效率能轻松做到93%以上。两级架构还有一些“隐性收益”。比如PFC母线电压稳定后LLC的增益设计范围可以收窄谐振参数好算很多又比如两级中间有母线电容作能量缓冲输入侧瞬态波动不会直接冲击输出侧动态性能更容易调好。1.3 OBC_PFC_LLC工程包含的内容与适用人群这个工程名字就是一套完整的可参考设计目录结构大致是这样软件部分DSP控制源码包含PFC控制环、LLC控制环、状态机、故障保护、通讯接口、采样标定等完整模块。硬件部分控制板原理图与PCB、功率板原理图与PCB、辅助电源设计、驱动电路和采样电路。配套文档调试步骤、参数计算表格、BOM清单和关键波形说明。源码不是跑不动的半成品而是按可移植、可裁剪的方式组织的。PFC和LLC部分各自独立成模块中间通过母线电压和系统状态机衔接换一个DSP型号或者改功率等级主要改参数和引脚映射就能用。这套方案适合以下场景参考学生做毕业设计、工程师做OBC或充电桩预研项目、以及公司做电源平台化开发。如果你只是想看看LLC怎么通过软件调频或者想了解PFC双环控制在DSP里怎么写这套工程的代码框架和调试经验都能省下不少时间。2. 主电路参数设计从功率等级到谐振参数2.1 先定指标功率等级、输入输出范围与母线电压任何电源设计第一步都是定指标指标不定后面全是空中楼阁。这套方案按OBC主流规格来设定具体参数如下表参数数值说明输入电压85VAC~265VAC覆盖全球电网范围含PFC母线预升压额定功率3.3kWOBC常见单相功率等级可向下兼容PFC母线电压400VDC兼顾后级LLC增益和器件耐压LLC输出电压200V~420V匹配主流400V平台电池充电范围LLC最大输出电流15A与功率等级配套开关频率范围70kHz~250kHzLLC调频范围PFC固定100kHz这里有个关键选择母线电压为什么定400V而不是380V或者420V。考虑到LLC在宽输出电压下的增益变化母线稍微高一点后级的频率调节范围就不用太宽轻载和高压输出时也不太容易顶到频率上限。但母线也不能太高过高会加重PFC开关管和母线电容的电压应力。400V是一个经过长期验证的折中值。2.2 PFC部分电感计算与控制方式选择PFC的核心无源器件是Boost电感它的取值直接影响电流纹波和动态响应。电感值计算依据是最大峰值电流和允许的电流纹波比例。以3.3kW、输入电压最低85VAC为例峰值输入电流大约为I_peak P × √2 / V_min 3300 × 1.414 / 85 ≈ 54.9A如果按峰值电流20%的纹波比例设计允许的纹波电流大约是11A。Boost电感的伏秒平衡式化简后可以得到电感值估算公式L (V_out × (1 - D) × D) / (f_sw × ΔI)在最低输入电压附近占空比最大D约等于0.82代入100kHz开关频率计算结果大概在550μH到700μH之间。实际取值600μH用铁硅铝磁环或非晶磁环绕制兼顾饱和特性和损耗。控制方式上数字PFC最常用的是平均电流模式也就是电压外环加电流内环的双环结构。外环把母线电压稳定在400V输出一个电流给定指令内环让电感电流跟踪这个指令指令波形自然就是与输入电压同相的正弦波。这个方案在DSP里实现起来很直接一个PI环嵌套一个PI环运算量也不大。这里提一句为什么不用单周期控制。单周期控制不需要采样输入电压电路实现简单但它对参数漂移和噪声更敏感动态响应不容易做成自适应在数字平台上反而不如双环结构好调、好维护。做产品讲究的是可控可维护所以双环是首选。2.3 LLC部分谐振槽参数的三步计算法LLC谐振参数是这套方案里最需要动笔算的部分也是很多新手卡壳的地方。LLC的参数设计说到底是选定Lr、Cr、Lm三个谐振元件让它在目标增益范围内既能软开关又能覆盖输出电压。第一步定谐振频率。谐振频率f_r由Lr和Cr决定设计目标通常落在80kHz到150kHz之间。这里选f_r等于100kHz便于与PFC频率一致数字化实现时采样同步也方便。第二步选电感比k。k Lm / Lr这个比值决定了增益曲线的形状。k太大增益范围变窄重载时难以达到目标电压k太小励磁电流偏大关断损耗上升。工程上k取3到5是一个平衡点。本方案取k4。第三步根据最大最小增益算Q值。LLC的电压增益和Q值强相关Q太小满载工作点频率偏离谐振点很远Q太大轻载时频率上冲厉害。计算时用最大输出电压对应的最大增益G_max和最小输出电压对应的G_min在增益曲线上反查负载范围对应的Q值然后联立公式解出Cr、Lr、Lm。以3.3kW、额定输出电压400V为例变压器变比选2.45:1原边谐振电容Cr大约330nF谐振电感Lr约7.7μH励磁电感Lm约30μH。实际绕制时Lr可以集成在变压器漏感里但为了控公差建议外部加一个独立谐振电感。这里特别提醒LLC空载和轻载时频率会拉到很高可能超过250kHzDSP的PWM频率上限和驱动芯片的传输延迟都要提前余量否则轻载会失控。2.4 功率器件选型PFC开关管这里考虑的是650V耐压的碳化硅MOSFET因为PFC二极管的反向恢复问题在连续模式下很严重碳化硅的逆向恢复电荷几乎为零能显著降低开关损耗。虽然成本高一点但效率收益明显。LLC原边同样用650V碳化硅或氮化镓器件利用ZVS特性把开关损耗降到最低。副边整流二极管在LLC工作在谐振点附近时能实现ZCS可选择快恢复二极管或肖特基二极管反向恢复时间要求不高。母线电容选择上容量是4.7μF/kW到10μF/kW的经验范围3.3kW取220μF左右采用多个小容值电解电容并联降低ESR和ESL延长寿命。薄膜电容再并几个吸收高频纹波。变压器磁芯用EE型或PQ型铁氧体工作频率100kHz附近时选PC95或同类材料饱和磁通密度高损耗也低。谐振电感磁芯需要开气隙防止大电流下饱和。3. DSP软件框架中断、状态机与控制环3.1 主程序逻辑状态机的设计与切换条件数字电源的软件第一件事不是写控制环而是把状态机搭好。好状态机能避免绝大多数误动作和危险工况。这套方案里的状态机按以下流程组织typedef enum { SYS_INIT, SYS_STANDBY, SYS_SOFT_START, SYS_PFC_ON, SYS_LLC_ON, SYS_NORMAL, SYS_FAULT } SystemState;状态机切换关系如下SYS_INIT上电初始化配置时钟、ADC、PWM、GPIO自检完成后进入STANDBY。SYS_STANDBY等待启动指令此时PWM全部关闭辅助电源工作通讯待命。SYS_SOFT_START收到启动指令后先执行PFC软启动母线电压逐步建立到400V。SYS_PFC_ONPFC稳定运行母线电压稳定后允许开启LLC。SYS_LLC_ONLLC执行软启动输出逐步建立到目标电压或电流。SYS_NORMAL闭环运行根据充电曲线切换恒流或恒压。SYS_FAULT任意故障触发即进入关闭PWM记录故障标志等待复位。状态机的关键细节是每个状态切换都要有条件和防抖时间。比如PFC进入稳定状态必须检查母线电压在400V±20V内持续100msLLC允许开启必须检查母线电压达到380V以上且无过压故障否则一次电压毛刺就会让系统误入危险状态。3.2 采样标定ADC配置与数值换算数字控制的质量一半取决于采样。DSP内ADC模块采集四路关键信号输入电压PFC前馈、输入电流PFC内环、母线电压PFC外环、输出电压电流LLC闭环。ADC采样的基础配置有几个要点采样触发信号与PWM同步避免开关噪声落入采样窗口。通常用PWM载波下溢事件触发ADC在开关管导通的稳态区采样。对输入电压和输出电压配置多通道连续采样用均值滤波减小随机噪声。电流信号用差分输入模式配合硬件调理电路的偏置电压把双极性电流信号搬移到ADC的单极性量程内。标定这一步容易被忽略但在真实项目中非常重要。因为电阻分压、传感器和调理运放的精度不可能完全一致直接用原始ADC码值算功率误差可能达到5%以上。标定方法是上电后给已知标准电压或电流读取ADC代码计算比例系数和零点偏移存入DSP闪存。标定一次后续换板子不用重新调。// 母线电压标定示例 #define VDC_ADC_GAIN (400.0f / 2460.0f) // 实际标定的增益系数 #define VDC_ADC_OFFSET (-4.5f) // 零点偏移 float GetBusVoltage(uint16_t adcValue) { return (float)adcValue * VDC_ADC_GAIN VDC_ADC_OFFSET; }3.3 PFC双环控制的数字实现PFC的控制核心是电压外环加电流内环。电流内环的给定是电压外环输出乘以输入电压归一化波形。这样电流环跟踪的参考信号本身就是正弦能自动保证功率因数接近1。电流内环的动态要求比外环高一般电流环采样频率与PWM频率一致即100kHzPI参数计算出来之后离散化直接写成差分方程typedef struct { float Kp; float Ki; float integral; float outMax; float outMin; } PI_Controller; float PI_Update(PI_Controller* pi, float error) { pi-integral pi-Ki * error; if (pi-integral pi-outMax) pi-integral pi-outMax; if (pi-integral pi-outMin) pi-integral pi-outMin; float out pi-Kp * error pi-integral; if (out pi-outMax) out pi-outMax; if (out pi-outMin) out pi-outMin; return out; }PFC的电流环输出是占空比DSP比较寄存器直接写入该数值PWM模块自动生成驱动信号。电压外环的带宽要压低一般10Hz到20Hz否则母线电压上的100Hz或120Hz工频纹波会串进电流环给定造成电流波形畸变。这里有一个实用技巧输入电压前馈。把输入整流电压的倒数乘到电流环输出上可以大大降低前馈扰动对占空比的影响让电流环在输入电压快速波动时也能稳住。实现上就是用查表或除法算出一个前馈分量叠加到PI输出上。3.4 LLC PFM控制的实现与软启动时序LLC是通过改变开关频率来调节输出电压的所以DSP端的控制量是PWM周期寄存器值。PFM控制实现的思路是用PI调节器根据电压误差输出频率给定然后映射成PWM的周期值。数字PFM实现有一个细节要特别注意频率变化不是连续无穷小的DSP的PWM频率步进由时钟和分频器决定步进太大轻载纹波会明显步进太小调节速度会变慢。实际实现中通过设置PWM模块的周期寄存器位宽和时钟分频保证频率分辨率优于100Hz。LLC软启动的时序是起始频率设定为最高频率的90%左右比如220kHz此时增益最低输出电压很小。每个控制周期频率向下调整每次步进限制在500Hz以内。当输出达到目标电压的80%切换为正常PI闭环调节。软启动过程中同时监测输出电流限流保护。// LLC调频映射频率给定 - PWM周期寄存器 uint32_t FreqToPeriod(float freq) { float period PWM_CLOCK / freq; if (period PWM_PERIOD_MAX) period PWM_PERIOD_MAX; if (period PWM_PERIOD_MIN) period PWM_PERIOD_MIN; return (uint32_t)period; }软启动速度要控制好。太快输出过冲或者谐振腔电流浪涌太慢电容充电时间过长。实测下来从最高频率拉到谐振点附近大约需要200ms到500ms配合母线电压判断整个启动过程很平稳。3.5 故障保护的设计故障保护不能只靠控制器检测后软件关断必须和硬件过流保护配合。软件保护的实现原则是检测到故障后进入中断级处理而不是在慢速主循环里等待。在这套工程里故障处理放在PWM中断里检测标志置位后立即封锁PWM输出同时记录故障类型和发生时刻。主要保护项目包括母线过压超过430V立即关闭PFC超过420V开始降功率。母线欠压低于350V关闭LLC防止增益不足时硬拉输出。PFC输入过流硬件比较器触发后软件在10μs内封锁PWM。LLC原边过流谐振电容电压或变压器原边电流超过限值直接关闭。过温保护功率器件温度和变压器温度超过阈值分级降功率或停机。这里提一个容易犯的错误故障类型记录一定要用非易失存储掉电后不要丢失。很多现场故障是偶发性的没有记录就很难复现。DSP的闪存模拟EEPROM功能在这里很好用。4. 硬件设计要点功率板与控制板的配合4.1 控制板最小系统与接口布局控制板围绕DSP芯片搭建包含电源、时钟、JTAG调试接口、通信接口和信号调理电路。DSP的电源结构要特别注意数字3.3V和模拟3.3V分开供电中间加磁珠隔离内核与IO电源分别滤波防止开关噪声窜入模拟基准。DSP的ADC基准电压决定了采样精度基准源不要直接来自开关电源要用低温漂的独立基准芯片否则温度一变采样就会出现可见偏差。控制板上的信号接口布局也有讲究强电采样信号走一侧PWM输出驱动信号走另一侧中间用地平面隔开。万不得已不要穿越穿越的话也必须垂直交叉加地屏蔽。4.2 驱动电路隔离、负压关断与开通电阻驱动电路的可靠性直接影响整个电源PFC和LLC的开关管都是高压器件必须隔离驱动。驱动方案上采用隔离驱动芯片加外部推挽级的结构。隔离驱动芯片的选择关注三个参数峰值输出电流、传输延迟和共模瞬态抗扰度。峰值电流至少4A以上才能驱动大功率MOSFET的栅极电容传输延迟要小于100ns共模瞬态抗扰度要高于50V/ns否则母线开关瞬间的dv/dt会把驱动信号打乱。驱动输出电路的关键是分开开通电阻和关断电阻。开通电阻决定开通速度关断电阻决定关断速度两者不能混用一个电阻。LLC的ZVS靠死区时间内的励磁电流给栅极电容放电来实现如果开通太慢死区时间得拉长但死区过长又会损失效率需要实测折中。负压关断对LLC这类高频桥臂很有必要。用稳压管或独立的负压电源在线路中引入-3V到-5V的关断电压防止dv/dt耦合误开通。这一点有成熟产品经验的工程师都会默认设计进去。4.3 采样调理电路电压电流温度采集电流采样方面PFC输入电流用霍尔电流传感器或电流互感器。霍尔的好处是直流通吃互感器只能测交流但成本更低。PFC电流是交流正弦用互感器完全可以胜任。LLC原边电流也类似。电压采样方面母线电压和输出电压用电阻分压加隔离运放。电阻分压要注意选用精度和温度系数匹配的电阻分压后信号送入隔离放大器的输入侧隔离放大器的输出侧与控制DSP共地。这样高压侧与低压侧实现了隔离安全性提高不少。温度采样用NTC热敏电阻分压后送ADC。NTC的标定要做非线性补偿最简单的方法是查表表中数据间隔1°C一个点ADC值直接索引线性插值补出中间值。所有模拟信号进ADC之前都要加RC滤波。这个RC的时间常数要匹配采样频率太小滤不掉开关噪声太大会影响采样动态。100kHz采样率下1kΩ加10nF的时间常数大约10μs是个安全起点。4.4 PCB布局功率地与控制地的配合PCB布局是整个硬件里最考验经验的地方。功率走线的原则有几点PFC和LLC的功率回路要尽量小面积电流路径形成闭环面积越小EMI越少。母线电容要尽量靠近PFC输出和LLC输入支撑高频电流。驱动信号线要短而粗驱动芯片尽量靠近功率管栅极。功率地和控制地在采样ADC处单点连接其他位置隔离。LLC变压器和谐振电感的漏感会带来电磁耦合敏感信号的走线要远离磁性元件20mm以上。控制板与功率板如果是一体化设计建议分区域敷铜不要用一个完整的底层铜皮把强弱电混在一起。5. 调试实录上电、调环与波形分析5.1 上电前的静态检查清单每次上电之前我都有一套固定检查流程把这些做扎实能省掉后面很多麻烦用万用表二极管档检查输入整流桥、PFC开关管、LLC开关管的体二极管方向是否正确。断电状态下测量母线电容残留电压确保放电电阻接入。检查驱动信号与功率管的对应关系PWM输出到驱动芯片再到MOSFET栅极逐点确认没有错位。用示波器看PWM控制信号波形确认与软件设定的死区、频率一致。检查隔离电源输出是否正常控制板供电电压是否在规格范围内。上电顺序建议先给控制板供电不接功率部分。下载程序后先在开环状态验证PWM波形是否正常再接入功率部分而不是一上来就全压上电。5.2 先开环后闭环驱动波形怎么调开环调试的目标是验证驱动链路和主电路的基本功能。PFC开环时固定占空比先小一点比如10%上电看输入电流波形是否成形母线电容电压是否能爬升到预期值。如果占空比很大但母线电压上不去先检查输入电感和母线电容是否接反。LLC开环调试时设固定频率选择最高频率比如220kHz此时输出电压低谐振电流小安全。然后慢慢下调频率观察输出是否线性上升。如果输出电压不随频率变化检查谐振回路是否有开路或短路。LLC开环最常见的错误是谐振电容位置接错导致谐振电流没有流经变压器。驱动波形要看几个关键点开通沿是否干净、死区是否足够、关断时有没有振铃。谐振变换器的死区一般在300ns到800ns示波器观察驱动波形时重点关注关断沿之后一小段时间内是否存在明显回勾有回勾说明死区不够。5.3 电压环、电流环参数整定方法调试闭环要有顺序先调内环再调外环PFC和LLC分开调不要同时闭合两个环。PFC电流内环整定方法是给一个固定电流给定观察电感电流波形是否跟踪给定逐步增大P值到波形轻微振荡再退回来20%再逐步加I值直到稳态误差消除。内环稳定后的电流波形应当是光滑正弦没有高频毛刺。PFC电压外环整定时电流内环已经稳定此时给母线电压一个阶跃观察电压过冲和调节时间。期望是母线电压从0上冲到400V过程中过冲小于10%调节时间小于200ms。如果电压环增益太高母线会抖动甚至产生次谐波振荡这类振荡很难通过修改滤波器消除正确做法是降外环带宽。LLC电压环整定类似但要注意LLC在频率响应上有一个固有的右半平面零点带宽不能太高一般20Hz到50Hz。实测中LLC闭环很容易出现的问题是“频率抖动”输出电压轻微波动时频率来回扫这在示波器上表现为驱动波形毛刺状变化。解决的思路是增大频率步进的分辨率而不是单纯加滤波。5.4 效率和动态响应实测整机调试完成后要做效率和动态测试。效率测试用功率分析仪或两台功率计同步测量输入输出功率。实测数据大致如下负载点整机效率说明10%轻载88%左右损耗占比高效率略低50%负载94%以上LLC接近谐振点100%满载93%以上PFC和LLC损耗均衡动态响应测试主要看负载突变时的电压跌落和恢复时间。OBC实际应用中会出现电池充电阶段切换比如恒流转恒压输出电流突变。实测在50%到满载的阶跃下输出电压波动控制在5%以内恢复时间小于5ms这个指标已经能符合车载应用要求。6. 常见问题与排查技巧6.1 故障速查表调试过程中遇到的故障按现象快速定位下面是我整理的速查表故障现象可能原因排查方法母线电压爬升过慢PFC电感饱和、占空比受限查电感电流波形确认进入电流限制母线电压过冲大电压外环PI过大降Kp加电压环滤波PFC电流波形畸变电流采样偏置未标定重新标定零偏检查调理电路LLC输出电压不稳频率步进太大提高PWM时钟分频精度驱动波形有毛刺死区不足、驱动供电纹波大加大死区检查驱动电容轻载效率异常低频率过高导致开关损耗增大进入突发模式或降低最小频率变压器温度高磁芯饱和或谐振参数偏移检查励磁电感是否偏小6.2 几个印象深刻的坑第一个坑是PFC电流采样触发点没调好。一开始用PWM中心对齐中断触发采样结果每次采样都落在开关管的开通边沿附近开关噪声直接进入了ADC电流波形上出现明显台阶。后来把采样触发调整到载波下溢点也就是开关管状态切换完成后的稳定段波形立刻干净了。这个细节模拟电源里不太敏感数字电源里分分钟让你崩溃。第二个坑是LLC轻载时频率冲到太高。工程设定最大的LLC频率为250kHz但轻载时PI一使劲就顶到上限此时输出电压失控呈阶梯状跳变。后面加上限频率钳位和突发模式控制轻载时让LLC间歇工作频率限制在150kHz以内问题就解决了。第三个坑是控制板与功率板共地问题导致采样异常。功率板大电流脉冲通过地平面串进ADC地线导致母线电压采样在重载时抖动。后来调整地线走线让控制地单独回到电源输入端口干扰大幅降低。第四个坑是软启动时谐振腔电流浪涌过大。LLC软启动的初始频率不够高导致启动瞬间谐振电容电压过冲甚至触发过流保护。把初始频率从180kHz调高到220kHz并限制频率步进速率后启动电流平稳。调试电源是个细致活很多时候问题不在某一个环节而是软硬件互相牵扯。我的经验是先把软件框架稳定下来再动硬件每改一个参数记录一次波形和数据。数字电源的优势在于可复现、可调试把这个优势发挥出来OBC_PFC_LLC这套方案完全可以成为你项目里的可靠基础。