傳統型編碼器測速方案

2021-10-08 06:28:45 字數 2304 閱讀 8821

編碼器,經常被用來測量速度或者顯示電機位置,大致分為絕對值式編碼器和增量式編碼器,顧名思義,相對應的是產生增量或者絕對訊號。增量訊號不表示特定位置,只表示位置已經更改;絕對訊號是絕對值式編碼器對應每個位置使用不同的「字」,所以絕對值編碼器即可以顯示所處的位置,也可以計算相對應的速度。增量編碼器,一般用於測量速度居多。**方面,一般來說增量編碼器也低於絕對值式編碼器。

此處,我們以增量編碼器為例進行相關說明。

原理:每轉過單位的角度就發出乙個脈衝訊號(或者是正弦訊號),通常為對外輸出為a相、b相、z相(有些特殊編碼器會輸出6相信號:a+、a-、b+、b-、z+、z-,正負訊號為互補相反輸出)。a相和b相其相位相差乙個相位,一般為1/4週期(或者90度)。a相和b相的先後順序決定編碼器是正轉或者反轉。

a相信號在前,表示右旋轉(從軸側看)

b相信號在前,表示左旋轉(從軸側看)

有的編碼器還有乙個z相,它表示的是0位,即檢測到0刻線即輸出高電平,也就是給增量式編碼器乙個尋零的功能。

編碼器內部電路輸出分集電極開路輸出、互補輸出、電壓輸出、驅動器輸出

編碼器的輸入電壓範圍一般都比較大,從5v到24v不等,此處假設輸入電壓為12v,stm32微控制器的io口一般為3v,5 v tolerant。編碼器選擇集電極開路輸出,上拉電阻到3v(或者可以配置gpio管腳為上拉模式,省去外部上拉),或者使用互補輸出,調整輸入電壓為5v或調整輸出電壓幅值。本試驗以集電極開路輸出為例。

1.2.2軟體實現方式(本實驗以野火指南者開發板stm32f103vet6為例)

stm32的定時器tim1,2,3,5,8中有專門的編碼器模式,省去了我們讀脈衝和計數的操作。而且配置全面。

可以配置:

計數方式(counter mode):即向上計數還是向下計數,不過使用編碼器都是記錄轉的角度,讀取計數器從0開始的計數,所以一般來說都是向上計數。

增開tim6,配置如下,系統主頻為72m的配置,並使能中斷。

配置串列埠1用於列印輸出資料。配置如下:

系統72m時鐘配置如下。

此處以ts=1秒定時為例,每隔1秒清除編碼器所計數的資料。

capturenumber為4倍的編碼器的pwm數值。主程式串列埠輸出方向和上1秒計數值。

stm32f103的counter period為16bits資料,最大為0xffff。在不清除cnt情況下,

左轉和右轉編碼器,計數方式不同。

左轉 從0x0000~0xffff,

右轉 從0xffff~0x0000

編碼器一圈劃分600格。

故:編碼器最快速度為ts情況下把計數器填滿。其速度為大:2^152pi /(6004ts)

最小速度為,當編碼器在ts時間內,最小要跑1個格:2pi/(600ts)

當ts為1s,速度範圍為:0.0104rad/s~81.64rad/s

按照目前拉絲速度換算成角速度為15.33 rad/s,滿足要求

如要測試更快速度,則把ts,即取樣時間縮小。

硬體連線:

a相:接pc6

b相:接pc7

串列埠使用串列埠pa9、pa10

備註:筆者是做硬體設計的,由於工作需求才研究編碼器的使用。文中難免有不合理的地方,還請見諒,且示例**也僅僅跑了這乙個任務,實際的應用比這個複雜的多,筆者也不懂更深入的編碼。

STM32正交編碼器測速

一 正交編碼解碼原理 二 解碼思路 1 方法一 使用定時器的輸入捕獲功能,配置好tim icinittypedef即可獲取一定時間內的脈衝個數,並可根據b相上公升沿時a相所處的電平判斷電機正轉還是反轉。中斷型別配置為更新事件和上公升沿觸發,更新事件的時間由定時器配置的引數計算出,在更新事件中斷中計算...

基於ZYNQ的旋轉編碼器測速實驗

硬體平台 zynq xcz7020 編碼器 歐姆龍e6b2 500線編碼器。實現功能 每5ms測速週期對編碼器進行脈衝計數,換算得到轉速,並根據ab相關係得到旋轉方向。在寫這塊 的時候也遇到了一些問題,程式雖小但也涉及到一些veilog中易錯的點。如下 module encoder input cl...

增量型編碼器驅動

作用 測量物體轉動角度。原理 增量式編碼器是將位移轉換成週期性的電訊號,再把這個電訊號轉變成計數脈衝,用脈衝的個數表示位移的大小。這裡的位移就反應了旋轉的角度。接線 紅色 vcc 5v 黑色 gnd 綠色 a相 白色 b相 黃色 z相 如圖 abz三相輸出高低變化的電平。當編碼器正轉時,a相上公升沿...