新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 用DSP實現(xiàn)增量式光電編碼器的細(xì)分

        用DSP實現(xiàn)增量式光電編碼器的細(xì)分

        作者: 時間:2010-12-22 來源:網(wǎng)絡(luò) 收藏

        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中計數(shù)器T4記卦限

        BCND ss,NEQ

        Lacl y1

        BCND ss,NEQ

        Lacl y2

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

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

        ss: LACL y

        BCND DEVISION,GEQ ; 判斷卦限,y2>=y1 時,直接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 ;;;保存商。得到十位地址信號。用此信號得到RAM中對應(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秒,一個卦限為5秒。

        SUB #XIFEN_ADR

        B YY

        YY2: LACC #XIFEN_ADR

        YY: Ldp #0eah ;

        LT t4cnt ;卦限值

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

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

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

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

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

        接地電阻相關(guān)文章:接地電阻測試方法




        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 方正县| 洛川县| 溧阳市| 育儿| 永福县| 廊坊市| 丹江口市| 噶尔县| 达孜县| 澜沧| 松潘县| 宣汉县| 延边| 曲靖市| 娄烦县| 巫山县| 东辽县| 唐河县| 宝坻区| 沅陵县| 东光县| 通州市| 大姚县| 咸阳市| 鄂温| 如东县| 本溪市| 上犹县| 灵宝市| 重庆市| 扶风县| 镇雄县| 佛山市| 建水县| 茶陵县| 柘城县| 庆元县| 长子县| 阿拉尔市| 中江县| 宁德市|