stm32F3平台,基于sogi pll锁相环的并网逆变资料,含原理图和代码
在风光储系统中,逆变器的并网控制是关键环节。电网电压的相位和频率是并网逆变器的控制基准,锁相环技术是获取电网同步信号的核心方法。锁相环(PLL)根据实现方式可以分为模拟PLL、数字PLL(DPLL)和基于同步坐标变换的锁相环(如SOGI PLL)。本文将重点介绍基于SOGI PLL的并网控制方案,并结合STM32F3系列MCU进行实现。
SOGI PLL的工作原理
SOGIPLL(Second Order Generalized Integrator PLL)是一种基于广义积分器的锁相环,其核心思想是通过广义积分器将输入信号分解为正交分量,从而提取出信号的频率和相位信息。
SOGIPLL的结构包括三个主要部分:
- 广义积分器模块
- 带通滤波器模块
- 环频率估计模块
在STM32F3中实现SOGIPLL时,我们采用数字信号处理的方法,通过采样电网电压信号,经过SOGIPLL处理后得到电网的频率和相位信息。
硬件平台搭建
硬件部分需要完成以下功能:
- 电网电压采集电路设计
- 电流检测电路设计
- 高精度时钟源设计
- PWM驱动电路设计
以下是电网电压采集电路的原理图:
!电网电压采集电路
软件实现方案
1. SOGIPLL初始化代码
void SOGIPLL_Init(void) { // 初始化滤波器系数 float Kp = 0.2; // 比例系数 float Ki = 0.1; // 积分系数 float Ts = 0.0001; // 采样周期 // 初始化状态变量 sin_theta = 0.0; cos_theta = 1.0; err = 0.0; integral_err = 0.0; freq = 50.0; // 初始频率设为50Hz }2. 主循环处理逻辑
void Main_Loop(void) { // 采集电网电压信号 Vg = ADC_Read(CHANNEL_VG); // SOGIPLL处理 Update_SOGIPLL(Vg); // 生成PWM信号 Generate_PWM(cos_theta, sin_theta); // 系统控制逻辑 Control_System(freq); }3. SOGIPLL核心算法
void Update_SOGIPLL(float Vg) { // 计算正交分量 float Vd = Vg * cos_theta; float Vq = Vg * sin_theta; // 计算误差信号 err = Vq; // 积分环节 integral_err += Ki * err * Ts; // 频率估计 freq = 50.0 + Kp * integral_err; // 更新相位角 theta = theta + 2 * PI * freq * Ts; cos_theta = cos(theta); sin_theta = sin(theta); }4. PWM信号生成
void Generate_PWM(float cos_theta, float sin_theta) { // 计算PWM占空比 float duty = (Vdc / 2) * cos_theta; // 生成PWM信号 PWM_SetDuty(PWM_CHANNEL_U, duty); PWM_SetDuty(PWM_CHANNEL_V, duty * sin_theta); PWM_SetDuty(PWM_CHANNEL_W, -duty * cos_theta); }实际应用中的注意事项
在实际应用中,需要特别注意以下几点:
- 采样频率的选择:采样频率需要远高于电网频率,通常选择8kHz以上的采样频率。
- 参数整定:SOGIPLL的参数需要根据系统特性进行整定,过大的增益会导致系统振荡,过小的增益则会影响响应速度。
- 系统稳定性:需要通过实验验证系统的稳定性,必要时增加阻尼环节。
- 温度漂移:在实际运行中,需要考虑温度对系统参数的影响,必要时增加温补措施。
通过以上方案,可以在STM32F3平台上实现基于SOGIPLL的并网逆变器控制。该方案具有良好的动态响应和抗电网扰动能力,能够满足大多数并网应用的需求。