一、单相逆变器的整体控制(离网模式)

图1给出了单相全桥逆变器的双闭环控制(电流内环、电压外环)的框图。双闭环控制目标是通过控制器调节驱动信号,使逆变器输出一个稳定的正弦交流电压𝑢𝑜,且输入电压uo跟踪给定信号𝑢ref。

单相逆变器的双闭环控制包括以下核心模块:给定信号(uref)的生成、PI控制器、SPWM模块。

图1 双闭环控制的框图

二、核心子模块详解

2.1. 给定信号生成方法

电压外环所需的参考信号uref为一正弦波,其生成方式包括以下两类:

1查表法(Lookup Table

原理:将正弦波一周期的离散点预先计算存储于查找表,系统运行时按时序读取。

优点:运算量小,实时性强,不依赖浮点计算;

适用:资源有限的控制平台(如 STM32 固定点、DSP 固定点核等);

局限:频率和幅值调节不灵活,分辨率受限。

海盗船示例代码(stm32f103keil5开发):

const u16 Sin_wave_Table[200] =

    {0, 2, 3, 5, 6, 8, 9, 11, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 35, 37, 38, 40, 41, 43, 44, 45, 47, 48, 50, 51, 52, 54, 55, 56, 58, 59, 60, 61, 63, 64, 65, 66, 67, 68, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 84, 85, 86, 87, 88, 88, 89, 90, 90, 91, 92, 92, 93, 94, 94, 95, 95, 96, 96, 96, 97, 97, 98, 98, 98, 99, 99, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 99, 99, 99, 99, 99, 98, 98, 98, 97, 97, 96, 96, 96, 95, 95, 94, 94, 93, 92, 92, 91, 90, 90, 89, 88, 88, 87, 86, 85, 84, 84, 83, 82, 81, 80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 68, 67, 66, 65, 64, 63, 61, 60, 59, 58, 56, 55, 54, 52, 51, 50, 48, 47, 45, 44, 43, 41, 40, 38, 37, 35, 34, 32, 31, 29, 28, 26, 25, 23, 22, 20, 19, 17, 16, 14, 13, 11, 9, 8, 6, 5, 3, 2};

if(i<200)

{

TIM1->CCR2=(30*Sin_wave_Table[i]+Mid_Value);

TIM1->CCR1=(30*Sin_wave_Table[i]+Mid_Value);

}

else

{

TIM1->CCR2=(Mid_Value-30*Sin_wave_Table[i-200]);

TIM1->CCR1=(Mid_Value-30*Sin_wave_Table[i-200]);

}

i++;

if(i>=399)

i=0;

2) Sin函数计算法

原理:通过调用正弦函数实时计算 uref=A⋅sin(ωt);

优点:灵活性高,幅值和频率可动态调整;

要求:需处理器支持浮点运算(如 STM32F4/F7,TMS320F28335 等);

适用:控制器资源充足,控制精度要求较高场合。

海盗船示例代码(dsp28335/ccs平台开发):

if(i<= ( (sum/2) -1))  //半周期-1

{

x=pi*Out_Point_Count/20000;

y=(int)(sin(x)*Aratio*1875);

EPwm3Regs.CMPA.half.CMPA= 1875+y;

EPwm3Regs.CMPB= 1875+y;

EPwm4Regs.CMPA.half.CMPA= 1875-y;

EPwm4Regs.CMPB= 1875-y;

Out_Point_Count=Out_Point_Count+k;   //  20000/半周期点数

}

else

{

x=pi*Out_Point_Count/20000;

y=(int)(sin(x)*Aratio*1875);

EPwm3Regs.CMPA.half.CMPA= 1875-y;

EPwm3Regs.CMPB= 1875-y;

EPwm4Regs.CMPA.half.CMPA= 1875+y;

EPwm4Regs.CMPB= 1875+y;

Out_Point_Count =Out_Point_Count +k;

}

2.2. SPWM模块设计

SPWM模块将控制器输出的调制信号Udc与载波比较,生成全桥驱动脉冲。按载波方式不同,可分为单极性与双极性两类。两种SPWM调制的详细原理请查阅TI官方技术文档,见附件。

