三相永磁同步無刷電機驅(qū)動電路形式有幾種,其中比較高效的是上三下三六路輸出形式。 下圖為其中一種一相的驅(qū)動電,其它二路與之相同。其中CH1為高電平導(dǎo)通,CH1N為低電平導(dǎo)通,這樣做是為了避免單片機在復(fù)位時,驅(qū)動引腳同時為相同電平,導(dǎo)致上下管同時導(dǎo)通,導(dǎo)致?lián)p壞開關(guān)管。 關(guān)于三相六路驅(qū)動無刷電機的時序,可以自行百度,本文只討論如何用STM32的高級定時器產(chǎn)生控制時序。 1.設(shè)定定時器的輸出引腳,用STM32CubeMX。用這個軟件可以不關(guān)注芯片型號,可移植性很強。配置如下圖. 在引腳配置圖中設(shè)定輸出引腳后,首先要設(shè)定引腳的GPIO狀態(tài)。需設(shè)定為全部輸出管為截止狀態(tài),這樣就保證驅(qū)動開關(guān)管在上電復(fù)位至配置好GPIO期都不會導(dǎo)通。接下來要配置PWM輸出,這是驅(qū)動時序的重點。Stm32的高級定時器功能很多,使用起來比一般的定時器配置要復(fù)雜。用作產(chǎn)生控制無刷電機的六步換相時序,需要用到其中的三個模塊:時基產(chǎn)生模塊,PWM信號生成模塊和三路互補輸出模塊。時基產(chǎn)生模塊與PWM模塊與其它單機的定時器區(qū)別不大,也很容易設(shè)置。三路互補輸出比較復(fù)雜,這里依照我的理解寫出來供參考。先看下輸出電路框圖輸出電路控制位有好幾位,只有使用好它們的組合控制功能,才能輸出想要的時序。 1.DBTR->MOE 主輸出使能位。當為0時,定時器斷開。引腳狀態(tài)為GPIO設(shè)定的狀態(tài)。 設(shè)為1時,輸出才會接入輸出引腳。這時的引腳輸出狀態(tài)由比較器的輸出模式,CCER相應(yīng)位的值,以及OSSI位的值決定。還有一種情況是,DBTR->OSSR為1時,PWM信號已經(jīng)輸出(電機已經(jīng)啟動),這時MOE由1變0(等同輸入剎車信號),這時先輸出一個死區(qū)時間,在死區(qū)時間的電平為GPIO配置,然后各輸出引腳電平等同CR2的OSIx,OSIxN位的設(shè)置。 2.在MOE=1時,pwm輸出連至輸出引腳,CCRM1和CCRM2中的OCMx[2:0]設(shè)定四種輸出模式(強制高,強制低,PWM模式1,PWM模式2),CCER中的CCxP,CCxNP設(shè)定每一相中上下開關(guān)管的驅(qū)動輸出極性。CCxE,CCxNE為輸出允許位,設(shè)1接到定時器輸出,設(shè)0為GPIO設(shè)定的狀態(tài)。如果DBTR->OSSI位為1時,當CCxE,CCxNE為0時,引腳輸出為“低電平”經(jīng)過CCxP,CCxNP相位選擇后的電平。OSSI在一般情況下設(shè)為0。例如:需要在A相的上開關(guān)管輸出PWM,C相的下開關(guān)管導(dǎo)通,各輸出寄存器配置: CCMR1=0x0060,CCMR2=0x0040,CCER=0X0401.接著MOE位置1。
3.三相同時換相,使能換相預(yù)裝載位(設(shè)定CR2->CCPC位為1),然后預(yù)先設(shè)定好下相的輸出信號。在要換相時,設(shè)EGR->COMG位為1,三相導(dǎo)通狀態(tài)可按預(yù)先設(shè)定的同時轉(zhuǎn)換。
|