STM32 電機教程 13 - BLDC 電機轉速計算

前言

無刷直流 (Brushless Direct Current, BLDC)電機是一種正快速普及的電機類型,它可在家用電器、汽車、航空航天、消費品、醫療、工業自動化設備和儀器等行業中使用。正如名稱指出的那樣,BLDC 電機不用電刷來換向,而是使用電子換向。BLDC 電機和有刷直流電機以及感應電機相比,有許多優點。其中包括:

• 更好的轉速-轉矩特性

• 快速動態響應

• 高效率

• 使用壽命長

• 運轉無噪音

• 較高的轉速範圍此外,

由於輸出轉矩與電機體積之比更高,使之在需要着重考慮空間與重量因素的應用中,大有用武之地。

無刷電機

 

前面已經講了很多關於BLDC電機的一些知識,那麼如計算出BLDC電機(帶HALL傳感器)的實際轉速呢,其實可以利用hall傳感器及中斷事件計算電機轉速,以1對極BLDC電機爲例,電機轉動一圈,會產生6個HALL狀態,每個狀態對機60度的機械角度,如果使用了STM32 定時器的HALL傳感器接口功能,可能直接在定時器的中斷裏計算電機轉速speed = 60/360/t (轉每秒),t爲對兩次中斷的時間間隔,可以很簡單地通過定時器中獲得, 本節將基於NUCLEO-F103RB和X-NUCLEO-IHM07M1 3SH實現BLDC電機轉速計算!

本節所用電機爲2836無刷電機,電機有兩組線(hall傳感器線和電機三相線),工作電壓24V,最大轉速12000rpm:

示例詳解

本節用到ST官方推出的NUCLEO-F103RB和X-NUCLEO-IHM07M1 3SH 開發板。

NUCLEO-F103RB對應的大致原理接線圖:

X-NUCLEO-IHM07M1 3SH部分原理圖:

 

 

  1. 準備操作

    1. X-NUCLEO-IHM07M1 3SH是一款專門用於PMSM(永磁同步)或BLDC(直流無刷 )的電機驅動板,其電機驅動板驅動芯片型號爲L6230(詳細數據手冊可在st官網下載),本節需用到IN1,IN2, IN3和OUT1,OUT2,OUT3, HALL傳感器信號接口H1,H2,H3以及單電阻電流採樣接口PC1。

 

需要用到的信號

對應MCU引腳

EN1

PC10

IN1

PA8

EN2

PC11

IN2

PA9

EN3

PC12

IN3

PA10

H1

PA15

H2

PB3

H3

PB10

電流採樣接口

PC1

 

本節直接使用STM32的TIM1產生三路PWM波對應信號IN1、IN2、IN3,通過調節PWM波佔空比實現電機的速度控制;將EN1、EN2、EN3配置成普通輸出IO口輸出模式,H1,H2,H3配置成TIM2的hall傳感器模式,並開啓T1的捕獲中斷,中斷觸發模式爲雙邊觸發模式,在中斷服務程序中實理更加快帶的電機換相(6步換步)操作,PC1配置成AD採樣引腳,本節以電機在2個PWM週期內採多個64,以這64個點的平均值作爲電機的平均電流。

 

  1. 在STM32CubeMX中,有專門的NUCLEO-F103RB工程模板,新建一個Cube工程,芯片型號爲st32f103rb:

生成一個簡單的工程模板實現了RCC,SYS,USART2接口的配置,同時還實現了LD2(LED)引腳的配置。接下來手動配置各功能模塊,首先是TIM1,配置成三路PWM 模式1輸出,PWM載波頻率是20Khz = 72M/(2+1)/(1199+1),各通道初始PWM波是500:

 

使能TIM1的UPDATA中斷,在中斷服務程序中完成電流PID運算及控制:

接下來是TIM2配置,開啓三路輸入捕獲功能,使能XOR功能,開啓定時器中斷:

上圖中所述想要直接利用TIM2的HALL傳感器功能,僅在CUBE中配置是不點問題的,原因如下,在配置輸入捕獲通道時,很多模式不可選:

而要直正實現STM32的定時器HALL傳感器接口功能,除了要開啓XOR功能外(在CUBE可直接勾選):

還需要用到TI1F_ED(直接的雙邊沿檢測)信號,TRC信號..並最終產生CC1I中斷,完整的信號流圖如下圖:

 

故還需要開啓中斷,並最終要在自動生成的TIM.C中進行適當修改(後面源碼上有介紹):

配置ADC:

本例ADC採電機電流工作在單電阻採樣模式下,如上圖所示,電機電流與ADC採樣電流之間的關係式爲(JP1,JP2不接): V = 3*0.33*I,其中0.33爲採樣電阻的阻值,I爲電機電流,V爲放大3倍後的電機。

 

 

使能ADC的DMA功能:

 

接着將PC10,PC11,PC12普通IO功能配置,GPIO_OUTPUT模式,默認輸出爲低:

最後是中斷優先級配置:

生成工程:

 

  1. 打開工程, 加入事先準備好的bldc.c,pid.c, visualscope.c 和bldc.h,pid.h, visualscope.h(.c在src文件夾中 .h在INC文件夾)文件:

同時在tim.c及stm32f1xx_it.c中加入如下代碼:

在dma.c中關閉dma中斷:

在adc.c中加入求平均電流代碼:

在adc.h中導出變量及函數名:

最後在main.c中加入如下代碼:

 

 

設置工程下載後自動運行:

編譯代碼,調試代碼,本節代碼是在上一講《STM32 電機教程 12 - BLDC 閉環電流控制》基礎上實現,自帶電流閉環,電機轉動起來後(電流閉環參考值不要設太大),在串口示波器上可以看到電機速度的波形,給電機加一點阻力,可以看到電機轉速的變化情況:

OK,本期實驗完成!本節BLDC通過HALL傳感器計算速度的示例就講到這裏,下一節將基於本節內容實現BLDC電機速度閉環控制。最後如果大家有什麼疑問或是有想了解的其它內容,也歡迎大家留言!!最後喜歡這個公衆號的同學們記得加關注了,每天都會有技術乾貨推出!!

 

 

文中源碼及資料下載,關注十三公衆號:

在公衆號裏給十三發送 “下載|STM32 電機教程 13” :

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章