STM32G4入門與電機控制實戰(zhàn)-基于X-CUBE-MCSDK的無刷直流電機與永磁同步電機控制實現(xiàn) 課件 第八章_第1頁
STM32G4入門與電機控制實戰(zhàn)-基于X-CUBE-MCSDK的無刷直流電機與永磁同步電機控制實現(xiàn) 課件 第八章_第2頁
STM32G4入門與電機控制實戰(zhàn)-基于X-CUBE-MCSDK的無刷直流電機與永磁同步電機控制實現(xiàn) 課件 第八章_第3頁
STM32G4入門與電機控制實戰(zhàn)-基于X-CUBE-MCSDK的無刷直流電機與永磁同步電機控制實現(xiàn) 課件 第八章_第4頁
STM32G4入門與電機控制實戰(zhàn)-基于X-CUBE-MCSDK的無刷直流電機與永磁同步電機控制實現(xiàn) 課件 第八章_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第八章

基于P-NUCLEO-IHM03套件的有感電機控制案例2024年6月26日無刷直流電機的有感方波控制案例12永磁同步電機的有感FOC控制案例概述本章基于P-NUCLEO-IHM03套件、57SW01無刷直流電機和ShinanoLA052-080E3NL1永磁同步電機,進(jìn)行無刷直流電機和永磁同步電機的有感驅(qū)動實踐。

