用DSP實(shí)現增量式光電編碼器的細分
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 時(shí),直接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秒,一個(gè)卦限為5秒。
SUB #XIFEN_ADR
B YY
YY2: LACC #XIFEN_ADR
YY: Ldp #0eah ;
LT t4cnt ;卦限值
MPY #05h ; 一個(gè)卦限相差5秒,
APAC 得到精確細分值
根據得到的細分值與整周期值相加就可以得到對應的光柵編碼信號。
當速度特別慢時(shí),用軟件判卦限會(huì )出現重復計數。也就是一個(gè)細分周期里,電機轉動(dòng)的位移小于20/1024秒,如下圖。卦限函數使得卦限增1,產(chǎn)生錯誤。我們要舍棄這個(gè)計數。
為了解決這個(gè)問(wèn)題,我們把軟件的判卦限程序改以下:用一個(gè)flaggx標志來(lái)表示卦限信號是否剛記過(guò)。剛剛記過(guò),就舍棄掉。改正的程序流程如下圖。
接地電阻相關(guān)文章:接地電阻測試方法
評論