当k为偶数时代表顶点采样,k为奇数时代表底点采样。
SVPWM算法实现过程:
利用F28335内部的事件管理器模块的3个全比较单元、通用定时器1、死区发生单元及输出逻辑可以很方便地生成三相六路SPWM波形。实际应用时在程序的初始化部分建立一个正弦表,设置通用定时器的计数方式为连续增计数方式,在中断程序中调用表中的值即可产生相应的按正弦规律变化的SPWM波。SPWM波的频率由定时时间与正弦表的点数决定。
SVPWM算法的部分代码如下:
void InitEv(void)
{
EALLOW;
GpioMuxRegs.GPAMUX.all=0x00FF;
EDIS;
EvaRegs.EVAIFRA.all = 0xFFFF; // 清除中断标志
EvaRegs.T1PR= 2500; //定时器1周期值,定时0.4us*2500=1ms
EvaRegs.T1CMPR = XPWM; //比较值初始化
EvaRegs.T1CNT = 0; EvaRegs.T1CON.all = 0xF54E; //增模式, TPS系数80M/32=2.5M,T1使能,
EvaRegs.ACTR.all = 0x0006; //PWM1,2低有效
EvaRegs.DBTCONA.all = 0x0534; //使能死区定时器1,分频80M/32=2.5M,死区时
//间5*0.4us=2us
EvaRegs.COMCONA.all = 0xA600; //比较控制寄存器
EvaRegs.EVAIMRA.all = 0x0080;
}
PID调节算法
在实际控制中很多不稳定因素易造成增量较大,进而造成输出波形的不稳定性,因此必须采用增量式PID算法对系统进行优化。PID算法数学表达式为
Upresat(t)= Up(t)+ Ui(t)+ Ud(t)
其中,Up(t)是比例调节部分,Ui(t)是积分调节部分,Ud(t)是微分调节部分。
本文通过对A/D转换采集来的电压或电流信号进行处理,并对输出的SPWM波进行脉冲宽度的调整,使系统输出的电压保持稳定。
PID调节算法的部分代码如下:
float PIDCalc( PID *pp, int NextPoint )
{
int dError,Error;
Error=pp->SetPoint*10-NextPoint; // 偏差
pp->SumError+= Error; // 积分
dError=pp->LastError-pp->PrevError; // 当前微分
pp->PrevError = pp->LastError;
pp->LastError = Error;
return
((pp->Proportion) * Error // 比例项
+ (pp->Integral) * (pp->SumError) // 积分项
+ (pp->Derivative) * dError); // 微分项
}
频率检测算法
频率检测算法用来检测系统输出电压的频率。用TMS320F28335片上事件管理器模块的捕获单元捕捉被测信号的有效电平跳变沿,并通过内部的计数器记录一个周波内标频脉冲个数,最终进行相应的运算后得到被测信号频率。
实验结果
测量波形
在完成上述硬件设计的基础上,本文采用特定的PWM控制策略,使逆变器拖动感应电机运行,并进行了短路、电机堵转等实验,证明采用逆变器性能稳定,能可靠地实现过流和短路保护。是电机在空载条件下,用数字示波器记录的稳态电压波形。幅度为35V,频率为60Hz。
测试数据
由示波器观察到的线电压波形可以看出,波形接近正弦波,基本无失真;由表中数据可以看出,不同频率下,输出线电压最大的绝对误差只有0.6V,相对误差为1.7%。
结束语
本文设计的三相正弦波变频电源,由于采用了不对称规则采样算法和PID算法使输出的线电压波形基本为正弦波,其绝对误差小于1.7%;同时具有故障保护功能,可以自动切断输入交流电源。因此本系统具有电路简单、抗干扰性能好、控制效果佳等优点,便于工程应用,具有较大的实际应用价值。