共分為2個小節(jié),每個小節(jié)為一個典型案例,每個案例都配有詳細(xì)的步驟,帶大家實現(xiàn)電機的進(jìn)階控制。具體內(nèi)容包括:無刷直流電機的有感方波控制案例和永磁同步電機的有感FOC控制案例。無刷直流電機的有感方波控制案例01實驗?zāi)繕?biāo)及條件(1)實驗?zāi)繕?biāo)①了解電機的基本結(jié)構(gòu),熟悉BLDCM方波控制的基本原理。②基于BLDCM方波控制原理,結(jié)合前面學(xué)習(xí)的STM32G4的知識,實現(xiàn)對無刷直流電機的有感控制,利用開發(fā)板上的按鈕實現(xiàn)電機的正反轉(zhuǎn),并且通過電位器來實現(xiàn)電機的調(diào)速功能。(2)實驗條件①硬件平臺:P-NUCLEO-IHM03套件、57SW01無刷直流電機②軟件平臺:STMotorControlSDK5.4STM32CubeMX(6.1.1版本及以上)Keil5(5.33版本及以上)57SW01無刷直流電機簡介本節(jié)采用安裝了霍爾傳感器的57SW01無刷直流電機來進(jìn)行案例搭建。電機具體參數(shù)如表8-1所示,接線顏色對應(yīng)端子如表8-2所示。表8-157SW01電機具體參數(shù)表8-257SW01電機接線顏色對應(yīng)端子說明參數(shù)數(shù)值相數(shù)3額定電壓24V額定轉(zhuǎn)速4000rpm額定轉(zhuǎn)矩0.11Nm額定功率50W最大轉(zhuǎn)矩0.35Nm轉(zhuǎn)矩系數(shù)0.08Nm/A相電阻2.7Ω轉(zhuǎn)動慣量7.5Kg.mm2長度56mm重量0.5KgUVW+5VHALLAHALLBHALLCGnd藍(lán)白黃紅藍(lán)白黃黑控制信號以及端口屬性選擇本節(jié)采用安裝了霍爾傳感器的57SW01無刷直流電機來進(jìn)行案例搭建。根據(jù)BLDCM六步方波控制原理,實現(xiàn)BLDCM的正反轉(zhuǎn)及調(diào)速需要用到的信號有:1)INU、INV、INW:用于輸出PWM波形2)ENU、ENV、ENW:使能STSPIN830芯片3)H1、H2、H3:HALL傳感器信號接口4)ADC采樣端口及按鈕表8-3BLDCM實現(xiàn)正反轉(zhuǎn)及調(diào)速用到的資源列表需要用到的信號對應(yīng)MCU引腳端口屬性INUPA8TIM1_CH1INVPA9TIM1_CH2INWPA10TIM1_CH3ENUPB13GPIO-OUTPUTENVPB14GPIO-OUTPUTENWPB15GPIO-OUTPUTH1PA15GPIO-INPUTH2PB3GPIO-INPUTH3PB10GPIO-INPUT按鈕PC13GPIO-EXTI3電位器采樣PC2ADC1_IN8對應(yīng)MCU引腳以及端口屬性如表8-3所示:實驗工程配置步驟一:創(chuàng)建新項目在STM32CubeMX中,有NUCLEO-G431RB工程模板,新建一個STM32CubeMX工程,芯片型號為STM32G431RBTX,如圖8-1所示,打開STM32CubeMX軟件,點擊“ACCESSTOMCUSELECTOR”建立新工程。如圖8-2所示,在BoardSelector頁下的①號框中搜索NUCLEO-G431RB找到NUCLEO-G431RB工程模板,雙擊②加載模板。圖8-1新建工程,選擇MCU圖8-2選擇工程模板實驗工程配置打開如圖8-3所示的工程初始界面,可以看到PC13、PA2、PA3、PA5以及系統(tǒng)時鐘已經(jīng)配置好了,PA2、PA3是與電腦通訊的串口。圖8-3工程初始界面實驗工程配置步驟二:端口配置配置需要使用的端口,如圖8-4所示,右鍵點擊端口選擇“EnterUserLabel”可以進(jìn)行重命名。圖8-4端口配置圖8-5配置ADC1①如圖8-5所示,選擇ADC1的IN8并設(shè)置采樣時間。實驗工程配置②如圖8-6所示,TIM1的Channel1選擇為PWMGenerationCH1、Channel2選擇為PWMGenerationCH2、Channel3選擇為PWMGenerationCH3,點擊NVICSettings頁,如圖8-7所示,使能TIM1定時器更新中斷。因為配置定時器TIM1的PWM輸出為中心對稱模式,預(yù)分頻系數(shù)為0,計數(shù)周期為8500,RepetitionCounter為1,PWM頻率的計算公式為:圖8-6配置TIM1圖8-7NVIC配置中斷頻率等于PWM頻率,根據(jù)式(8.1-1),可以計算得出PWM頻率為10k。實驗工程配置如圖8-8所示,系統(tǒng)時鐘使用默認(rèn)配置為170MHz。圖8-8系統(tǒng)時鐘配置實驗工程配置步驟三:生成工程代碼如圖8-9所示,點擊“GENERATECODE”按鈕生成工程代碼。圖8-9生成工程代碼軟件設(shè)計打開Keil軟件,根據(jù)BLDCM六步方波控制原理進(jìn)行編程。1)在main.c中定義需要的變量,具體包括:ADC采集值:adc_value啟動狀態(tài):start_state速度參考值:speed_ref速度實際值:speed_relPWM值:pwm_value啟動次數(shù):start_count如圖8-10所示,打開main.c文件,在/*USERCODEBEGIN0*/與/*USERCODEEND0*/之間添加變量定義代碼。圖8-10變量定義軟件設(shè)計②轉(zhuǎn)速給定程序如圖8-13所示,在上述代碼之后繼續(xù)添加轉(zhuǎn)速給定的代碼。圖8-13轉(zhuǎn)速給定程序代碼4)在stm32g4xx_it.c中定義電機控制相關(guān)變量,具體包括:PWM值:pwm_value霍爾傳感器狀態(tài):HALL霍爾傳感器換相前的狀態(tài):HALL_old速度實際值:speed_rel定時器中斷次數(shù):Interrupt_count圖8-14電機控制相關(guān)變量定義如圖8-14所示,打開stm32g4xx_it.c文件,在/*USERCODEBEGIN0*/與/*USERCODEEND0*/之間添加變量定義代碼。軟件設(shè)計5)在stm32g4xx_it.c中添加電機控制函數(shù)根據(jù)霍爾傳感器反映的轉(zhuǎn)子位置,分別使能和關(guān)閉對應(yīng)的相,并通過定時器的CCR寄存器設(shè)置占空比。如圖8-15所示,在上述代碼之后繼續(xù)添加電機控制函數(shù)代碼。圖8-15電機控制函數(shù)代碼軟件設(shè)計6)在定時器中斷函數(shù)中編寫電機控制程序①HALL獲取如圖8-16所示,在/*USERCODEBEGINTIM1_UP_TIM16_IRQn1*/與/*USERCODEENDTIM1_UP_TIM16_IRQn1*/之間添加HALL獲取的代碼。②計算電機轉(zhuǎn)速如圖8-17所示,在上述代碼之后繼續(xù)添加電機轉(zhuǎn)速獲取的代碼。圖8-16HALL獲取代碼圖8-17電機轉(zhuǎn)速獲取代碼軟件設(shè)計③轉(zhuǎn)速閉環(huán)如圖8-18所示,打開stm32g4xx_it.c文件,在/*USERCODEBEGIN0*/與/*USERCODEEND0*/之間繼續(xù)添加電機轉(zhuǎn)速閉環(huán)控制的變量定義代碼。如圖8-19所示,在電機轉(zhuǎn)速獲取的代碼之后繼續(xù)添加轉(zhuǎn)速閉環(huán)控制代碼。圖8-18轉(zhuǎn)速閉環(huán)控制變量定義代碼圖8-19轉(zhuǎn)速閉環(huán)控制代碼軟件設(shè)計7)燒錄程序如圖8-20所示,點擊①框中的“OptionsforTargets…”,選擇ST-LinkDebugger,點擊②框中的“Settings”,打開如圖8-21所示配置窗口,添加Flash,點擊“確定”后,再點擊圖8-20中③框中的“Translate”和④框中的“Download”燒錄程序至單片機中。圖8-20程序燒錄界面圖8-21配置窗口實驗結(jié)果燒錄程序后按下黑色復(fù)位按鍵,然后按下藍(lán)色按鍵,可以看到電機旋轉(zhuǎn)起來,這時電機在六步方波控制模式下運行,如圖8-22所示,可以通過STMStudio來觀察波形。在如圖8-23所示的區(qū)域右鍵點擊import,選擇觀測的燒錄程序和變量,來對電機的速度進(jìn)行觀測。圖8-22STMStudio變量監(jiān)測圖8-23變量導(dǎo)入實驗結(jié)果點擊圖8-23右邊的省略號,選擇工程所在文件夾中的axf燒錄文件,如圖8-24所示,會出現(xiàn)程序中的變量。

