0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用電機(jī)控制中PLU模塊與CTIMER計(jì)數(shù)器解碼電機(jī)

恩智浦MCU加油站 ? 來(lái)源:恩智浦NXP社區(qū) ? 作者:恩智浦NXP社區(qū) ? 2022-12-01 09:09 ? 次閱讀

電機(jī)控制中,實(shí)時(shí)獲取電機(jī)轉(zhuǎn)子位置是非常重要的。通過(guò)監(jiān)測(cè)電機(jī)軸或機(jī)械設(shè)備運(yùn)動(dòng)的位置可以計(jì)算電機(jī)轉(zhuǎn)速。當(dāng)電機(jī)轉(zhuǎn)動(dòng)時(shí),編碼盤傳感器(Encoder)會(huì)發(fā)出類似于正交PWM波的高低電平信號(hào),對(duì)此信號(hào)進(jìn)行解碼,可以得到電機(jī)轉(zhuǎn)動(dòng)角度及方向。

DSC系列MCU的Quad Timer(TMR)外設(shè)可以對(duì)正交編碼信號(hào)解碼,有些客戶使用LPC55XX系列也需要解碼,本文用PLU模塊對(duì)Encoder的信號(hào)解碼,用計(jì)數(shù)器計(jì)數(shù)解碼信號(hào),進(jìn)而得到轉(zhuǎn)子位置及速度。

1. 標(biāo)準(zhǔn)推拉輸出

DSP系列MCU的Quad Timer(TMR)外設(shè)可以對(duì)正交編碼信號(hào)進(jìn)行解碼,如下:

在進(jìn)行解碼時(shí),其實(shí)是兩個(gè)信號(hào)發(fā)生電平翻轉(zhuǎn)時(shí)進(jìn)行計(jì)數(shù),那么可以理解為對(duì)這兩個(gè)信號(hào)做異或運(yùn)算,對(duì)結(jié)果信號(hào)上升沿和下降沿進(jìn)行計(jì)數(shù),就可實(shí)現(xiàn)解碼功能。利用可編程邏輯單元PLU對(duì)正交編碼信號(hào)做異或運(yùn)算,利用CTIMER計(jì)數(shù)器對(duì)輸出信號(hào)進(jìn)行計(jì)數(shù),同樣可以達(dá)到Quad Timer(TMR)解碼效果。

2. 配置PLU與CTIMER

PLU(Programmable Logic Unit),即可編程邏輯單元,可創(chuàng)建小型組合與時(shí)序邏輯電路。LPC804與LPC55XX的PLU在使用上是完全相同的,包含了6個(gè)輸入、8個(gè)輸出、26個(gè)5輸入查找表(LUT)、4個(gè)觸發(fā)器(state Flip-Flops),詳細(xì)介紹如下: https://www.nxpic.org.cn/module/forum/thread-622667-1-1.html 用PIO_19與PIO_20產(chǎn)生類似于正交編碼信號(hào),將兩路信號(hào)輸入PLU模塊的IN3與IN4,進(jìn)行異或運(yùn)算,再輸出到OUT5,將OUT5信號(hào)輸入到CTIMER計(jì)數(shù)器進(jìn)行計(jì)數(shù),如下:

以LPC55S69-EVK開(kāi)發(fā)板為例,具體的引腳使用如下:

配置PLU與CTIMER引腳,如下:

打開(kāi)PLU與CTIMER時(shí)鐘,如下:

添加PLU外設(shè),如下:

配置CTIMER外設(shè),在main.c文件中添加CTIMER初始化,上升沿與下降沿都可觸發(fā)計(jì)數(shù)器。假如電機(jī)轉(zhuǎn)一圈觸發(fā)4096次計(jì)數(shù)器,電機(jī)在旋轉(zhuǎn)60°時(shí)要控制電機(jī)變相,當(dāng)計(jì)數(shù)器值為4096/6 = 682時(shí),觸發(fā)一次ctimer中斷,在中斷處理函數(shù)中控制電機(jī),如下:

