用DSP实现增量式光电编码器的细分
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中有
- 基于DSP的光纤光栅解调系统的设计(01-25)
- 基于DSP的光纤高温测量仪的软件设计 (04-08)
- 基于DSP处理器的光纤高温测量仪的设计方案(05-08)
- 用DSP实现抖动(Jitter)测量的方法(04-28)
- 基于dsPIC30F2010的土壤水分测量仪的设计研究(08-27)
- MSP430在电力测控保护产品中的应用(01-15)