結(jié)果需要觀測的變量為speed_rel,選擇后點擊右邊的“import”把該變量加入到觀察列表。之后將變量送到VarView1中,右鍵點擊“Sendto”,點擊“VarView1”,點擊右上角的綠色“StartRecordingSession”按鍵。Speed_rel是電機實際轉(zhuǎn)速,轉(zhuǎn)速波形如圖8-25所示。圖8-24燒錄文件選擇圖8-25電機轉(zhuǎn)速監(jiān)測02永磁同步電機的有感FOC控制案例實驗?zāi)繕?biāo)及條件(1)實驗?zāi)繕?biāo)①了解電機的基本結(jié)構(gòu),熟悉永磁同步電機矢量控制的基本原理。②基于永磁同步電機矢量控制原理,結(jié)合前面學(xué)習(xí)的STM32G4知識,位置檢測采用光電編碼器,快速實現(xiàn)永磁同步電機的有感FOC轉(zhuǎn)動控制。③基于永磁同步電機矢量控制原理,結(jié)合前面學(xué)習(xí)的STM32G4知識,位置檢測采用霍爾傳感器,實現(xiàn)對永磁同步電機的轉(zhuǎn)速電流雙閉環(huán)控制,利用按鈕進(jìn)行電機運行模式的轉(zhuǎn)換,并且通過電位器來調(diào)節(jié)電機的轉(zhuǎn)速。(2)實驗條件①硬件平臺:P-NUCLEO-IHM03套件、ShinanoLA052-080E3NL1永磁同步電機②軟件平臺:STMotorControlSDK5.4STM32CubeMX(6.1.1版本及以上)Keil5(5.33版本及以上)ShinanoLA052-080E3NL1永磁同步電機簡介本節(jié)采用安裝了霍爾傳感器和光電編碼器的ShinanoLA052-080E3NL1永磁同步電機來進(jìn)行案例搭建。具體參數(shù)如表8-4所示,傳感器參數(shù)如表8-5所示。表8-4ShinanoLA052-080E3NL1電機具體參數(shù)表8-5ShinanoLA052-080E3NL1電機傳感器參數(shù)參數(shù)數(shù)值相數(shù)3額定電壓24V額定轉(zhuǎn)速3000rpm額定轉(zhuǎn)矩0.255Nm額定功率80W最大轉(zhuǎn)矩0.765Nm轉(zhuǎn)矩系數(shù)0.059Nm/A相電阻6.2Ω轉(zhuǎn)動慣量11.7Kg.mm2長度69.6mm重量0.6Kg類型輸出電路分辨率通道數(shù)電源供應(yīng)工作電流輸出電壓相位偏差頻率響應(yīng)工作溫度范圍P/R

