<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于VHDL的旋轉編碼器接口電路的實(shí)現

基于VHDL的旋轉編碼器接口電路的實(shí)現

作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò ) 收藏

是一種高精度的角位置測量傳感器,具有分辨率高、響應速度快等特點(diǎn),被廣泛應用在以位置或角度為對象的控制系統中。將編碼器安裝在電機軸的非負載端跟隨轉動(dòng),其反饋信號傳遞給控制器,構成對電機的閉環(huán)控制[1]。

增量式發(fā)出兩路正交脈沖,即兩路(A、B)相位差90°的方波,其相位關(guān)系標志電機的轉向,當A相超前B相90°時(shí),標志電機正轉,如圖1所示;當B相超前A相90°時(shí),標志電機反轉,如圖2所示。編碼器旋轉一圈,輸出脈沖數固定,通過(guò)累加A、B兩相信號的脈沖數可以計算電機轉過(guò)的角度。

本文用語(yǔ)言設計了一種增量式的接口電路,可以配置在CPLD或者FPGA上,實(shí)現對編碼器輸出信號的四倍頻、雙向可逆計數和與單片機接口的功能。下面介紹各個(gè)電路的設計原理和實(shí)現源碼。

本文引用地址:http://dyxdggzs.com/article/201706/349225.htm

1 四倍頻電路設計原理

對于每個(gè)確定的編碼器,其脈沖周期T對應的角位移固定為q,其量化誤差為q/2。若將A和B信號四倍頻,則計數脈沖的周期將減小到T/4,量化誤差減小為q/8,從而使角位移測量精度提高4倍[2]。

如圖1和圖2所示,在任意一個(gè)周期T內,A、B兩路信號各變化了兩次,分別產(chǎn)生一次上升沿和一次下降沿,若用Y對A、B兩路信號的跳變沿計數,則在一個(gè)脈沖周期內,信號Y就會(huì )出現4次變化,實(shí)現編碼器信號的四倍頻。

2 轉向鑒別電路設計原理

在信號跳變沿時(shí)檢測另一相信號的電平值可以判斷轉向[3]。例如,在A(yíng)相信號上升沿時(shí)檢測B相信號電平,若B為低電平(如圖1),表示電機正轉;若B為高電平(如圖2),表示電機反轉。結合上面所述四倍頻原理,計數規則總結如下。

(1)檢測到以下?tīng)顟B(tài)表示電機正轉,加計數:
①A相上升沿,B=0;②A(yíng)相下降沿,B=1;③B相上升沿,A=1;④B相下降沿,A=0。
(2)檢測到以下?tīng)顟B(tài)表示電機反轉,減計數:
①B相上升沿,A=0;②B相下降沿,A=1;③A相上升沿,B=1;④A相下降沿,B=0。

3 與單片機接口設計原理

編碼器的脈沖計數值一般要傳送給單片機或其他控制器進(jìn)行處理,而CPLD的全局時(shí)鐘的頻率高于單片機的時(shí)鐘頻率,為保證CPLD和單片機之間計數值傳輸的正確性,單片機首先發(fā)送信號給CPLD,將計數值鎖存后再進(jìn)行傳輸。CPLD與單片機接口示意圖如圖3所示。本設計中CPLD檢測到單片機鎖存信號的上升沿后將當前計數值鎖存[4],然后在單片機位選信號的上升沿和下降沿分時(shí)將16 bit計數值的高8位和低8位傳送給單片機8 bit I/O端口。


4 實(shí)現電路的源代碼

本設計利用D觸發(fā)器的延時(shí)作用檢測信號跳變沿,D輸入端接脈沖信號,則Q輸出端是上一個(gè)CLK周期的脈沖信號狀態(tài)。在CLK的上升沿檢測Q端輸出和D端信號電平值是否一致,不一致表示出現跳變沿。

設A和B是A、B相的源信號,經(jīng)過(guò)D觸發(fā)器后A、B相信號記為A1、B1,則計數規則表示為:



5 仿真結果

利用ALTERA的開(kāi)發(fā)工具M(jìn)AX+PlusⅡ,輸入文本文件,目標設備為EPM7128SLC84[5],CLK周期為200 ns,A、B的周期為2 000 ns,編譯后仿真波形如圖4~圖7所示。

圖4是編碼器正轉時(shí)的仿真波形,在A(yíng)相信號的1個(gè)周期,兩條標記線(xiàn)內,計數值OUTPUT由初始值4增加到8,實(shí)現四倍頻加計數。

圖5是編碼器反轉時(shí)的仿真波形,在A(yíng)相信號的1個(gè)周期內,計數值OUTPUT由初始值15減少到11,實(shí)現四倍頻減計數。

圖6是編碼器由正轉切換為反轉時(shí)的仿真波形。如圖中標記線(xiàn)所示,B相超前A相后的第一個(gè)CLK的上升沿,計數方向立即改變,由加計數變?yōu)闇p計數。

如圖7中標記線(xiàn)所示,在鎖存信號lock上升沿時(shí)16 bit計數值鎖存于OUT_lock;位選信號choose上升沿后的第一個(gè)CLK上升沿,8 bit計數值OUTPUT8輸出OUT_lock的高8位;choose下降沿時(shí)OUTPUT8輸出OUT_lock的低8位。

由上述仿真波形可以看出,本電路的設計實(shí)現了編碼器的轉向鑒別、四倍頻、雙向計數以及與單片機通信的功能。

本文設計的編碼器接口電路,結構簡(jiǎn)單、可靠性高,即使在正反轉頻繁切換的場(chǎng)合也能高精度地工作。本接口電路已應用在單級旋轉倒立擺控制系統中,且運行良好。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>