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