V-DCmAV-DC

kHz

霍爾傳感器集電極開路—C1,C2,C35±5%40max.14.4min.(Isink=15mAmax.)——0℃~60℃(編碼器內(nèi)部溫度)光電編碼器TTL兼容200,400A,B5±5%50max.VOH=2.4min.VOL=0.4max.(Isink=3.2mA)a,b,c,d=90°±45°20min.有感FOC控制過程1)測量三相定子電流。對于具有平衡三相繞組的電機,只需測量兩個電流即可,第三個電流可使用

公式計算得出。2)將三相電流轉(zhuǎn)換到靜止雙軸系統(tǒng)。該轉(zhuǎn)換通過測量的

值提供

變量。從定子的角度來看,值

是隨時間變化的正交電流值。3)測量在控制環(huán)最后一次迭代時的變換角度,通過該角度將靜止雙軸坐標(biāo)系轉(zhuǎn)換為旋轉(zhuǎn)坐標(biāo)系,以對準(zhǔn)轉(zhuǎn)子磁通。該轉(zhuǎn)換將

變換為

,值

是變換到旋轉(zhuǎn)坐標(biāo)系的正交電流。對于穩(wěn)態(tài)條件,

恒定。電流參考值的說明如下::調(diào)節(jié)磁通:控制轉(zhuǎn)矩4)將誤差信號饋入到PI控制器。電流控制器的輸出提供和,它們是將施加到電機上的電壓向量。5)新的變換角度通過編碼器脈沖輸入測得。這一新角度將指導(dǎo)FOC算法確定放置下一個電壓向量的位置。有感FOC控制過程6)使用新的角度將來自PI控制器的和輸出值進(jìn)行旋轉(zhuǎn)坐標(biāo)系到靜止雙軸坐標(biāo)系的變換,得到正交電壓值和。7)和值用于計算生成所需電壓向量所用的全新PWM占空比值。8)在每個PWM周期后都會計算機械速度()。圖8-26PMSM有傳感器FOC的框圖

圖8-27PMSM有傳感器FOC流程圖PMSM的位置檢測

獲取確切的轉(zhuǎn)子位置對于FOC正常工作至關(guān)重要。增量式光學(xué)編碼器提供兩個彼此正交的脈沖串,如圖8-29和8-30所示。一些編碼器具有索引脈沖,這有助于在空間上明確確切的轉(zhuǎn)子位置。如果脈沖串A超前脈沖串B,則電機將沿一個方向旋轉(zhuǎn),如果脈沖串B超前脈沖串A,則電機將沿相反方向旋轉(zhuǎn)。編碼器脈沖數(shù)越多,位置測量精度就越高。圖8-29特定旋轉(zhuǎn)方向的編碼器相位信號和索引脈沖圖8-30相反旋轉(zhuǎn)方向的編碼器相位信號和索引脈沖1)特定旋轉(zhuǎn)方向的編碼器相位信號和索引脈沖2)相反旋轉(zhuǎn)方向的編碼器相位信號和索引脈沖控制信號以及端口屬性選擇

