之前调试 7.2kW 单相光伏储能并网逆变器时,最深的感受是:拓扑、控制算法和 DSP 底层配置往往被拆成三块资料看,真正要合在一起跑通时,又得回头补课。Heric 拓扑用来解决无变压器逆变器的漏电流问题,TMS320F280039C 用来跑电流环和锁相,PCB 上要考虑采样、驱动、保护怎么布,代码里要处理 ADC 触发、PWM 死区、故障封锁这些细节。这篇内容围绕一套完整的“DSP 代码 + PCB + 原理图”方案,把 7.2kW 单相 Heric 并网逆变器从功率级结构、控制算法、软件架构到硬件设计思路完整拆开讲一遍,适合正在做光伏储能、双向逆变器或者 DSP 数字电源项目的读者参考。
1. 项目背景与核心概念
1.1 Heric 拓扑是什么
很多入门资料会把 Heric 拓扑直接描述成“H 桥加一个交流旁路”,这个说法基本准确,但理解它为什么要加这个旁路,比记住名字更重要。
常规单相全桥无变压器逆变器在并网运行时,四个开关管在不同开关状态下,输出端对直流母线的共模电压是变化的。光伏电池板对地存在寄生电容,共模电压变化会在寄生电容上形成充放电回路,产生共模漏电流。这个漏电流会导致电磁干扰超标、并网电流畸变,严重时还会带来安全问题。
Heric 拓扑是在 H 桥交流输出侧增加了一个由两个开关管组成的双向开关支路。正半周工作时,桥臂上管与对角下管导通,能量从直流侧流向交流侧;续流阶段则把输出端切换到交流旁路支路,让电感电流通过旁路续流,此时 H 桥不再直接决定输出电压。这样做的效果是,续流阶段变换器与电网之间处于一种“解耦”状态,共模电压被稳定住,漏电流得到有效抑制。
相比一些需要增加额外开关管的拓扑,Heric 的结构相对紧凑,功率损耗也更低,所以在中小功率单相光伏逆变器里用得比较多。本文讨论的 7.2kW 单相系统,正是这种拓扑的典型应用场景。
1.2 为什么选择 TMS320F280039C
做并网逆变器控制,MCU 需要同时完成几件对实时性要求很高的事情:电网电压锁相、并网电流闭环、母线电压控制、MPPT 追踪、保护逻辑处理。如果主频偏低或者外设不够灵活,很难在一个 PWM 周期内完成全部运算。
TMS320F280039C 是 TI C2000 系列中的一款实时控制 MCU,主频最高可达 120MHz 左右,带硬件浮点单元。单相并网逆变器的控制环路在 20kHz 开关频率下,每个周期留给控制算法的时间并不宽裕,硬件浮点能明显减轻计算压力。
外设方面,它配备了多路高精度 PWM 模块,支持死区控制、相位同步、故障封锁。ADC 模块支持多个采样通道,并且可以由 PWM 事件触发采样,这一点对并网逆变器非常关键。因为电流采样需要尽量避开开关管开通关断带来的噪声,软件很难精准控制采样时刻,用 PWM 触发 ADC 则能从硬件上保证每次都采在固定的相位点。
此外,芯片还带有比较器子系统,可以实现硬件过流保护,不依赖 CPU 运行状态。一旦检测到电流越限,直接封锁 PWM 输出,比纯软件保护更可靠。
当然,STM32、其他系列 MCU 也都能做逆变器控制,但 C2000 系列在“实时控制”这个方向上的外设设计更贴合电机控制和数字电源场景,尤其是 PWM 与 ADC 的联动、硬件保护链路这些细节,能省去不少外围逻辑。
1.3 7.2kW 单相光伏储能系统整体架构
单看 7.2kW 这个功率等级,放在单相光伏储能系统里是偏户用或小型工商业场景的。电网电压按 220V 交流有效值计算,并网电流有效值大约 32.7A,峰值电流接近 46A,母线电压一般在 360V 到 400V 左右。
系统整体结构大致如下:
- 光伏组件输入,经过 Boost 电路升压,同时完成 MPPT 控制
- Boost 输出接直流母线电容,母线电压由电压环控制
- Heric 逆变桥把母线直流电转换成交流电
- 输出侧经过 LCL 滤波后并入电网
- 储能电池通过双向 DC-DC 变换器挂在直流母线上,实现充电和放电
整个系统的控制核心是 TMS320F280039C,它采集光伏电压电流、母线电压、电网电压、并网电流、电池电压电流等信号,经过控制算法计算后,输出 Boost 开关管和 Heric 桥臂的 PWM 驱动信号。
这里要特别注意,储能系统的功率流向是双向的。并网逆变器不仅要把光伏能量送到电网,还可能从电网取电给电池充电。控制算法需要考虑并网模式和离网模式,甚至无缝切换。不过在本文研究的重点里,我们先把并网逆变这一部分做透,储能双向部分作为扩展方向去理解。
2. 系统总体方案与硬件架构
2.1 主电路拓扑与功率器件选型思路
以 7.2kW 输出功率为例,主电路可以划分为两级:前级 Boost 和后级 Heric 逆变桥。
前级 Boost 负责把光伏组件的电压升到母线电压等级。光伏组件的工作电压范围一般比较宽,可能从 100V 多到 400V 都有,Boost 的作用就是维持母线电压稳定,同时通过调节输入电流实现最大功率点跟踪。
后级 Heric 逆变桥负责 DC/AC 变换。交流侧输出通过 LCL 滤波器并网,LCL 相比单 L 滤波对高频开关谐波的衰减能力更强,但存在谐振峰问题,需要配合阻尼策略使用。
功率器件选型时,需要考虑以下几个维度:
- 电压应力:如果母线电压按 400V 设计,考虑电网波动、开关尖峰,IGBT 或 MOSFET 的耐压一般选 650V 比较稳妥
- 电流应力:7.2kW 单相交流输出电流有效值约 32.7A,实际器件选型要留 1.5 到 2 倍裕量,同时考虑散热条件
- 开关频率:一般在 16kHz 到 20kHz 之间。频率越高,滤波电感可以越小,但开关损耗也会上升
- 驱动方式:需要隔离驱动,并配合合适的栅极电阻和米勒钳位电路,避免开关管误导通
这里不建议直接套用某款具体型号,因为器件选型与散热结构、成本目标、母线电压范围都强相关。但有一条原则是通用的:把电压裕量和电流裕量算清楚,再根据开关损耗和热阻选择器件封装。
2.2 控制板与功率板划分
整套系统在硬件上通常拆成控制板和功率板两部分。
控制板核心是 TMS320F280039C 最小系统,包含电源、时钟、复位、JTAG 调试接口、BOOT 配置、ADC 采样调理电路、PWM 输出接口、通信接口等。控制板本身不直接承受高压大电流,属于弱电部分。
功率板包含整流或 Boost 功率管、Heric 桥臂、驱动电路、母线电容、交流继电器、LCL 滤波、电流电压采样传感器等。
控制板和功率板通过排针或连接器互联,信号主要包括:
- PWM 驱动信号
- 故障反馈信号
- 模拟采样信号
- 继电器控制信号
- 辅助电源供电
把控制板与功率板分开,主要目的是方便调试和降低干扰。功率板上 dv/dt、di/dt 很大,如果控制电路和功率电路混在一起,ADC 采样噪声和保护误触发会非常难处理。分开之后,可以通过合理的接口设计和滤波电路把强弱电隔离开。
2.3 关键信号链路
从信号流向来看,系统里有三条关键链路决定了整个控制性能。
第一条是采样链路:电网电压、并网电流、母线电压、光伏电压电流通过霍尔传感器或者电阻分压网络转换成小信号,经过运放调理和滤波后进入 TMS320F280039C 的 ADC。
这条链路最关键的是采样时刻和滤波带宽。采样时刻由 PWM 触发决定,一般放在 PWM 计数器的中点,也就是开关管开关状态最稳定的位置;滤波带宽要根据控制环路的频带需求来设计,不能为了滤噪声把信号滤到失真。
第二条是驱动链路:DSP 的 EPWM 模块输出 3.3V 的 PWM 信号,经过驱动芯片隔离和增强后,驱动 IGBT 或 MOSFET。
驱动链路上要关注死区设置、栅极电阻、驱动能力。如果驱动芯片峰值电流不够,开关管开关速度变慢,开关损耗会明显增大;死区设置不当,则可能导致桥臂直通。
第三条是保护链路:电流采样信号除了送到 ADC 做闭环控制,还会和比较器子系统的阈值比较器相连。一旦超过设定阈值,比较器模块直接触发 TZ(Trip Zone)封锁 PWM,不需要 CPU 干预。这条硬件保护链路的响应时间是纳秒到微秒级别的,是软件保护之外的最后一道防线。
3. 控制算法设计与理论拆解
3.1 单相锁相环 SOGI-PLL
并网逆变器必须知道电网电压的相位和频率,才能控制输出电流与电网电压同步。三相电网可以直接用 Clarke 变换得到两相静止坐标系,单相电网只有一路电压信号,缺少一个正交分量。SOGI-PLL 的思路就是构造一个正交信号发生器,把单相电压变成两相正交电压,然后再走锁相环的经典流程。
SOGI 模块的输入是电网电压 v_g,输出是两个正交分量 v_alpha 和 v_beta,其中 v_alpha 与输入同相,v_beta 滞后 90 度。SOGI 还有一个可调参数 k,影响带宽。k 越大,动态响应越快,但对谐波的抑制能力越弱;k 越小,滤波效果越好,但锁相速度变慢。实际工程需要折中,通常 k 取 0.5 到 1 之间。
得到正交分量后,把 v_alpha、v_beta 做 Park 变换得到 dq 轴分量,q 轴分量反映相位误差。用 PI 调节器控制 q 轴分量趋于零,PI 输出就是电网角频率,再经过积分得到相位角 theta。
SOGI-PLL 的离散化实现是 DSP 代码里的重点。下面给出一个基于二阶广义积分器的锁相环离散化思路示例,按差分方程写,可以直接移植到 DSP 中断函数中:
// 文件路径:control/pll_sogi.c // SOGI 正交信号发生器离散化示例 // 输入:vg 电网电压采样值 // 输出:valpha, vbeta,锁相角 theta typedef struct { float vg; // 输入电网电压 float valpha; // 输出 alpha 轴分量 float vbeta; // 输出 beta 轴分量 float x1, x2; // 状态变量 float k; // SOGI 带宽系数 float w; // 中心角频率 float Ts; // 采样周期 } SOGI_Struct; void SOGI_Update(SOGI_Struct *sogi, float vg) { float wTs = sogi->w * sogi->Ts; float den = 2.0f + sogi->k * wTs; float alpha = (2.0f * vg - 2.0f * sogi->x2 - (sogi->k * wTs - 2.0f) * sogi->x1) / den; sogi->x1 = sogi->x1 + wTs * alpha; sogi->x2 = sogi->x2 + wTs * sogi->x1; sogi->vg = vg; sogi->valpha = alpha; sogi->vbeta = sogi->x1; }PLL 的 PI 调节器和角度积分部分可以放到 ISR 里执行,与 SOGI 模块串联。需要注意的是,PLL 参数设计时要兼顾动态响应和抗扰能力。并网逆变器在电网电压畸变时锁相不能剧烈波动,否则电流指令会跟着畸变。
3.2 电流环 PR 控制
并网逆变器的核心控制目标,是让输出电流快速、准确地跟踪正弦电流指令。控制器选择上,最常见的两个方向是同步旋转坐标系下的 PI 控制和静止坐标系下的 PR 控制。
单相系统如果要在旋转坐标系下做 PI 控制,需要先通过 SOGI 构造正交电流信号,做 Park 变换后得到 dq 轴电流,两个轴各配一个 PI。这样做的好处是 PI 控制稳态无静差,坏处是计算量偏大,而且 dq 轴之间存在耦合。
PR 控制直接在静止坐标系下对正弦电流指令做跟踪,比例谐振控制器在基波频率处增益很大,所以能够实现正弦量的无静差跟踪,实现上更直接。其连续域传递函数为:
G_PR(s) = Kp + 2 * Kr * wc * s / (s^2 + 2 * wc * s + w0^2)
其中 Kp 为比例系数,影响动态响应速度;Kr 为谐振系数,决定基波频率处的增益;wc 为谐振带宽,用于提高对电网频率偏移的适应性;w0 为基波角频率。
实际 DSP 实现时,需要把传递函数离散化。比较常用的是双线性变换法,也就是 Tustin 变换。离散化之后,PR 控制器可以表示成二阶差分方程形式,核心代码如下:
// 文件路径:control/current_pr.c // PR 控制器离散化实现示例 // 输入:error 电流误差 // 输出:u 控制器输出 typedef struct { float b0, b1, b2; float a1, a2; float x1, x2; float out; } PR_Struct; void PR_Init(PR_Struct *pr, float Kp, float Kr, float wc, float w0, float Ts) { // 预畸变双线性变换系数计算 // 实际系数根据 Tustin 变换公式推导 float tan_half = tanf(w0 * Ts / 2.0f); float den = 4.0f + 4.0f * wc * Ts + w0 * w0 * Ts * Ts; pr->b0 = (4.0f * Kr * wc * Ts) / den; pr->b1 = 0.0f; pr->b2 = -pr->b0; pr->a1 = (2.0f * w0 * w0 * Ts * Ts - 8.0f) / den; pr->a2 = (4.0f - 4.0f * wc * Ts + w0 * w0 * Ts * Ts) / den; pr->x1 = 0.0f; pr->x2 = 0.0f; pr->out = 0.0f; } float PR_Update(PR_Struct *pr, float error) { // 差分方程实现 y[n] = b0*e[n] + b2*e[n-2] - a1*y[n-1] - a2*y[n-2] float out = pr->b0 * error + pr->b2 * pr->x2 - pr->a1 * pr->x1 - pr->a2 * pr->x2; pr->x2 = pr->x1; pr->x1 = out; pr->out = out; return out; }这个示例展示了 PR 控制器的基本结构,但这个差分方程写法是示意性的,实际工程中建议通过 MATLAB 的 c2d 函数或者手推差分方程核对系数符号和状态变量更新顺序,避免实现错误。
电流环输出还需要加上电网电压前馈,抵消电网电压扰动对电流环的影响。前馈量可以和 PR 输出相加,形成最终的调制波,再送入 PWM 比较器。
3.3 母线电压环与 MPPT
并网逆变器通常采用电压外环、电流内环的双闭环结构。母线电压外环根据并网功率需求生成电流指令的幅值,电流内环控制并网电流跟踪指令。
光伏侧还需要 MPPT 控制。最常用的是扰动观察法,基本原理是:小幅改变 Boost 电路的输入电压,然后观察光伏输出功率的变化。如果功率增加,说明扰动方向正确,继续朝这个方向扰动;如果功率减少,则反向扰动。
扰动观察法实现简单,但稳态时会在最大功率点附近来回振荡,导致能量损失。实际系统中可以通过减小扰动步长或引入自适应步长来改善。电导增量法也是一种常用方案,它对环境变化响应更快,但实现复杂度稍高。
MPPT 代码的核心结构是周期性读取光伏电压和电流,计算功率,再与上一次功率比较,决定 PWM 占空比调整方向:
// 文件路径:control/mppt.c // 扰动观察法 MPPT 实现示例 // 每 100ms 执行一次 typedef struct { float v_pv_old; float p_pv_old; float duty; float step; } MPPT_Struct; void MPPT_Update(MPPT_Struct *mppt, float v_pv, float i_pv) { float p_pv = v_pv * i_pv; if (p_pv > mppt->p_pv_old) { // 功率增加,保持扰动方向 if (v_pv > mppt->v_pv_old) { mppt->duty += mppt->step; } else { mppt->duty -= mppt->step; } } else { // 功率减小,反向扰动 if (v_pv > mppt->v_pv_old) { mppt->duty -= mppt->step; } else { mppt->duty += mppt->step; } } // 限幅 if (mppt->duty > 0.95f) mppt->duty = 0.95f; if (mppt->duty < 0.05f) mppt->duty = 0.05f; mppt->v_pv_old = v_pv; mppt->p_pv_old = p_pv; }在光伏储能系统中,如果电池需要充电,母线电压的控制策略会更复杂一些,可能需要根据电池充电功率来限制并网功率。整体逻辑可以理解成:光伏能量、电池能量、并网能量三者的功率平衡,控制器的任务是根据工作模式分配功率流向。
3.4 孤岛检测与保护逻辑
并网逆变器必须带有孤岛检测功能。电网失电时,如果逆变器继续工作,会形成一个自主供电的小型孤岛,对电网检修人员造成安全风险。
孤岛检测分为被动式和主动式两类。被动式检测利用电网电压幅值、频率、相位的变化来判断失电,但如果在逆变器输出功率与本地负载功率接近的情况下,孤岛状态可能比较难检测,存在检测盲区。主动式检测则是故意向电网注入小幅扰动信号,观察电压或频率响应,比如频率偏移法 AFD、有功或无功扰动法等。
实际项目中通常是主被动结合:被动检测覆盖大多数情况,主动扰动消除盲区。同时还要设置过流、过压、过温、直流分量超限等保护阈值。保护策略要分两级:
- 硬件保护:利用 TMS320F280039C 的比较器子系统,把电流信号直接引入比较器,超出阈值后立即触发 TZ 封锁 PWM
- 软件保护:ADC 采样后,在中断服务程序中检查各状态量,如果异常则进入故障状态机
阈值设定时需要兼顾保护灵敏度和正常运行裕量。比如过流保护阈值至少要比最大工作电流峰值高 1.2 倍以上,还要考虑电流采样误差和滤波延迟,避免正常波动时误触发。
4. DSP 软件架构与代码实现
4.1 工程结构与模块划分
写 DSP 控制代码和写上位机应用代码的思路不一样,核心原则是“让中断尽量简短,让每个模块职责单一”。一个可维护的并网逆变器工程,建议按功能拆分成以下模块:
- main.c:系统初始化入口
- system_init.c:系统时钟、GPIO、外设初始化
- adc.c:ADC 配置、采样数据读取与标定
- pwm.c:EPWM 配置、死区、TZ 保护
- pll.c:SOGI-PLL 锁相
- control.c:电压环和电流环控制
- mppt.c:最大功率点跟踪
- protection.c:软件保护逻辑
- state_machine.c:工作状态机
- communication.c:通信模块
每个模块尽量通过结构体封装状态,避免大量全局变量。DSP 的 RAM 资源有限,但 F280039C 的 RAM 相对充裕,只要不在中断里做耗时操作,问题不大。
4.2 ADC 采样与标定
ADC 采样的关键点包括采样通道配置、触发源配置和采样时刻选择。
在并网逆变器中,并网电流和电网电压的采样时刻建议放在 PWM 载波周期的中点。当 EPWM 计数器工作在递增递减模式时,计数器的零点或周期值位置对应开关管的中间状态,此时开关噪声最小。通过 EPWM 模块产生 SOC 触发信号,ADC 在固定时刻启动转换。
ADC 采样回来的数字量需要转换成实际物理量,公式是:
实际值 = (ADC 数字值 - 偏置) * 增益
偏置对应零电流或零电压时的采样值,增益对应传感器和调理电路的变换系数。这两个值通常需要在硬件上实际标定,不能只用理论值。初始化阶段可以先读取通道偏置,再通过注入已知信号校准增益。
4.3 EPWM 配置与死区
Heric 拓扑中,H 桥同一桥臂的上下两个开关管不能同时导通,否则会造成直通短路,所以必须在 PWM 信号中加入死区时间。
EPWM 模块的死区逻辑很灵活,可以设置上升沿延迟和下降沿延迟。对于同一个桥臂,一般配置为高有效互补输出,一个信号加入上升沿延迟,另一个信号加入下降沿延迟,确保两路信号之间有一个安全间隔。
死区时间的选择需要综合开关管特性和系统效率。死区太短,不足以覆盖开关管的关断延迟,有直通风险;死区太长,输出波形畸变增大,会影响电流谐波。实际项目中一般从几百纳秒到几微秒不等,要根据器件数据手册里的关断时间和驱动延迟来确定,然后通过双脉冲测试验证。
EPWM 初始化代码的思路可以概括为以下步骤:
- 设置时基周期,确定开关频率
- 选择递增递减计数模式,生成对称载波
- 配置比较值寄存器,更新调制波
- 配置死区寄存器,生成互补 PWM
- 配置 TZ 模块,使能硬件故障封锁
- 配置 ADC 触发源
4.4 中断服务程序
控制核心是 PWM 中断服务程序。在 TMS320F280039C 中,PWM 模块可以在时基周期匹配或零事件时触发 ADC,并在 ADC 转换完成后触发中断,也可以由 EPWM 直接触发 ADC 中断。
ISR 的执行流程建议按以下顺序组织:
- 读取 ADC 转换结果
- 根据采样值计算实际电压电流物理量
- 更新 SOGI-PLL 锁相环
- 执行母线电压环控制,生成电流指令
- 执行电流环 PR 控制,生成调制波
- 叠加电网电压前馈
- 更新 PWM 比较寄存器
- 检查软件保护条件
- 清除中断标志,退出中断
ISR 执行时间需要通过 GPIO 翻转来实测,确保整个中断周期在 PWM 周期内完成。如果执行时间太紧张,可以考虑把部分算法放在 CLA 协处理器上执行。
下面是简化版 ISR 框架:
// 文件路径:main_interrupt.c // PWM 中断服务程序框架示例 __interrupt void EPWM_ISR(void) { // 1. 读取 ADC 结果 float i_grid = Read_Grid_Current(); float v_grid = Read_Grid_Voltage(); float v_bus = Read_Bus_Voltage(); float v_pv = Read_PV_Voltage(); float i_pv = Read_PV_Current(); // 2. 更新锁相环 SOGI_Update(&sogi, v_grid); PLL_Update(&pll, sogi.vbeta); // 3. 母线电压环 float i_ref = BusVoltage_Control(v_bus_ref, v_bus); // 4. 电流环 PR 控制 float error = i_ref - i_grid; float d = PR_Update(&pr_current, error); // 5. 电网电压前馈 d = d + v_grid * feedforward_gain; // 6. 更新 PWM 比较寄存器 update_pwm_cmp(d); // 7. 软件保护检查 check_protection(); // 清除中断标志 EPWM_clearEventTriggerInterruptFlag(EPWM1_BASE); }4.5 状态机设计
逆变器不能上电就直接开始并网,需要分阶段工作。状态机是管理这些阶段的有效方式。
典型的工作状态如下:
- 待机状态:系统初始化完成,等待启动指令
- 软启动状态:通过限流电阻给母线电容充电,母线电压建立
- 预并网状态:继电器吸合前检查电网参数是否正常,电流指令为零
- 并网运行状态:正常输出功率
- 故障停机状态:检测到保护条件后封锁 PWM,等待故障复位
状态迁移条件需要做防抖处理,比如电网电压异常要连续检测到几个周期才判定故障,避免瞬时干扰导致误动作。
5. 原理图与 PCB 设计要点
5.1 原理图设计流程
DSP 最小系统是原理图设计的第一步。对于 TMS320F280039C,需要重点设计电源部分。各电源轨的上电顺序、去耦电容摆放、模拟电源与数字电源的隔离都需要考虑。
时钟部分可以采用内部振荡器,也可以外接晶体。对于并网控制来说,内部振荡器的精度基本够用,锁相环本身会对频率偏差进行调节。不过如果需要更稳定的通信时钟,外接晶体更稳妥。
JTAG 接口用于程序下载和调试,BOOT 配置引脚决定 DSP 上电后从哪里启动程序。这个在原理图设计时就要留出可配置的电阻,方便后续切换启动模式。
原理图的分页建议按功能组织:电源页、DSP 最小系统页、采样调理页、PWM 驱动接口页、保护逻辑页、通信接口页、功率连接器页。每页之间用网络标签连接,方便后期检查和维护。
5.2 采样电路设计
电压采样和电流采样是控制精度的源头,设计不到位时,换什么控制算法都救不回来。
母线电压采样一般用电阻分压加差分运放。因为母线电压是直流,可以直接分压到 ADC 可接受的范围,再经过一级电压跟随和 RC 滤波进 ADC。分压电阻的精度和温度稳定性会直接影响电压采样精度,宜选用精度 1% 甚至更高、温漂低的电阻。
电网电压采样是交流信号,需要把负半周抬升到 ADC 输入范围内。常见做法是差分采样后,用运放叠加一个直流偏置电压,把信号抬到 1.65V 左右,再进 ADC。同时还要加钳位二极管,防止异常高压损坏 ADC。
电流采样两种常见方式:霍尔传感器和采样电阻。
霍尔传感器隔离性能好,不需要和功率回路共地,但是成本高、体积大。采样电阻成本低,直接串联在功率回路里,但需要注意共地问题和采样电阻的功率损耗。对于 32A 级别的交流电流,采样电阻的损耗会比较可观,所以更推荐使用霍尔传感器或电流互感器。
运放调理电路的输出要加 RC 低通滤波,截止频率需要根据控制带宽设计。滤波太狠会引入相位延迟,影响电流环稳定;滤波不够则噪声大,影响采样精度。
5.3 驱动电路设计
Heric 拓扑一共有六个开关管,各个开关管的参考地不完全一样,所以驱动电路必须隔离。
常见的驱动方案是使用集成隔离驱动芯片,比如光耦隔离驱动或磁耦隔离驱动。驱动芯片的峰值输出电流要能满足开关管栅极充电需求,否则开关速度不够。
栅极电阻的选择是一个重要设计点。栅极电阻越大,开关速度越慢,开关损耗越大,但 dv/dt 和 di/dt 越小,EMI 越好;栅极电阻越小,开关速度越快,损耗越小,但电压电流尖峰越大,甚至可能引起振荡。实际项目中需要通过双脉冲测试来优化栅极电阻值。
驱动电路的供电需要独立的隔离电源。如果六个开关管共用一个隔离电源,很容易因为电位不同产生问题。一般建议高端驱动和低端驱动分开供电,或者使用具有高压侧自举功能的驱动方案,但自举电路在部分工况下可能出现欠压问题。
5.4 PCB 布局与布线建议
功率板的 PCB 设计是整个硬件成败的关键。并网逆变器开关频率在 20kHz 左右,开关瞬态产生的 dv/dt 和 di/dt 非常可观,PCB 布局必须严格控制寄生参数。
功率回路的布线要遵循“最小回路面积”原则。正向导通回路和反向续流回路的面积越小,回路寄生电感越小,开关管的电压尖峰越低。母线电容要尽量靠近逆变桥,这样在开关切换瞬间,高频电流由母线电容提供,而不是从远处的大电容拉线过去。
驱动电路要尽量靠近开关管。栅极驱动回路的面积也要小,否则容易受功率回路干扰,导致误开通或误关断。驱动信号线和功率线不要平行走线,信号地需要用单独的地线连接。
控制板的布局相对宽松,但也要注意模拟地和数字地的处理。ADC 采样信号属于微弱模拟信号,要远离 PWM 驱动信号和高频数字信号。如果控制板上有通信接口,通信隔离也是一个需要提前规划的问题。
散热方面,功率管需要贴散热器,散热器与功率管之间要加绝缘垫片。PCB 上可以增加大面积铺铜辅助散热,但注意铺铜不能影响安规距离,高压区域和低压区域之间要留足爬电距离。
6. 联调、测试与常见问题排查
6.1 低压调试方法
并网逆变器直接上高压电网调试非常危险,一旦控制逻辑有 bug,很容易烧毁功率器件。合理的调试流程是先低压后高压,先开环后闭环。
第一步,先把 DSP 的 PWM 输出接到驱动电路,但断开功率级母线电压,只测 PWM 波形和驱动波形是否正常。重点检查死区时间是否设置正确、互补信号是否存在直通。
第二步,用低压直流源给母线供电,比如先加 30V 左右,用示波器观察逆变桥输出波形。此时可以验证电平转换和采样电路是否正常。
第三步,把母线电压提高到接近额定值,同时通过调压器控制交流输出,逐步验证 PLL 锁相、电流环闭环和并网过程。并网前一定要用示波器确认电网电压采样相位和幅值都正确。
整个调试过程要有紧急停机按钮,并且全程使用隔离变压器和示波器隔离探头,避免触电风险。
6.2 常见问题列表
以下是在类似项目中经常遇到的问题,按现象、原因和解决思路整理成表:
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| PWM 无输出 | EPWM 模块被 TZ 封锁或时钟配置错误 | 检查 TZ 标志,确认 GPIO 配置,查看 PWM 寄存器状态 |
| 驱动波形异常 | 死区设置不当或驱动供电不足 | 用示波器实测死区时间,检查隔离电源带载能力 |
| 过流保护频繁误触发 | 采样偏置未校准,或比较器阈值过低 | 重新标定采样偏置,留足阈值裕量 |
| ADC 采样波动大 | 采样时刻靠近开关沿,或滤波不足 | 调整 PWM 触发时刻,优化 RC 滤波参数 |
| 并网瞬间电流冲击大 | 锁相相位未对准或电流指令突变 | 检查 PLL 动态过程,增加软启动斜坡 |
| IGBT 炸管 | 直通、过压尖峰或散热不足 | 检查死区时间和驱动逻辑,用示波器测 Vce 尖峰 |
6.3 DSP 启动与 JTAG 问题专项
有工程师会遇到“程序固化到 Flash 之后,不接 JTAG 就运行不了”的情况。这个现象在 C2000 系列中比较常见,本质上是 BOOT 模式配置的问题。
TMS320F280039C 上电后,会根据 BOOT 引脚或 OTP 中的配置决定从哪个地址启动。如果 BOOT 模式被配置成等待 JTAG 仿真器连接,那么上电后芯片不会自动运行 Flash 里的程序,只有接上仿真器并连接目标板后才会继续。
排查步骤可以按以下顺序:
- 检查 BOOT 引脚的上下拉电阻是否正确,确认选择了 Flash 启动模式
- 检查 Flash 烧录是否完整,程序是否真的烧到了 Flash 地址
- 检查复位引脚是否有周期性复位,有时看门狗或欠压复位会导致程序反复重启
- 检查电源上电时序是否满足要求
如果是专门针对 F280039C 的开发板,可以查阅对应开发板的 BOOT 配置说明,确认引脚对应的启动模式后再硬件连接。
7. 工程最佳实践与进阶方向
7.1 工程规范与建议
控制算法的工程化,不只是把公式变成代码,还包括规范、测试和文档。以下几条建议供参考。
变量命名要统一。比如电压用 v 开头,电流用 i 开头,参考值加 ref 后缀,反馈值可以直接用名字区分。控制参数集中放在一个结构体里,方便整定和移植。
代码中尽量不出现魔法数。PWM 周期、死区时间、保护阈值、控制参数都定义成宏或常量,集中管理。这样在调试时修改一个参数,不用在代码里到处搜索。
参数整定过程要记录。电流环 Kp、Kr、PLL 带宽、MPPT 步长这些参数,每次都只改一个变量,记录修改前后的波形和现象。这个习惯能大幅减少排查问题的成本。
版本管理一定要用起来。硬件原理图、PCB、DSP 代码、上位机配置工具建议放在同一个仓库里,按版本打标签。硬件改版和代码升级的对应关系要记录清楚,否则过一段时间可能就说不清楚哪版固件对应哪版硬件了。
安全规范的优先级最高。调试高压系统时,要设置紧急断电回路,使用隔离工具,保持实验台整洁。每次上电前检查接线,测量母线电容放电后再触碰电路。
7.2 进阶学习方向
如果已经能跑通基础的并网逆变器控制,下一步可以考虑以下几个方向:
第一,控制算法的鲁棒性提升。电网并不总是理想电压源,弱电网下电网阻抗变化、电压畸变、频率波动都会影响系统稳定性。可以学习电网阻抗检测、自适应控制、重复控制、谐波补偿等方向。
第二,先进控制算法的工程化。预测控制、无差拍控制、ADRC、LQR 这些算法在学术研究中很常见,但要落到 DSP 上有不少工程细节。比如预测控制的模型误差、ADRC 的观测器带宽整定、LQR 的权重矩阵选取,都需要与实际硬件结合验证。
第三,储能双向变换器的控制。光伏储能系统中,电池侧的 DC-DC 变换器控制和并网逆变器控制需要协同。低压侧放电、高压侧稳压、充放电切换、并离网无缝切换,都是很有价值的工程问题。
第四,系统可靠性设计。除了控制算法,还要关注故障诊断、寿命预测、通信冗余、安规认证等工程化能力。
从学习路线来看,建议先把基础的单相并网逆变器完全吃透,包括拓扑、调制、锁相、电流环整定和硬件调试,再逐步扩展到三相系统、储能系统和更高功率等级。每增加一个需求,要对整个系统的控制架构重新审视一遍。
把控制算法放进真实的 DSP 硬件和功率电路里跑通,是学习电力电子控制最有效的一条路径。7.2kW 单相 Heric 并网逆变器这套方案,覆盖了从功率级、采样驱动到控制算法的完整闭环,值得多花时间把每个环节的原理和参数都搞清楚。