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

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

3天內不再提示

基于STM32的正交編碼器驅動電機設計

西西 ? 來源:博客園 ? 作者:鴿紙 ? 2020-09-10 16:25 ? 次閱讀

1。編碼器原理

什么是正交?如果兩個信號相位相差90度,則這兩個信號稱為正交。由于兩個信號相差90度,因此可以根據兩個信號哪個先哪個后來判斷方向。

這里使用了TI12模式,例如當T1上升沿,T2在低電平時;T1下降沿,T2在高電平時,向上計數,這樣的好處是當有毛刺產生的時候,會自動+1 -1過濾掉毛刺。

2。編碼器的中斷

由于編碼器是基于定時器的,所以編碼器的中斷實際上就是定時器的中斷。也就是說定時器是每隔一定時間加一個數(或減一個數 ),當數到達預設值時就產生中斷,而編碼器是每一個有效脈沖就加一個數(或減一個數 ),當數到達預設值時就產生中斷。若預設值為1000則編碼器與定時器中斷不同的是,當編碼器反轉時值到達999產生一次中斷,而當編碼器正轉到達0時同 樣產生一次中斷。在硬件上這兩個中斷是沒法區(qū)分的,這也就造成了有種情況的誤判。

3。STM32編碼器沒有考慮的情況

想象一下,如果編碼器的預設值為1000,當某次我們使得編碼器正轉產生中斷后,立即反轉則又該怎么辦呢?根據上面的說法,這時候會產生兩次一樣的中斷。 如果在算法上沒有處理的話,極有可能認為是行走了兩次正向。但實際上并沒有。所以這個時候必須結合方向來判斷行走的情況(判斷方向使用的是DIR寄存器 位)或者在產生中斷后讀一次count寄存器位(看看是999還是0,以此來判斷當前的方向)。只有上一次為正且這一次同樣為正,距離才是相加的。

4。STM32f1系列定時器16位的問題

我用STM32的定時器3工作于編碼器方式,可以正常得到編碼器位置,但由于現在只有16位計數,位數不夠,我想擴展到32位,可以先用定時器內部連接,將定時器3 的溢出送到定時器2,用定時器2做高位,在正轉的時候正常,但反向的時候出錯。換了個思路,做個每10ms產生一次的中斷,在中斷中調用下面的代碼,下述代碼中MAX_COUNT是 比 10ms內可能出現的計數最大值還要大的值,ENCODER_TIM_PERIOD是定時器的period值,最好比MAX_COUNT大,然后定義一個32位的有符號變量,如currentCount,然后每隔10ms執(zhí)行一次currentCount += Enc_GetCount();只需要去讀取currentCount的值就可以得到位移信息了。

s16 Enc_GetCount(void)

{

static u16 lastCount = 0;

u16 curCount = ENCODER_TIM-》CNT;

s32 dAngle = curCount - lastCount;

if(dAngle 》= MAX_COUNT){

dAngle -= ENCODER_TIM_PERIOD;

}else if(dAngle 《 -MAX_COUNT){

dAngle += ENCODER_TIM_PERIOD;

}

lastCount = curCount;

return (s16)dAngle;

}

5。其它一些得到的信息

1.編碼器有個轉速上限,超過這個上限是不能正常工作的,這個是硬件的限制,原則上線數越多轉速就越低,這點在選型時要注意,編碼器的輸出一般是開漏的,所以單片機的io一定要上拉輸入狀態(tài)。

2.定時器初始化好以后,任何時候CNT寄存器的值就是編碼器的位置信息,正轉他會加反轉他會減這部分是不需要軟件干預的,初始化時給的TIM_Period 值應該是碼盤整圈的刻度值,在減溢出會自動修正為這個數。加超過此數值就回0.

3.如果要擴展成多圈計數需要溢出中斷,程序上圈計數加減方向位就行了。

4.每個定時器的輸入腳可以通過軟件設定濾波

5.應用中如果沒有絕對位置信號或者初始化完成后還沒有收到絕對位置信號前的計數只能是相對計數。收到絕對位置信號后重新修改一次CNT的值就行了。碼盤一般都有零位置信號,結合到定時器捕獲輸入就行。上電以后要往返運動一下找到這個位置。

6.即便有濾波計數值偶爾也會有出錯誤的情況,一圈多計一個或少計一個數都是很正常的特別是轉速比較高的時候尤其明顯,有個絕對位置信號做修正是很有必要的。絕對位置信號不需要一定在零位置點,收到這個信號就將CNT修正為一個固定的數值即可。

7.開啟定時器的輸入中斷可以達到每個步計數都作處理的效果,但是高速運轉的時候你可能處理不過來.

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

    關注

    45

    文章

    3655

    瀏覽量

    134883
  • STM32
    +關注

    關注

    2270

    文章

    10915

    瀏覽量

    356764
  • 定時器
    +關注

    關注

    23

    文章

    3254

    瀏覽量

    115075
