旋转编码器是用来测量转速或旋转圈数的装置,常见的旋转编码器有磁旋转编码器和光电式旋转编码器两种。旋转编码器通过光电或磁电转换,可将输出轴的角位移、角速度等机械量转换成相应的电脉冲以数字量输出(REP)。它分为单路输出和双路输出两种。技术参数主要有每转脉冲数(几十个到几千个都有)和供电电压等。单路输出是指旋转编码器的输出是一组脉冲,而双路输出的旋转编码器输出两组A/B相位差90°的脉冲,通过这两组脉冲不仅可以测量转速,还可以判断旋转的方向。NUE-PSK3.1调制解调器使用旋转编码器为双路输出,它接收用户调整游标的位置信息,用户通过旋动旋转编码器旋钮选择PSK信号的频点,也可以在配置界面中选择不同的功能选项。旋转编码器实物如图7-7所示。
dsPIC33FJ128MC706通过内部集成的正交编码接口模块(QEI)接收旋转编码器的信号。其接口电路如图7-8所示。
图7-7 旋转编码器实物图
图7-8 旋转编码器接口电路
正交编码接口模块(QEI)内部有一个16位基准时钟,可以接收从旋转编码器的A、B端子发送的脉冲信号,其中A连接到QEA引脚(与CN6复用)、B连接到QEB引脚(与CN7复用)。如果A相(QEA)超前B相(QEB)那么旋转方向被认为是正向,反之为反向。QEA和QEB引脚输入的每个脉冲作为增量脉冲计数器信号,每个QEA和QEB信号沿到来时,POSCNT寄存器都会增量或者减量计数。(www.xing528.com)
在源文件NUE_PSK_main_1.c中,程序调用Init_QED()函数进行正交编码接口模块的初始化,该函数在NUE_PSK_QED.c文件中定义为
其中,QEICONbits.QEIM=7表示将QEI设置为X4模式,并且与MAXCNT寄存器相匹配时将位置计数器复位,这里MAXCNT寄存器被设置为0xFFFF。
读取QEI计数器数值的代码在Proc_QEI()函数中,该函数大约每50ms被执行一次。Proc_QEI()函数在文件NUE_PSK_Subroutines_2C.c中定义。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。