版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七章
基于P-NUCLEO-IHM03套件的電機(jī)入門控制無感FOC快速控制實(shí)例1234無感方波控制實(shí)例無感速度模式控制實(shí)例旋鈕控制電機(jī)運(yùn)行速度實(shí)例5故障處理及恢復(fù)實(shí)例6API函數(shù)應(yīng)用實(shí)例概述本章共分為6個(gè)小節(jié),每個(gè)小節(jié)即一個(gè)實(shí)例,每個(gè)實(shí)例都配有詳細(xì)的步驟和解釋,帶大家逐步學(xué)習(xí)基于P-NUCLEO-IHM03套件的電機(jī)入門控制。具體內(nèi)容包括:無感FOC快速控制實(shí)例、無感方波控制實(shí)例、無感速度模式控制實(shí)例、旋鈕控制電機(jī)運(yùn)行速度實(shí)例、故障處理及恢復(fù)實(shí)例和API函數(shù)應(yīng)用實(shí)例。無感FOC快速控制實(shí)例01實(shí)驗(yàn)要求(1)實(shí)驗(yàn)?zāi)繕?biāo)①初步掌握MC-SDKV5.4的基本操作②快速實(shí)現(xiàn)電機(jī)的轉(zhuǎn)動(dòng)控制(2)實(shí)驗(yàn)條件①硬件平臺(tái):P-NUCLEO-IHM03套件②軟件平臺(tái):STMotorControlSDK5.4STM32CubeMXSTM32CubeIDE實(shí)驗(yàn)步驟參考視頻:/zh/evaluation-tools/p-nucleo-ihm03.html圖7-1參考視頻頁面實(shí)驗(yàn)步驟①首先打開軟件STMotorControlSDK5.4,點(diǎn)擊NewProject,在Control欄中選擇NUCLEO-G431RB板圖7-3驅(qū)動(dòng)板型號(hào)選擇在Power欄中選擇X-NUCLEO-IHM16M13sh驅(qū)動(dòng)板Motor欄中選擇GimBalGBM2804H-100T,配置完成后點(diǎn)擊確定,彈出電機(jī)參數(shù)導(dǎo)入工程的信息提示。圖7-2開發(fā)板型號(hào)選擇圖7-4電機(jī)型號(hào)選擇圖7-5電機(jī)參數(shù)導(dǎo)入工程信息提示實(shí)驗(yàn)步驟圖7-6MotorControlWorkbench主界面②工程生成點(diǎn)擊“SpeedSensing”,打開如圖7-7所示的速度位置反饋管理界面,其中“Sensorselection”下拉框?yàn)椤癝ensor-less(Observer+PLL)”,可以看出本實(shí)例是采用無感FOC方式來實(shí)現(xiàn)永磁同步電機(jī)的控制。圖7-7速度位置反饋管理界面實(shí)驗(yàn)步驟在圖7-9所示界面處視頻中選用IAREWARMIDE,此處建議選用STSTM32CubeIDE或者KeilMDK-ARM。選擇后點(diǎn)擊GENERATE。圖7-8工程命名保存界面圖7-9工程生成配置界面點(diǎn)擊STMotorControlWorkbench主界面中的菜單Tools再點(diǎn)擊Generation后輸入工程名字進(jìn)行保存。實(shí)驗(yàn)步驟完成后點(diǎn)擊RUNSTM32CubeIDE按鈕即可打開STM32CubeMX。圖7-10工程生成完成界面圖7-11STM32CubeMX主界面打開STM32CubeMX后如圖7-11所示,進(jìn)入ProjectManager界面選擇IDE后點(diǎn)擊GENERATECODE實(shí)驗(yàn)步驟圖7-12代碼生成成功提示圖7-15發(fā)布配置界面圖7-13選擇工作空間目錄圖7-14編譯運(yùn)行界面代碼生成成功后,點(diǎn)擊OpenProject,再點(diǎn)擊Launch,進(jìn)人STM32CubeIDE后找到main.c文件,如圖7-14所示,點(diǎn)擊編譯按鈕,待編譯完成后點(diǎn)擊運(yùn)行按鈕即可,發(fā)布配置界面如圖7-15所示。實(shí)驗(yàn)步驟然后打開Workbench,按圖7-16所示進(jìn)行設(shè)備連接,然后進(jìn)入Advanced界面,點(diǎn)擊StartMotor即轉(zhuǎn)動(dòng)電機(jī),可在Monitor界面觀測(cè)到實(shí)時(shí)速度。圖7-16電機(jī)控制監(jiān)測(cè)界面無感方波控制實(shí)例02實(shí)驗(yàn)要求(1)實(shí)驗(yàn)?zāi)繕?biāo)①了解電機(jī)的基本結(jié)構(gòu),熟悉BLDCM方波控制的基本原理。②基于BLDCM方波控制的原理,結(jié)合前面學(xué)習(xí)的STM32G4的知識(shí),通過MotorControlWorkbench5.4.8軟件包中自帶的6-StepsspeedregulationusingtheP-NUCLEO-IHM03kit的示例程序,基于P-NUCLEO-IHM03套件實(shí)現(xiàn)無刷直流電機(jī)六步方波控制。(2)實(shí)驗(yàn)條件①硬件平臺(tái):P-NUCLEO-IHM03套件②軟件平臺(tái):STMotorControlSDK5.4STM32CubeMXKeil5(5.33版本及以上)實(shí)驗(yàn)步驟(3)X-NUCLEO-IHM16M1板的硬件設(shè)置為了運(yùn)行示例程序,X-NUCLEO-IHM16M1板應(yīng)做如下設(shè)置:?將跳線J5和J6設(shè)置在打開位置;?將跳線J2設(shè)置在1-2位置;?將跳線J3設(shè)置在2-3位置;?可選擇關(guān)閉焊橋JP4和JP7,因?yàn)樗鼈儍H對(duì)電流檢測(cè)起作用,本例中并未涉及。(4)實(shí)驗(yàn)步驟①打開示例工程打開MotorControlWorkbench5.4.8軟件,如圖7-17所示,在軟件自帶例程里找到Six-stepdrivewithP-NUCLEO-IHM003kit并雙擊打開,打開時(shí)會(huì)跳出readme.txt文件,同時(shí)彈出如圖7-18所示的提示窗口,請(qǐng)仔細(xì)查看readme.txt文件后點(diǎn)擊“確定”按鈕以打開工程。圖7-17示例例程選擇圖7-18提示窗口實(shí)驗(yàn)步驟②保存工程將Sixstep_p-nucleo-ihm003.stmcx工程保存到另外一個(gè)空的文件夾下。請(qǐng)注意:請(qǐng)勿更改Sixstep_p-nucleo-ihm003.stmcx的名稱,否則示例將無法正常運(yùn)行或編譯。③更改extras.wb_def文件用記事本的方式打開extras.wb_def文件,如圖7-19所示,用來更改用戶I/F。修改SERIAL_COMMUNICATION鍵的值為false,以便在CLI中使用(默認(rèn)情況下,它是STMCMonitor用戶界面,此鍵值為true)。圖7-19
extras.wb_def文件更改④選擇對(duì)應(yīng)的軟件版本參數(shù)生成電機(jī)工程單擊“Tools”—>“Generation”菜單項(xiàng)。這將彈出如圖7-20所示的工程生成窗口,允許用戶選擇參數(shù):?STM32CubeMX選擇5.3.0或更高版本;?TargetToolchain選擇KeilMDK-ARMV5或IAREWARM版本;?FirewarePackageVersion選擇STM32FWV1.1.0或更高版本;?選中DriveType下方的HAL-HardwareAbstractionLayer復(fù)選框。然后,點(diǎn)擊“GENERATE”按鈕生成工程。圖7-20工程生成實(shí)驗(yàn)步驟⑤打開STM32CubeMX文件并生成Keil文件如圖7-21所示,點(diǎn)擊“GENERATECODE”生成Keil文件。⑥打開Keil文件編譯并下載至單片機(jī)中如圖7-22所示,打開Keil軟件后,點(diǎn)擊①框中的“OptionsforTargets…”,選擇ST-LinkDebugger,點(diǎn)擊②框中的“Settings”,打開如圖7-23所示配置窗口,添加Flsah,點(diǎn)擊“確定”后,再點(diǎn)擊圖7-22中③框中的“Translate”和④框中的“Download”燒錄程序至單片機(jī)中。按下板上的黑色按鈕重置MCU板,運(yùn)行示例,再按下板上的藍(lán)色按鈕啟動(dòng)和停止電機(jī),實(shí)現(xiàn)了無刷直流電機(jī)的六步無感控制。圖7-21生成Keil文件圖7-23配置窗口圖7-22程序燒錄界面無感速度模式控制實(shí)例03實(shí)驗(yàn)要求(1)實(shí)驗(yàn)?zāi)繕?biāo)①初步掌握MC-SDKV5.4的基本操作②實(shí)現(xiàn)電機(jī)的無傳感運(yùn)行,電機(jī)從開環(huán)啟動(dòng)到閉環(huán)運(yùn)行③使用API實(shí)現(xiàn)電機(jī)變速運(yùn)行,轉(zhuǎn)速在300RPM至600RPM之間進(jìn)行切換(2)實(shí)驗(yàn)條件①硬件平臺(tái):P-NUCLEO-IHM03套件②軟件平臺(tái):STMotorControlSDK5.4STM32CubeMXSTM32CubeIDE實(shí)驗(yàn)步驟參考視頻:/coursedetail?id=b69fe93850df41cda9906991e5ec100d①Workbench創(chuàng)建工程與7.1小節(jié)電機(jī)快速控制實(shí)例類似,新建一個(gè)工程,按圖7-24所示選擇Control,Power與Motor,點(diǎn)擊OK。圖7-24新建工程因?yàn)閰?shù)已經(jīng)配置完成,所以直接點(diǎn)擊“保存”按鈕進(jìn)行保存。保存完成后點(diǎn)擊“工程生成”按鈕生成代碼,如圖7-25所示,點(diǎn)擊“GENERATE”,完成后打開如圖7-26所示的工程生成窗口,點(diǎn)擊“RUNSTM32CubeIDE”按鈕打開STM32CubeMX。圖7-25工程生成圖7-26工程生成完成界面實(shí)驗(yàn)步驟②如圖7-27所示,在ProjectManager界面選擇STM32CubeIDE后點(diǎn)擊“GENERATECODE”。連接設(shè)備,注意電源也要連接。代碼生成成功后,點(diǎn)擊“OpenProject”,再點(diǎn)擊“Launch”,進(jìn)入STM32CubeIDE后找到main.c文件,如圖7-28所示,點(diǎn)擊“Debug”與“Run”,編譯成功。圖7-27
ProjectManager界面圖7-28編譯運(yùn)行界面然后打開Workbench,按圖7-29所示連接設(shè)備,然后進(jìn)入Advanced界面,點(diǎn)擊“StartMotor”即可轉(zhuǎn)動(dòng)電機(jī),可在Monitor界面觀測(cè)到實(shí)時(shí)速度。圖7-29電機(jī)控制監(jiān)測(cè)界面實(shí)驗(yàn)步驟③在圖7.2-7所示界面中輸入數(shù)值并點(diǎn)擊Execramp即可調(diào)節(jié)電機(jī)速度。圖7-30電機(jī)速度控制④上面使用Workbench對(duì)電機(jī)進(jìn)行簡(jiǎn)單調(diào)速,還可以通過代碼調(diào)用API對(duì)電機(jī)進(jìn)行精確調(diào)速,下面介紹如何調(diào)用API函數(shù)使得電機(jī)在300rpm與600rpm之間進(jìn)行均勻變速。本實(shí)例中使用的電機(jī)控制API函數(shù)包括:MC_ProgramSpeedRampMotor1();MC_StartMotor1();MC_StopMotor1();具體的API函數(shù)調(diào)用流程如下:首先,如圖7-31所示,打開main.c文件,在/*USERCODEBEGIN0*/與/*USERCODEEND0*/之間添加代碼。圖7-31用戶代碼添加實(shí)驗(yàn)步驟然后按照?qǐng)D7-32所示找到int
main(void)函數(shù),在while(1)函數(shù)中調(diào)用HandsOn1()。(注意:HandsOn1();請(qǐng)放置在/*USERCODEEND3*/之前)圖7-32
HandsOn1()函數(shù)調(diào)用然后按照?qǐng)D7-33所示點(diǎn)擊“Debug”按鈕,若彈出圖示窗口點(diǎn)擊“Switch”,然后點(diǎn)擊“Run”按鈕就可以看到電機(jī)變速旋轉(zhuǎn)。圖7-33工程編譯運(yùn)行實(shí)驗(yàn)步驟如果想要更準(zhǔn)確的觀測(cè)到電機(jī)的速度變化,可以打開MotorControlWorkbench,點(diǎn)擊電機(jī)監(jiān)測(cè)界面,如圖7-34所示,成功連接電機(jī)后打開界面中的示波器工具。圖7-34電機(jī)監(jiān)測(cè)界面圖7-35電機(jī)運(yùn)行速度曲線程序燒錄到單片機(jī)后,按下開發(fā)板的黑色按鈕(即復(fù)位鍵),可以觀測(cè)到電機(jī)的轉(zhuǎn)速變化,電機(jī)會(huì)在轉(zhuǎn)速變化五次后停止,顯示結(jié)果如圖7-35所示。旋鈕控制電機(jī)運(yùn)行速度實(shí)例04實(shí)驗(yàn)要求及條件(1)實(shí)驗(yàn)?zāi)繕?biāo)①學(xué)會(huì)使用STM32CubeMX修改已有的電機(jī)工程②學(xué)會(huì)ADC在電機(jī)工程中的使用③學(xué)習(xí)使用配置旋鈕等硬件對(duì)電機(jī)進(jìn)行調(diào)速(2)實(shí)驗(yàn)條件①硬件平臺(tái):P-NUCLEO-IHM03套件②軟件平臺(tái):STMotorControlSDK5.4STM32CubeMXSTM32CubeIDE實(shí)驗(yàn)步驟①首先在7.3無感速度模式控制實(shí)例的基礎(chǔ)上,使用STM32CubeMX打開已有的電機(jī)工程,進(jìn)入到如圖7-36所示的主界面,為了和7.3無感速度模式控制實(shí)例進(jìn)行區(qū)分,可將工程另行保存。按照?qǐng)D示流程,點(diǎn)擊“Analog”選取ADC1進(jìn)行ADC配置,將ADC1IN8配置為IN8Single-ended,然后右鍵選擇PC2管腳,將其配置為ADC1_IN8,此處管腳配置是為了后續(xù)將其作為旋鈕的ADC進(jìn)行使用,管腳配置完成后點(diǎn)擊“GENERATECODE”重新生成代碼即可。圖7-36STM32CubeMX主界面實(shí)驗(yàn)步驟②生成代碼后,點(diǎn)擊“OpenProject”,再點(diǎn)擊“Launch”,進(jìn)入STM32CubeIDE,打開工程文件,可以看到7.3小節(jié)實(shí)例的代碼依然保留,通過STM32CubeMX只是配置了管腳,并不影響代碼文件。下面介紹如何在工程中使用ADC實(shí)現(xiàn)旋鈕調(diào)速。本實(shí)例中用到的API函數(shù)包括:RCM_GetUserConvState();RCM_GetUserConv();RCM_RequestUserConv();首先,如圖7-37所示,在7.3小節(jié)實(shí)例函數(shù)定義后加入的代碼。圖7-37用戶代碼添加實(shí)驗(yàn)步驟然后,如圖7-38所示,在main函數(shù)處調(diào)用初始化函數(shù)HandsOn2_Init()以及HandsOn2()。注意:①HandsOn2();應(yīng)放置在/*USERCODEENDWHILE*/之前(注釋掉7.3小節(jié)實(shí)驗(yàn)調(diào)用的HandsOn1();)②HandsOn2_Init();建議放置在/*USERCODEBEGIN2*/
與/*USERCODEEND2*/之間圖7-38初始化函數(shù)調(diào)用③代碼添加完成后點(diǎn)擊“DEBUG”與“RUN”。當(dāng)代碼燒錄至單片機(jī)之后,按下黑色按鈕即可開始運(yùn)行,可以通過Workbench來觀測(cè)此時(shí)電機(jī)的運(yùn)行狀態(tài)。打開Workbench連接電機(jī)后按照之前的方法進(jìn)入監(jiān)測(cè)界面,如圖7-39所示左側(cè)是電機(jī)實(shí)際的轉(zhuǎn)速,右側(cè)是電機(jī)設(shè)定的轉(zhuǎn)速。圖7-39電機(jī)監(jiān)測(cè)界面實(shí)驗(yàn)步驟可以通過旋轉(zhuǎn)藍(lán)色旋鈕來控制電機(jī)在300rpm至800rpm的范圍內(nèi)運(yùn)行。電機(jī)運(yùn)行速度曲線圖如圖7-40所示。圖7-40電機(jī)運(yùn)行速度曲線轉(zhuǎn)速控制旋鈕示意故障處理及恢復(fù)實(shí)例05實(shí)驗(yàn)要求及條件(1)實(shí)驗(yàn)?zāi)繕?biāo)①學(xué)習(xí)使用STM32CubeMX生成Timer初始化②學(xué)會(huì)如何得到電機(jī)狀態(tài)③學(xué)會(huì)如何清除報(bào)錯(cuò)狀態(tài),讓電機(jī)重新運(yùn)行(2)實(shí)驗(yàn)條件①硬件平臺(tái):P-NUCLEO-IHM03套件②軟件平臺(tái):STMotorControlSDK5.4STM32CubeMXSTM32CubeIDE實(shí)驗(yàn)步驟①與7.4小節(jié)實(shí)例類似,用STM32CubeMX打開之前的工程文件,按照?qǐng)D7-41所示的流程初始化Timer,在點(diǎn)擊“Timers”后選擇TIM3,將ClockSource配置為InternalClock作為高頻計(jì)數(shù),然后將CounterPeriod配置為0xFFFF即65535即可,此時(shí)設(shè)定的最大溢出時(shí)間約為385.5us。圖7-41Timer初始化配置界面實(shí)驗(yàn)步驟②時(shí)鐘配置完成后,點(diǎn)擊“GENERATECODE”生成代碼,再點(diǎn)擊“OpenProject”和“Launch”,進(jìn)入STM32CubeIDE,打開工程文件,按照?qǐng)D7-42所示選擇打開stm32g4xx_mc_it.c文件,在void
ADC1_2_IRQHandler(void)函數(shù)代碼中的/*USERCODEBEGINADC1_2_IRQn0*/和/*USERCODEENDADC1_2_IRQn0*/之間以及/*USERCODEBEGINADC1_2_IRQn1*/和/*USERCODEENDADC1_2_IRQn1*/之間添加兩段代碼。
volatile
static
uint16_tFOC_Cycle;
volatile
static
uint32_tFOC_Time; TIM3->CNT=0; TIM3->CR1|=0x01;
TIM3->CR1&=0xFFFE;FOC_Cycle=TIM3->CNT;FOC_Time=(uint32_t)FOC_Cycle/170;圖7-42代碼添加界面實(shí)驗(yàn)步驟③再打開main.c文件,與7.4小節(jié)實(shí)例一樣,如圖7-43所示在定義的函數(shù)后添加代碼。然后,如圖7-44所示,在main函數(shù)中調(diào)用函數(shù)HandsOn3()(注釋掉HandsOn2();與HandsOn2_Init();)然后在main函數(shù)中調(diào)用即可(注釋掉HandsOn2();與HandsOn2_Init();)//HandsOn3FaultClear//static
uint16_tState_Mark;static
uint16_tFault_Mark;void
HandsOn3(void){
//GetMotorControlState// State_Mark=MC_GetSTMStateMotor1();
//GetFaultstate// Fault_Mark=MC_GetOccurredFaultsMotor1();
if(Fault_Mark!=MC_NO_FAULTS) {
HAL_Delay(2000);
MC_AcknowledgeFaultMotor1();
MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(),1000); }
if((State_Mark==IDLE)&&(Fault_Mark==MC_NO_FAULTS)) {
MC_StartMotor1(); }}圖7-43HandsOn3函數(shù)代碼添加界面圖7-44HandsOn3函數(shù)調(diào)用界面實(shí)驗(yàn)步驟④代碼添加完畢后,點(diǎn)擊“編譯”與“運(yùn)行”,當(dāng)程序燒錄到單片機(jī)上之后,電機(jī)會(huì)按照設(shè)定的轉(zhuǎn)速轉(zhuǎn)動(dòng),此時(shí)對(duì)電機(jī)進(jìn)行堵轉(zhuǎn),功率板上的三相指示燈會(huì)熄滅,當(dāng)結(jié)束堵轉(zhuǎn)后2秒(此處2秒是為了展示電機(jī)清除了錯(cuò)誤狀態(tài)而特意設(shè)定,日常應(yīng)用時(shí)電機(jī)會(huì)立即清除狀態(tài)并啟動(dòng)),電機(jī)會(huì)自動(dòng)清除Fault的狀態(tài)并且重新開始轉(zhuǎn)動(dòng),功率板上的三相指示燈會(huì)再次亮起來。可以同樣通過Workbench對(duì)電機(jī)運(yùn)行狀態(tài)進(jìn)行監(jiān)測(cè),打開Workbench并連接電機(jī)后進(jìn)入監(jiān)測(cè)界面,當(dāng)結(jié)束堵轉(zhuǎn)后,會(huì)看到圖7-45所示的狀態(tài)為Faultover并且顯示Fault為Speedfeedback。圖7-45電機(jī)故障報(bào)錯(cuò)實(shí)驗(yàn)步驟當(dāng)結(jié)束堵轉(zhuǎn)2秒后電機(jī)會(huì)清除錯(cuò)誤狀態(tài)并開始啟動(dòng),如圖7-46所示,此時(shí)可以看到電機(jī)狀態(tài)為Start并且轉(zhuǎn)速為0。圖7-46電機(jī)清除故障并啟動(dòng)圖7-47電機(jī)轉(zhuǎn)速恢復(fù)當(dāng)電機(jī)正常啟動(dòng)后,如圖7-47所示,可以看到電機(jī)狀態(tài)會(huì)變?yōu)镽un,并且轉(zhuǎn)速與堵轉(zhuǎn)前的轉(zhuǎn)速保持一致。API函數(shù)應(yīng)用實(shí)例06實(shí)驗(yàn)要求(1)實(shí)驗(yàn)?zāi)繕?biāo)①掌握MC-SDKV5.4的基本操作②使用API函數(shù)實(shí)現(xiàn)對(duì)電機(jī)的多種控制方式,熟悉API函數(shù)庫(2)實(shí)驗(yàn)條件①硬件平臺(tái):P-NUCLEO-IHM03套件②軟件平臺(tái):STMotorControlSDK5.4STM32CubeMXSTM32CubeIDE或Keil5(5.33版本及以上)API函數(shù)介紹如圖7-48所示,API函數(shù)位于MC-SDKV5.4中的電機(jī)應(yīng)用層,處于用戶層與電機(jī)庫之間,一般初級(jí)的電機(jī)應(yīng)用操作利用API函數(shù)即可完成,基于電機(jī)庫,便于用戶調(diào)用,更像是行為描述操作。例如,在7.3無感速度模式控制實(shí)例中用到的MC_ProgramSpeedRampMotor1()、MC_StartMotor1()、MC_StopMotor1()都是API函數(shù),他們分別是用來對(duì)電機(jī)進(jìn)行調(diào)速、啟動(dòng)和停止操作的。圖7-48API函數(shù)在MC-SDKV5.4中的位置API函數(shù)介紹表3-1展示了可以直接使用的API函數(shù)的名稱、參量、功能及返回值。下面利用表3-1中所示的部分函數(shù)作為示例,來展示API函數(shù)調(diào)用的具體操作,幫助讀者在7.3的基礎(chǔ)上更深入地了解API函數(shù)庫中其他函數(shù)的功能。實(shí)驗(yàn)步驟參考視頻:/coursedetail?id=e25dbe52d37b4e278c819ff6b61fe47e①Workbench創(chuàng)建工程與7.1小節(jié)電機(jī)快速控制實(shí)例類似,新建一個(gè)工程,按圖7.3-2所示選擇Control,Power與Motor,點(diǎn)擊OK。圖7-49新建工程因?yàn)閰?shù)已經(jīng)配置完成,所以直接點(diǎn)擊“保存”按鈕進(jìn)行保存。保存完成后點(diǎn)擊“編譯”按鈕,如圖7-50所示,點(diǎn)擊“GENERATE”,完成后打開如圖7-51所示窗口,點(diǎn)擊“RUNSTM32CubeIDE”按鈕打開STM32CubeMX。圖7-51工程生成完成界面圖7-50工程生成實(shí)驗(yàn)步驟②如圖7-52所示,在ProjectManager界面,Toolchain/IDE選擇STM32CubeIDE,F(xiàn)irewarePackageNameandVersion選擇STM32CubeFW_G4V1.4.0,然后點(diǎn)擊“GENERATECODE”。連接設(shè)備,注意電源也要連接。代碼生成成功后,點(diǎn)擊“OpenProject”,再點(diǎn)擊“Launch”,進(jìn)入STM32CubeIDE后找到main.c文件。圖7-52ProjectManager界面實(shí)驗(yàn)步驟③函數(shù)示例1:MC_ProgramSpeedRampMotor17.3小節(jié)中我們學(xué)習(xí)了如何對(duì)電機(jī)進(jìn)行調(diào)速,使用的是MC_ProgramSpeedRampMotor1()函數(shù),而這個(gè)函數(shù)不僅可以控制電機(jī)運(yùn)行的速度,改變第一個(gè)值的正負(fù)還能控制電機(jī)正反轉(zhuǎn)。打開main.c文件,如圖7-53所示,在用戶代碼區(qū)2添加代碼。圖7-53正向轉(zhuǎn)動(dòng)代碼若要電機(jī)反向轉(zhuǎn)動(dòng),如圖7-54所示,將第一個(gè)參數(shù)由300/6改為-300/6,即可實(shí)現(xiàn)電機(jī)以300rpm反向轉(zhuǎn)動(dòng)。圖7-53正向轉(zhuǎn)動(dòng)代碼若要電機(jī)反向轉(zhuǎn)動(dòng),如圖7-54所示,將第一個(gè)參數(shù)由300/6改為-300/6,即可實(shí)現(xiàn)電機(jī)以300rpm反向轉(zhuǎn)動(dòng)。圖7-54反向轉(zhuǎn)動(dòng)代碼實(shí)驗(yàn)步驟然后按照?qǐng)D7-55所示點(diǎn)擊“編譯”按鈕,若彈出圖示窗口點(diǎn)擊“switch”,然后點(diǎn)擊“運(yùn)行”按鈕將程序下載到MCU當(dāng)中,按下復(fù)位鍵后,如圖7-56所示就可以看到電機(jī)以300rpm的速度分別正轉(zhuǎn)和反轉(zhuǎn)。圖7-55工程編譯運(yùn)行圖7-56示例1結(jié)果Workbench展示實(shí)驗(yàn)步驟④函數(shù)示例2:MC_ProgramTorqueRampMotor1這個(gè)函數(shù)的作用是使電機(jī)運(yùn)行在力矩模式,第一個(gè)參數(shù)為力矩的正比例函數(shù),第二個(gè)參數(shù)為運(yùn)行的時(shí)間,其中第一個(gè)參數(shù)(假設(shè)為DI)的計(jì)算公式如下:(7.6-1)式中,參數(shù)如下:打開main.c文件,如圖7-57所示,在用戶代碼區(qū)2添加代碼。圖7-57力矩模式代碼同函數(shù)示例1中按照?qǐng)D7-55所示點(diǎn)擊“編譯”按鈕,若彈出圖示窗口點(diǎn)擊“Switch”,然后點(diǎn)擊“運(yùn)行”按鈕將程序下載到MCU當(dāng)中,按下開發(fā)板上的復(fù)位鍵后,如圖7-58所示,就可以看到電機(jī)以力矩模式轉(zhuǎn)動(dòng),在Workbench界面可以觀測(cè)轉(zhuǎn)矩的大小。圖7-58Workbench觀測(cè)轉(zhuǎn)矩實(shí)驗(yàn)步驟⑤函數(shù)示例3:MC_GetMecSpeedAverageMotor1、MC_GetIqdrefMotor1這個(gè)函數(shù)可以得到當(dāng)前電機(jī)的運(yùn)行速度,并且得到當(dāng)前Iq,Id的參考數(shù)據(jù)(速度返回時(shí)是以0.1Hz作為單位返回,若要轉(zhuǎn)換為rpm需要對(duì)結(jié)果*6),由于實(shí)驗(yàn)的結(jié)果需要調(diào)試,這里推薦使用Keil來進(jìn)行代碼的添加,以便后續(xù)的變量觀測(cè),這里展示使用Keil編寫的實(shí)驗(yàn)過程,有興趣的讀者可自行學(xué)習(xí)STM32CubeIDE的Debug功能并進(jìn)行實(shí)驗(yàn)。打開main.c文件,如圖7-59所示,在用戶代碼區(qū)2添加代碼,使電機(jī)在300rpm狀態(tài)下運(yùn)動(dòng)。圖7-59正向轉(zhuǎn)動(dòng)代碼如圖7-60所示,在while(1)循環(huán)中添加代碼,不斷讀取電機(jī)運(yùn)行速度和Iq,Id的參考數(shù)據(jù):圖7-60電機(jī)運(yùn)行參數(shù)獲取代碼實(shí)驗(yàn)步驟如圖7-61所示,完成代碼添加之后將程序編譯并燒錄到MCU上,無誤后按下開發(fā)板上的reset按鍵,電機(jī)開始旋轉(zhuǎn),之后進(jìn)入Keil的debug環(huán)節(jié)中。圖7-61編譯與燒錄如圖7-62所示,在debug界面找到要觀測(cè)的變量:Speed_RPM,Iqd_Ref_Value,Iqd_Real_Value,選中后右鍵將他們分別加入到watch1中,然后點(diǎn)擊“運(yùn)行”按鈕,觀察電機(jī)旋轉(zhuǎn)的過程中三個(gè)變量的值。圖7-62添加觀測(cè)變量并運(yùn)行實(shí)驗(yàn)步驟觀測(cè)結(jié)果如圖7-63所示。圖7-63觀測(cè)結(jié)果感謝聆聽第八章
基于P-NUCLEO-IHM03套件的有感電機(jī)控制案例無刷直流電機(jī)的有感方波控制案例12永磁同步電機(jī)的有感FOC控制案例概述本章基于P-NUCLEO-IHM03套件、57SW01無刷直流電機(jī)和ShinanoLA052-080E3NL1永磁同步電機(jī),進(jìn)行無刷直流電機(jī)和永磁同步電機(jī)的有感驅(qū)動(dòng)實(shí)踐。
共分為2個(gè)小節(jié),每個(gè)小節(jié)為一個(gè)典型案例,每個(gè)案例都配有詳細(xì)的步驟,帶大家實(shí)現(xiàn)電機(jī)的進(jìn)階控制。具體內(nèi)容包括:無刷直流電機(jī)的有感方波控制案例和永磁同步電機(jī)的有感FOC控制案例。無刷直流電機(jī)的有感方波控制案例01實(shí)驗(yàn)?zāi)繕?biāo)及條件(1)實(shí)驗(yàn)?zāi)繕?biāo)①了解電機(jī)的基本結(jié)構(gòu),熟悉BLDCM方波控制的基本原理。②基于BLDCM方波控制原理,結(jié)合前面學(xué)習(xí)的STM32G4的知識(shí),實(shí)現(xiàn)對(duì)無刷直流電機(jī)的有感控制,利用開發(fā)板上的按鈕實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn),并且通過電位器來實(shí)現(xiàn)電機(jī)的調(diào)速功能。(2)實(shí)驗(yàn)條件①硬件平臺(tái):P-NUCLEO-IHM03套件、57SW01無刷直流電機(jī)②軟件平臺(tái):STMotorControlSDK5.4STM32CubeMX(6.1.1版本及以上)Keil5(5.33版本及以上)57SW01無刷直流電機(jī)簡(jiǎn)介本節(jié)采用安裝了霍爾傳感器的57SW01無刷直流電機(jī)來進(jìn)行案例搭建。電機(jī)具體參數(shù)如表8-1所示,接線顏色對(duì)應(yīng)端子如表8-2所示。表8-157SW01電機(jī)具體參數(shù)表8-257SW01電機(jī)接線顏色對(duì)應(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)動(dòng)慣量7.5Kg.mm2長(zhǎng)度56mm重量0.5KgUVW+5VHALLAHALLBHALLCGnd藍(lán)白黃紅藍(lán)白黃黑控制信號(hào)以及端口屬性選擇本節(jié)采用安裝了霍爾傳感器的57SW01無刷直流電機(jī)來進(jìn)行案例搭建。根據(jù)BLDCM六步方波控制原理,實(shí)現(xiàn)BLDCM的正反轉(zhuǎn)及調(diào)速需要用到的信號(hào)有:1)INU、INV、INW:用于輸出PWM波形2)ENU、ENV、ENW:使能STSPIN830芯片3)H1、H2、H3:HALL傳感器信號(hào)接口4)ADC采樣端口及按鈕表8-3BLDCM實(shí)現(xiàn)正反轉(zhuǎn)及調(diào)速用到的資源列表需要用到的信號(hào)對(duì)應(yīng)MCU引腳端口屬性INUPA8TIM1_CH1INVPA9TIM1_CH2INWPA10TIM1_CH3ENUPB13GPIO-OUTPUTENVPB14GPIO-OUTPUTENWPB15GPIO-OUTPUTH1PA15GPIO-INPUTH2PB3GPIO-INPUTH3PB10GPIO-INPUT按鈕PC13GPIO-EXTI3電位器采樣PC2ADC1_IN8對(duì)應(yīng)MCU引腳以及端口屬性如表8-3所示:實(shí)驗(yàn)工程配置步驟一:創(chuàng)建新項(xiàng)目在STM32CubeMX中,有NUCLEO-G431RB工程模板,新建一個(gè)STM32CubeMX工程,芯片型號(hào)為STM32G431RBTX,如圖8-1所示,打開STM32CubeMX軟件,點(diǎn)擊“ACCESSTOMCUSELECTOR”建立新工程。如圖8-2所示,在BoardSelector頁下的①號(hào)框中搜索NUCLEO-G431RB找到NUCLEO-G431RB工程模板,雙擊②加載模板。圖8-1新建工程,選擇MCU圖8-2選擇工程模板實(shí)驗(yàn)工程配置打開如圖8-3所示的工程初始界面,可以看到PC13、PA2、PA3、PA5以及系統(tǒng)時(shí)鐘已經(jīng)配置好了,PA2、PA3是與電腦通訊的串口。圖8-3工程初始界面實(shí)驗(yàn)工程配置步驟二:端口配置配置需要使用的端口,如圖8-4所示,右鍵點(diǎn)擊端口選擇“EnterUserLabel”可以進(jìn)行重命名。圖8-4端口配置圖8-5配置ADC1①如圖8-5所示,選擇ADC1的IN8并設(shè)置采樣時(shí)間。實(shí)驗(yàn)工程配置②如圖8-6所示,TIM1的Channel1選擇為PWMGenerationCH1、Channel2選擇為PWMGenerationCH2、Channel3選擇為PWMGenerationCH3,點(diǎn)擊NVICSettings頁,如圖8-7所示,使能TIM1定時(shí)器更新中斷。因?yàn)榕渲枚〞r(shí)器TIM1的PWM輸出為中心對(duì)稱模式,預(yù)分頻系數(shù)為0,計(jì)數(shù)周期為8500,RepetitionCounter為1,PWM頻率的計(jì)算公式為:圖8-6配置TIM1圖8-7NVIC配置中斷頻率等于PWM頻率,根據(jù)式(8.1-1),可以計(jì)算得出PWM頻率為10k。實(shí)驗(yàn)工程配置如圖8-8所示,系統(tǒng)時(shí)鐘使用默認(rèn)配置為170MHz。圖8-8系統(tǒng)時(shí)鐘配置實(shí)驗(yàn)工程配置步驟三:生成工程代碼如圖8-9所示,點(diǎn)擊“GENERATECODE”按鈕生成工程代碼。圖8-9生成工程代碼軟件設(shè)計(jì)打開Keil軟件,根據(jù)BLDCM六步方波控制原理進(jìn)行編程。1)在main.c中定義需要的變量,具體包括:ADC采集值:adc_value啟動(dòng)狀態(tài):start_state速度參考值:speed_ref速度實(shí)際值:speed_relPWM值:pwm_value啟動(dòng)次數(shù):start_count如圖8-10所示,打開main.c文件,在/*USERCODEBEGIN0*/與/*USERCODEEND0*/之間添加變量定義代碼。圖8-10變量定義軟件設(shè)計(jì)②轉(zhuǎn)速給定程序如圖8-13所示,在上述代碼之后繼續(xù)添加轉(zhuǎn)速給定的代碼。圖8-13轉(zhuǎn)速給定程序代碼4)在stm32g4xx_it.c中定義電機(jī)控制相關(guān)變量,具體包括:PWM值:pwm_value霍爾傳感器狀態(tài):HALL霍爾傳感器換相前的狀態(tài):HALL_old速度實(shí)際值:speed_rel定時(shí)器中斷次數(shù):Interrupt_count圖8-14電機(jī)控制相關(guān)變量定義如圖8-14所示,打開stm32g4xx_it.c文件,在/*USERCODEBEGIN0*/與/*USERCODEEND0*/之間添加變量定義代碼。軟件設(shè)計(jì)5)在stm32g4xx_it.c中添加電機(jī)控制函數(shù)根據(jù)霍爾傳感器反映的轉(zhuǎn)子位置,分別使能和關(guān)閉對(duì)應(yīng)的相,并通過定時(shí)器的CCR寄存器設(shè)置占空比。如圖8-15所示,在上述代碼之后繼續(xù)添加電機(jī)控制函數(shù)代碼。圖8-15電機(jī)控制函數(shù)代碼軟件設(shè)計(jì)6)在定時(shí)器中斷函數(shù)中編寫電機(jī)控制程序①HALL獲取如圖8-16所示,在/*USERCODEBEGINTIM1_UP_TIM16_IRQn1*/與/*USERCODEENDTIM1_UP_TIM16_IRQn1*/之間添加HALL獲取的代碼。②計(jì)算電機(jī)轉(zhuǎn)速如圖8-17所示,在上述代碼之后繼續(xù)添加電機(jī)轉(zhuǎn)速獲取的代碼。圖8-16HALL獲取代碼圖8-17電機(jī)轉(zhuǎn)速獲取代碼軟件設(shè)計(jì)③轉(zhuǎn)速閉環(huán)如圖8-18所示,打開stm32g4xx_it.c文件,在/*USERCODEBEGIN0*/與/*USERCODEEND0*/之間繼續(xù)添加電機(jī)轉(zhuǎn)速閉環(huán)控制的變量定義代碼。如圖8-19所示,在電機(jī)轉(zhuǎn)速獲取的代碼之后繼續(xù)添加轉(zhuǎn)速閉環(huán)控制代碼。圖8-18轉(zhuǎn)速閉環(huán)控制變量定義代碼圖8-19轉(zhuǎn)速閉環(huán)控制代碼軟件設(shè)計(jì)7)燒錄程序如圖8-20所示,點(diǎn)擊①框中的“OptionsforTargets…”,選擇ST-LinkDebugger,點(diǎn)擊②框中的“Settings”,打開如圖8-21所示配置窗口,添加Flash,點(diǎn)擊“確定”后,再點(diǎn)擊圖8-20中③框中的“Translate”和④框中的“Download”燒錄程序至單片機(jī)中。圖8-20程序燒錄界面圖8-21配置窗口實(shí)驗(yàn)結(jié)果燒錄程序后按下黑色復(fù)位按鍵,然后按下藍(lán)色按鍵,可以看到電機(jī)旋轉(zhuǎn)起來,這時(shí)電機(jī)在六步方波控制模式下運(yùn)行,如圖8-22所示,可以通過STMStudio來觀察波形。在如圖8-23所示的區(qū)域右鍵點(diǎn)擊import,選擇觀測(cè)的燒錄程序和變量,來對(duì)電機(jī)的速度進(jìn)行觀測(cè)。圖8-22STMStudio變量監(jiān)測(cè)圖8-23變量導(dǎo)入實(shí)驗(yàn)結(jié)果點(diǎn)擊圖8-23右邊的省略號(hào),選擇工程所在文件夾中的axf燒錄文件,如圖8-24所示,會(huì)出現(xiàn)程序中的變量。
結(jié)果需要觀測(cè)的變量為speed_rel,選擇后點(diǎn)擊右邊的“import”把該變量加入到觀察列表。之后將變量送到VarView1中,右鍵點(diǎn)擊“Sendto”,點(diǎn)擊“VarView1”,點(diǎn)擊右上角的綠色“StartRecordingSession”按鍵。Speed_rel是電機(jī)實(shí)際轉(zhuǎn)速,轉(zhuǎn)速波形如圖8-25所示。圖8-24燒錄文件選擇圖8-25電機(jī)轉(zhuǎn)速監(jiān)測(cè)02永磁同步電機(jī)的有感FOC控制案例實(shí)驗(yàn)?zāi)繕?biāo)及條件(1)實(shí)驗(yàn)?zāi)繕?biāo)①了解電機(jī)的基本結(jié)構(gòu),熟悉永磁同步電機(jī)矢量控制的基本原理。②基于永磁同步電機(jī)矢量控制原理,結(jié)合前面學(xué)習(xí)的STM32G4知識(shí),位置檢測(cè)采用光電編碼器,快速實(shí)現(xiàn)永磁同步電機(jī)的有感FOC轉(zhuǎn)動(dòng)控制。③基于永磁同步電機(jī)矢量控制原理,結(jié)合前面學(xué)習(xí)的STM32G4知識(shí),位置檢測(cè)采用霍爾傳感器,實(shí)現(xiàn)對(duì)永磁同步電機(jī)的轉(zhuǎn)速電流雙閉環(huán)控制,利用按鈕進(jìn)行電機(jī)運(yùn)行模式的轉(zhuǎn)換,并且通過電位器來調(diào)節(jié)電機(jī)的轉(zhuǎn)速。(2)實(shí)驗(yàn)條件①硬件平臺(tái):P-NUCLEO-IHM03套件、ShinanoLA052-080E3NL1永磁同步電機(jī)②軟件平臺(tái):STMotorControlSDK5.4STM32CubeMX(6.1.1版本及以上)Keil5(5.33版本及以上)ShinanoLA052-080E3NL1永磁同步電機(jī)簡(jiǎn)介本節(jié)采用安裝了霍爾傳感器和光電編碼器的ShinanoLA052-080E3NL1永磁同步電機(jī)來進(jìn)行案例搭建。具體參數(shù)如表8-4所示,傳感器參數(shù)如表8-5所示。表8-4ShinanoLA052-080E3NL1電機(jī)具體參數(shù)表8-5ShinanoLA052-080E3NL1電機(jī)傳感器參數(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)動(dòng)慣量11.7Kg.mm2長(zhǎng)度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)測(cè)量三相定子電流。對(duì)于具有平衡三相繞組的電機(jī),只需測(cè)量?jī)蓚€(gè)電流即可,第三個(gè)電流可使用
公式計(jì)算得出。2)將三相電流轉(zhuǎn)換到靜止雙軸系統(tǒng)。該轉(zhuǎn)換通過測(cè)量的
、
和
值提供
和
變量。從定子的角度來看,值
和
是隨時(shí)間變化的正交電流值。3)測(cè)量在控制環(huán)最后一次迭代時(shí)的變換角度,通過該角度將靜止雙軸坐標(biāo)系轉(zhuǎn)換為旋轉(zhuǎn)坐標(biāo)系,以對(duì)準(zhǔn)轉(zhuǎn)子磁通。該轉(zhuǎn)換將
和
變換為
和
,值
和
是變換到旋轉(zhuǎn)坐標(biāo)系的正交電流。對(duì)于穩(wěn)態(tài)條件,
和
恒定。電流參考值的說明如下::調(diào)節(jié)磁通:控制轉(zhuǎn)矩4)將誤差信號(hào)饋入到PI控制器。電流控制器的輸出提供和,它們是將施加到電機(jī)上的電壓向量。5)新的變換角度通過編碼器脈沖輸入測(cè)得。這一新角度將指導(dǎo)FOC算法確定放置下一個(gè)電壓向量的位置。有感FOC控制過程6)使用新的角度將來自PI控制器的和輸出值進(jìn)行旋轉(zhuǎn)坐標(biāo)系到靜止雙軸坐標(biāo)系的變換,得到正交電壓值和。7)和值用于計(jì)算生成所需電壓向量所用的全新PWM占空比值。8)在每個(gè)PWM周期后都會(huì)計(jì)算機(jī)械速度()。圖8-26PMSM有傳感器FOC的框圖
圖8-27PMSM有傳感器FOC流程圖PMSM的位置檢測(cè)
獲取確切的轉(zhuǎn)子位置對(duì)于FOC正常工作至關(guān)重要。增量式光學(xué)編碼器提供兩個(gè)彼此正交的脈沖串,如圖8-29和8-30所示。一些編碼器具有索引脈沖,這有助于在空間上明確確切的轉(zhuǎn)子位置。如果脈沖串A超前脈沖串B,則電機(jī)將沿一個(gè)方向旋轉(zhuǎn),如果脈沖串B超前脈沖串A,則電機(jī)將沿相反方向旋轉(zhuǎn)。編碼器脈沖數(shù)越多,位置測(cè)量精度就越高。圖8-29特定旋轉(zhuǎn)方向的編碼器相位信號(hào)和索引脈沖圖8-30相反旋轉(zhuǎn)方向的編碼器相位信號(hào)和索引脈沖1)特定旋轉(zhuǎn)方向的編碼器相位信號(hào)和索引脈沖2)相反旋轉(zhuǎn)方向的編碼器相位信號(hào)和索引脈沖控制信號(hào)以及端口屬性選擇
PMSM矢量控制需要ADC采集端口來采集下橋臂串聯(lián)電阻的電壓來計(jì)算電流。需要用到的信號(hào)有:1)INU、INV、INW:用于輸出PWM波形2)ENU、ENV、ENW:使能STSPIN830芯片3)HALL1、HALL2、HALL3:HALL傳感器信號(hào)接口4)Curr_fdbk1、Curr_fdbk2、Curr_fdbk3:ADC采樣端口5)電位器采樣端口及按鈕表8-6實(shí)現(xiàn)FOC控制用到的MCU引腳表參數(shù)需要用到的信號(hào)對(duì)應(yīng)MCU引腳端口屬性INUPA8TIM1_CH1INVPA9TIM1_CH2INWPA10TIM1_CH3ENUPB13GPIO-OUTPUTENVPB14GPIO-OUTPUTENWPB15GPIO-OUTPUTHALL1PA15TIM2_CH1HALL2PB3TIM2_CH2HALL3PB10TIM2_CH3Curr_fdbk1PA1ADC1_IN2Curr_fdbk2PB1ADC1_IN12Curr_fdbk3PB0ADC1_IN15按鈕PC13GPIO-EXTI3電位器采樣PC2ADC1_IN8永磁同步電機(jī)有感FOC快速控制本部分是基于光電編碼器進(jìn)行位置檢測(cè),通過STMotorControlSDK配置工程快速實(shí)現(xiàn)永磁同步電機(jī)有感FOC的控制。具體步驟如下:①首先打開軟件STMotorControlSDK5.4,點(diǎn)擊“NewProject”,如圖8-31所示,在Control欄中選擇NUCLEO-G431RB板。如圖8-32所示,在Power欄中選擇X-NUCLEO-IHM16M13sh驅(qū)動(dòng)板。圖8-31開發(fā)板型號(hào)選擇圖8-32驅(qū)動(dòng)板型號(hào)選擇實(shí)驗(yàn)步驟如圖8-33所示,在Motor欄中選擇ShinanoLA052-080E3NL1,配置完成后點(diǎn)擊“OK”,彈出如圖8-34所示的電機(jī)參數(shù)導(dǎo)入工程的信息提示。圖8-34電機(jī)參數(shù)導(dǎo)入工程信息提示圖8-35MotorControlWorkbench主界面②工程生成新建工程后的MotorControlWorkbench主界面如圖8-35所示。圖8-33電機(jī)型號(hào)選擇實(shí)驗(yàn)步驟點(diǎn)擊圖8-35右側(cè)的“M”,可以打開如圖8-36所示的電機(jī)參數(shù)設(shè)置界面,可以看到ShinanoLA052-080E3NL1永磁同步電機(jī)的參數(shù)已經(jīng)自動(dòng)導(dǎo)入。圖8-36電機(jī)參數(shù)設(shè)置界面圖8-37傳感器參數(shù)設(shè)置界面點(diǎn)擊圖8-36上側(cè)的“Sensors”可以打開如圖8-37所示的傳感器參數(shù)設(shè)置界面,第一次運(yùn)行時(shí)應(yīng)該勾選“EncoderAlignment”設(shè)定一下初始相位。實(shí)驗(yàn)步驟點(diǎn)擊圖8-35右下側(cè)的“SpeedSensing”可以打開如圖8-38所示的速度位置反饋管理界面,將“Sensorselection”下拉框中默認(rèn)的“Sensor-less(Observer+PLL)”修改為“Quadratureencoder”。圖8-38速度位置反饋管理界面圖8-39啟動(dòng)參數(shù)設(shè)置界面右鍵點(diǎn)擊圖8-35左側(cè)的“FirmwareDriveManagement”,在彈出菜單中選擇“Start-upparameters”打開如圖8-39所示的啟動(dòng)參數(shù)設(shè)置界面,此時(shí)需要修改“Finalcurrentrampvalue”為1.6。實(shí)驗(yàn)步驟點(diǎn)擊STMotorControlWorkbench主界面中的菜單“Tools”,再點(diǎn)擊“Generation”后輸入工程名字進(jìn)行保存,之后會(huì)打開如圖8-40所示的工程生成配置界面,點(diǎn)擊“GENERATE”,打開如圖8-41所示的工程生成界面,完成后點(diǎn)擊“RUNSTM32CubeIDE”按鈕即可打開如圖8-42所示的STM32CubeMX主界面。圖8-40工程生成配置界面圖8-41工程生成界面實(shí)驗(yàn)步驟進(jìn)入ProjectManager界面選擇IDE后點(diǎn)擊“GENERATECODE”,代碼生成成功后,彈出如圖8-43所示的窗口,點(diǎn)擊“OpenProject”,打開如圖8-44所示STM32CubeIDE主界面,找到main.c文件,點(diǎn)擊“編譯”按鈕,待編譯完成后點(diǎn)擊“運(yùn)行”按鈕即可。圖8-42STM32CubeMX主界面圖8-43代碼生成成功提示實(shí)驗(yàn)步驟打開Workbench,按圖8-45所示連接設(shè)備,然后進(jìn)入Advanced界面,點(diǎn)擊“StartMotor”即可轉(zhuǎn)動(dòng)電機(jī),可在Monitor界面觀測(cè)到實(shí)時(shí)速度。電機(jī)連接及運(yùn)行狀態(tài)如圖8-46所示,也可以按下板上的藍(lán)色按鈕啟動(dòng)和停止電機(jī)。圖8-44STM32CubeIDE主界面圖8-45電機(jī)控制監(jiān)測(cè)界面圖8-46電機(jī)連接及運(yùn)行狀態(tài)永磁同步電機(jī)轉(zhuǎn)速電流雙閉環(huán)控制工程配置步驟一:創(chuàng)建新項(xiàng)目在STM32CubeMX中,有NUCLEO-G431RB工程模板,新建一個(gè)STM32CubeMX工程,芯片型號(hào)為STM32G431RBTX。1)打開STM32CubeMX軟件,如圖8-47所示,點(diǎn)擊ACCESSTOMCUSELECTOR建立新工程。2)如圖8-48所示,在BoardSelector頁下的①號(hào)框中搜索NUCLEO-G431RB找到NUCLEO-G431RB工程模板,雙擊②加載模板。圖8-47新建工程圖8-48選擇工程模板實(shí)驗(yàn)步驟步驟二:端口配置1)如圖8-49所示,可以看到PC13、PA2、PA3、PA5已經(jīng)配置好了,PA2、PA3是與電腦通訊的串口。如圖8-50所示,然后在RCC模式配置中進(jìn)行修改,HighSpeedClock(HSE)選擇Crystal/Ceramicresonator。圖8-49工程初始界面圖8-50RCC配置實(shí)驗(yàn)步驟2)本實(shí)例中需要使用外部時(shí)鐘,所以在ClockConfiguration進(jìn)行更改。如圖8-51所示,進(jìn)行如下設(shè)置:①號(hào)框:外部晶振24M②號(hào)框:選擇HSE通道③號(hào)框:調(diào)整倍率為6④號(hào)框:選擇PLLCLK⑤號(hào)框:配置為170MHz3)如圖8-52所示,對(duì)照表8-6配置需要使用的端口,右鍵點(diǎn)擊選擇“EnterUserLabel”可以進(jìn)行重命名。圖8-51外部時(shí)鐘設(shè)置圖8-52端口配置實(shí)驗(yàn)步驟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ā)定時(shí)器1事件觸發(fā)轉(zhuǎn)換;4個(gè)通道順序?yàn)橥ǖ?、12、15、8,采樣事件為6.5個(gè)周期。實(shí)驗(yàn)步驟③開啟DMA(直接存儲(chǔ)器訪問)并使能如圖8-55所示,開啟DMA:MODE選擇“Circular”(循環(huán)模式);IncrementAddress選擇“Memory”模式;DataWidth選擇“Word”“Word”(字對(duì)字傳輸);如圖8-56所示,使能DMA:在ADC設(shè)置中找到ScanConversionMode和DMAContinuousRequests并選擇“Enabled”。圖8-55DMA參數(shù)設(shè)置圖8-56使能DMA設(shè)置實(shí)驗(yàn)步驟④開啟ADC中斷如圖8-57所示,在NVICSettings頁中勾選ADC1andADC2globalinterrupt的Enabled。圖8-58PWM定時(shí)器設(shè)置5)PWM定時(shí)器設(shè)置①TIM1設(shè)置:如圖8-58所示,ClockSource選擇內(nèi)部時(shí)鐘,通道1-3選擇PWM輸出。因?yàn)榕渲枚〞r(shí)器TIM1的PWM輸出為中心對(duì)稱模式,預(yù)分頻系數(shù)為0,計(jì)數(shù)周期為8500,repetition為1,所以中斷頻率=PWM頻率=170M/8500/(1+1)=10kHz。TriggerEventselectionTRGO選擇UpdateEvent用于觸發(fā)ADC采樣。圖8-57NVIC參數(shù)設(shè)置實(shí)驗(yàn)步驟如圖8-59所示,將PWM生成模式改為模式2,計(jì)數(shù)器的值大于比較捕獲寄存器值時(shí)輸出有效電平。②TIM2設(shè)置如圖8-60所示,ClockSource選擇“InternalClock”(內(nèi)部時(shí)鐘),CombinedChannels選擇“XORON/HallSensorMode”(霍爾模式),霍爾模式下每次HALL信號(hào)的變換都會(huì)產(chǎn)生中斷請(qǐng)求,并在中斷程序中計(jì)算電機(jī)位置和轉(zhuǎn)速。圖8-59PWM生成模式設(shè)置圖8-61霍爾傳感器參數(shù)設(shè)置圖8-60定時(shí)器模式和配置設(shè)置圖8-62NVIC設(shè)置實(shí)驗(yàn)步驟6)CORDIC設(shè)置CORDIC算法即坐標(biāo)旋轉(zhuǎn)數(shù)字計(jì)算方法,通過不斷進(jìn)行坐標(biāo)旋轉(zhuǎn)變換最終得到近似計(jì)算結(jié)果。主要用于三角函數(shù)、雙曲線、指數(shù)、對(duì)數(shù)的計(jì)算。該算法通過基本的加和移位運(yùn)算代替乘法運(yùn)算,使得矢量的旋轉(zhuǎn)和定向的計(jì)算不再需要三角函數(shù)、乘法、開方、反三角、指數(shù)等函數(shù)。如圖8-63所示,勾選Activated。7)NVIC設(shè)置如圖8-64所示,在NVICInterruptTable頁中,勾選EXTIline[15:10]interrupts選項(xiàng)中的Enabled,使能按鍵中斷。圖8-64NVICInterrupt設(shè)置圖8-63CORDIC模式和配置設(shè)置7)NVIC設(shè)置如圖8-64所示,在NVICInterruptTable頁中,勾選EXTIline[15:10]interrupts選項(xiàng)中的Enabled,使能按鍵中斷。實(shí)驗(yàn)步驟步驟三:生成工程代碼如圖8-65所示,在CodeGenerator頁中勾選“Generateperipheralinitializationasapairof‘.c/.h’filesperperipheral”。如圖8-66所示,ApplicationStructure選擇Basic,Toolchain/IDE選擇MDK-ARM,MinVersion選擇v5.27或以上版本。圖8-65工程參數(shù)設(shè)置圖8-66工程代碼生成永磁同步電機(jī)轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計(jì)打開生成的Keil程序,根據(jù)控制原理進(jìn)行編程。1)點(diǎn)擊左上角File選項(xiàng)新建motordrive.c和motordrive.h文件,分別保存到Src和Inc文件夾中,如圖8-67所示,在Keil軟件左邊的Project欄中右擊Application/User文件夾,在彈出菜單中點(diǎn)擊“ManageProjectItems...”,打開如圖8-68所示管理項(xiàng)目窗口,將motordrive.c文件添加到application/User里面。圖8-67項(xiàng)目管理界面圖8-68文件添加永磁同步電機(jī)轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計(jì)2)在motordrive.c和motordrive.h文件中添加電機(jī)控制中需要用的坐標(biāo)變換以及SVPWM控制程序等。①CORDIC算法通過角度計(jì)算正弦余弦值如圖8-69所示,在motordrive.c中編寫voidCORDIC_SinCos(floattheta,float*sincos)函數(shù)。如圖8-70所示,在motordrive.h聲明函數(shù)、添加需要用的變量。圖8-69CORDIC_SinCos函數(shù)代碼圖8-70變量添加代碼永磁同步電機(jī)轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計(jì)②Clark變換及Clark反變換如圖8-71所示,根據(jù)公式在motordrive.c中編寫Clark變換及Clark反變換函數(shù)。如圖8-72所示,在motordrive.h聲明函數(shù)和添加需要用的變量。圖8-71函數(shù)代碼添加圖8-72變量添加代碼永磁同步電機(jī)轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計(jì)③Park變換及Park反變換如圖8-73所示,根據(jù)公式在motordrive.c中編寫Park變換及Park反變換函數(shù)。如圖8-74所示,在motordrive.h聲明函數(shù)。圖8-73函數(shù)代碼添加圖8-74聲明函數(shù)代碼永磁同步電機(jī)轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計(jì)④SVPWM程序如圖8-75所示,在motordrive.c中編寫SVPWM程序。如圖8-76所示,在motordrive.h聲明函數(shù)和添加變量。圖8-75SVPWM函數(shù)代碼圖8-76變量添加代碼永磁同步電機(jī)轉(zhuǎn)速電流雙閉環(huán)控制軟件設(shè)計(jì)3)在main.c文件中編寫電機(jī)啟動(dòng)函數(shù)并配置CORDIC功能①編寫電機(jī)啟停函數(shù)、添加所需變量并在main.h文件中聲明函數(shù)如圖8-77所示,在main.c文件中編寫電機(jī)啟停函數(shù)。如圖8-78所示,在main.c文件中添加需要用的變量。如圖8-79所示,在main.h文件中聲明函數(shù)。圖8-78變量添加代碼圖8-80CORDIC配置及使能代碼圖8-77電機(jī)啟停函數(shù)代碼②配置CORDIC并開啟TIM和使能如圖8-80所示,在ma
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 律師年度工作計(jì)劃
- 律師事務(wù)所的實(shí)習(xí)報(bào)告范文10篇
- 客服主管工作計(jì)劃15篇
- 高老頭讀后感1000字
- 初一教師教學(xué)工作計(jì)劃5篇范文
- 乒乓球比賽作文600字錦集八篇
- 班長(zhǎng)的辭職報(bào)告模板集合9篇
- (一)制定招聘戰(zhàn)略-案例導(dǎo)入-江西人力資源網(wǎng)
- 2025年油炸類制品項(xiàng)目發(fā)展計(jì)劃
- 健康管理咨詢服務(wù)合同(2篇)
- 新人模特經(jīng)紀(jì)合同范例
- 電動(dòng)車自燃應(yīng)急預(yù)案
- 語法辨析-中考語文真題題源解密(遼寧版)(帶答案)
- 2024-2030年中國電子駐車制動(dòng)器(EPB)行業(yè)發(fā)展現(xiàn)狀及前景趨勢(shì)研究報(bào)告
- 油氣管道泄漏事故應(yīng)急處理方案
- 三方代收款委托協(xié)議書范文
- 2023-2024學(xué)年全國小學(xué)二年級(jí)上英語人教版期末考試試卷(含答案解析)
- 2024-2030年中國有機(jī)蔬菜市場(chǎng)營銷模式建議及供需渠道分析報(bào)告
- 2024小學(xué)語文教學(xué)及說課課件:二年級(jí)下冊(cè)《傳統(tǒng)節(jié)日》
- 英語應(yīng)用文寫作智慧樹知到答案2024年湖北大學(xué)
- 居住權(quán)合同協(xié)議書范本簡(jiǎn)易
評(píng)論
0/150
提交評(píng)論