uint32_t motor_flag = 0;
const ctimer_config_t CTIMER0_config = {
  .mode = kCTIMER_IncreaseOnBothEdge,
  .input = kCTIMER_Capture_0,
  .prescale = 0
};
const ctimer_match_config_t CTIMER0_Match_0_config = {
  .matchValue = 681,
  .enableCounterReset = true,
  .enableCounterStop = false,
  .outControl = kCTIMER_Output_NoAction,
  .outPinInitState = false,
  .enableInterrupt = true
};
/*Single callback functions definition */
ctimer_callback_t CTIMER0_callback[] ={ctimer0_match0_callback};
static void CTIMER0_init(void) {
  /* CTIMER0 peripheral initialization */
  CTIMER_Init(CTIMER0, &CTIMER0_config);
  /* Interrupt vector CTIMER0_IRQn priority settings in theNVIC. */
  NVIC_SetPriority(CTIMER0_IRQn, 0);
  /* Match channel 0 of CTIMER0 peripheral initialization*/
  CTIMER_SetupMatch(CTIMER0, kCTIMER_Match_0, &CTIMER0_Match_0_config);
  CTIMER_RegisterCallBack(CTIMER0,CTIMER0_callback, kCTIMER_SingleCallback);
  CTIMER_StartTimer(CTIMER0);
}
void ctimer0_match0_callback(uint32_t flags)
{
    motor_flag++;
}

下載PLU configure tool,下載鏈接如下:

https://www.nxp.com/mcu-plu-config-tool 打開(kāi)PLU配置工具,選擇原理圖設(shè)計(jì),做一個(gè)異或運(yùn)算,如下:

7305c920-7110-11ed-8abf-dac502259ad0.jpg

點(diǎn)擊菜單欄File->Export->PLU source file將其導(dǎo)出為C文件,將C文件的內(nèi)容復(fù)制到main函數(shù)中,如下:

    PLU->LUT[4].INP_MUX[0] = 0x00000003; /* IN3 (IN3) */
    PLU->LUT[4].INP_MUX[1] = 0x00000004; /* IN4 (IN4) */
    PLU->LUT[4].INP_MUX[2] = 0x0000003F; /* default */
    PLU->LUT[4].INP_MUX[3] = 0x0000003F; /* default */
    PLU->LUT[4].INP_MUX[4] = 0x0000003F; /* default */
    PLU->LUT_TRUTH[4] = 0x66666666; /* XOR01 (XOR01) STD 2INPUT XOR */
    PLU->OUTPUT_MUX[5] = 0x00000004; /* LUT4 (XOR01) ->OUT5 */

利用GPIO產(chǎn)生正交編碼信號(hào),CTimer進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)到682時(shí)會(huì)觸發(fā)中斷進(jìn)入回調(diào)函數(shù),計(jì)數(shù)器值(TC)會(huì)自動(dòng)清零,重新計(jì)數(shù),如下:

while(1) {
     GPIO_PortToggle(GPIO,0, 1u << 19);
     SysTick_DelayTicks(5U);
     GPIO_PortToggle(GPIO,0, 1u << 20);
     SysTick_DelayTicks(5U);
        motor_counter = CTIMER0->TC;    }

3. 測(cè)試結(jié)果 邏輯分析儀測(cè)試結(jié)果如下:

73245ad4-7110-11ed-8abf-dac502259ad0.jpg

調(diào)試時(shí),計(jì)數(shù)器的值如下所示:

73428d10-7110-11ed-8abf-dac502259ad0.jpg

示例代碼:LPC55S69_Project_motor_counter.zip

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 電機(jī)控制
    +關(guān)注

    關(guān)注

    3519

    文章

    1838

    瀏覽量

    267878
  • 電機(jī)
    +關(guān)注

    關(guān)注

    142

    文章

    8841

    瀏覽量

    144637
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2248

    瀏覽量

    94187
  • TMR
    TMR
    +關(guān)注

    關(guān)注

    4

    文章

    75

    瀏覽量

    18945
  • plu
    plu
    +關(guān)注

    關(guān)注

    1

    文章

    6

    瀏覽量

    7257

