单相矩阵变换器 (SPMC) MATLAB 仿真项目
项目简介
本项目实现了一个基于 MATLAB 纯代码编写的单相矩阵变换器(Single Phase Matrix Converter, SPMC)仿真模型。该模型通过数学建模的方式,详细模拟了电力电子领域中无中间直流储能环节的 AC-AC 直接变换技术。
不同于传统的 Simscape 或 Simulink 模块拖拽,本项目直接在 main.m 脚本中通过离散化微分方程和逻辑判断,模拟了主电路拓扑、SPWM 调制策略以及 RL 负载的动态响应过程。该仿真能够演示如何将固定频率(如 50Hz)的单相交流电转换为频率和幅值可调的目标交流电(如 25Hz)。
功能特性
- AC-AC 直接变换:演示了在没有大电解电容的情况下,直接进行交交变频变压的过程。
- 纯代码仿真引擎:不依赖 Simulink 仿真库,通过时间步进循环(Time-Stepping Loop)求解电路方程。
- SPWM 调制策略:内置正弦脉宽调制逻辑,支持单极性调制,载波频率可调(默认 5kHz)。
- 双向开关逻辑模拟:精确模拟了由4个双向开关组成的矩阵拓扑换流逻辑,包含正组与反组的选通策略。
- RL 负载动态响应:基于前向欧拉法(Forward Euler)求解负载电流的一阶微分方程。
- 全面的数据可视化:提供输入/参考电压对比、PWM 脉冲波形、输出电压波形、负载电流波形以及 FFT 频谱分析。
系统要求
- MATLAB R2016a 或更高版本
- 无需额外的特定工具箱(代码主要依赖基础 MATLAB 函数,
sawtooth 函数通常包含在基础信号处理支持中)。
使用方法
- 确保 MATLAB 的当前工作目录包含
main.m 文件。 - 直接运行
main 函数。 - 程序将自动执行以下操作:
* 初始化系统参数(输入电压、频率、负载参数等)。
* 执行时间步进仿真计算。
* 弹出波形窗口展示电压、电流和开关信号。
* 弹出频谱分析窗口展示输出电流的频率成分。
* 在命令行窗口输出关键统计数据(峰值电流、检测到的基波频率)。
代码实现细节分析
main.m 文件包含了完整的仿真逻辑,主要由以下几个核心部分组成:
1. 参数设置与初始化
代码首先定义了仿真所需的物理参数和控制参数:
- 电源:设定为 220V (RMS), 50Hz 的标准电网输入。
- 输出目标:默认设定目标输出频率为 25Hz,调制比为 0.8。
- 仿真精度:时间步长
Ts 设定为 1微秒 ($1times10^{-6}s$),以确保高频开关(5kHz)仿真的准确性。 - 数据记录:预分配了内存数组,用于存储每一步的电压、电流和开关状态,优化运行速度。
2. 主仿真循环 (核心算法)
仿真采用了
for 循环按时间步进推进,核心逻辑包含三个阶段:
A. 信号生成与 SPWM 控制
- 生成瞬时的输入电压 $v_{in}$。
- 根据目标频率和调制比生成参考电压 $v_{ref}$。
- 生成高频三角载波(Sawtooth波形)$v_{carrier}$。
- 通过比较 $v_{ref}$ 与 $v_{carrier}$ 的大小,确定基本的 PWM 逻辑电平需求。
B. 矩阵变换器换流逻辑 (Commutation Logic)
这是代码中最关键的部分,负责根据输入电压极性和目标输出极性选择导通路径。代码实现了基于“电压合成”的简化开关策略:
* 若此时输入 $v_{in}$ 为正,导通正向直通开关 (S1, S4),输出正电压。
* 若此时输入 $v_{in}$ 为负,导通反向反接开关 (S2, S3),将负输入反接为正输出。
* 若此时输入 $v_{in}$ 为正,导通反向反接开关 (S2, S3),将正输入反接为负输出。
* 若此时输入 $v_{in}$ 为负,导通正向直通开关 (S1, S4),输出负电压。
- 代码中包含了死区或零状态的简化处理:当不满足 PWM 导通条件时,输出电压归零(模拟续流阶段)。
C. 电路方程求解
- 拓扑模拟:根据当前选通的开关(S1-S4),计算实际加载在负载上的瞬时电压
v_load_applied。 - 离散化求解:利用 RL 负载的微分方程 $v = L frac{di}{dt} + Ri$,采用前向欧拉法进行离散化求解:
$i[k] = i[k-1] + frac{Ts}{L} (v_{load} - R cdot i[k-1])$
从而计算出当前的负载电流。
3. 可视化模块
仿真结束后,代码绘制了两张图表:
1.
输入与参考:展示 50Hz 工频输入与 25Hz 目标参考波形的对比。
2.
开关脉冲:展示 S1/S4 和 S2/S3 的 PWM 驱动信号逻辑。
3.
输出电压:展示经过斩波后的实际 PWM 电压波形。
4.
负载电流:展示经过 RL 负载滤波后的连续正弦电流波形(验证了变频效果)。
对负载电流进行快速傅里叶变换(FFT),分析频谱分布,并自动标注基波频率,用于验证输出频率是否符合设定的 25Hz。
修改与扩展
用户可以通过修改
main.m 顶部的“系统参数设置”部分来探索不同工况:
- 修改
Fout_target 可改变输出频率(例如改为 100Hz 测试升频性能)。 - 修改
Modulation_Index 可改变输出电压幅值。 - 修改
R_load 和 L_load 可观察不同负载下的滤波效果。