STM32上SVPWM输出的实现方案
摘要:在STM32F103VET6上实现了SVPWM输出。介绍了SVPWM的优点及原理。结合STM32F103VET6上的硬件资源,给出了SVPWM在高级定时器上实现的方式和三相桥式驱动电路的设计。分析了该方案所占用的CPU资源。实验结果表明,该设计方案可行,能够实现SVPWM输出。
关键词:SVPWM;STM32;定时器;三相桥式驱动
引言
SVPWM与SPWM相比,是一种比较新颖的控制方法,能够使输出电流波形尽可能接近于理想的正弦波形,使直流母线电压的利用率有了很大提高。SVPWM主要应用在变频器领域,控制过程中需要对坐标进行变换及计算输出时间,所以整个过程有一定的计算量,使得51单片机力不从心。人们只能采用价格昂贵、内部资源偏少的DSP作为控制芯片。随着STM32系列芯片的出现,其丰富的片内资源、较高的处理能力、极低的价格,使其得到开发人员的青睐。
1 SVPWM原理
在传统的三相桥式驱动电路中,MOS管的开关状态一共有8种组合。如果将这几种开关方式加到三个相差120°的绕组上,则会产生8个电压矢量。这8个电压矢量被称为基本空间电压矢量,如图1所示。为了能够得到一个圆形旋转磁场,SVPWM可以通过控制8个基本空间电压矢量的作用时间,来合成每个扇区内的任意电压矢量。
2 系统设计方案
2.1 控制芯片
采用STMicroelectronics公司的STM32F103VET6作为其控制芯片,其内核为ARM公司Cortex—M3,最高时钟频率可达72 MHz,包括512K片内FLASH、64K片内RAM、ADC、SPI、CAN、FSMC等丰富的内部资源。STM32F103VET6内部包含8个定时器,其中有2个高级定时器,所有的定时器都包含一个16位自动装载寄存器。高级定时器支持嵌入死区时间的互补PWM,而且支持刹车信号的输入,所以非常适合应用在变频器、电机控制器等场合。
2.2 定时器工作模式
根据SVPWM的快速算法可以得到各个基本空间电压矢量的作用时间和输出顺序。知道输出顺序后,就可以确定高级定时器的工作模式。由于SVPWM的输出波形是很对称的,所以选用TIM1的中央对齐模式:
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_CenterAlignedl;
此模式下,计数器从0开始计数到自动加载值减1,同时产生一个计数器溢出事件。然后向下计数到1,并且产生一个计数器下溢事件,再从0开始重新计数。
2.3 定时器计数周期
为了提高定时器的分辨率,直接将72 MHz作为定时器的计数时钟,没有任何预分频。假设SVPWM的调制频率为frq,则可以计算时间基的计数值tpwm:
TIM_CLOCK是定时器的计数频率,本系统为72 MHz。如果调制频率设为20 kHz,则计数器的值则为3 600。
2.4 波形输出
TIM1的CH1、CH1N、CH2、CH2N、CH3、CH3N通道对应的GPIO引脚须设为GPIO_Mode_AF_PP模式才能正常输出。根据各个基本空间电压矢量的作用时间,可以计算出TIM1上三个通道各自的OCRx值。图2为各个通道OCRx的值对应的输出波形。
2.5 中断子程序
为了减少中断的时间,在中断程序中仅保留了输出SVPWM所必要的运算及对TIM1必要的操作。整个程序中的所有的电压量全部转化为标幺值。由于STM32是一款32位的控制器,所以需要参与计算值都采用Q15的形式,这样可以在提高精度的同时保证乘法运算不会溢出。中断子程序的流程如图3所示。
2.6 CPU资源占用分析
由图2可以看出,在定时器输出波形时有两个触发产生。TIM1_CH4可以用来触发芯片的其他功能(如ADC采样),这样就可以自动完成一些工作,避免消耗CPU资源。
为了在一个周期调制完成后马上进行下一个周期的调制,下次调制的时间需要提前计算,此时就必须打开定时器的预装载功能。在发生计数器溢出中断后,计算下一次调制时各个通道的时间。计算完成后将结果写入预装载寄存器,以便在下次更新时写入新的比较值。可以看出,SVPWM只在中断中耗费了CPU的一点资源用来计算,其余全是定时器自动完成,而且在两次调制之间没有任何延迟。
3 系统实验
3.1 实验硬件电路
实验硬件电路包括主控芯片及外围电路、MOS驱动器和由6个MOS管组成的逆变器。其部分电路如图4所示。ADUM3223驱动器的输入来自STM32F103VET6中TIM1的CH1和CH1N,两者为互补输出。使能输入端连接到芯片的PE15引脚,并且有一个4.7 KΩ的上拉电阻。在输出端的高端设计了一个泵电源,保证高端MOS管能够可靠导通。R1用来保证充电速度不会过快,可根据实际需求更改大小。在MOS管的栅极有一个限流电阻,用来防止MOS管漏源极电压dv/dt太大,导致损坏。
3.2 实验结果
由于SVPWM的输入为αβ坐标系下的Uα和Uβ,在让矢量运行轨迹为圆形时特别困难,所以在输入端前加入了一个Park变换算法,使其变为Ud和Uq。这样只需要设置合成矢量的角度和大小,而角度可以人为设为一个匀速圆周运动的值。图5为第一扇区下的调制输出波形。图6为矢量圆周运动时,输出相电压滤波后的马鞍波形。
结语
由实验结果可知,该设计方案可以方便地实现SVPWM输出,计算量并不大。其功能主要是靠硬件实现,所以占用CPU资源很少,完全可以当作一个模块应用到其他场合中。
- 基于分类算法的双三相感应电机SVPWM(07-30)
- 基于SVPWM的三相混合开关电流型整流器的优化控制策略研究(12-26)
- 基于DSP的机车蓄电池充电系统的研究(12-25)
- 基于电流预测的SVPWM控制的研究(12-23)
- 难逃魔掌系列!RC电路用作芯片复位电路原理(12-24)
- 认识LED1642GW:完全可设置的智能16粒LED光源驱动器(05-12)