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