基于FPGA增量式編碼器的接口設(shè)計(jì)與實(shí)現(xiàn)
摘要 光電增量式編碼器,又稱光電角位置傳感器,是電氣傳動系統(tǒng)中用來測量電動機(jī)轉(zhuǎn)速和轉(zhuǎn)子位置的核心部件。分析了光電編碼器4倍頻原理,提出了一種基于可縞程邏輯器件FPGA對光電增量式編碼器輸出信號4倍頻、鑒相、計(jì)數(shù)的具體方法,它對提高編碼器分辨率與實(shí)現(xiàn)高精度、高穩(wěn)定性的信號檢測及位置伺服控制具有一定的現(xiàn)實(shí)意義。經(jīng)實(shí)際項(xiàng)目論證,該方案在保證測量精度的前提下,可以有效濾除噪聲干擾和消除抖動,增強(qiáng)了系統(tǒng)的干擾抑制和容錯能力,可移植性強(qiáng),便于系統(tǒng)升級。
關(guān)鍵詞 FPGA;增量式光電編碼器;4倍頻;鑒相
光電編碼器在現(xiàn)代電機(jī)控制系統(tǒng)中常用以檢測轉(zhuǎn)子的位置與速度,是通過光電轉(zhuǎn)換將輸出軸上的機(jī)械幾何位移量轉(zhuǎn)換成脈沖或數(shù)字量的高精度角位置測量傳感器。由于其具有分辨率高、響應(yīng)速度快、體積小、輸出穩(wěn)定等特點(diǎn),被廣泛應(yīng)用于電機(jī)伺服控制系統(tǒng)中。
編碼器按信號輸出形式分為絕對式編碼器和增量式編碼器。絕對式光電編碼器具有輸出數(shù)字量可與PC機(jī)、ARM或FPGA等器件直接接口,無累積誤差等優(yōu)點(diǎn),但價格高、制造工藝復(fù)雜,不宜實(shí)現(xiàn)小型化。增量式光電編碼器不具有計(jì)數(shù)和接口電路,一般輸出A、B、Z脈沖信號,價格較低,在實(shí)際工程中比較常用。
文中設(shè)計(jì)了一個基于FPGA的簡單且精度高的接口電路,其結(jié)構(gòu)簡單、性能可靠。具有濾波、硬件辨向、4倍頻計(jì)數(shù)和數(shù)據(jù)鎖存等功能。計(jì)數(shù)結(jié)果以并口輸出,可與PC機(jī)、ARM或FPGA等部件進(jìn)行并行通信。同時在并口之前,用鎖存電路來消除硬件電路延時所可能引起韻計(jì)數(shù)錯誤,減輕了后續(xù)微機(jī)的負(fù)擔(dān),可提高被控對象的測量和控制精度。
1 4倍頻電路設(shè)計(jì)原理
增量式光電編碼器實(shí)際是一種旋轉(zhuǎn)式角位移檢測裝置,它根據(jù)軸所轉(zhuǎn)過的角度,輸出一系列脈沖,能將機(jī)械轉(zhuǎn)角變換成電脈沖,輸出信號如圖1所示。A、B兩相信號是相位相差90°的正交方波脈沖串,每個脈沖代表被測對象旋轉(zhuǎn)了一定的角度,A、B之間的相位關(guān)系則反映了被測對象的旋轉(zhuǎn)方向,即當(dāng)A相超前B相,轉(zhuǎn)動方向?yàn)檎D(zhuǎn);當(dāng)B相超前A相,轉(zhuǎn)動方向?yàn)榉崔D(zhuǎn)。Z信號是一個代表零位的脈沖信號,可用于調(diào)零、對位和重置計(jì)數(shù)器。
對于每個確定的編碼器,每轉(zhuǎn)過固定角位移θ,就對應(yīng)一個脈沖信號,故其量化誤差為θ/2。若將A或B信號4倍頻,則在此θ角位移內(nèi),就會產(chǎn)生4個脈沖信號,其量化誤差下降為0/8,光電編碼器的角位移測量精度提高4倍。由于伺服系統(tǒng)中編碼器的轉(zhuǎn)速具有不可預(yù)見性,造成脈沖周期r具有不確定的特點(diǎn),從而無法使用鎖相環(huán)等常用倍頻方案。由圖1可知,在脈沖周期內(nèi),A、B兩相信號共產(chǎn)生4次變化,盡管T不確定,但由于A、B兩相方波信號之間相位關(guān)系確定,使這4次變化在相位上平均分布。如果利用這4次變化產(chǎn)生4倍頻信號,則可以實(shí)現(xiàn)光電編碼器測量精度的提高。
分析發(fā)現(xiàn),4倍頻設(shè)計(jì)的關(guān)鍵在于鑒別出A、B信號的上升沿和下降沿。輸入信號與其延時信號異或后,就可得到倍頻信號。
2 接口電路的FPGA總體方案及設(shè)計(jì)實(shí)現(xiàn)
光電編碼器的可靠性與精度直接決定了控制系統(tǒng)的可靠性與控制精度??刂葡到y(tǒng)精度不會高于檢測元件的精度,也就是說檢測元件的誤差是決定控制系統(tǒng)穩(wěn)態(tài)誤差的關(guān)鍵,這種誤差也是控制系統(tǒng)無法克服的。因此,選擇和設(shè)計(jì)高精度的光電編碼器固然重要,但后續(xù)電路對光電編碼器輸出脈沖的處理精度也不容忽視。因此,一方面要選擇精度高的光電編碼器;另一方面要重視對光電編碼器輸出脈沖的處理,傳統(tǒng)的處理方法有3種:(1)通過74LS193、74LS171、RC等搭建一個硬件電路實(shí)現(xiàn)脈沖的倍頻和鑒相的判斷。(2)直接將光電編碼器的A、B信號送至微處理器,進(jìn)行純軟件的倍頻和鑒相的判別。(3)通過硬件電路和軟件結(jié)合的方法進(jìn)行光電編碼器脈沖的處理,一般是指上述兩種方法的結(jié)合。
對以上3種計(jì)數(shù)方法進(jìn)行分析可知,用純軟件計(jì)數(shù)雖然電路簡單,但是計(jì)數(shù)速度慢,微處理器工作量大,難以滿足實(shí)時性要求,想得到更高的指標(biāo),只能不斷地更換高性能微處理器,而且由于光電編碼器的轉(zhuǎn)速具有不可預(yù)見性,采用鎖相環(huán)進(jìn)行倍頻的話會造成數(shù)據(jù)的不精確;而純硬件電路體積大且穩(wěn)定性、可靠性差、調(diào)試煩瑣,而且當(dāng)電阻、電容等組件參數(shù)變化時,會導(dǎo)致脈寬發(fā)生變化或不能產(chǎn)生具有穩(wěn)定寬度
的脈沖。此外,RC電路抗干擾能力差,反饋部分易受外界干擾,在實(shí)際應(yīng)用中會出現(xiàn)丟失脈沖現(xiàn)象,以至影響控制系統(tǒng)的精度和可靠性。
對于濾波、延時的處理方法很多,如微分型電路其信噪比小、抗干擾性差,積分型電路可以提高信噪比,但和微分型電路一樣有缺點(diǎn):當(dāng)輸入信號頻率高時,電容充放電不及時,導(dǎo)致輸出信號嚴(yán)重變形;對于各路倍頻電路來說,電阻和電容的參數(shù)不可能完全一致,所以倍頻后的各路脈沖寬度不等,而且寬度的調(diào)節(jié)也比較困難。設(shè)計(jì)采用的數(shù)字型延時電路可以很好地克服以上延時電路的缺點(diǎn),延時的時間和各路倍頻的脈沖寬度由時鐘控制,倍頻后的脈沖寬度均勻一致。
運(yùn)用FPGA實(shí)現(xiàn)4倍頻、鑒相電路,采用全數(shù)字反饋電路的設(shè)計(jì)方法,由于倍頻、鑒相電路設(shè)計(jì)在同一芯片上,一方面,F(xiàn)PGA門電路高數(shù)量較大,時鐘頻率可達(dá)上百M(fèi)Hz的可編程邏輯器件,可以把他設(shè)計(jì)成所需的各種邏輯器件,可并行處理多項(xiàng)任務(wù)。因此處理速度比單片機(jī)或DSP快得多;另一方面,芯片內(nèi)部的門電路、觸發(fā)器的參數(shù)特性完全一致,能保證在相同轉(zhuǎn)速下4倍頻脈沖信號的周期保持一致。作為板級芯片,電路做在芯片內(nèi)部,其抗干擾能力比分離器件有很大提高。同時,由于現(xiàn)場可編程,可以方便地實(shí)現(xiàn)對電路的重新設(shè)計(jì)或修改,增強(qiáng)了系統(tǒng)的靈活性、通用性和可靠性。
3 仿真波形
用Verilog HDL語言完成電路描述,各功能模塊運(yùn)用原理圖方式進(jìn)行描述,芯片采用Ahera公司Cyclone系列的EP1C12Q240C8N。在Quart-usII10.0環(huán)境下進(jìn)行功能和時序仿真。編譯后結(jié)果如圖3所示,A、B即為差分整形電路的輸出,當(dāng)A相超前B相時,輸出正向4倍頻脈沖,OA[7..0]為編碼器正轉(zhuǎn)時4倍頻脈沖個數(shù);反之,輸出反向4倍頻脈沖,OB[7..0]為反轉(zhuǎn)時4倍頻脈沖個數(shù)。利用OA[7..0]與OB[7..0]可以方便地實(shí)現(xiàn)編碼器的可逆計(jì)數(shù)。
4 結(jié)束語
設(shè)計(jì)了增量式光電編碼器的一種簡單且高精度的鑒相、計(jì)數(shù)和接口電路,可根據(jù)光電編碼器的轉(zhuǎn)向進(jìn)行遞增或遞減計(jì)數(shù),并可與PC機(jī)、DSP、ARM等器件直接進(jìn)行并行通訊。實(shí)驗(yàn)結(jié)果驗(yàn)證了設(shè)計(jì)的正確性。可以看出,利用FPGA設(shè)計(jì)光電編碼器信號處理模塊,無論是設(shè)計(jì)過程,還是電路結(jié)構(gòu)、都變得更加簡潔。另外,在應(yīng)用中注意FPGA的時鐘周期應(yīng)小于編碼器脈沖的1/4,通常FPGA的時鐘已遠(yuǎn)遠(yuǎn)小于編碼器脈沖周期,故在FPGA中進(jìn)行處理與計(jì)數(shù)是沒問題的。
文中FPGA實(shí)現(xiàn)的編碼器倍頻、鑒相電路,已經(jīng)在激光跟蹤系統(tǒng)的項(xiàng)目中得到驗(yàn)證,在系統(tǒng)中存在抖動及毛刺等干擾的情況下,仍能獲得穩(wěn)定可靠的測量結(jié)果,并且可根據(jù)需要,任意改變參數(shù)以達(dá)到目的,這對正確和合理地使用編碼器,提高功能效益,從而在數(shù)控及機(jī)器人的死循環(huán)位置和速度控制系統(tǒng)中,提高位置調(diào)節(jié)精度、擴(kuò)大速度調(diào)節(jié)范圍,都有良好的效果,是一種提高編碼器分辨率、實(shí)現(xiàn)角位移或轉(zhuǎn)速測量的優(yōu)選電路。