• 正文
    • 準(zhǔn)備工作
    • ADC
    • CTU
    • CTU框圖
    • 配置和開發(fā)
    • 驅(qū)動(dòng)添加
    • 測試
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

FOC控制中電流的采樣

03/26 14:20
540
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

本篇筆記主要記錄基于恩智浦MPC5744P的電機(jī)FOC控制中電流的采樣。。

準(zhǔn)備工作

安裝S32DS for PA, 因?yàn)槲覀冊(cè)赟32DS下開發(fā)MPC5744P。

安裝S32DS 的SDK, ?我們使用最新版3.0.3

ADC

恩智浦的MPC5744P,含有的ADC子模塊有四個(gè),我們使用ADC0的通道0,和ADC1的通道0來做電流的同步采樣,通過PWM觸發(fā)CTU,CTU事件觸發(fā)ADC電流采樣,在CTU的中斷中去獲取電流的ADC值,經(jīng)過濾波后就可以做電流算法的閉環(huán)控制,這個(gè)芯片的ADC 有兩種模式。

我們使用電機(jī)控制模式,使用內(nèi)部集成的CTU去觸發(fā)ADC轉(zhuǎn)換。也可以采用etimer去觸發(fā)ADC,這次我們采用CTU觸發(fā),配置ADC,CTU時(shí)鐘為80M.

CTU

CTU的利用可以減少CPU的負(fù)擔(dān),具體的描述可以參考手冊(cè)下面的描述

CTU框圖

因?yàn)樽鲭姍C(jī)控制,電流的同步采樣非常關(guān)鍵,根據(jù)這個(gè)框圖可以看到,PWM的重裝載可以作為觸發(fā)CTU,CTU產(chǎn)生ADC命令請(qǐng)求去ADC轉(zhuǎn)換。CTU操作的模式有觸發(fā)模式和順序模式。我們采用觸發(fā)模式。

這里需要注意的是CTU的FIFO是不同的,0和1用來做快速采樣,而2和3用來配置作為低速采樣。

配置和開發(fā)

在S32DS開發(fā)環(huán)境中配置CTU和ADC,

ADC配置

更多參數(shù)的配置請(qǐng)參考收據(jù)手冊(cè),這個(gè)需要認(rèn)真閱讀手冊(cè)配置,可以參考例程。配置完成后,生成驅(qū)動(dòng),如果沒有錯(cuò)的話,我們這里需要完成CTU的中斷去獲取ADC值。

驅(qū)動(dòng)添加

需要初始化ADC和CTU,添加相應(yīng)的代碼,使用生成的配置結(jié)構(gòu)體

然后還需要完成CTU的中斷,

轉(zhuǎn)換結(jié)果的獲取有兩種API, 可以根據(jù)自己需要選擇,第一種API

/*FUNCTION**********************************************************************

*

* Function Name : CTU_DRV_GetConvData

* Description ? : This function returns the conversion data result aligned according

* to the alignment parameter.

*

* Implements ? ?: CTU_DRV_GetConvData_Activity

* END**************************************************************************/

uint16_t CTU_DRV_GetConvData(const uint32_t instance, const uint32_t fifoIdx, ctu_data_align_t alignment)

 

第二種API

/*FUNCTION**********************************************************************

*

* Function Name : CTU_DRV_GetConvResult

* Description ? : This function gets the full conversion result information, with

* the conversion data aligned according to the alignment parameter.

*

* Implements ? ?: CTU_DRV_GetConvResult_Activity

* END**************************************************************************/

void CTU_DRV_GetConvResult(const uint32_t instance, const uint32_t fifoIdx, const ctu_data_align_t alignment, ctu_conv_result_t * const result)

兩種都可以正確獲取到ADC值,獲取到原始值以后還需要做一些濾波來處理,這些流給大家去實(shí)現(xiàn),因?yàn)槟愕膽?yīng)用不一樣,可能采取的濾波算法也不一樣。有時(shí)候還需要采用多種濾波算法實(shí)現(xiàn)對(duì)不同干擾的抗擾能力。

測試

添加完代碼,沒有問題后就可以編譯下載到板子上調(diào)試觀察,可以看到,正確實(shí)現(xiàn)了電流的多路采樣,可以采集多組值,測量下這里就給大家簡單觀察下打斷點(diǎn)采集到的結(jié)果。

同時(shí)CTU還有其他一些觸發(fā)源,大家也可以實(shí)驗(yàn)一下,也可以軟件觸發(fā)。但在電機(jī)控制中,為了達(dá)到同步和快速的電流采樣,都是用觸發(fā)同步采樣,提供給算法實(shí)施閉環(huán)控制。有興趣的可以多研究研究。

恩智浦

恩智浦

恩智浦半導(dǎo)體創(chuàng)立于2006年,其前身為荷蘭飛利浦公司于1953年成立的半導(dǎo)體事業(yè)部,總部位于荷蘭埃因霍溫。恩智浦2010年在美國納斯達(dá)克上市。恩智浦2010年在美國納斯達(dá)克上市。恩智浦半導(dǎo)體致力于打造全球化解決方案,實(shí)現(xiàn)智慧生活,安全連結(jié)。

恩智浦半導(dǎo)體創(chuàng)立于2006年,其前身為荷蘭飛利浦公司于1953年成立的半導(dǎo)體事業(yè)部,總部位于荷蘭埃因霍溫。恩智浦2010年在美國納斯達(dá)克上市。恩智浦2010年在美國納斯達(dá)克上市。恩智浦半導(dǎo)體致力于打造全球化解決方案,實(shí)現(xiàn)智慧生活,安全連結(jié)。收起

查看更多

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

分享嵌入式開發(fā)過程中的案例、心得、方案、調(diào)試等故事,涉及MCU底層驅(qū)動(dòng)、Modbus通信、CAN通信、J1939通信協(xié)議棧、GUI,主要以NXP和ST的應(yīng)用為例來講解,項(xiàng)目開發(fā)中的點(diǎn)滴記錄。陪你度過Bug的折騰,方案的修改,成長的喜悅等。我們一起在嵌入式的江湖闖蕩,多年以后,當(dāng)回憶起那段歲月,不因默默無聞而悔恨。