微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 用DSP实现增量式光电编码器的细分

用DSP实现增量式光电编码器的细分

时间:01-01 来源: 点击:

PT #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中有

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top