基于STM32F103的SVPWM算法实现

2012-04-16 02:37程善美
电气传动自动化 2012年4期
关键词:导通寄存器电平

袁 野,程善美,胡 仙

(华中科技大学,湖北 武汉 430074)

1 引言

Cortex-M3处理器的核心是基于哈佛结构和三级流水线的32位内核。该内核集成了分支预测、单周期乘法和硬件除法等众多强大的功能,其出色的计算性能、对时间快速响应能力以及高度的可配置,使其支持应用范围广泛地实现。

STM32F103以32位的CortexM3为核心,最高主频为72MHz。STM32F103不仅价格便宜,而且外设资源丰富,尤其具有适合电力变换器控制的PWM模块,使其在电力电子控制系统中具有广阔的应用前景。

2 STM32F103定时器

STM32F103的PWM产生是由定时器模块完成的。STM32F103具有2个高级控制定时器(TIM1、TIM8) 和 4 个通用定时器(TIM2、TIM3、TIM4、TIM5),每个定时器都具有16位向上、向下、上/下自动装载计数器,有4个独立的通道。不同的是高级控制定时器(TIM1、TIM8)的前3个通道(通道1、2、3)可以输出互补的PWM波形,并且可以进行死区编程,第4个通道为单脉冲输出,高级控制定时器还具有刹车功能,使能该功能后,在刹车输入引脚捕获到一个有效的刹车电平之后就可以禁止该定时器所有通道的比较输出。而通用定时器(TIM2、TIM3、TIM4、TIM5)的 4 个通道都只能工作在单脉冲输出模式下,因此对于通用定时器没有死区处理,另外通用定时器也不具备刹车功能。

如图1所示为高级定时器在连续增减计数模式下3组互补通道(通道1、2、3)及另外一个单独通道(通道4)的输出波形。

在图1中,TIMx_CCRy为通道y的比较寄存器(寄存器中x代表定时器编号,y代表通道编号),TIMx_ARR为周期寄存器,同一个定时器的所有通道共用一个周期寄存器。由寄存器TIMx_CR1的CMS[1:0]位来选择计数方式,并且在连续增减计数时可以选择由上溢事件或者下溢事件置中断标志位,或者上溢与下溢均置位(这里没有特定的上溢、下溢中断,而是统一归为更新中断)。

图1 高级定时器的PWM输出波形

TIMx_CCMR1、TIMx_CCMR2 的 CCyS[1:0]用来配置通道y作为输入还是输出,OCyM[2:0]用来配置PWM输出模式,例如翻转,PWM模式1(在向上计数时,一旦当前计数值 TIMx_CNT<TIMx_CCRy时通道y为有效电平,否则为无效电平;在向下计数时,一旦 TIMx_CNT>TIMx_CCRy时通道y为无效电平,否则为有效电平),PWM模式2(与PWM模式1相反)等。

TIMx_CCER用来使能每个通道及其互补通道,同时对每个通道的输出极性进行配置,注意同一组PWM输出中的每个通道及其互补通道的输出极性要保持一致,即同时高有效或者同时低有效。TIMx_BDTR用来配置死区时间长度,同时可以使能刹车功能,并且对刹车电平的极性进行配置。

在使用中通常还要对比较寄存器进行预装载,TIMx_CCMR1、TIMx_CCMR2 的 OCyPE 位用来使能通道y的预装载,在最后还要配置TIMx_CR1的ARPE位和TIMx_CR2的CCPC位来开启预装载功能。

可以根据实际的需求来选择配置上面这些寄存器,最后一定要使能定时器及中断,另外还要配置好定时器的输出端口以及使能定时器的时钟。

3 SVPWM算法的实现

SVPWM算法主要包括判断扇区、导通时间长度计算及其过调制处理、导通时刻计算。

在计算导通时间长度时,首先如下定义X、Y、Z,式中Vdc为直流母线电压。

根据不同扇区,把 X、Y、Z 分别赋予 T1、T2,且当 T1+T2>T 时,则取

得到导通时间T1、T2后,再计算三相开关的导通时刻

这里用到了大量的除法,而为了保证计算速率和计算精度,传统的方法(基于TIC2000)是把数据进行标幺,用Q格式来表示数据,用移位来代替除法,但是这样做也就使得程序看起来不是很直观,虽然仍然可以从程序语句的表达上看出该语句实现的功能,但是却不能从语句上直接看出一些数据的实际大小。而STM32F103具有硬件除法器,因此这里就不再需要移位操作,只需要保证数据的精度即可,这样就可以使得数据的表达比较直观,因为同样为了保证数据精度,Q格式就是为了方便移位操作,比如在原来的移位操作处理里面Q12的4096代表1,那么在相关计算的最后一步就需要右移12位,而在STM32F103中,由于具有硬件除法器,除法操作本身就是单指令周期,所以可以令1000代表1,在计算的最后一步再除以1000来还原数据实际大小。可以看到,后者表达起来就更加直观,程序可读性更强。

