摘 要: 用VHDL語言設(shè)計(jì)的增量式旋轉(zhuǎn)編碼器接口電路,實(shí)現(xiàn)了四倍頻,、雙向計(jì)數(shù)的功能以及與單片機(jī)的接口,。給出了在MAX Plus II環(huán)境下的VHDL源代碼和時(shí)序仿真結(jié)果。本設(shè)計(jì)在角度測量,、位移測量和高度測量等方面有廣泛的應(yīng)用價(jià)值,。
關(guān)鍵詞: 旋轉(zhuǎn)編碼器;四倍頻,;VHDL,;Max Plus II
旋轉(zhuǎn)編碼器是一種高精度的角位置測量傳感器,具有分辨率高,、響應(yīng)速度快等特點(diǎn),,被廣泛應(yīng)用在以位置或角度為對象的控制系統(tǒng)中。將編碼器安裝在電機(jī)軸的非負(fù)載端跟隨轉(zhuǎn)動(dòng),,其反饋信號(hào)傳遞給控制器,構(gòu)成對電機(jī)的閉環(huán)控制[1],。
增量式旋轉(zhuǎn)編碼器發(fā)出兩路正交脈沖,,即兩路(A、B)相位差90°的方波,,其相位關(guān)系標(biāo)志電機(jī)的轉(zhuǎn)向,,當(dāng)A相超前B相90°時(shí),標(biāo)志電機(jī)正轉(zhuǎn),,如圖1所示,;當(dāng)B相超前A相90°時(shí),標(biāo)志電機(jī)反轉(zhuǎn),,如圖2所示,。編碼器旋轉(zhuǎn)一圈,輸出脈沖數(shù)固定,,通過累加A,、B兩相信號(hào)的脈沖數(shù)可以計(jì)算電機(jī)轉(zhuǎn)過的角度。
本文用VHDL語言設(shè)計(jì)了一種增量式旋轉(zhuǎn)編碼器的接口電路,,可以配置在CPLD或者FPGA上,,實(shí)現(xiàn)對編碼器輸出信號(hào)的四倍頻、雙向可逆計(jì)數(shù)和與單片機(jī)接口的功能,。下面介紹各個(gè)電路的設(shè)計(jì)原理和實(shí)現(xiàn)源碼,。
1 四倍頻電路設(shè)計(jì)原理
對于每個(gè)確定的編碼器,,其脈沖周期T對應(yīng)的角位移固定為q,其量化誤差為q/2,。若將A和B信號(hào)四倍頻,,則計(jì)數(shù)脈沖的周期將減小到T/4,量化誤差減小為q/8,,從而使角位移測量精度提高4倍[2],。
如圖1和圖2所示,在任意一個(gè)周期T內(nèi),,A,、B兩路信號(hào)各變化了兩次,分別產(chǎn)生一次上升沿和一次下降沿,,若用Y對A,、B兩路信號(hào)的跳變沿計(jì)數(shù),則在一個(gè)脈沖周期內(nèi),,信號(hào)Y就會(huì)出現(xiàn)4次變化,,實(shí)現(xiàn)編碼器信號(hào)的四倍頻。
2 轉(zhuǎn)向鑒別電路設(shè)計(jì)原理
在信號(hào)跳變沿時(shí)檢測另一相信號(hào)的電平值可以判斷轉(zhuǎn)向[3],。例如,,在A相信號(hào)上升沿時(shí)檢測B相信號(hào)電平,若B為低電平(如圖1),,表示電機(jī)正轉(zhuǎn),;若B為高電平(如圖2),表示電機(jī)反轉(zhuǎn),。結(jié)合上面所述四倍頻原理,,計(jì)數(shù)規(guī)則總結(jié)如下。
(1)檢測到以下狀態(tài)表示電機(jī)正轉(zhuǎn),,加計(jì)數(shù):
?、貯相上升沿,B=0,;②A相下降沿,,B=1;③B相上升沿,,A=1,;④B相下降沿,A=0,。
(2)檢測到以下狀態(tài)表示電機(jī)反轉(zhuǎn),,減計(jì)數(shù):
①B相上升沿,,A=0,;②B相下降沿,,A=1;③A相上升沿,,B=1,;④A相下降沿,B=0,。
3 與單片機(jī)接口設(shè)計(jì)原理
編碼器的脈沖計(jì)數(shù)值一般要傳送給單片機(jī)或其他控制器進(jìn)行處理,,而CPLD的全局時(shí)鐘的頻率高于單片機(jī)的時(shí)鐘頻率,為保證CPLD和單片機(jī)之間計(jì)數(shù)值傳輸?shù)恼_性,,單片機(jī)首先發(fā)送信號(hào)給CPLD,,將計(jì)數(shù)值鎖存后再進(jìn)行傳輸。CPLD與單片機(jī)接口示意圖如圖3所示,。本設(shè)計(jì)中CPLD檢測到單片機(jī)鎖存信號(hào)的上升沿后將當(dāng)前計(jì)數(shù)值鎖存[4],,然后在單片機(jī)位選信號(hào)的上升沿和下降沿分時(shí)將16 bit計(jì)數(shù)值的高8位和低8位傳送給單片機(jī)8 bit I/O端口。
4 實(shí)現(xiàn)電路的源代碼
本設(shè)計(jì)利用D觸發(fā)器的延時(shí)作用檢測信號(hào)跳變沿,,D輸入端接脈沖信號(hào),,則Q輸出端是上一個(gè)CLK周期的脈沖信號(hào)狀態(tài)。在CLK的上升沿檢測Q端輸出和D端信號(hào)電平值是否一致,,不一致表示出現(xiàn)跳變沿,。
設(shè)A和B是A、B相的源信號(hào),,經(jīng)過D觸發(fā)器后A,、B相信號(hào)記為A1、B1,,則計(jì)數(shù)規(guī)則表示為:
5 仿真結(jié)果
利用ALTERA的開發(fā)工具M(jìn)AX+PlusⅡ,輸入VHDL文本文件,,目標(biāo)設(shè)備為EPM7128SLC84[5],,CLK周期為200 ns,A,、B的周期為2 000 ns,,編譯后仿真波形如圖4~圖7所示。
圖4是編碼器正轉(zhuǎn)時(shí)的仿真波形,,在A相信號(hào)的1個(gè)周期,,兩條標(biāo)記線內(nèi),計(jì)數(shù)值OUTPUT由初始值4增加到8,,實(shí)現(xiàn)四倍頻加計(jì)數(shù),。
圖5是編碼器反轉(zhuǎn)時(shí)的仿真波形,在A相信號(hào)的1個(gè)周期內(nèi),,計(jì)數(shù)值OUTPUT由初始值15減少到11,,實(shí)現(xiàn)四倍頻減計(jì)數(shù),。
圖6是編碼器由正轉(zhuǎn)切換為反轉(zhuǎn)時(shí)的仿真波形。如圖中標(biāo)記線所示,,B相超前A相后的第一個(gè)CLK的上升沿,,計(jì)數(shù)方向立即改變,由加計(jì)數(shù)變?yōu)闇p計(jì)數(shù),。
如圖7中標(biāo)記線所示,,在鎖存信號(hào)lock上升沿時(shí)16 bit計(jì)數(shù)值鎖存于OUT_lock;位選信號(hào)choose上升沿后的第一個(gè)CLK上升沿,,8 bit計(jì)數(shù)值OUTPUT8輸出OUT_lock的高8位,;choose下降沿時(shí)OUTPUT8輸出OUT_lock的低8位。
由上述仿真波形可以看出,,本電路的設(shè)計(jì)實(shí)現(xiàn)了編碼器的轉(zhuǎn)向鑒別,、四倍頻、雙向計(jì)數(shù)以及與單片機(jī)通信的功能,。
本文設(shè)計(jì)的編碼器接口電路,,結(jié)構(gòu)簡單、可靠性高,,即使在正反轉(zhuǎn)頻繁切換的場合也能高精度地工作,。本接口電路已應(yīng)用在單級旋轉(zhuǎn)倒立擺控制系統(tǒng)中,且運(yùn)行良好,。
參考文獻(xiàn)
[1] 夏冬梅,,孫林.基于CPLD的增量式旋轉(zhuǎn)編碼器接口電路模塊設(shè)計(jì)[J].機(jī)械制造與自動(dòng)化,2009,,38(5):156-157,,160.
[2] 史曉娟,李海芹.基于CPLD的四倍頻鑒相計(jì)數(shù)電路在運(yùn)動(dòng)控制器中的應(yīng)用[J].制造技術(shù)與機(jī)床,,2008(6):85-87.
[3] 馬志建,,戴炬,張峰,,等.基于CPLD的編碼器倍頻鑒相計(jì)數(shù)電路設(shè)計(jì)[J].儀器儀表用戶,,2009,16(4):82-84.
[4] 黃任.AVR單片機(jī)與CPLD/FPGA綜合應(yīng)用入門[M].北京:北京航空航天大學(xué)出版社,,2004.
[5] 王志鵬,,付麗琴.可編程邏輯器件開發(fā)技術(shù)MAX+plusⅡ[M].北京:國防工業(yè)出版社,2005.