编码器2

2020-07-18  本文已影响0人  电子小陈陈

我这里使用的是stm32F103RCT6(正点原子的mini板)。

方法1:M法,会通过测量单位时间内A相输出的脉冲数来得到速度信息。(这里可以使用stm32定时器的捕获模式,选择上升沿或下降沿,进行单位时间脉冲的计数。)

方法2:4倍频法,会通过同时测量单位时间内A相和B相的上升沿和下降沿,1234为一组。相对于上种方法,精度提高了4倍。我们使用这种方法。

用stm32做编码器接口的好处是计数比较智能,容许接口出现抖动而不影响结果。而且配置的代码多,可以直接使用。所以下面就是stm32定时器做编码器接口的介绍。

选择编码器接口模式的方法是:如果计数器只在TI2的边沿计数,则置TIMx_SMCR寄存器中的 SMS=001;如果只在TI1边沿计数,则置SMS=010;如果计数器同时在TI1和TI2边沿计数,则 置SMS=011。通过设置TIMx_CCER寄存器中的CC1P和CC2P位,可以选择TI1和TI2极性;如果需要,还可以 对输入滤波器编程。根据两个输入信号的跳变顺序,产生了计数脉冲和方向信号。依据两个输入信号 的跳变顺序,计数器向上或向下计数,同时硬件对TIMx_CR1寄存器的DIR位进行相应的设置。不管计数器是依靠TI1计数、依靠TI2计数或者同时依靠TI1和TI2计数,在任一输入端(TI1或者 TI2)的跳变都会重新计算DIR位。编码器接口模式基本上相当于使用了一个带有方向选择的外部时钟。这意味着计数器只在0到 TIMx_ARR寄存器的自动装载值之间连续计数(根据方向,或是0到ARR计数,或是ARR到0计 数)。所以在开始计数之前必须配置TIMx_ARR(一般配置到最大值);同样,捕获器、比较器、预分频器、重复计数 器、触发输出特性等仍工作如常。编码器模式和外部时钟模式2不兼容,因此不能同时操作。在这个模式下,计数器依照增量编码器的速度和方向被自动的修改,因此计数器的内容始终指 示着编码器的位置。计数方向与相连的传感器旋转的方向对应。下表列出了所有可能的组合, 假设TI1和TI2不同时变换。

表1计数方向和编码器的关系。

一个外部的增量编码器可以直接与MCU连接而不需要外部接口逻辑。但是,一般会使用比较器 将编码器的差动输出转换到数字信号,这大大增加了抗噪声干扰能力。编码器输出的第三个信 号表示机械零点,可以把它连接到一个外部中断输入并触发一个计数器复位。下图是一个计数器操作的实例,显示了计数信号的产生和方向控制。它还显示了当选择了双边 沿时,输入抖动是如何被抑制的;抖动可能会在传感器的位置靠近一个转换点时产生。在这个 例子中,我们假定配置如下:

CC1S=’01’ (TIMx_CCMR1寄存器,IC1FP1映射到TI1)  CC2S=’01’ (TIMx_CCMR2寄存器,IC2FP2映射到TI2)  CC1P=’0’ (TIMx_CCER寄存器,IC1FP1不反相,IC1FP1=TI1)

CC2P=’0’ (TIMx_CCER寄存器,IC2FP2不反相,IC2FP2=TI2)

SMS=’011’ (TIMx_SMCR寄存器,所有的输入均在上升沿和下降沿有效).

CEN=’1’ (TIMx_CR1寄存器,计数器使能)

下图编码器模式下实例操作。

下面对于计数器的加减做一个说明:

在上图中,观察到这和TI1和TI2的相对电平有关,这时就可以根据表一进行理解。仅在TI1计数时 相对信号的电平其实就是TI2的电平(不考虑反向的情况)这样再看这张表就会比较容易理解了。

在TI2为高电平的时候TI1为上升沿时脉冲计数减1,TI1位下降沿时脉冲计数加1

在TI2为低电平的时候TI1为上升沿时脉冲计数加1,TI1位下降沿时脉冲计数减1

后面可以同理类推。

链接:工程文件百度网盘 提取码:bjqy

上一篇 下一篇

猜你喜欢

热点阅读