現場可編程邏輯陣列(FPGA)資源豐富,結構靈活,近年來發展迅猛。針對其特點,本文設計了基于FPGA的增量式光電編碼器的接口電路,實現了對增量式編碼器脈沖信號的倍頻、鑒相及計數等功能。最后仿真驗證了設計的可行性。為進一步實現高精度的位置伺服控制提供基礎。
光電編碼器是目前伺服系統中應用最多的傳感器,它通過光電轉換將輸出軸上的機械幾何位移量轉換成脈沖或數字量。光電編碼器與電機相連,當電機轉動時,帶動碼盤旋轉,便發出轉速或轉角信號。
目前光電編碼器已經普遍應用在雷達、光電經緯儀、地面指揮儀、機器人、數控機床和高精度閉環調速系統等諸多領域。根據其刻度方法及信號輸出形式,可分為增量式、絕對式以及混合式3種。
絕對型編碼器在轉軸的每一個位置均可讀出唯一對應的數字碼,抗干擾、無需掉電記憶,但其制造工藝復雜、價格是增量型編碼器的幾倍到幾十倍。因此在實際的應用中,增量型編碼器占據了統治地位。
增量式編碼器工作原理
增量式編碼器由光源、碼盤、檢測光柵、光電檢測器件和光電轉換電路組成,其原理如圖1所示。
圖1 增量式編碼器原理圖
當碼盤隨同被測轉軸轉動時,檢測光柵保持不動。光線穿過碼盤和檢測光柵的縫隙照射在光電檢測器件上,光電檢測器件即會輸出相位相差900電度角的近似于正弦波的兩組差分電信號,這兩組差分信號再經脈沖整形轉換為普通的單端電平信號,最后對兩個單端電平信號進行倍頻、鑒相和計數等操作,以得到碼盤旋轉的方向和位置。
本文旨在解決增量編碼器倍頻、鑒相、計數的問題,充分利用FPGA豐富的邏輯模塊和IO模塊,設計了一種簡單的接口電路,并行輸出結果以供進一步操作,如圖2所示。
圖2 編碼信號處理模塊
倍頻、鑒相、計數原理分析
編碼器碼盤和檢測光柵有兩組對應的等間距透光縫隙,相互錯開1/4節距,用于在旋轉過程中對光電發送及接收裝置產生通斷變化,使得光電檢測器件輸出相位上相差90o的信號A、B。根據A和B的相位關系可判斷出碼盤的旋轉方向。
當A相位超前B90o時,DIR(方向信號)為高電平,電機正轉;當A滯后B90o時,DIR(方向信號)為低電平,電機反轉。碼盤信號經過計數器計數后得出碼盤旋轉的角度才能轉換為位置信息,計數器加減以方向信號為依據。
與此同時,碼盤上還有一個開孔用來判斷碼盤的絕對位置,即碼盤每旋轉一周將產生一個索引信號I,有的也用I作為對位、清零信號。如圖3所示。
圖3 編碼器輸出信號
編碼器每旋轉一周,A相和B相所輸出的脈沖數相同,脈沖數決定了編碼器的精度。
由圖3可知,在一個編碼脈沖輸出周期中,A和B信號共產生了4個跳變沿。捕捉每個跳變并且進行計數,即:當A為高電平時,B在上升沿則加1,下降沿則減1;A為低電平時,B在下降沿則減l,上升沿則加l;B為高電平時,A在上升沿則減1,下降沿則加l;在B為低電平時,A在上升沿則加1,下降沿則減l。
如此在每個周期內,碼盤正轉時計數4次,反轉時也計數4次,使計數脈沖數量增加了4倍。若一個編碼脈沖信號量化誤差為φ,則四倍頻后的量化誤差降為φ/4,其角位移的測量精度提高了4倍,同時光電碼盤的分辨率也提高了4倍。
信號四倍頻設計的關鍵在于捕捉A、B信號的上升沿和下降沿。本設計采用數字型電路即D觸發器作為延遲環節來檢測邊沿的變化,A、B相倍頻脈沖寬度和延時時間均由時鐘(外部有源晶振提供)控制,倍頻后的脈沖寬度一致,可以有效地克服傳統RC微分型或積分型邊沿檢測電路的不足。
A、B信號經D觸發器后的信號分別記為A1、B1。將A1、B1作為倍頻的原始信號,將消除A、B信號中尖脈沖帶來的影響,提高了系統的抗干擾性能。A1、B1再經過一個D觸發器,延時一個時鐘周期,將產生A2、B2信號。
即A2、B2分別滯后A1、B1一個時鐘周期,且A1、A2的相位分別滯后B1、B290o(假定此時電機反轉,B1超前A190o),為了實現預期目的,需要能夠完全捕捉到一個周期內脈沖的上升沿和下降沿,即圖4的圓黑點。
從圖4中虛線所示的狀態可知,A1和A2,B1和B2兩組信號里都有一組不同的電平狀態,故采用3個異或門以求得信號的4倍頻信號F4_CLK。與此同時,采用兩個與非門來求得方向信號。
圖4 A、B信號經D觸發器后的信號圖
光電編碼器線數為1024,四倍頻后旋轉一圈產生4096個脈沖,其精度為0.0879o。為滿足精度要求,本設計采用的是16位可逆計數器,計數范圍為-65536~65535,利用Altera公司的設計軟件自帶的LPM(宏功能模塊)模塊實現該計數模塊。
接口電路的設計與實現
本設計使用的軟件是Altera公司的Quartus II,選用的芯片是CycloneⅢ的EP3C16Q240。該芯片有15408個邏輯單元,56個乘法器,4個鎖相環,20個全局時鐘網絡,存儲器容量為504Kbit,最高工頻率可為437.5MHz,輸入輸出電壓3.3V[8],如此強大的資源足以實現設計預期的功能。
1 子模塊的原理圖設計
FPGA具有動態可系統重構和靜態可重復編程的特性,使得可以像軟件一樣通過編程來修改硬件的功能。我們可以通過原理圖輸入或者HDL(硬件描述語言)來設計實現一個數字系統。根據上一節原理的介紹,生成倍頻、鑒相、計數模塊的頂層文件原理圖,如圖5所示。
圖5 頂層原理圖
其中,輸入為正交編碼信號A、B,輸出為16位計數結果。該頂層原理圖分為兩部分,一個是倍頻、鑒相模塊,如圖6所示;一個是使用自帶的宏功能模塊實現的計數模塊。編碼信號經倍頻、鑒相后產生四倍頻信號F4_CLK、方向信號ENADD,再經過pluse_count實現16位可逆計數功能。當ENADD為高電平即碼盤正轉時,實現加法計數;當ENADD為低電平即碼盤反轉時,實現減法計數。
圖6 倍頻、鑒相原理圖
2 編譯及下載
在Quartus II中依次進行如下操作:新建工程、選擇目標芯片、繪制原理圖、管腳分配、芯片參數及配置選項設置,即可對設計文件進行編譯。
編譯完成后將在工程文件夾下將生成后綴名為sof和pof的兩個下載文件,這兩個文件的區別在于:前者是通過JTAG口下載到FPGA芯片中(配置FPGA芯片),直接運行程序,而掉電后程序消失;后者是通過AS口下載到配置芯片中,上電后將自動完成配置,運行程序。
前者下載的速度快,一般用于FPGA的調試過程;而后者由于是燒寫EPCS配置芯片(實際上是串行FLASH),速度較慢,一般用于開發后期的程序固化。本次設計也是遵循調試階段采用JTAG模式燒寫下載,待程序確定后采用AS模式燒寫下載。
波形仿真及分析
編譯通過后,我們使用Quartus II自帶的仿真器進行功能仿真以驗證設計的邏輯是否正確。在建立矢量源文件時,首先設置編碼信號A超前B 90o得到仿真結果如圖7所示;然后設置編碼信號B超前A 90o得到仿真結果如圖8所示。
從圖7、圖8中可以看出,當信號A超前B 90o即電機正轉時,方向信號為高電平,實現四倍頻且一個周期內加法計數4次;反之,當信號B超前A 90o即電機反轉時,方向信號為低電平,同樣實現四倍頻且一個周期內減法計數4次。由此可知,仿真結果與理論分析完全一致,本接口電路邏輯正確,具有實際意義。
在實際調試階段中,連接好編碼器和電路板,通過QuartusII的Signaltap II來捕捉和顯示實時信號,所得的結果與預期也是一致的,從而進一步驗證了設計的可靠性。
圖7 信號A超前B 90o仿真結果
圖8 信號B超前A 90o仿真結果
小結
基于FPGA的增量式編碼器的接口設計實現了對編碼信號數據的采集和處理,克服了使用ASIC(專用集成電路)對數據進行處理而產生的編譯復雜、通用性差等缺點。該接口電路具有適用性好、集成度高、抗干擾性強、運行可靠、數據處理快等優點,適用于各種需要使用增量式編碼器測量位置和速度的場合。
編輯:lyn
-
FPGA
+關注
關注
1629文章
21736瀏覽量
603385 -
接口電路
+關注
關注
8文章
464瀏覽量
57082 -
光電編碼器
+關注
關注
7文章
113瀏覽量
31332
發布評論請先 登錄
相關推薦
評論