袁 野,程善美,胡 仙
(華中科技大學(xué),湖北 武漢 430074)
Cortex-M3處理器的核心是基于哈佛結(jié)構(gòu)和三級(jí)流水線的32位內(nèi)核。該內(nèi)核集成了分支預(yù)測(cè)、單周期乘法和硬件除法等眾多強(qiáng)大的功能,其出色的計(jì)算性能、對(duì)時(shí)間快速響應(yīng)能力以及高度的可配置,使其支持應(yīng)用范圍廣泛地實(shí)現(xiàn)。
STM32F103以32位的CortexM3為核心,最高主頻為72MHz。STM32F103不僅價(jià)格便宜,而且外設(shè)資源豐富,尤其具有適合電力變換器控制的PWM模塊,使其在電力電子控制系統(tǒng)中具有廣闊的應(yīng)用前景。
STM32F103的PWM產(chǎn)生是由定時(shí)器模塊完成的。STM32F103具有2個(gè)高級(jí)控制定時(shí)器(TIM1、TIM8) 和 4 個(gè)通用定時(shí)器(TIM2、TIM3、TIM4、TIM5),每個(gè)定時(shí)器都具有16位向上、向下、上/下自動(dòng)裝載計(jì)數(shù)器,有4個(gè)獨(dú)立的通道。不同的是高級(jí)控制定時(shí)器(TIM1、TIM8)的前3個(gè)通道(通道1、2、3)可以輸出互補(bǔ)的PWM波形,并且可以進(jìn)行死區(qū)編程,第4個(gè)通道為單脈沖輸出,高級(jí)控制定時(shí)器還具有剎車功能,使能該功能后,在剎車輸入引腳捕獲到一個(gè)有效的剎車電平之后就可以禁止該定時(shí)器所有通道的比較輸出。而通用定時(shí)器(TIM2、TIM3、TIM4、TIM5)的 4 個(gè)通道都只能工作在單脈沖輸出模式下,因此對(duì)于通用定時(shí)器沒有死區(qū)處理,另外通用定時(shí)器也不具備剎車功能。
如圖1所示為高級(jí)定時(shí)器在連續(xù)增減計(jì)數(shù)模式下3組互補(bǔ)通道(通道1、2、3)及另外一個(gè)單獨(dú)通道(通道4)的輸出波形。
在圖1中,TIMx_CCRy為通道y的比較寄存器(寄存器中x代表定時(shí)器編號(hào),y代表通道編號(hào)),TIMx_ARR為周期寄存器,同一個(gè)定時(shí)器的所有通道共用一個(gè)周期寄存器。由寄存器TIMx_CR1的CMS[1:0]位來選擇計(jì)數(shù)方式,并且在連續(xù)增減計(jì)數(shù)時(shí)可以選擇由上溢事件或者下溢事件置中斷標(biāo)志位,或者上溢與下溢均置位(這里沒有特定的上溢、下溢中斷,而是統(tǒng)一歸為更新中斷)。
圖1 高級(jí)定時(shí)器的PWM輸出波形
TIMx_CCMR1、TIMx_CCMR2 的 CCyS[1:0]用來配置通道y作為輸入還是輸出,OCyM[2:0]用來配置PWM輸出模式,例如翻轉(zhuǎn),PWM模式1(在向上計(jì)數(shù)時(shí),一旦當(dāng)前計(jì)數(shù)值 TIMx_CNT<TIMx_CCRy時(shí)通道y為有效電平,否則為無效電平;在向下計(jì)數(shù)時(shí),一旦 TIMx_CNT>TIMx_CCRy時(shí)通道y為無效電平,否則為有效電平),PWM模式2(與PWM模式1相反)等。
TIMx_CCER用來使能每個(gè)通道及其互補(bǔ)通道,同時(shí)對(duì)每個(gè)通道的輸出極性進(jìn)行配置,注意同一組PWM輸出中的每個(gè)通道及其互補(bǔ)通道的輸出極性要保持一致,即同時(shí)高有效或者同時(shí)低有效。TIMx_BDTR用來配置死區(qū)時(shí)間長(zhǎng)度,同時(shí)可以使能剎車功能,并且對(duì)剎車電平的極性進(jìn)行配置。
在使用中通常還要對(duì)比較寄存器進(jìn)行預(yù)裝載,TIMx_CCMR1、TIMx_CCMR2 的 OCyPE 位用來使能通道y的預(yù)裝載,在最后還要配置TIMx_CR1的ARPE位和TIMx_CR2的CCPC位來開啟預(yù)裝載功能。
可以根據(jù)實(shí)際的需求來選擇配置上面這些寄存器,最后一定要使能定時(shí)器及中斷,另外還要配置好定時(shí)器的輸出端口以及使能定時(shí)器的時(shí)鐘。
SVPWM算法主要包括判斷扇區(qū)、導(dǎo)通時(shí)間長(zhǎng)度計(jì)算及其過調(diào)制處理、導(dǎo)通時(shí)刻計(jì)算。
在計(jì)算導(dǎo)通時(shí)間長(zhǎng)度時(shí),首先如下定義X、Y、Z,式中Vdc為直流母線電壓。
根據(jù)不同扇區(qū),把 X、Y、Z 分別賦予 T1、T2,且當(dāng) T1+T2>T 時(shí),則取
得到導(dǎo)通時(shí)間T1、T2后,再計(jì)算三相開關(guān)的導(dǎo)通時(shí)刻
這里用到了大量的除法,而為了保證計(jì)算速率和計(jì)算精度,傳統(tǒng)的方法(基于TIC2000)是把數(shù)據(jù)進(jìn)行標(biāo)幺,用Q格式來表示數(shù)據(jù),用移位來代替除法,但是這樣做也就使得程序看起來不是很直觀,雖然仍然可以從程序語(yǔ)句的表達(dá)上看出該語(yǔ)句實(shí)現(xiàn)的功能,但是卻不能從語(yǔ)句上直接看出一些數(shù)據(jù)的實(shí)際大小。而STM32F103具有硬件除法器,因此這里就不再需要移位操作,只需要保證數(shù)據(jù)的精度即可,這樣就可以使得數(shù)據(jù)的表達(dá)比較直觀,因?yàn)橥瑯訛榱吮WC數(shù)據(jù)精度,Q格式就是為了方便移位操作,比如在原來的移位操作處理里面Q12的4096代表1,那么在相關(guān)計(jì)算的最后一步就需要右移12位,而在STM32F103中,由于具有硬件除法器,除法操作本身就是單指令周期,所以可以令1000代表1,在計(jì)算的最后一步再除以1000來還原數(shù)據(jù)實(shí)際大小??梢钥吹?,后者表達(dá)起來就更加直觀,程序可讀性更強(qiáng)。
在SVPWM算法中,計(jì)算導(dǎo)通時(shí)間長(zhǎng)度是式(1),傳統(tǒng)算法(基于TIC2000)進(jìn)行標(biāo)幺處理,即“1”代表,這里的“1”如果是Q10格式就對(duì)應(yīng)于1024,那么如果得到等于一個(gè)PWM周期一半的導(dǎo)通時(shí)間長(zhǎng)度實(shí)際上得到的是一個(gè)等于512的數(shù)據(jù),也就是“0.5”,并且在接下來的導(dǎo)通時(shí)刻計(jì)算中仍然使用Q10格式的標(biāo)幺,那么如果得到等于一個(gè)PWM周期一半的導(dǎo)通時(shí)刻實(shí)際上也是“0.5”,在最后又用“0.5”與周期值相乘再右移10位才能得到真正的導(dǎo)通時(shí)刻。
而基于STM32F103就可以實(shí)現(xiàn)程序語(yǔ)句和數(shù)據(jù)完全還原其數(shù)學(xué)意義,首先在查表計(jì)算Uα、Uβ時(shí)就可以用實(shí)際的數(shù)據(jù)來處理,這樣得到的Uα、Uβ也就是實(shí)際值,這樣在計(jì)算導(dǎo)通時(shí)間長(zhǎng)度時(shí)就無需Q格式標(biāo)幺,而是直接把Uα、Uβ代入表達(dá)式來進(jìn)行計(jì)算,其次在計(jì)算導(dǎo)通時(shí)間長(zhǎng)度時(shí)也直接把周期乘入,這就使得計(jì)算得到的導(dǎo)通時(shí)間長(zhǎng)度就是實(shí)際的導(dǎo)通時(shí)間長(zhǎng)度,最后只需進(jìn)行簡(jiǎn)單的導(dǎo)通時(shí)刻處理,即可得到每個(gè)開關(guān)的導(dǎo)通時(shí)刻。
在過調(diào)制處理式(2),傳統(tǒng)算法需要對(duì)(T1+T2)進(jìn)行標(biāo)幺,而基于STM32F103,可以直接令T1=T1×T/(T1+T2),這里T是TIM8周期寄存器的值,也就是一個(gè)開關(guān)周期的一半,所以需要乘以2來計(jì)算對(duì)于整個(gè)周期的T1。
通過上述分析,可以看到STM32F103在實(shí)現(xiàn)SVPWM算法時(shí)具有一些獨(dú)特的優(yōu)勢(shì),這主要是由其內(nèi)部的硬件除法器來保證的。實(shí)驗(yàn)發(fā)現(xiàn)這些優(yōu)勢(shì)大大方便了調(diào)試工作,在線仿真時(shí)數(shù)據(jù)的可讀性很高,例如電壓變量、導(dǎo)通時(shí)間長(zhǎng)度、導(dǎo)通時(shí)刻都是實(shí)際值,這樣比起用Q格式標(biāo)幺的數(shù)據(jù)就要容易識(shí)別很多。
一個(gè)基于STM32F103的三相逆變器控制系統(tǒng)結(jié)構(gòu)框圖如圖2所示。在圖2中STM32F103完成SVPWM算法、PI控制器以及輸出電壓反饋控制等。采用TIM8產(chǎn)生PWM波形,此時(shí)三相逆變器控制的主要配置如下:周期寄存器=4650(時(shí)鐘為56MHz,因此一個(gè)計(jì)數(shù)周期為83μs,一個(gè)增減周期為166μs,對(duì)應(yīng)開關(guān)頻率6kHz),中央對(duì)齊模式3(連續(xù)增減計(jì)數(shù),且上溢、下溢時(shí)都置中斷標(biāo)志位),PWM輸出模式為PWM模式1,輸出電平低有效,死區(qū)時(shí)間為4μs,使能預(yù)裝載。最后確定通道輸出端口配置完成以及TIM8的計(jì)數(shù)使能、時(shí)鐘使能、輸出使能及其更新中斷使能。圖2中虛線框內(nèi)全部由STM32F103實(shí)現(xiàn)。
圖2 基于STM32F103的三相逆變器控制系統(tǒng)結(jié)構(gòu)
圖3給出了STM32F103輸出的CH1與CH2的波形,并且附帶有兩者之差,可以看到相位上前者超前后者120°。
圖3 CH1與CH2波形
圖4所示為逆變器滿載(37kW風(fēng)機(jī)負(fù)載)時(shí)輸出電壓和電流的起動(dòng)波形。
圖4 滿載時(shí)電壓及電流起動(dòng)波形
圖5為逆變器滿載時(shí)電壓的穩(wěn)態(tài)波形及其諧波分析。
圖5 滿載時(shí)電壓穩(wěn)態(tài)波形
本文簡(jiǎn)單介紹了STM32F103的PWM產(chǎn)生機(jī)制,并在此基礎(chǔ)上分析了其在SVPWM算法實(shí)現(xiàn)上的優(yōu)點(diǎn),并在基于STM32F103控制的三相逆變器上進(jìn)行了實(shí)驗(yàn)驗(yàn)證。由于STM32F103具有超強(qiáng)的數(shù)據(jù)處理能力,采用STM32F103實(shí)現(xiàn)空間矢量PWM具有實(shí)現(xiàn)簡(jiǎn)便、易于理解等特點(diǎn)。
[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在電氣傳動(dòng)系統(tǒng)中的應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2010.