外部旋钮带动一定角度的转盘接触到盘内许多成圆形状的触点形成A、B两组相位相差90°的方波。根据A、B之间的相位关系即可确定旋钮的正反转。当A超前于B时为正转,而当B超前于A时为反转。旋转编码器的输出脉冲宽度随着旋转速度而变化,即转速越高其脉冲宽度越窄。Р由于编码器工作的环境可能比较恶劣,输出脉冲较易受干扰,产生毛刺。在编码器快速旋转时,由于采样速率不够,可能导致采样的脉冲有遗漏。这些都会导致鉴相得出错误的结果,需要在单片机程序实现中对这些情况进行优化纠正。Р图(2-3-3-1)编码器输出脉冲以及周期内输出波形的4种组合Р鉴相方法及相应算法:Р在一个脉冲周期时间T内,单片机应准确判断出A点相对于B点的相位情况。根据开始采样检测的时刻不同,在T内可以将采样的波形分为4种不同的组合情况。若两点产生波形的组合不在这4种情况中,则表明由于外部干扰或抖动产生了异常的波形。Р单片机的P2.0和P2.1引脚直接连接A、B点,通过循环采样读取A、B点电平,来判断当前旋钮是否旋转以及旋转的方向。A点电平与B点电平有4种不同的组合:00、01、10、11,可以根据4种组合状态之间的变化进行鉴相。若正旋转,则可得到对应的序列{00,10,11,01,00},反旋转则有对应的序列{00,01,11,10,00}。如下图所示的判断表中,行表示当前A、B点电平值组合,列表示上一次变化前A、B点电平值组合,检测到发生1次电平变化即可进行鉴相。需要指出的是,若A、B两点电平相比上次均发生了变化,则无法进行判断,这说明检测时遗漏了脉冲或产生了“毛刺”。Р图(2-3-3-2)编码器输出脉冲AB相位判断表Р为了保证采样A、B电平时没有脉冲遗漏,对采样频率要求比较高。通常需要保证在编码器以最快速度旋转时,在A、B任一点2次电平变化之间有2次以上的采样,以便可以比较最近2次的电平,去除因为其他外界条件变化产生的抖动。