新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 用DSP實現增量式光電編碼器的細分

        用DSP實現增量式光電編碼器的細分

        作者: 時間:2010-12-22 來源:網絡 收藏

        原始信號進行細分是采用各類光柵器件進行高精度位置測量、角度測量過程中不可或缺的一個環節。細分方法多種多樣,針對各種現有的電子學細分方案并結合實際應用,本文采用軟件程序判卦限,查表細分方法,實現了針對測角傳感器信號的2048次細分。

        本文引用地址:http://www.104case.com/article/151159.htm

        關鍵詞:,, 細分

        1 引言

        目前,,,,,,,需要考慮實時性的問題。

        有很多采取純硬件進行細分的方法,如,電阻鏈細分,空間細分,鎖相倍頻,還有兩種方法的結合使用等。上述幾種方法在實際應用中被廣泛采用,特別是電阻鏈細分,在低倍頻的情況下是一種很好的方案。但是在高倍頻的情況下,不可避免地出現大量使用比較器的情況,以及比較器死區(滯后區)問題,難以調節。空間細分的方法中,主要解決的問題是切割電平精準的問題,其中的三角波切割三角波的方案有很多優點,可以改變使用過零比較造成的細分誤差。但是仍然存在大量使用比較器的問題,調節起來比較繁瑣。鎖相倍頻細分的方法,一方面,成本較前兩種高,另一方面,受環境溫度的影響比較大,實際的應用中很少采用。

        高速數字處理器件DSP的應用可以極大地改善系統的實時性,DSP中集成了16路10位A/D轉換,有豐富的硬件資源,比較器、定時器,和兩個專門用于產生PWM波的事件管理器。DSP中豐富的指令集為做除法提供了條件。設DSP(2407a)的時鐘頻率是40MHZ,除法程序可以在35個指令周期內執行完,兩路A/D轉換需要29個指令周期,查詢數據得細分值需要兩個指令周期。共69個指令周期,DSP中程序執行是流水線執行的,一個時鐘周期最多可以執行4條指令。則需要不到1.6us就可以得到精確的光柵位移值。對于一般的應用場合,用DSP細分可以足夠保證控制器500KHz的頻帶,和定位的精確性。

        本文從原理上考慮在DSP中完成細分的方案,使用取絕對值,八卦限理論,利用DSP器件(速度為25納秒)對信號進行邏輯運算和處理等一整套信號細分方案。

        2 細分及框圖

        通過軟件查詢的方式進行細分。從光電編碼器輸出的兩路角位移信號首先進行濾波整型,硬件辨向,提取整周期信號,得到粗位移;對兩路信號進行A/D轉換,通過U函數得到計數脈沖,從而得到卦限值,通過V函數得到精位移的地址信號,查詢得到精位移。系統框圖如下:

        輸入的兩路信號分別是x1=2.5*sin(fai)+2.5(v),x2=-2.5*cos(fai)+2.5(v);在DSP中有專門的16路A/D轉換電路,因而不用再設計A/D轉換電路。A/D轉換后得到y1=|2.5*sin(fai)|,y2=|-2.5*cos(fai)|。對其進行卦限計數,

        A/D轉換周期由軟件設定,而在硬件電路實現時,必須要考慮卦限信號,控制信號的高度同步,但在實際電路中是很難做到的。

        如果將該數據與相位之間的對應關系用一張表來描述,就是我們所建立的細分表,放在DSP中的SRAM中,DSP中集成了2K×16的SRAM,足夠放置查詢表。兩者之間并不是一一對應關系。

        (FAI)(t)=arctanθt∝sinxt/cosxt;

        軟件流程圖如下:

        軟件程序流程圖:

        U函數取為U=y1*y2*(y2-y1);當U為零時,卦限信號就增加1

        ; ;;;;;;;;;;-------細分程序

        XIFEN: LDP #0E1h;

        CLRC SXM ; 抑制符號位擴展

        LACC RESULT0,10

        SACH X1 ; 存X1值

        LACC RESULT1,10 ;

        SACH X2; 存X2值

        SETC SXM ;允許符號位擴展

        LACL R1SIN;

        SUB #JUNZHI ;(2.5V);

        ABS

        接地電阻相關文章:接地電阻測試方法



        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 武宁县| 江山市| 同德县| 宝兴县| 大新县| 阿鲁科尔沁旗| 当涂县| 湟中县| 前郭尔| 顺义区| 永春县| 茌平县| 万宁市| 南郑县| 子洲县| 离岛区| 西藏| 志丹县| 藁城市| 札达县| 浪卡子县| 临沧市| 汕尾市| 虎林市| 吉林市| 札达县| 宜春市| 黄大仙区| 衡阳市| 西青区| 郓城县| 静宁县| 通辽市| 博罗县| 五家渠市| 调兵山市| 长沙市| 荣昌县| 红河县| 华阴市| 宣威市|