一. PFC电路的基本原理
PFC(功率因数校正)电路旨在提高电源系统的功率因数(Power Factor, PF),使输入电流尽可能与输入电压同相,从而减少无功功率、降低谐波失真,并提高能源利用效率。常见的PFC电路拓扑包括:
- 升压(Boost)拓扑:最常见的PFC电路类型,通过一个升压转换器将输入电流调节为正弦波形,与电压同相。
- 降压(Buck)或升降压(Buck-Boost)拓扑:适用于特定输入输出电压需求的场景,但使用较少。
- 交错式(Interleaved)拓扑:通过多个并联的转换器分担电流,提高效率并减小元件尺寸。
在硬件层面,PFC电路通常包括:
- 整流器:将交流电转换为脉动直流电。
- 电感器和开关元件(如MOSFET):用于控制电流波形。
- 控制电路:监测输入电压、电流和输出电压,调整开关的占空比。
二. PFC电路的软件架构
现代PFC电路越来越多地采用数字控制方式,通过微控制器(MCU)、数字信号处理器(DSP)或专用PFC控制IC实现。这些控制器的软件架构通常包括以下模块:
(1) 系统输入与传感器数据采集
- 功能:实时采集输入电压(Vin)、输入电流(Iin)和输出电压(Vout)。
- 实现:通过ADC(模数转换器)采样电压和电流信号,通常以高频(几十kHz至几MHz)运行,以捕捉快速变化的波形。
- 软件模块:
- 数据采集线程/中断:定时采样并存储原始数据。
- 信号预处理:滤波(如低通滤波)以去除噪声。
(2) 控制算法
- 功能:根据输入信号计算开关元件的占空比,使电流波形跟随电压波形。
- 常见算法:
- 平均电流模式控制(Average Current Mode Control):通过PI或PID控制器调节电流,使其与参考正弦波一致。
- 临界导通模式(Critical Conduction Mode, CRM):在电感电流降至零时触发开关,适用于轻载高效应用。
- 连续导通模式(Continuous Conduction Mode, CCM):适用于高功率场景,电流连续流动。
- 软件模块:
- 参考信号生成:根据输入电压生成正弦参考电流。
- 误差计算与补偿:比较实际电流与参考电流,调整PWM信号。
(3) PWM生成与输出
- 功能:生成高频PWM信号驱动开关元件(如MOSFET)。
- 实现:通过硬件定时器模块输出PWM波,频率通常在20kHz至1MHz之间(取决于设计需求和拓扑)。
- 软件模块:
- PWM配置:设置频率和初始占空比。
- 动态调整:根据控制算法实时更新占空比。
(4) 保护与故障处理
- 功能:监测异常情况(如过压、过流、欠压)并采取保护措施。
- 实现:通过比较器或软件阈值检测,触发中断或关闭PWM输出。
- 软件模块:
- 状态监测:实时检查电压、电流和温度。
- 故障响应:记录日志、报警或停止系统运行。
(5) 用户接口(可选)
- 功能:提供配置参数、监控状态的接口。
- 实现:通过串口、GUI(如图形用户界面)或通信协议(如I2C、CAN)与外部设备交互。
- 软件模块:
- 参数设置:调整控制增益、保护阈值等。
- 数据可视化:输出实时波形或性能指标。
三. 典型软件架构示例
以下是一个基于嵌入式系统的PFC控制软件架构的简要示例(以C语言和MCU为例):
// 伪代码示例
#include "adc.h"
#include "pwm.h"
#include "pid.h"
typedef struct {
float vin; // 输入电压
float iin; // 输入电流
float vout; // 输出电压
float iref; // 参考电流
float duty; // PWM占空比
} PFC_State;
void PFC_Init() {
ADC_Init(); // 初始化ADC
PWM_Init(50e3); // 初始化PWM,频率50kHz
PID_Init(0.1, 0.01, 0.0); // 初始化PID参数 (Kp, Ki, Kd)
}
void PFC_Control_Loop() {
PFC_State state;
// 数据采集
state.vin = ADC_Read_Voltage();
state.iin = ADC_Read_Current();
state.vout = ADC_Read_Output();
// 生成参考电流(与输入电压同相)
state.iref = state.vin * Get_Sine_Reference();
// PID控制
float error = state.iref - state.iin;
state.duty = PID_Update(error);
// 更新PWM
PWM_Set_Duty(state.duty);
// 保护检查
if (state.vout > VOUT_MAX || state.iin > IIN_MAX) {
PWM_Stop(); // 关闭PWM以保护系统
}
}
int main() {
PFC_Init();
while (1) {
PFC_Control_Loop();
}
}
架构特点:
- 模块化:将数据采集、控制算法、PWM输出分开,便于调试和扩展。
- 实时性:通过中断或高频循环确保快速响应。
- 可扩展性:支持添加新功能(如通信接口或高级算法)。
四. 高级设计考虑
- 多线程或RTOS:对于复杂系统,可使用实时操作系统(如FreeRTOS)管理任务优先级,确保控制循环的高实时性。
- 数字信号处理:在DSP平台上,可引入FFT(快速傅里叶变换)分析谐波,优化PFC性能。
- 硬件加速:一些PFC控制IC(如TI的UCC28xxx系列或ST的STNRGPF01)内置硬件加速功能,减轻软件负担。
五. 与硬件的协同
软件架构必须与硬件紧密配合。例如:
- 升压PFC需要高频开关支持,软件需精确控制时间。
- 交错式PFC需要多通道同步,软件需实现相位差控制(如180°错相)。