1单极性 SPWM(Unipolar SPWM

图2为单极性SPWM方案示意图,SW1对应图1中Q1,SW2对应图1中Q2,其余器件类似。图3为单极性PWM的开关波形(EPWM1、CAD为DSP中寄存器名)。

特点:输出电压在 0 与 +Vdc/-Vdc 之间切换;

优点:输出电压谐波成分低,电能质量好;

适用:硬件支持两组互补 PWM 输出的控制系统。

海盗船示例代码(dsp28335/ccs平台开发):

ur2= mr/50.0;

if ( ur2 >= 0.0)

{

A=0;//EPwm1Regs.CMPA.half.CMPA = 0;

B=(int)((float)3600*fabs(ur2));//EPwm2Regs.CMPA.half.CMPA = (int)((float)3750*fabs(ur2));

}

else

{

A= (int)((float)3600*fabs(ur2));//EPwm1Regs.CMPA.half.CMPA = (int)((float)3750*fabs(ur2));

B=0;//EPwm2Regs.CMPA.half.CMPA = 0 ;

}

图2 单极性SPWM方案

图3 单极性PWM的开关波形

2双极性 SPWM(Bipolar SPWM

图4为双极性SPWM方案示意图,SW1对应图1中Q1,SW2对应图1中Q2,其余器件类似。图5为双极性PWM的开关波形(EPWM1、CAD为DSP中寄存器名)。特点:输出电压在 +Vdc 与 -Vdc 之间切换;

优点:结构简单,易于实现;

缺点:谐波集中,滤波要求高;

适用:资源有限、实现简便为主的系统。

      海盗船示例代码(dsp28335/ccs平台开发):

sum = (20000/Frequency);

k = (20000/(sum/2));

if(i>=(sum-1)) //总点数-1

{

i=0;

}

if(i%( sum /2 ) == 0) //半周期点数

Out_Point_Count =0;

if(i<= ( (sum/2) -1)) //半周期-1

{

x=pi*Out_Point_Count/20000;

y=(int)(sin(x)*Aratio*1875);

A=1875+y;     // EPwm3Regs.CMPA.half.CMPA= 1875+y;

//B=1875+y;   // EPwm3Regs.CMPB= 1875+y;

C=1875-y;     // EPwm4Regs.CMPA.half.CMPA= 1875-y;

//D=1875-y;   // EPwm4Regs.CMPB= 1875-y;

// TIM1->CCR2=(A*Sin_wave_Table[i]+Mid_Value);

// TIM1->CCR1=(A*Sin_wave_Table[i]+Mid_Value);

Out_Point_Count=Out_Point_Count+k; // 20000/半周期点数

}

else

{

x=pi*Out_Point_Count/20000;

y=(int)(sin(x)*Aratio*1875);

A=1875-y ;    // EPwm3Regs.CMPA.half.CMPA= 1875-y;

//B=1875-y;   // EPwm3Regs.CMPB= 1875-y;

C=1875+y;     // EPwm4Regs.CMPA.half.CMPA= 1875+y;

//D=1875+y;   // EPwm4Regs.CMPB= 1875+y;

// TIM1->CCR2=(Mid_Value-A*Sin_wave_Table[i-200]);

// TIM1->CCR1=(Mid_Value-A*Sin_wave_Table[i-200]);

Out_Point_Count =Out_Point_Count +k;

}

i++;

图4 双极性SPWM方案

图5 双极性PWM的开关波形

2.3 PI控制器

双闭环中各PI控制器功能如下:

1 电压外环PI控制器

输入:输出电压误差 eu=uref−uo;

输出:电感电流参考值 iL∗;

作用:维持输出电压稳定,抵抗外部负载扰动。

PI控制器形式:

2 电流内环 PI 控制器

输入:电流误差 ei=iL∗−iL;

输出:控制量 Udc;

作用:提高电流跟踪精度,提升系统动态性能。

PI控制器形式见式(1.1.

海盗船PI控制示例代码(dsp28335/ccs平台开发):

float pi_func(PI_CTRL_DATA_DEF *pi, float give, float sen)

{

//改进   抗饱和积分  

/* proportional term */

pi->up = pi->Kp*(give - sen);

    /* integral term */

    pi->ui = (pi->Out == pi->v1)?(pi->Ki* pi->up+ pi->i1) : pi->i1;

    pi->i1 =  pi->ui ;

    /* control output */

    pi->v1 = pi->up + pi->ui;

    pi->Out= pi->v1;

    if(pi->v1 >= pi->Umax)

    pi->Out = pi->Umax;

    if(pi->v1 <= pi->Umin)

    pi->Out = pi->Umin;

    return(pi->Out);

}

2.4 双闭环调试建议

参数整定可采用经验法(试凑法)、Ziegler-Nichols 法,或借助 MATLAB 仿真平台优化。

双闭环调试心得(电源海盗船):

遵循“内快外慢”的基本原则,即内环(电流环)的响应速度应显著快于外环(电压环)。因此,调试过程中应优先设置电流环参数:

电流环调试:为提高系统对快速扰动的响应能力,应将比例增益 Kip设得较大,增强调节能力;为简化控制并保证稳定性,积分增益 Kii可设为零。

电压环调试:内环调试完成后,外环初期仅调整比例增益 Kvp,将积分增益 Kvi设为零;待系统初步稳定后,再逐步引入较小的 Kvi以减小稳态误差。

参数微调:在初步设定基础上,根据实际运行情况微调 Kvp和Kvi,以兼顾系统的稳态精度与动态响应,确保逆变器输出稳定可靠。

三、实验结果

3.1. 单相逆变器实物图

1 单相全桥逆变器的整体实物图

2 驱动电路的实物图

3 采样电路的实物图

4 主控板的实物图

3.2. 测试结果

5 采用闭环控制的单相逆变器输出电压波形

测试的详细步骤和结果,可移步小破站链接:2025年电赛电源速成教学——2分钟完成23年国赛基础部分_哔哩哔哩_bilibili

TI官方介绍单极性与双极性技术文档:PDF下载链接:[点击下载](链接: https://pan.baidu.com/s/13w-acaiXp_fwNgI_K7poiA?pwd=x726)

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