《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 用DSP實(shí)現(xiàn)增量式光電編碼器的細(xì)分
用DSP實(shí)現(xiàn)增量式光電編碼器的細(xì)分
摘要: 對(duì)光柵傳感器原始信號(hào)進(jìn)行細(xì)分是采用各類光柵器件進(jìn)行高精度位置測(cè)量、角度測(cè)量過程中不可或缺的一個(gè)環(huán)節(jié)。細(xì)分方法多種多樣,針對(duì)各種現(xiàn)有的電子學(xué)細(xì)分方案并結(jié)合實(shí)際應(yīng)用,本文采用軟件程序判卦限,查表細(xì)分方法,實(shí)現(xiàn)了針對(duì)測(cè)角傳感器信號(hào)的2048次細(xì)分。
Abstract:
Key words :

1 引言

目前,各類伺服驅(qū)動(dòng)器及其應(yīng)用中廣泛采用光柵裝置作為速度測(cè)量、位置測(cè)量的敏感元件。而且,廣泛采用兩路正交方波的形式,系統(tǒng)的實(shí)時(shí)性要求極高。因此,對(duì)于光柵編碼器的信號(hào)的細(xì)分等主要處理環(huán)節(jié),一方面集中考慮提高分辨率的問題,同時(shí),需要考慮實(shí)時(shí)性的問題。

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

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

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

2 細(xì)分及框圖

通過軟件查詢的方式進(jìn)行細(xì)分。從光電編碼器輸出的兩路角位移信號(hào)首先進(jìn)行濾波整型,硬件辨向,提取整周期信號(hào),得到粗位移;同時(shí)對(duì)兩路信號(hào)進(jìn)行A/D轉(zhuǎn)換,通過U函數(shù)得到計(jì)數(shù)脈沖,從而得到卦限值,通過V函數(shù)得到精位移的地址信號(hào),查詢得到精位移。系統(tǒng)框圖如下:

    輸入的兩路信號(hào)分別是x1=2.5*sin(fai)+2.5(v),x2=-2.5*cos(fai)+2.5(v);在DSP中有專門的16路A/D轉(zhuǎn)換電路,因而不用再設(shè)計(jì)A/D轉(zhuǎn)換電路。A/D轉(zhuǎn)換后得到y(tǒng)1=|2.5*sin(fai)|,y2=|-2.5*cos(fai)|。對(duì)其進(jìn)行卦限計(jì)數(shù),

A/D轉(zhuǎn)換周期由軟件設(shè)定,而在硬件電路實(shí)現(xiàn)時(shí),必須要考慮卦限信號(hào),控制信號(hào)的高度同步,但在實(shí)際電路中是很難做到的。

如果將該數(shù)據(jù)與相位之間的對(duì)應(yīng)關(guān)系用一張表來描述,就是我們所建立的細(xì)分表,放在DSP中的SRAM中,DSP中集成了2K×16的SRAM,足夠放置查詢表。兩者之間并不是一一對(duì)應(yīng)關(guān)系。

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

軟件流程圖如下:

    軟件程序流程圖:

U函數(shù)取為U=y1*y2*(y2-y1);當(dāng)U為零時(shí),卦限信號(hào)就增加1

; ;;;;;;;;;;-------細(xì)分程序

XIFEN: LDP #0E1h;

CLRC SXM ; 抑制符號(hào)位擴(kuò)展

LACC RESULT0,10

SACH X1 ; 存X1值

LACC RESULT1,10 ;

SACH X2; 存X2值

SETC SXM ;允許符號(hào)位擴(kuò)展

LACL R1SIN;

SUB #JUNZHI ;(2.5V);

ABS

SACL Y1 ; 得到y(tǒng)1

LACL X2;

SUB #JUNZHI(2.5V);

ABS

SACL Y2 ; 得到y(tǒng)2

SUB Y1 ;

SACL Y ; 得到Y(jié)=y2-y1值,保存 ;用dsp中計(jì)數(shù)器T4記卦限

BCND ss,NEQ

Lacl y1

BCND ss,NEQ

Lacl y2

BCND ss,NEQ ;若U=0,卦限計(jì)數(shù)器計(jì)數(shù)

set t4clkin ; 為計(jì)數(shù)器提供脈沖

ss: LACL y

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

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 ; 后面的指令執(zhí)行15+1次。

SUBC R2COS ;16 CYCLE DIVIDED LOOP

; .ACC中的數(shù)據(jù)減去Demon 減10次,直到被減數(shù)小于0

SACL QUOT ; 得到商

SACH REMAIN ; 得到余數(shù)

LACC REMAIN; 取余數(shù)后再除

RPT #13 ; 后面的指令執(zhí)行14次。

SUBC DENOM;

AND QUOT;

; SACL QUOT ;;;保存商。得到十位地址信號(hào)。用此信號(hào)得到RAM中對(duì)應(yīng)地址細(xì)分值保存在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 ;設(shè)編碼最小柵格為40秒,一個(gè)卦限為5秒。

SUB #XIFEN_ADR

B YY

YY2: LACC #XIFEN_ADR

YY: Ldp #0eah ;

LT t4cnt ;卦限值

MPY #05h ; 一個(gè)卦限相差5秒,

APAC 得到精確細(xì)分值

根據(jù)得到的細(xì)分值與整周期值相加就可以得到對(duì)應(yīng)的光柵編碼信號(hào)。

當(dāng)速度特別慢時(shí),用軟件判卦限會(huì)出現(xiàn)重復(fù)計(jì)數(shù)。也就是一個(gè)細(xì)分周期里,電機(jī)轉(zhuǎn)動(dòng)的位移小于20/1024秒,如下圖。卦限函數(shù)使得卦限增1,產(chǎn)生錯(cuò)誤。我們要舍棄這個(gè)計(jì)數(shù)。

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

3 軟件辨向 

要精確的控制電機(jī),就必須精確判斷當(dāng)電機(jī)轉(zhuǎn)動(dòng)出現(xiàn)來回?cái)[動(dòng)時(shí)的方向。對(duì)硬件辨向只能做到在整周期計(jì)數(shù)時(shí)知道電機(jī)的轉(zhuǎn)動(dòng)方向,當(dāng)在一個(gè)整周期內(nèi)方向改變時(shí),硬件辨向就不能及時(shí)的傳遞方向信息。我們根據(jù)判方向的規(guī)則,在軟件中完成辨向,在1,2,7,8卦限,x2小于等于2.5v時(shí)為順時(shí)針轉(zhuǎn)動(dòng),大于2.5v為逆時(shí)針轉(zhuǎn)動(dòng);在3,4,5,6卦限,x2大于2.5v時(shí)為順時(shí)針轉(zhuǎn)動(dòng), 小于等于2.5v為逆時(shí)針轉(zhuǎn)動(dòng);程序流程:

 

direction=1,表示順時(shí)針,為0是逆時(shí)針;

若做到1024細(xì)分, 分八個(gè)卦限,每個(gè)卦限有256個(gè)細(xì)分值。在DSP中只需要256×16個(gè)單元存儲(chǔ)細(xì)分值即可。

細(xì)分碼如下:

在DSP中有

 

細(xì)分碼

地址碼

卦限地址

A/D轉(zhuǎn)換得到的地址

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。