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é),。空間細(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 |