那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

利用電機控制中PLU模塊與CTIMER計數器解碼電機

恩智浦MCU加油站 ? 來源:恩智浦NXP社區 ? 作者:恩智浦NXP社區 ? 2022-12-01 09:09 ? 次閱讀

電機控制中,實時獲取電機轉子位置是非常重要的。通過監測電機軸或機械設備運動的位置可以計算電機轉速。當電機轉動時,編碼盤傳感器(Encoder)會發出類似于正交PWM波的高低電平信號,對此信號進行解碼,可以得到電機轉動角度及方向。

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

1. 標準推拉輸出

DSP系列MCU的Quad Timer(TMR)外設可以對正交編碼信號進行解碼,如下:

在進行解碼時,其實是兩個信號發生電平翻轉時進行計數,那么可以理解為對這兩個信號做異或運算,對結果信號上升沿和下降沿進行計數,就可實現解碼功能。利用可編程邏輯單元PLU對正交編碼信號做異或運算,利用CTIMER計數器對輸出信號進行計數,同樣可以達到Quad Timer(TMR)解碼效果。

2. 配置PLU與CTIMER

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

以LPC55S69-EVK開發板為例,具體的引腳使用如下:

配置PLU與CTIMER引腳,如下:

打開PLU與CTIMER時鐘,如下:

添加PLU外設,如下:

配置CTIMER外設,在main.c文件中添加CTIMER初始化,上升沿與下降沿都可觸發計數器。假如電機轉一圈觸發4096次計數器,電機在旋轉60°時要控制電機變相,當計數器值為4096/6 = 682時,觸發一次ctimer中斷,在中斷處理函數中控制電機,如下:

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 打開PLU配置工具,選擇原理圖設計,做一個異或運算,如下:

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

點擊菜單欄File->Export->PLU source file將其導出為C文件,將C文件的內容復制到main函數中,如下:

    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產生正交編碼信號,CTimer進行計數,當計數到682時會觸發中斷進入回調函數,計數器值(TC)會自動清零,重新計數,如下:

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. 測試結果 邏輯分析儀測試結果如下:

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

調試時,計數器的值如下所示:

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

示例代碼:LPC55S69_Project_motor_counter.zip

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 電機控制
    +關注

    關注

    3540

    文章

    1897

    瀏覽量

    269263
  • 電機
    +關注

    關注

    142

    文章

    9088

    瀏覽量

    146384
  • 計數器
    +關注

    關注

    32

    文章

    2261

    瀏覽量

    94986
  • TMR
    TMR
    +關注

    關注

    5

    文章

    80

    瀏覽量

    19059
  • plu
    plu
    +關注

    關注

    1

    文章

    6

    瀏覽量

    7287

原文標題:利用可編程邏輯單元PLU與CTIMER計數器解碼電機

文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何通過labview和NI USB 6341(4計數器控制4相5線步進電機

    本人硬件有NI USB 6341最多能4路計數器輸出(可以分別生成PWM)。一個4相5線步進電機一個ULN2003電機驅動。我想用labview
    發表于 12-23 13:53

    請分享Ctimer計數器捕獲程序的示例程序

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

    基于VHDL的正交編碼脈沖電路解碼計數器設計

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

    利用負載量反饋的通用電機速度控制器電路圖

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

    利用復位端構成的模6計數器電路

    利用復位端構成的模6計數器電路 利用集成計數器的預置端和復位端可以構成任意模計數器。下圖所示依次是利用
    發表于 01-12 13:54 ?5597次閱讀
    <b class='flag-5'>利用</b>復位端構成的模6<b class='flag-5'>計數器</b>電路

    環形計數器和扭環形計數器

    環形計數器和扭環形計數器 移位寄存也可以構成計數器,稱為移位型計數器。它有兩種結構:環形計數器
    發表于 01-12 14:07 ?9872次閱讀

    TER偏航紐纜計數器原理

    偏航紐纜計數器用于控制工業機械的動作。通過諸如接觸或可編程控制器用作電機輔助控制裝置。
    發表于 03-08 11:20 ?5001次閱讀

    計數器控制及應用

    計數是一種最簡單基本的運算,計數器就是實現這種運算的邏輯電路,計數器在數字系統主要是對脈沖的個數進行計數,以實現測量、
    發表于 09-25 10:13 ?8次下載
    <b class='flag-5'>計數器</b>的<b class='flag-5'>控制</b>及應用

    24進制計數器的設計

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

    計數器原理

    計數是一種最簡單基本的運算,計數器就是實現這種運算的邏輯電路,計數器在數字系統主要是對脈沖的個數進行計數,以實現測量、
    的頭像 發表于 01-24 14:35 ?6.5w次閱讀

    基于計數器按鈕控制電機程序啟動與停止

    基于計數器按鈕控制電機程序啟動與停止
    發表于 04-02 16:50 ?16次下載
    基于<b class='flag-5'>計數器</b>按鈕<b class='flag-5'>控制</b>的<b class='flag-5'>電機</b>程序啟動與停止

    同步計數器和異步計數器是什么 同步計數器和異步計數器的主要區別?

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

    同步計數器和異步計數器各有什么特點

    同步計數器和異步計數器是兩種常見的數據結構,它們都用于控制對共享資源的訪問。它們的主要作用是實現多個線程之間的同步和并發控制。盡管它們都被用于同步的目的,但它們有很多不同的特點和用例。
    的頭像 發表于 12-15 10:49 ?2168次閱讀

    計數器的特點和參數

    計數器作為一種常用的電子元件,在電子設備和系統扮演著至關重要的角色。它們不僅用于存儲和增減數字值,還廣泛應用于時序和頻率測量、事件計數控制步進
    的頭像 發表于 08-29 14:54 ?1351次閱讀

    正交解碼計數器

    正交解碼計數器
    發表于 09-06 11:41 ?0次下載
    菲律宾百家乐娱乐平台| 百家乐官网技巧| 百家乐官网平台注册送彩金| 鸿胜娱乐城| 大发888网页ban| 威尼斯人娱乐城首选802com| 香港百家乐的玩法技巧和规则| 澳门百家乐奥秘| 百家乐官网筹码币套装| 百家乐官网电投软件| 视频百家乐官网试玩| 百家乐官网大赢家小说| 六合彩开奖查询| 88娱乐城2官方网站| 全讯网新闻| 免费百家乐统计工具| 百家乐赌博娱乐城| 极速百家乐真人视讯| 百家乐的玩法技巧和规则| 大赢家百家乐的玩法技巧和规则| 专业百家乐软件| 威尼斯人娱乐城可信吗| 百家乐游戏分析| 太阳城百家乐杀猪吗| 澳门百家乐怎么看小路| 百家乐技巧方法| 玩百家乐出千方法| 万达百家乐娱乐城| 金海岸百家乐的玩法技巧和规则| 新澳门百家乐的玩法技巧和规则 | 香港六合彩开奖记录| 梭哈棋牌游戏大厅| 顶旺国际| 澳门百家乐官网死局| 百家乐官网赢家打法| 大上海百家乐官网的玩法技巧和规则| 百家乐官网平台有什么优势| 网络百家乐官网现金游戏哪里的信誉好啊 | 望城县| 网上玩百家乐官网好吗| 百家乐官网赌博技巧大全|