原文標(biāo)題:利用可編程邏輯單元PLU與CTIMER計(jì)數(shù)器解碼電機(jī)

文章出處:【微信號(hào):NXP_SMART_HARDWARE,微信公眾號(hào):恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何通過(guò)labview和NI USB 6341(4計(jì)數(shù)器控制4相5線步進(jìn)電機(jī)?

    本人硬件有NI USB 6341最多能4路計(jì)數(shù)器輸出(可以分別生成PWM)。一個(gè)4相5線步進(jìn)電機(jī)一個(gè)ULN2003電機(jī)驅(qū)動(dòng)。我想用labview
    發(fā)表于 12-23 13:53

    請(qǐng)分享Ctimer計(jì)數(shù)器捕獲程序的示例程序

    我目前正在研究 OM13098LPCxpresso54628 開(kāi)發(fā)板。請(qǐng)分享 Ctimer 計(jì)數(shù)器捕獲程序的示例程序,或者配置 ctimer 每 1 秒捕獲一次輸入脈沖所涉及的步驟是什么。
    發(fā)表于 06-09 07:33

    基于VHDL的正交編碼脈沖電路解碼計(jì)數(shù)器設(shè)計(jì)

    針對(duì)正交編碼脈沖電路脈沖(quadratureencoderpulse,QEP)的解碼計(jì)數(shù)的問(wèn)題,給出了QEP解碼計(jì)數(shù)器的解決方案.本方案在復(fù)雜可編程邏輯
    發(fā)表于 03-01 16:36 ?98次下載

    利用負(fù)載量反饋的通用電機(jī)速度控制器電路圖

    利用負(fù)載量反饋的通用電機(jī)速度控制器電路圖
    發(fā)表于 04-03 09:10 ?878次閱讀
    <b class='flag-5'>利用</b>負(fù)載量反饋的通<b class='flag-5'>用電機(jī)</b>速度<b class='flag-5'>控制器</b>電路圖

    利用復(fù)位端構(gòu)成的模6計(jì)數(shù)器電路

    利用復(fù)位端構(gòu)成的模6計(jì)數(shù)器電路 利用集成計(jì)數(shù)器的預(yù)置端和復(fù)位端可以構(gòu)成任意模計(jì)數(shù)器。下圖所示依次是利用
    發(fā)表于 01-12 13:54 ?5306次閱讀
    <b class='flag-5'>利用</b>復(fù)位端構(gòu)成的模6<b class='flag-5'>計(jì)數(shù)器</b>電路

    環(huán)形計(jì)數(shù)器和扭環(huán)形計(jì)數(shù)器

    環(huán)形計(jì)數(shù)器和扭環(huán)形計(jì)數(shù)器 移位寄存也可以構(gòu)成計(jì)數(shù)器,稱為移位型計(jì)數(shù)器。它有兩種結(jié)構(gòu):環(huán)形計(jì)數(shù)器
    發(fā)表于 01-12 14:07 ?9566次閱讀

    TER偏航紐纜計(jì)數(shù)器原理

    偏航紐纜計(jì)數(shù)器用于控制工業(yè)機(jī)械的動(dòng)作。通過(guò)諸如接觸或可編程控制器用作電機(jī)輔助控制裝置。
    發(fā)表于 03-08 11:20 ?4900次閱讀

    計(jì)數(shù)器控制及應(yīng)用

    計(jì)數(shù)是一種最簡(jiǎn)單基本的運(yùn)算,計(jì)數(shù)器就是實(shí)現(xiàn)這種運(yùn)算的邏輯電路,計(jì)數(shù)器在數(shù)字系統(tǒng)主要是對(duì)脈沖的個(gè)數(shù)進(jìn)行計(jì)數(shù),以實(shí)現(xiàn)測(cè)量、
    發(fā)表于 09-25 10:13 ?8次下載
    <b class='flag-5'>計(jì)數(shù)器</b>的<b class='flag-5'>控制</b>及應(yīng)用

    24進(jìn)制計(jì)數(shù)器的設(shè)計(jì)

    討論,但各文獻(xiàn)側(cè)重于多次置數(shù)控制方法的實(shí)現(xiàn)以及側(cè)重multsim仿真軟件的應(yīng)用。因此義主要討論的是利用已有集成計(jì)數(shù)器設(shè)計(jì)任意計(jì)數(shù)器時(shí),其實(shí)
    發(fā)表于 11-09 16:36 ?81次下載
    24進(jìn)制<b class='flag-5'>計(jì)數(shù)器</b>的設(shè)計(jì)

    計(jì)數(shù)器原理

    計(jì)數(shù)是一種最簡(jiǎn)單基本的運(yùn)算,計(jì)數(shù)器就是實(shí)現(xiàn)這種運(yùn)算的邏輯電路,計(jì)數(shù)器在數(shù)字系統(tǒng)主要是對(duì)脈沖的個(gè)數(shù)進(jìn)行計(jì)數(shù),以實(shí)現(xiàn)測(cè)量、
    的頭像 發(fā)表于 01-24 14:35 ?6.5w次閱讀

    基于計(jì)數(shù)器按鈕控制電機(jī)程序啟動(dòng)與停止

    基于計(jì)數(shù)器按鈕控制電機(jī)程序啟動(dòng)與停止
    發(fā)表于 04-02 16:50 ?16次下載
    基于<b class='flag-5'>計(jì)數(shù)器</b>按鈕<b class='flag-5'>控制</b>的<b class='flag-5'>電機(jī)</b>程序啟動(dòng)與停止

    同步計(jì)數(shù)器和異步計(jì)數(shù)器是什么 同步計(jì)數(shù)器和異步計(jì)數(shù)器的主要區(qū)別?

    在數(shù)字電子產(chǎn)品,計(jì)數(shù)器是由一系列觸發(fā)組成的時(shí)序邏輯電路。顧名思義,計(jì)數(shù)器用于計(jì)算輸入在負(fù)或正邊沿轉(zhuǎn)換中出現(xiàn)的次數(shù)。根據(jù)觸發(fā)觸發(fā)的方式,
    的頭像 發(fā)表于 03-25 17:31 ?2.4w次閱讀
    同步<b class='flag-5'>計(jì)數(shù)器</b>和異步<b class='flag-5'>計(jì)數(shù)器</b>是什么 同步<b class='flag-5'>計(jì)數(shù)器</b>和異步<b class='flag-5'>計(jì)數(shù)器</b>的主要區(qū)別?

    同步計(jì)數(shù)器和異步計(jì)數(shù)器各有什么特點(diǎn)

    同步計(jì)數(shù)器和異步計(jì)數(shù)器是兩種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),它們都用于控制對(duì)共享資源的訪問(wèn)。它們的主要作用是實(shí)現(xiàn)多個(gè)線程之間的同步和并發(fā)控制。盡管它們都被用于同步的目的,但它們有很多不同的特點(diǎn)和用例。
    的頭像 發(fā)表于 12-15 10:49 ?1695次閱讀

    計(jì)數(shù)器的特點(diǎn)和參數(shù)

    計(jì)數(shù)器作為一種常用的電子元件,在電子設(shè)備和系統(tǒng)扮演著至關(guān)重要的角色。它們不僅用于存儲(chǔ)和增減數(shù)字值,還廣泛應(yīng)用于時(shí)序和頻率測(cè)量、事件計(jì)數(shù)控制步進(jìn)
    的頭像 發(fā)表于 08-29 14:54 ?351次閱讀

    正交解碼計(jì)數(shù)器

    正交解碼計(jì)數(shù)器
    發(fā)表于 09-06 11:41 ?0次下載