一种简单实用的测角码盘设计方案
2 软件设计
2.1 状态编码
由图4可知,A、B信号的相位相差1/4个周期,所以可得图6所示的状态变换图。
若规定顺序
时针方向计数器为加,逆时针方向计数器为减。
这样,通过不同状态值的变换就可对数据进行加操作、减操作和不操作,从而实现对信号的连续处理功能。
2.2 软件编程
软件流程如图7所示。
主要可分为以下几部分。
①上电开始后,软件首先对AT89C2051的内部寄存器和RS422串行口进行初始化。通过对专用寄存器的赋值,设定工作状态和通信 方式,串行通信的波特率为9600b/s。
②初始化完成后,软件将检测端口Px.m和Px.n的状态,程序用两位记录端口相邻状态值,左一位代表前一状态,右一位代表当前状态,然后通过带进位的左循环指令进行状态更新。通过状态值变化,查表2,跳转进入执行程序。
③在执行程序中,可根据不同需要设定上下限进行数据处理。同时,由于处理程序很少,执行时间短,串行通信部分可采用查询方式完成。
3 应用实例
把该设计应用到笔者开发的项目—某型转达训练系统上。采用图3和图5所示的电路设计方案,用该码盘连续采集空中飞行目标的方位角和高低角。
以高低角采集为例,系统指标要求高低角变化范围是-50~1450密位,设计中采用的编码胶片精度是480单位/圈。如文中图1所示,由于编码胶片是圆形的,且一个黑色或一个魄区间均可称为一个单位,所以计算其精度时用每圈包含的黑白区间个数确定,因此用单位/圈。对高低角增减判断主要通过软件编程实现,这段程序如下。
MAIN1:MOV A,R4 ;读骊盘A、B信号到码盘状态暂存器R4
MOV C,P3.3 ;P3.3为A信号采集端口,
RLCA ;用于A信号新旧状态转换
MOV C,P3.5 ;P3.5为B信号采集端口,
RLCA ;用于B信号新旧状态转换
MOV R4,A
ANL A,#0FH ;计算散转地址
MOV B,#03H
MUL AB
MOV DPTR,#TIM1;TIM1为状态真值表首地址
LJMP @A+DPTR ;散转至真值表
然后,通过查真值表状态值,转入处理程序实现角度的加减。若出现丢码现象,说明单片机采集速度低于码盘转动速度,可根据实际情况更换采集芯片或降低码盘转动速度。同时,通过规定编码胶片每旋转个单位对应的角度值变化1密位(密位是军事用语,一种更精确的划分角度方法,一周为360度,6000密位)和相应的单位转换。在软件中确定
《一种简单实用的测角码盘设计方案(第2页)》