旋转编码器c语言程序,【E课堂】旋转编码器的编程思路
旋转编码器应用于角度定位或测量时,在A、B两相输出端共设有三个方波信号源端子A、B和Z。其中A相与B相输出占空比均为50%的方波信号。当编码器正向旋转时,在A相与B相之间形成了固定频率的脉冲序列;当编码器逆向旋转时,则会形成反向的脉冲序列。这种方波信号的产生源于对称式的磁极交错排列特性所导致的空间角位移特性。由于编码器每转一周就会产生固定的脉冲次数,则可以通过统计脉冲数量来计算出被测角度值;而Z相输出则直接反映着编码器转子一圈的转动状态信息
现在普遍采用的一种增量式编码器能够直接接收并处理旋转编码器产生的脉冲信号。通过PLC系统的快速计数功能对输入信号进行处理从而实现测量结果的获取。不同型号的产品会发送不同数量和类型的脉冲信号其中有些类型则会发送A、B、Z三个相位信号而另一些则可能只包括A、B两个相位或者仅仅是单一的一个相位信号。
该编码器共配置了5条引线:其中包含3根脉冲输出引线(Pulse Output)、1根为COM端子引线(用以接收控制信号)、另1根为电源供电的端子(OC门型),能够直接接入外部电路或PLC系统。其供电可选用外部电源模块,并支持直接接入PLC自带的24V DC供电模块。需要注意的是,在进行连接时:电源‘-’极应与编码器的COM端子相连;A相和B相脉冲信号分别与PLC输入端子相连(A相与B相之间相差90度),而Z相则仅提供一个脉冲信号(通常用于作为零点基准)。此外,在旋转过程中还需要配置一条屏蔽地线上地连线以减少干扰影响。
编码器-----------PLC
A,B,Z 分别接入PLC的输入点(按速计数器HSC的规定)
+24V------------+24V
COM------------- -24V-----------COM
旋转编码器的应用电路为:

其中100\text{pF}的电容具有去抖动的功能(即去除电压瞬态波动)的作用.然而,在进行软件处理时最好再加上相应的软件去抖动措施(即通过延时采样与重复采样等技术手段进行综合考量)以避免误判的发生.而软件去抖动的主要方法包括延时与连续采样等技术手段.在此不做进一步详细说明
A和B输出波形为

通过输出波形图可知每个运动周期的时序为

静止状态为11或00,A异或B的结果为0(注1)
单片机可利用定时器中断来检测A和B的状态,中断时间在5~20ms之间均可。
当检测到A^B= 0时,表示为静止状态,记下A和B的状态。
当检测到A^B= 1时,表示有转动,读取AB的状态,如果AB是从11到01或者是
从00到10则为正转,反之如果AB是从11到10或者是从00到01则为反转。
此方法比较简单可靠,可以检测转动一格又可以检测快速转动。
注1:异或运算
异或的运算方法是一个二进制运算,C语言中用A^B表示A异或B:
1^1=0
0^0=0
1^0=1
0^1=1
两者相等为0,不等为1.
