《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 用DSP實現增量式光電編碼器的細分
用DSP實現增量式光電編碼器的細分
摘要: 對光柵傳感器原始信號進行細分是采用各類光柵器件進行高精度位置測量、角度測量過程中不可或缺的一個環節。細分方法多種多樣,針對各種現有的電子學細分方案并結合實際應用,本文采用軟件程序判卦限,查表細分方法,實現了針對測角傳感器信號的2048次細分。
Abstract:
Key words :

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

SACL Y1 ; 得到y1

LACL X2;

SUB #JUNZHI(2.5V);

ABS

SACL Y2 ; 得到y2

SUB Y1 ;

SACL Y ; 得到Y=y2-y1值,保存 ;用dsp中計數器T4記卦限

BCND ss,NEQ

Lacl y1

BCND ss,NEQ

Lacl y2

BCND ss,NEQ ;若U=0,卦限計數器計數

set t4clkin ; 為計數器提供脈沖

ss: LACL y

BCND DEVISION,GEQ ; 判斷卦限,y2>=y1 時,直接y1/y2;否則y2/y1,除數變被除數

JIAOHUAN: LACC y1 ; y1和y2交換

SACL TEMP_AD ;

LACL y2 ;

SACL y1 ;

LACC TEMP_AD ;

SACL y2 ; y2/y1 ; 毫秒為Q8格式

DEVISION LACC R1SIN ,6;;;;取分子并左移6位;

RPT #15 ; 后面的指令執行15+1次。

SUBC R2COS ;16 CYCLE DIVIDED LOOP

; .ACC中的數據減去Demon 減10次,直到被減數小于0

SACL QUOT ; 得到商

SACH REMAIN ; 得到余數

LACC REMAIN; 取余數后再除

RPT #13 ; 后面的指令執行14次。

SUBC DENOM;

AND QUOT;

; SACL QUOT ;;;保存商。得到十位地址信號。用此信號得到RAM中對應地址細分值保存在DSP的sram中)

ADD #0800h ;SRAM 初始地址為#0800H(

SAL XIFEN_ADR ;

LACC #XIFEN_ADR

ADD #0800h ;SRAM 初始地址為#0800H

SAL XIFEN_ADR ;

LACL Y ;Y2>=Y1 ;

BCND yy2 ,GEQ

LACL #05h ;設編碼最小柵格為40秒,一個卦限為5秒。

SUB #XIFEN_ADR

B YY

YY2: LACC #XIFEN_ADR

YY: Ldp #0eah ;

LT t4cnt ;卦限值

MPY #05h ; 一個卦限相差5秒,

APAC 得到精確細分值

根據得到的細分值與整周期值相加就可以得到對應的光柵編碼信號。

當速度特別慢時,用軟件判卦限會出現重復計數。也就是一個細分周期里,電機轉動的位移小于20/1024秒,如下圖。卦限函數使得卦限增1,產生錯誤。我們要舍棄這個計數。

    為了解決這個問題,我們把軟件的判卦限程序改以下:用一個flaggx標志來表示卦限信號是否剛記過。剛剛記過,就舍棄掉。改正的程序流程如下圖。

3 軟件辨向 

要精確的控制電機,就必須精確判斷當電機轉動出現來回擺動時的方向。對硬件辨向只能做到在整周期計數時知道電機的轉動方向,當在一個整周期內方向改變時,硬件辨向就不能及時的傳遞方向信息。我們根據判方向的規則,在軟件中完成辨向,在1,2,7,8卦限,x2小于等于2.5v時為順時針轉動,大于2.5v為逆時針轉動;在3,4,5,6卦限,x2大于2.5v時為順時針轉動, 小于等于2.5v為逆時針轉動;程序流程:

 

direction=1,表示順時針,為0是逆時針;

若做到1024細分, 分八個卦限,每個卦限有256個細分值。在DSP中只需要256×16個單元存儲細分值即可。

細分碼如下:

在DSP中有

 

細分碼

地址碼

卦限地址

A/D轉換得到的地址

000,0000,0000

000 3

00,0000,0000~00,0000,0010

000,0000,0001

000 6

00,0000,0011~0000,0010~101

000,0000,0010

。 9

1001

000,0000,0011

。13

1101

000,0000,0100

。16

10000

000,0000,0101

19

1

000,0000,0110

22

 

000,0000,0111

25

 

000,0000,1001

28

 

000,0000,1010.....

31

 

000,0000,1011

35

 

000,0000,1100

38

 

000,0000,1101

41

 

000,0000,1110

44

 

000,0000,1111

47

 

000,0001,0000

50

 

000,0001,0001

53

 

000,0001,0010

57

 

 

60

 

 

63

 

 

66

 

 

69

 

000,0110,1111

366

 

000,0111,0000

370

 

000,0111,0001

373

 

000,0111,0010

377

 

000,0111,0011

381

 

000,0111,0100

384

 

000,0111,0101

388

 

000,0111,0110

391

 

000,0111,0111

395

 

000,0111,1000

399

 

000,0111,1001

402

 

000,0111,1010

406

 

000,0111,1011

410

 

000,0111,1100

413

 

000,0111,1101

417

 

000,0111,1110

420

 

000,0111,1111

424

 

000,1000,0000

 

 

......

 

 

000,1111,1000(248)

945

 

000,1111,1001

981

 

000,1111,1010

987

 

000,1111,1011

993

 

000,1111,1100

999

 

000,1111,1101

1005

 

000,1111,1110

1012

 

000,1111,1111

1018

00

001,0000,0000

1024

11,1111,1111~11,1111,1

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产精品区免费视频| 手机在线观看精品国产片| 你是我的城池营垒免费观看完整版 | 护士与税务干部完整2av| 亚洲国产成人高清在线观看| 紧身短裙女教师波多野| 国产日产欧洲无码视频| 99久久夜色精品国产网站| 成人片黄网站A毛片免费| 久热re这里只有精品视频| 污视频免费在线观看网站| 四虎国产成人永久精品免费| 色五五月五月开| 国语自产偷拍精品视频偷| 东北少妇不戴套对白第一次| 日韩欧美中文字幕出| 亚洲日韩欧美一区久久久久我| 精品一区二区三区无卡乱码| 国产亚洲3p无码一区二区| 亚洲综合精品香蕉久久网| 在线看片你懂的| 中国版老头gaybingo| 日韩在线a视频免费播放| 亚洲国产精品日韩在线观看| 男女免费观看在线爽爽爽视频 | 扒开双腿疯狂进出爽爽爽动态图 | 国产综合视频在线观看一区| www.99re6| 成年人看的毛片| 久久国产视频网| 月夜直播在线看片www| 亚洲最大成人网色| 热re久久精品国产99热| 全彩福利本子h全彩在线观看| 色综合久久久无码中文字幕波多 | 色片在线免费观看| 国产成人久久av免费| 爽爽爽爽爽爽爽成人免费观看| 国语自产偷拍精品视频偷拍| 一个人看的免费观看日本视频www| 插我舔内射18免费视频|