收藏 人收藏

    評論

    相關推薦

    其利天下技術·伺服電機編碼器的作用及工作原理·低壓伺服電機驅動方案開發(fā)

    電機系統(tǒng)中起著至關重要的作用,是實現高效、穩(wěn)定和精確控制的核心組件。編碼器的作用是什么呢?它的工作原理又是怎樣的?其利天下·伺服電機驅動方案編碼器
    的頭像 發(fā)表于 11-02 10:38 ?388次閱讀
    其利天下技術·伺服<b class='flag-5'>電機</b><b class='flag-5'>編碼器</b>的作用及工作原理·低壓伺服<b class='flag-5'>電機</b><b class='flag-5'>驅動</b>方案開發(fā)

    伺服電機編碼器種類有哪些?

    在轉速為1000 rpm以上,在高負載下有很好的性能。 這種類型的編碼器具有良好的抗振穩(wěn)定性,在高負載下保持較高性能。 該類型編碼器可以使用與交流伺服電機匹配的交流驅動器,例如 PID
    的頭像 發(fā)表于 07-21 17:01 ?1310次閱讀

    旋轉編碼器控制電機速度

    旋轉編碼器控制電機速度
    發(fā)表于 06-24 09:16 ?4次下載

    西門子更換電機編碼器設置

    引言 西門子電機驅動器廣泛應用于工業(yè)自動化領域,其性能和可靠性得到了廣泛認可。 編碼器的作用 編碼器是一種將機械位置轉換為電信號的傳感,
    的頭像 發(fā)表于 06-17 15:10 ?1408次閱讀

    三菱伺服電機編碼器接線方法

    引言 伺服電機是一種高精度、高響應速度的電機,廣泛應用于工業(yè)自動化、機器人、數控機床等領域。編碼器作為伺服電機的重要組成部分,其作用是檢測電機
    的頭像 發(fā)表于 06-17 14:11 ?2489次閱讀

    伺服電機編碼器的作用和功能是什么

    伺服電機編碼器是伺服電機系統(tǒng)中的重要組成部分,它的作用和功能對于整個系統(tǒng)的穩(wěn)定性、精度和可靠性具有至關重要的影響。本文將詳細介紹伺服電機編碼器
    的頭像 發(fā)表于 06-17 11:09 ?2183次閱讀

    伺服電機編碼器的型號怎么看

    伺服電機編碼器是伺服電機的重要組成部分,它能夠將電機的旋轉角度、速度等信息轉換為電信號,為控制系統(tǒng)提供精確的位置和速度反饋。 一、伺服電機
    的頭像 發(fā)表于 06-17 11:07 ?2023次閱讀

    如何判斷伺服電機編碼器故障?

    伺服電機編碼器是伺服系統(tǒng)中非常重要的部件,它用于測量電機軸的旋轉角度和速度,為控制系統(tǒng)提供反饋信號。如果編碼器出現故障,將直接影響伺服電機
    的頭像 發(fā)表于 06-17 11:05 ?2792次閱讀

    伺服電機編碼器怎么判斷好壞

    伺服電機編碼器是伺服系統(tǒng)中的重要組成部分,其性能的好壞直接影響到伺服系統(tǒng)的精度和穩(wěn)定性。本文將詳細介紹伺服電機編碼器的工作原理、性能指標、故障診斷方法以及維護保養(yǎng)措施,幫助用戶更好地判
    的頭像 發(fā)表于 06-17 11:02 ?1558次閱讀

    伺服電機編碼器線怎么區(qū)分正負極

    伺服電機編碼器線是伺服系統(tǒng)中非常重要的一部分,它負責將電機的旋轉信息轉換為電信號,以實現對電機的精確控制。在伺服電機
    的頭像 發(fā)表于 06-17 10:58 ?2498次閱讀

    伺服電機編碼器的原理及使用注意事項

    伺服電機編碼器作為現代自動化系統(tǒng)中不可或缺的組成部分,其性能的優(yōu)劣直接影響到整個系統(tǒng)的穩(wěn)定性和精確度。本文將對伺服電機編碼器的原理進行詳細解析,并列舉使用
    的頭像 發(fā)表于 06-13 14:49 ?1170次閱讀

    伺服電機編碼器如何調零

    伺服電機編碼器調零是確保電機精確控制的重要步驟。本文將詳細介紹伺服電機編碼器調零的原理、步驟和注意事項,以幫助用戶更好地理解和操作。 伺服
    的頭像 發(fā)表于 06-05 15:41 ?4635次閱讀

    伺服電機編碼器故障及維修 伺服電機編碼器調零對位方法

    伺服電機編碼器是用來測量電機轉動角度和速度的重要部件。然而,由于長時間運行、環(huán)境因素等原因,編碼器可能會出現故障,影響電機的準確運行。下面
    的頭像 發(fā)表于 02-14 18:06 ?2.9w次閱讀

    磁性編碼器和光電編碼器的比較

    伺服電機編碼器是一種關鍵的反饋裝置,用于測量和控制電機的轉速和位置。在選擇伺服電機編碼器時,常常面臨一個選擇:使用磁電
    的頭像 發(fā)表于 01-18 10:29 ?3344次閱讀

    編碼器種類及編碼器原理

    編碼器是一種將機械運動轉換為數字電信號的傳感。當駕駛員想要控制電機旋轉時,U、V、W三相電氣輸出驅動電機運行。為了將
    的頭像 發(fā)表于 01-17 17:02 ?1805次閱讀
    <b class='flag-5'>編碼器</b>種類及<b class='flag-5'>編碼器</b>原理