在SVPWM算法中,计算导通时间长度是式(1),传统算法(基于TIC2000)进行标幺处理,即“1”代表,这里的“1”如果是Q10格式就对应于1024,那么如果得到等于一个PWM周期一半的导通时间长度实际上得到的是一个等于512的数据,也就是“0.5”,并且在接下来的导通时刻计算中仍然使用Q10格式的标幺,那么如果得到等于一个PWM周期一半的导通时刻实际上也是“0.5”,在最后又用“0.5”与周期值相乘再右移10位才能得到真正的导通时刻。

而基于STM32F103就可以实现程序语句和数据完全还原其数学意义,首先在查表计算Uα、Uβ时就可以用实际的数据来处理,这样得到的Uα、Uβ也就是实际值,这样在计算导通时间长度时就无需Q格式标幺,而是直接把Uα、Uβ代入表达式来进行计算,其次在计算导通时间长度时也直接把周期乘入,这就使得计算得到的导通时间长度就是实际的导通时间长度,最后只需进行简单的导通时刻处理,即可得到每个开关的导通时刻。

在过调制处理式(2),传统算法需要对(T1+T2)进行标幺,而基于STM32F103,可以直接令T1=T1×T/(T1+T2),这里T是TIM8周期寄存器的值,也就是一个开关周期的一半,所以需要乘以2来计算对于整个周期的T1。

通过上述分析,可以看到STM32F103在实现SVPWM算法时具有一些独特的优势,这主要是由其内部的硬件除法器来保证的。实验发现这些优势大大方便了调试工作,在线仿真时数据的可读性很高,例如电压变量、导通时间长度、导通时刻都是实际值,这样比起用Q格式标幺的数据就要容易识别很多。

4 实验结果

一个基于STM32F103的三相逆变器控制系统结构框图如图2所示。在图2中STM32F103完成SVPWM算法、PI控制器以及输出电压反馈控制等。采用TIM8产生PWM波形,此时三相逆变器控制的主要配置如下:周期寄存器=4650(时钟为56MHz,因此一个计数周期为83μs,一个增减周期为166μs,对应开关频率6kHz),中央对齐模式3(连续增减计数,且上溢、下溢时都置中断标志位),PWM输出模式为PWM模式1,输出电平低有效,死区时间为4μs,使能预装载。最后确定通道输出端口配置完成以及TIM8的计数使能、时钟使能、输出使能及其更新中断使能。图2中虚线框内全部由STM32F103实现。

图2 基于STM32F103的三相逆变器控制系统结构

图3给出了STM32F103输出的CH1与CH2的波形,并且附带有两者之差,可以看到相位上前者超前后者120°。

图3 CH1与CH2波形

图4所示为逆变器满载(37kW风机负载)时输出电压和电流的起动波形。

图4 满载时电压及电流起动波形

图5为逆变器满载时电压的稳态波形及其谐波分析。

图5 满载时电压稳态波形

5 结束语

本文简单介绍了STM32F103的PWM产生机制,并在此基础上分析了其在SVPWM算法实现上的优点,并在基于STM32F103控制的三相逆变器上进行了实验验证。由于STM32F103具有超强的数据处理能力,采用STM32F103实现空间矢量PWM具有实现简便、易于理解等特点。

[1]STM.STM32F101xx,STM32F102xx,STM32F103xx,STM-32F105xx and STM32F107xx Advanced ARM-based 32-bitMCUs.2009.

[2]STM.STM32F10xxx Cortex -M3 Programming Manual.2010.

[3]H W Vander Broek,H C Skudely,G V Stranke.Analysis and Realization of a Pulse Width Modulator Based on Voltage Space Vector[J].IEEE Trans.on IA,1988,24(1):142-150.

[4]程善美,蔡 凯,龚 博.DSP在电气传动系统中的应用[M].北京:机械工业出版社,2010.

猜你喜欢
导通寄存器电平
STM32和51单片机寄存器映射原理异同分析
基于Petri网的无刷直流电机混合导通DSP控制方法
Lite寄存器模型的设计与实现
一类防雷场所接地引下线导通测试及分析
180°导通方式无刷直流电机换相转矩脉动研究
NPC五电平Z源逆变器的设计研究
基于三电平光伏并网逆变器控制系统的研究与实践
基于NPC三电平变换器的STATCOM研究
一种多电平逆变器及其并网策略
IR推出20V至30V的全新StrongIRFET系列 为高性能运算和通信应用提供极低导通电阻