PMSM矢量控制需要ADC采集端口來采集下橋臂串聯(lián)電阻的電壓來計算電流。需要用到的信號有:1)INU、INV、INW:用于輸出PWM波形2)ENU、ENV、ENW:使能STSPIN830芯片3)HALL1、HALL2、HALL3:HALL傳感器信號接口4)Curr_fdbk1、Curr_fdbk2、Curr_fdbk3:ADC采樣端口5)電位器采樣端口及按鈕表8-6實現(xiàn)FOC控制用到的MCU引腳表參數(shù)需要用到的信號對應(yīng)MCU引腳端口屬性INUPA8TIM1_CH1INVPA9TIM1_CH2INWPA10TIM1_CH3ENUPB13GPIO-OUTPUTENVPB14GPIO-OUTPUTENWPB15GPIO-OUTPUTHALL1PA15TIM2_CH1HALL2PB3TIM2_CH2HALL3PB10TIM2_CH3Curr_fdbk1PA1ADC1_IN2Curr_fdbk2PB1ADC1_IN12Curr_fdbk3PB0ADC1_IN15按鈕PC13GPIO-EXTI3電位器采樣PC2ADC1_IN8永磁同步電機有感FOC快速控制本部分是基于光電編碼器進(jìn)行位置檢測,通過STMotorControlSDK配置工程快速實現(xiàn)永磁同步電機有感FOC的控制。具體步驟如下:①首先打開軟件STMotorControlSDK5.4,點擊“NewProject”,如圖8-31所示,在Control欄中選擇NUCLEO-G431RB板。如圖8-32所示,在Power欄中選擇X-NUCLEO-IHM16M13sh驅(qū)動板。圖8-31開發(fā)板型號選擇圖8-32驅(qū)動板型號選擇實驗步驟如圖8-33所示,在Motor欄中選擇ShinanoLA052-080E3NL1,配置完成后點擊“OK”,彈出如圖8-34所示的電機參數(shù)導(dǎo)入工程的信息提示。圖8-34電機參數(shù)導(dǎo)入工程信息提示圖8-35MotorControlWorkbench主界面②工程生成新建工程后的MotorControlWorkbench主界面如圖8-35所示。圖8-33電機型號選擇實驗步驟點擊圖8-35右側(cè)的“M”,可以打開如圖8-36所示的電機參數(shù)設(shè)置界面,可以看到ShinanoLA052-080E3NL1永磁同步電機的參數(shù)已經(jīng)自動導(dǎo)入。圖8-36電機參數(shù)設(shè)置界面圖8-37傳感器參數(shù)設(shè)置界面點擊圖8-36上側(cè)的“Sensors”可以打開如圖8-37所示的傳感器參數(shù)設(shè)置界面,第一次運行時應(yīng)該勾選“EncoderAlignment”設(shè)定一下初始相位。實驗步驟點擊圖8-35右下側(cè)的“SpeedSensing”可以打開如圖8-38所示的速度位置反饋管理界面,將“Sensorselection”下拉框中默認(rèn)的“Sensor-less(Observer+PLL)”修改為“Quadratureencoder”。圖8-38速度位置反饋管理界面圖8-39啟動參數(shù)設(shè)置界面右鍵點擊圖8-35左側(cè)的“FirmwareDriveManagement”,在彈出菜單中選擇“Start-upparameters”打開如圖8-39所示的啟動參數(shù)設(shè)置界面,此時需要修改“Finalcurrentrampvalue”為1.6。實驗步驟點擊STMotorControlWorkbench主界面中的菜單“Tools”,再點擊“Generation”后輸入工程名字進(jìn)行保存,之后會打開如圖8-40所示的工程生成配置界面,點擊“GENERATE”,打開如圖8-41所示的工程生成界面,完成后點擊“RUNSTM32CubeIDE”按鈕即可打開如圖8-42所示的STM32CubeMX主界面。圖8-40工程生成配置界面圖8-41工程生成界面實驗步驟進(jìn)入ProjectManager界面選擇IDE后點擊“GENERATECODE”,代碼生成成功后,彈出如圖8-43所示的窗口,點擊“OpenProject”,打開如圖8-44所示STM32CubeIDE主界面,找到main.c文件,點擊“編譯”按鈕,待編譯完成后點擊“運行”按鈕即可。圖8-42STM32CubeMX主界面圖8-43代碼生成成功提示實驗步驟打開Workbench,按圖8-45所示連接設(shè)備,然后進(jìn)入Advanced界面,點擊“StartMotor”即可轉(zhuǎn)動電機,可在Monitor界面觀測到實時速度。電機連接及運行狀態(tài)如圖8-46所示,也可以按下板上的藍(lán)色按鈕啟動和停止電機。圖8-44STM32CubeIDE主界面圖8-45電機控制監(jiān)測界面圖8-46電機連接及運行狀態(tài)永磁同步電機轉(zhuǎn)速電流雙閉環(huán)控制工程配置步驟一:創(chuàng)建新項目在STM32CubeMX中,有NUCLEO-G431RB工程模板,新建一個STM32CubeMX工程,芯片型號為STM32G431RBTX。1)打開STM32CubeMX軟件,如圖8-47所示,點擊ACCESSTOMCUSELECTOR建立新工程。2)如圖8-48所示,在BoardSelector頁下的①號框中搜索NUCLEO-G431RB找到NUCLEO-G431RB工程模板,雙擊②加載模板。圖8-47新建工程圖8-48選擇工程模板實驗步驟步驟二:端口配置1)如圖8-49所示,可以看到PC13、PA2、PA3、PA5已經(jīng)配置好了,PA2、PA3是與電腦通訊的串口。如圖8-50所示,然后在RCC模式配置中進(jìn)行修改,HighSpeedClock(HSE)選擇Crystal/Ceramicresonator。圖8-49工程初始界面圖8-50RCC配置實驗步驟2)本實例中需要使用外部時鐘,所以在ClockConfiguration進(jìn)行更改。如圖8-51所示,進(jìn)行如下設(shè)置:①號框:外部晶振24M②號框:選擇HSE通道③號框:調(diào)整倍率為6④號框:選擇PLLCLK⑤號框:配置為170MHz3)如圖8-52所示,對照表8-6配置需要使用的端口,右鍵點擊選擇“EnterUserLabel”可以進(jìn)行重命名。圖8-51外部時鐘設(shè)置圖8-52端口配置實驗步驟4)ADC設(shè)置①如圖8-53所示,ADC1_IN2、ADC1_IN12、ADC1_IN15、ADC1_IN8設(shè)置為“Single-ended”(單端輸入)。圖8-53端口配置圖8-54ADC參數(shù)設(shè)置②ADC參數(shù)設(shè)置如圖8-54所示,NumberofConversion設(shè)置為4;ExternalTriggerConversionSource設(shè)置為外部觸發(fā)定時器1事件觸發(fā)轉(zhuǎn)換;4個通道順序為通道2、12、15、8,采樣事件為6.5個周期。實驗步驟③開啟DMA(直接存儲器訪問)并使能如圖8-55所示,開啟DMA:MODE選擇“Circular”(循環(huán)模式);IncrementAddress選擇“Memory”模式;DataWidth選擇“Word”“Word”(字對字傳輸);如圖8-56所示,使能DMA:在ADC設(shè)置中找到ScanConversionMode和DMAContinuousRequests并選擇“Enabled”。圖8-55DMA參數(shù)設(shè)置圖8-56使能DMA設(shè)置實驗步驟④開啟ADC中斷如圖8-57所示,在NVICSettings頁中勾選ADC1andADC2globalinterrupt的Enabled。圖8-58PWM定時器設(shè)置5)PWM定時器設(shè)置①TIM1設(shè)置:如圖8-58所示,ClockSource選擇內(nèi)部時鐘,通道1-3選擇PWM輸出。因為配置定時器TIM1的PWM輸出為中心對稱模式,預(yù)分頻系數(shù)為0,計數(shù)周期為8500,repetition為1,所以中斷頻率=PWM頻率=170M/8500/(1+1)=10kHz。TriggerEventselectionTRGO選擇UpdateEvent用于觸發(fā)ADC采樣。圖8-57NVIC參數(shù)設(shè)置實驗步驟如圖8-59所示,將PWM生成模式改為模式2,計數(shù)器的值大于比較捕獲寄存器值時輸出有效電平。②TIM2設(shè)置如圖8-60所示,ClockSource選擇“InternalClock”(內(nèi)部時鐘),CombinedChannels選擇“XORON/HallSensorMode”(霍爾模式),霍爾模式下每次HALL信號的變換都會產(chǎn)生中斷請求,并在中斷程序中計算電機位置和轉(zhuǎn)速。圖8-59PWM生成模式設(shè)置圖8-61霍爾傳感器參數(shù)設(shè)置圖8-60定時器模式和配置設(shè)置圖8-62NVIC設(shè)置實驗步驟6)CORDIC設(shè)置CORDIC算法即坐標(biāo)旋轉(zhuǎn)數(shù)字計算方法,通過不斷進(jìn)行坐標(biāo)旋轉(zhuǎn)變換最終得到近似計算結(jié)果。主要用于三角函數(shù)、雙曲線、指數(shù)、對數(shù)的計算。該算法通過基本的加和移位運算代替乘法運算,使得矢量的旋轉(zhuǎn)和定向的計算不再需要三角函數(shù)、乘法、開方、反三角、指數(shù)等函數(shù)。如圖8-63所示,勾選Activated。7)NVIC設(shè)置如圖8-64所示,在NVICInterruptTable頁中,勾選EXTIline[15:10]interrupts選項中的Enabled,使能按鍵中斷。圖8-64NVICInterrupt設(shè)置圖8-63CORDIC模式和配置設(shè)置7)NVIC設(shè)置如圖8-64所示,在NVICInterruptTable頁中,勾選EXTIline[15:10]interrupts選項中的Enabled,使能按鍵中斷。實驗步驟步驟三:生成工程代碼如圖8-65所示,在CodeGenerator頁中勾選“Generateperipheralinitializationasapairof‘.c/.h’filesperperipheral”。如圖8-66所示,ApplicationStructure選擇Basic,Toolchain/IDE選擇MDK-ARM,MinVersion選擇v5.27或以上版本。圖8-65工程參數(shù)設(shè)置圖8-66工程代碼生成永磁同步電機轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計打開生成的Keil程序,根據(jù)控制原理進(jìn)行編程。1)點擊左上角File選項新建motordrive.c和motordrive.h文件,分別保存到Src和Inc文件夾中,如圖8-67所示,在Keil軟件左邊的Project欄中右擊Application/User文件夾,在彈出菜單中點擊“ManageProjectItems...”,打開如圖8-68所示管理項目窗口,將motordrive.c文件添加到application/User里面。圖8-67項目管理界面圖8-68文件添加永磁同步電機轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計2)在motordrive.c和motordrive.h文件中添加電機控制中需要用的坐標(biāo)變換以及SVPWM控制程序等。①CORDIC算法通過角度計算正弦余弦值如圖8-69所示,在motordrive.c中編寫voidCORDIC_SinCos(floattheta,float*sincos)函數(shù)。如圖8-70所示,在motordrive.h聲明函數(shù)、添加需要用的變量。圖8-69CORDIC_SinCos函數(shù)代碼圖8-70變量添加代碼永磁同步電機轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計②Clark變換及Clark反變換如圖8-71所示,根據(jù)公式在motordrive.c中編寫Clark變換及Clark反變換函數(shù)。如圖8-72所示,在motordrive.h聲明函數(shù)和添加需要用的變量。圖8-71函數(shù)代碼添加圖8-72變量添加代碼永磁同步電機轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計③Park變換及Park反變換如圖8-73所示,根據(jù)公式在motordrive.c中編寫Park變換及Park反變換函數(shù)。如圖8-74所示,在motordrive.h聲明函數(shù)。圖8-73函數(shù)代碼添加圖8-74聲明函數(shù)代碼永磁同步電機轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計④SVPWM程序如圖8-75所示,在motordrive.c中編寫SVPWM程序。如圖8-76所示,在motordrive.h聲明函數(shù)和添加變量。圖8-75SVPWM函數(shù)代碼圖8-76變量添加代碼永磁同步電機轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計3)在main.c文件中編寫電機啟動函數(shù)并配置CORDIC功能①編寫電機啟停函數(shù)、添加所需變量并在main.h文件中聲明函數(shù)如圖8-77所示,在main.c文件中編寫電機啟停函數(shù)。如圖8-78所示,在main.c文件中添加需要用的變量。如圖8-79所示,在main.h文件中聲明函數(shù)。圖8-78變量添加代碼圖8-80CORDIC配置及使能代碼圖8-77電機啟停函數(shù)代碼②配置CORDIC并開啟TIM和使能如圖8-80所示,在main.c文件中添加CORDIC配置的代碼。圖8-79函數(shù)聲明代碼永磁同步電機轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計4)在stm32g4xx_it.c文件中實現(xiàn)電機FOC控制①如圖8-81所示,在stm32g4xx_it.c添加motordrive.h,用于使用電機控制函數(shù)。②編寫中斷回調(diào)函數(shù)并添加變量通過按鈕來改變電機的運行模式,運行模式分為電壓開環(huán)、轉(zhuǎn)速閉環(huán)和轉(zhuǎn)速電流雙閉環(huán)三種模式。如圖8-82所示,在stm32g4xx_it.c中添加電機運行模式的代碼。圖8-82電機運行模式代碼圖8-81引用頭文件代碼永磁同步電機轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計③如圖8-83所示,在stm32g4xx_it.h中添加電機參數(shù)和需要使用的變量。④編寫HALL獲取回調(diào)函數(shù)并判斷電機位置和計算轉(zhuǎn)速本節(jié)采用霍爾傳感器獲取轉(zhuǎn)子位置。定義變量并根據(jù)霍爾信號跳變時間間隔計算轉(zhuǎn)速,轉(zhuǎn)速計算公式為:圖8-83電機參數(shù)和變量定義代碼圖8-84HALL獲取回調(diào)函數(shù)變量定義代碼如圖8-84所示,在stm32g4xx_it.c中添加需要用到的變量。永磁同步電機轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計如圖8-85所示,在stm32g4xx_it.c中添加電機位置判斷和轉(zhuǎn)速計算代碼。圖8-85電機位置和轉(zhuǎn)速計算代碼圖8-86變量定義代碼⑤編寫ADC回調(diào)函數(shù)根據(jù)PMSM有傳感器FOC控制過程和流程圖編寫程序。首先進(jìn)行零速檢測,由所在扇區(qū)速度、時間計算電機位置角度。其次根據(jù)計算的位置角度計算其正余弦用于Park變換,然后根據(jù)ADC采樣值計算三相電流(實際上只有兩相有數(shù)值)。最后根據(jù)前面計算的數(shù)據(jù)進(jìn)行Clark變換和Park變換得到控制過程中需要的數(shù)值。如圖8-86所示,在stm32g4xx_it.c中添加需要用到的變量。永磁同步電機轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計圖8-87ADC回調(diào)函數(shù)代碼圖8-88三種運行模式代碼如圖8-87所示,在stm32g4xx_it.c中添加ADC回調(diào)函數(shù)代碼。⑥編寫三種運行模式如圖8-88所示,在stm32g4xx_it.c中添加三種運行模式的代碼。永磁同步電機轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計⑦運行SVPWM程序如圖8-89所示,在stm32g4xx_it.c中添加SVPWM運行代碼。圖8-92電機運行模式代碼圖8-89運行SVPWM程序⑧配置CCMSRAM進(jìn)行加速點擊圖8-90中左上角圓圈中的魔術(shù)棒,選擇Linker選項進(jìn)行配置,配置完畢后點擊右下角的Edit按鈕進(jìn)入到SV

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論