基于C语言控制的数字化单相220V转三相380V逆变方案
注意事项前置说明
电力电子变压/逆变方案,属于强电领域,涉及220V市电和380V工业电压,操作不当会引发触电、火灾甚至设备爆炸风险。请务必由持有电工特种作业操作证的专业人员实施,所有电路必须做好绝缘、接地防护,严格遵循国家电气安全规范。
本文提供的是基于C语言控制的数字化单相220V转三相380V逆变方案,适用于小型单相220V电网驱动三相380V负载(如小型三相电机、电焊机等,总功率不超过4.4kW)。
一、方案整体架构
我们采用单相输入全桥逆变+升压变压器的方案,将220V单相交流电整流为直流后,通过IGBT全桥逆变电路生成三相SPWM波形,再通过升压隔离变压器将电压提升至线电压380V,最终输出三相交流电。
整体框图如下:
220V市电 → 整流滤波 → DC母线 → 全桥逆变单元(C语言控制IGBT) → 升压隔离变压器 → 三相380V输出
核心参数匹配
总功率4.4kW,单相输入电流约为 4400W / 220V ≈20A,逆变输出三相线电流约为 4400W / (√3*380V)≈6.7A。
二、原理详解
1. 功率变换流程
- 整流滤波:将单相220V交流电通过桥式整流器转换为约310V的直流母线电压,再通过电解电容滤波平抑纹波。
- SPWM逆变:通过C语言控制IGBT全桥电路,按照三相正弦波的SPWM调制规则通断IGBT,将直流母线电压转换为三相正弦交流电的脉冲序列。
- 升压隔离:通过三相升压变压器将逆变输出的低压SPWM波形升压至线电压380V,同时实现输入输出电气隔离,保障安全。
- 滤波稳压:变压器输出侧加装LC低通滤波器,将SPWM脉冲还原为标准的三相正弦交流电。
2. C语言控制核心:SPWM调制
我们采用对称规则采样法生成三相SPWM波,核心是通过C语言计算每一个开关周期内IGBT的导通时刻,实现正弦电压的脉冲等效输出。
核心数学模型
三相正弦参考波为:
\[\begin{cases}
U_a = U_m \sin(\omega t) \\
U_b = U_m \sin(\omega t - 120^\circ) \\
U_c = U_m \sin(\omega t + 120^\circ)
\end{cases}
\]
通过比较参考波和三角载波,生成IGBT的开关信号,将直流母线电压按照正弦规律分配到三相输出端。
三、硬件实现清单
| 组件类型 | 参数要求 |
|---|---|
| 整流桥模块 | 额定电流≥25A,耐压≥600V(适配220V整流后的310V母线) |
| 母线滤波电容 | 2~4颗450V/1000μF电解电容并联,总容量满足母线纹波抑制要求 |
| IGBT全桥模块 | 6颗IGBT管(每相2颗),耐压≥1200V,额定电流≥10A,搭配驱动板 |
| 三相升压变压器 | 输入线电压220V(相电压127V),输出线电压380V,容量≥5kVA,D/Y接线方式 |
| 输出LC滤波器 | 每相配置L=5mH电感+10μF电容,滤除SPWM载波谐波 |
| 主控MCU | 32位ARM单片机(如STM32F103),主频≥72MHz,至少3路互补PWM输出通道 |
| 采样与保护电路 | 母线电压采样、输出电流采样、过温保护、过流保护电路 |
四、C语言代码实现(核心SPWM生成部分)
1. 基础宏定义与全局变量
#include "stm32f10x.h"
// 系统参数配置
#define DC_BUS_VOLTAGE 310.0f // 220V整流后的母线电压
#define OUTPUT_LINE_VOLTAGE 380.0f// 目标输出线电压
#define CARRIER_FREQ 10000.0f // SPWM载波频率10kHz
#define SYS_FREQ 72000000.0f // 单片机主频
#define PWM_PERIOD (SYS_FREQ / CARRIER_FREQ) // PWM计数周期
// 三相正弦波幅值系数(升压变比约为380/220≈1.73,匹配输出电压)
#define AMP_RATIO (OUTPUT_LINE_VOLTAGE / (DC_BUS_VOLTAGE * 1.732f))
float theta = 0.0f; // 电角度,单位:弧度
float sin_va, sin_vb, sin_vc; // 三相参考正弦波
// 定时器3用于生成SPWM载波
void TIM3_PWM_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
// 配置PWM输出引脚PA6/PA7、PB0/PB1、PB13/PB14
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_13 | GPIO_Pin_14;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// 定时器基础配置
TIM_TimeBaseStructure.TIM_Period = PWM_PERIOD - 1;
TIM_TimeBaseStructure.TIM_Prescaler = 0;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIm_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
// 配置PWM模式1:向上计数时,CNT < CCRx时输出高电平
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM3, &TIM_OCInitStructure);
TIM_OC2Init(TIM3, &TIM_OCInitStructure);
TIM_OC3Init(TIM3, &TIM_OCInitStructure);
TIM_OC4Init(TIM3, &TIM_OCInitStructure);
TIM_Cmd(TIM3, ENABLE);
}
2. 三相SPWM波生成主函数
// 电角度增量计算:f=50Hz时,每100us步进约0.00924弧度
#define THETA_STEP (2 * PI * 50 / 10000) // 适配10kHz载波频率
void Generate_SPWM(void)
{
// 更新三相正弦参考波
sin_va = AMP_RATIO * sinf(theta);
sin_vb = AMP_RATIO * sinf(theta - 2 * PI / 3);
sin_vc = AMP_RATIO * sinf(theta + 2 * PI / 3);
theta += THETA_STEP;
if(theta > 2*PI) theta -= 2*PI;
// 计算每相的CCR寄存器值,匹配PWM占空比
uint16_t ccr_va = (uint16_t)((sin_va + 1) * PWM_PERIOD / 2);
uint16_t ccr_vb = (uint16_t)((sin_vb + 1) * PWM_PERIOD / 2);
uint16_t ccr_vc = (uint16_t)((sin_vc + 1) * PWM_PERIOD / 2);
// 写入比较寄存器,更新PWM占空比
TIM3->CCR1 = ccr_va; // A相下桥臂
TIM3->CCR2 = PWM_PERIOD - ccr_va; // A相上桥臂(互补输出)
TIM3->CCR3 = ccr_vb;
TIM3->CCR4 = PWM_PERIOD - ccr_vb;
// B、C相可通过另外的定时器通道实现,此处简化示例
}
// 定时器中断中定时调用SPWM生成函数
void TIM2_IRQHandler(void)
{
if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
{
Generate_SPWM();
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
}
}
五、实现步骤
1. 硬件搭建
- 按照接线图连接整流桥、母线电容、IGBT全桥模块和变压器,确保所有高压部分做好绝缘防护。
- 连接MCU控制板与IGBT驱动板,通过光耦隔离强电和弱电信号。
- 加装电压电流采样电路,将母线电压、输出电流反馈给MCU用于闭环控制。
2. 软件调试
- 先在无高压的情况下,通过信号发生器模拟SPWM波,测试IGBT驱动逻辑是否正常。
- 接入低压直流电源(如300V直流电源替代整流后的母线),测试三相输出波形是否为标准正弦波。
- 接入220V市电,逐步加载负载,通过示波器监测输出电压和电流,调整SPWM调制系数确保输出电压稳定在380V。
3. 安全验证
- 测试过流、过压、过温保护逻辑是否正常触发。
- 确保设备外壳可靠接地,绝缘电阻符合国家电气安全标准。
六、应用场景与优化方向
适用场景
- 户外无三相电网场景下,驱动小型三相380V设备(如小型切割机、伺服电机)。
- 应急供电场景,将单相220V市电转换为三相380V临时供电。
优化方向
- 加入PID闭环控制,稳定输出三相电压和频率。
- 采用无感FOC矢量控制,提升电机驱动效率。
- 加入蓝牙/WiFi模块,实现远程监控和参数调整。

浙公网安备 33010602011771号