前言
通常把直流电变成交流电的过程叫做逆变,完成逆变功能的电路称为逆变电路。本文主要介绍全桥逆变电路的拓扑结构、逆变原理及控制方法、单相逆变的软件实现思路,并结合simulink、proteus仿真软件进行仿真验证。
一、单相全桥逆变器组成原理
1.全桥逆变电路拓扑结构
逆变电路工作时,单极性调制和双极性调制时主要有以下两种工作状态:
在单极倍频调制时,还存在如下两工作状态
2.单相逆变器的SPWM调制方式
(1)SPWM调制的基本原理
如果对于交流电,如50HZ的正弦波,我们把它看成是有许许多多的呈阶梯状的直流信号组成 ,这样我们就可以用许许多多的宽窄不等的脉冲来等效这个正弦波了,从而实现了功率管工作在开关状态。如果在一个正弦波周期内的脉冲个数比较多,就能精度比较高地通过 LC滤波网络还原成正弦波,这就是SPWM调制的基本原理。
(2)SPWM调制波的实现方式
SPWM调制波实现方式:在模拟电路里,我们常常用调制基波(正弦波)和载波 (三角波或锯齿波)的幅值来做比较,幅值高时就输出高电平或低电平产生SPWM调制波,具体实现方法就是把基波和载波分别输入到比较器的正反相输入端
比较器输出的是占空比变化的矩形波,通过控制全桥电路4个功率管的导通顺序以及后级的LC滤波可得到正弦波形。
(3)单相全桥逆变器调制方式
单相全桥逆变器中根据调制策略不同分为单极性调制、双极性调制和单极性倍频调制。
①单极性调制
一般情况下,功率管驱动芯片上管和下管是互补导通的,因此导通时序也可如下图:
从上面的驱动时序可以看出典型的单极性调制有如下特点:高频臂Q1,Q2两个功率管工作在高频状态,低频臂Q3,Q4两个功率管工作在低频状态,只有一半的功率管有开关损耗,和其它4个功率管都工作在高频状态的调制方式相比,总的开关损耗只有一半。由此可以知道,高频臂Q1,Q2两个功率管工作在高频状态,损耗比低频臂Q3,Q4两个功率管工作在低频状态要高,因发热比较大,寿命要短。
②双极性调制
双极性可以看出,SPWM调制4个功率管都工作在高频载波频率,因而开关损耗比较大。但其实现方式比较容易,大部分半桥功率管驱动芯片自带上下管互补导通功能,所以只要给左右桥臂分别通以一对互补的SPWM信号即可实现。
③单极倍频调制
单极性倍频调制的原理和双极性调制有类似的地方,只是全桥输出在没有滤波之前的波形和功率管的工作频率变了。它来用采用正弦波和两路互为反相三角波相比较的方式,当然也可以是两路互为反相的正弦波和三角波相比较。
从UAB的波形可以看出,两路双极性调制经过全桥功率管的叠加之后最终的UAB波形变成了单极性,而且频率加倍,这就是这种调制方式称为单极性倍频调制的原因。这种调制方式波形完美,对各种负载的适应性好,因为倍频输出,LC的体积和成本可以比较小,缺点是4个功率管都工作在高频状态,因而开关损耗比较大。
二、单相全桥逆变器仿真
仿真采用双极性调制方式,因为实现方式较其它两调制方式种更为简单。
1.SPWM调制波仿真
要实现逆变,首先要有SPWM波形,SPWM波形正弦波和三角波通过比较器得到。在similink中仿真模型如下:
示波器观测得到:
黄色部分是得到的SPWM调制波形,占空比随正弦幅值变化,所以仿真是成功的。
2.全桥逆变仿真
总体仿真模型如下:
调制产生的路互补SPWM波形为SPWM1和SPWM2,两路调制波又分别连接同侧桥臂的上下管,模拟半桥驱动芯片的上下管互补。
在逆变器中通常采用滤波器来消除逆变器输出电流谐波,滤波器通常存在三种形式:L 滤波器、LC 滤波器和 LCL 滤波器。本文在此采用 LC 滤波器,LC 滤波器是一种二阶滤波器,其滤波效果比 L 型滤波器好,并且在设计和控制上不像LCL 存在固有谐振问题,更加易于稳定。此处逆变器的开关频率设置为 10k Hz,因此选取 LC 谐振频率为:
式中:为基波频率; 为开关频率;为 LC 滤波器的谐振频率
在滤波器电感设计中,当电感选取较大时,能够有效的抑制电流谐波,但是会影响系统的动态特性,导致电流闭环跟踪缓慢;当电感选取较小时,电流闭环控制跟踪性能较好,但是滤除电流谐波能力较弱,因此在电感设计中通常需要折衷考虑两个方面,电感通常选取几mH,电容十几或几十uf,具体数值需要结合设计参数计算出来。
运行仿真得到:
逆变波形为50HZ的正弦波
三、SPWM单片机程序实现
通常,逆变电路需要单片机参与进行闭环控制,第一个问题就是如何用单片机产生SPWM波形,下面介绍使用STM32产生SPWM波形。
设计目标为载波10Khz,目标正弦波形为50hz。主要思路是利用定时器产生10Khz的PWM波形,每个PWM周期改变一次占空比,从而模拟出SPWM波形。
因为无示波器和实物单片机,所以以下操作是基于proteus仿真出来的,实际原理一样的。
1.CubeMX配置
①配置定时器及中断
定时器使用高级定时器1,高级定时器带互补输出功能。由于我使用的是proteus仿真,单片机主频设置为了8Mhz。因此定时器配置如下:
计数周期:8Mhz / 10Khz = 800 ,因此为800-1=799;72M主频下同理计算
②开启定时器1更新中断
2.SPWM正弦表数据生成
SPWM表格生成工具下载链接:点击跳转
周期点数 :10Khz / 50 Hz = 200 ,每个正弦波由200个调制PWM波形组成
3.Keil5代码
①定义查表数据
#define SPWM_N 200 uint16_t SPWM_Cnt = 0; uint16_t SPWM_List[SPWM_N] = { 400,412,425,437,450,462,474,487,499,511,523,535,547,558,570,581, 592,603,614,624,635,645,654,664,673,682,691,700,708,716,723,730, 737,744,750,756,761,767,771,776,780,784,787,790,792,795,796,798, 799,799,800,799,799,798,796,795,792,790,787,784,780,776,771,767, 761,756,750,744,737,730,723,716,708,700,691,682,673,664,654,645, 635,624,614,603,592,581,570,558,547,535,523,511,499,487,474,462, 450,437,425,412,400,387,374,362,349,337,325,312,300,288,276,264, 252,241,229,218,207,196,185,175,164,154,145,135,126,117,108,99, 91,83,76,69,62,55,49,43,38,32,28,23,19,15,12,9,7,4,3,1,0,0,0,0,0, 1,3,4,7,9,12,15,19,23,28,32,38,43,49,55,62,69,76,83,91,99,108,117, 126,135,145,154,164,175,185,196,207,218,229,241,252,264,276,288, 300,312,325,337,349,362,374,387 };
②定时器初始化
HAL_TIM_Base_Start_IT(&htim1); //开启定时器中断 HAL_TIM_PWM_Start_IT(&htim1,TIM_CHANNEL_1); //开启PWM输出 HAL_TIMEx_PWMN_Start_IT(&htim1,TIM_CHANNEL_1); //开启互补PWM输出
③中断回调函数设置
主要功能是每次定时器溢出时,更新比较值,从而改变下一次PWM的占空比。
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim == &htim1) { TIM1->CCR1 = SPWM_List[SPWM_Cnt++]; if(SPWM_Cnt >= SPWM_N) { SPWM_Cnt = 0; } } }
4.protues仿真观测波形
仿真模型如下:
波形观测如下:
黄色波形与蓝色波形为调制SPWM波形,两者电平互补,粉色波形为黄色波形的单位面积等效。实际要得到粉色50HZ正弦波需要将SPWM通过全桥电路和LC滤波后得到。
以上全文如有错误,还请指正!!!