《電子技術應用》
您所在的位置:首頁 > 模拟设计 > 设计应用 > 用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網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 国产精品美乳一区二区免费| 国产在线xxxx| 久久久国产精品x99av| 97碰在线观看| 一区二区三区欧美在线| 亚洲精品蜜桃久久久久久| 国产欧美一区二区三区在线看| 丝袜亚洲欧美日韩综合| 国产精品自在线| 日韩av不卡播放| 欧洲日韩成人av| 精品无人区一区二区三区 | 日本国产高清不卡| 日韩精品av一区二区三区| 免费影院在线观看一区| 人妻少妇精品久久| 精品国产免费人成电影在线观...| 日韩在线高清视频| 国产欧美综合一区| 欧美在线不卡区| 国产日韩在线看片| 久久久久久久国产精品视频| 俄罗斯精品一区二区三区| 久久99精品久久久久久久久久| 在线视频不卡一区二区| 国产精品国产三级国产专播精品人 | 91精品久久久久| 91久久久久久久| 精品麻豆av| 国产精品国产亚洲精品看不卡 | 久久久av电影| 国产a∨精品一区二区三区不卡| 欧美日韩一区二区三区免费| 色婷婷综合成人av| 欧美激情久久久久久| 婷婷五月综合缴情在线视频| 日韩一区国产在线观看| 91精品国产高清久久久久久久久 | 91精品成人久久| av日韩一区二区三区| 欧美精品在线免费|