手寫STM32 FOC記錄-----6路互補(bǔ)PWM
????本文旨在詳細(xì)記錄學(xué)習(xí)FOC控制無刷電機(jī)的一些個(gè)人調(diào)試步驟以及心得體會。眾所周知FOC是一個(gè)比較復(fù)雜的控制算法,要完全掌握它,個(gè)人認(rèn)為最好的辦法就是一步一步搭建適合自己的軟硬件平臺。本文硬件使用ST官方提供的NUCLEO-G431RB+ X-NUCLEO-IHM16M1,后續(xù)計(jì)劃參考這套硬件平臺制作自己的PCB。硬件有了,軟件代碼部分從新建工程開始,首先記錄最基本的6路互補(bǔ)PWM的產(chǎn)生過程。
一、6路互補(bǔ)PWM的配置
1、時(shí)鐘配置
使用外部24MHz晶振

時(shí)鐘頻率配置成最快的170MHz
?

我是用的是jlink的SW模式,配置調(diào)試方式為SW
?

接下來是最重要的TIM1高級定時(shí)器的配置,高級定時(shí)器功能很強(qiáng)大,配置相對復(fù)雜,且需要針對對應(yīng)的硬件去做配置。高級定時(shí)器主要用于產(chǎn)生6路互補(bǔ)的PWM來驅(qū)動MOS管,加入死區(qū)防止電源導(dǎo)通,使用剎車引腳。高級定時(shí)器1通道1、2、3用于產(chǎn)生6路互補(bǔ)的PWM,通道4用于后續(xù)的?ADC 電流采樣。引腳配置與PWM極性請根據(jù)自己的硬件合理配置
?

配置PWM頻率

設(shè)置兩個(gè)與PWM相關(guān)的宏定義,便于后續(xù)代碼修改
?

配置剎車引腳極性,根據(jù)實(shí)際硬件配置

配置死區(qū)時(shí)間,根據(jù)所選MOS的規(guī)格來確定,本文配置的5,計(jì)算約290ns

互補(bǔ)PWM極性配置,根據(jù)硬件選擇,若上PMOS,下NMOS,極性相反 ,如果是上下橋都是NMOS,則需要將極性配置相同,否則上下橋MOS直接連通,電流很大會比較危險(xiǎn)。
?

最后配置一個(gè)LED引腳,用于指示代碼運(yùn)行狀態(tài)。
?

最終配置完成之后得硬件引腳分配如下。

生成工程后,應(yīng)首先對PWM模塊進(jìn)行測試,如果有示波器,先測PWM是否正常,死區(qū)時(shí)間是否正確。測試時(shí),建議新建.c和.h的測試文件,將要測試的模塊都在測試文件中實(shí)現(xiàn),在主函數(shù)中調(diào)用需要測試的模塊即可,這樣可以避免后續(xù)頻繁修改配置文件,導(dǎo)致代碼丟失。
?


最終示波器測試,其中的一路互補(bǔ)PWM波形如下
