在本指南中,我们将介绍如何使用STM32的TIM2读取轴编码器。
我们将介绍以下内容:
什么是编码器
所需部件和连接
配置引脚和定时器以读取编码器
演示代码
1.1 什么是编码器:
旋转编码器,也称为轴编码器,是一种将轴或轴的角度位置或运动转换为模拟或数字输出信号的机电设备。
旋转编码器广泛用于需要监视或控制机械系统(或两者兼而有之)的应用,包括工业控制、机器人、摄影镜头、计算机输入设备(如光学机械鼠标和轨迹球)、受控应力流变仪和旋转雷达平台。
1.2 编码器类型:
- 绝对值编码器在从编码器上断开电源时保持位置信息。编码器的位置在通电后立即可用。编码器值与受控机械的物理位置之间的关系在装配时设置。系统不需要返回校准点以保持位置精度。
- 增量编码器将立即报告位置变化,这是某些应用中的基本功能。但是,它不会报告或跟踪绝对位置。因此,由增量编码器监控的机械系统可能必须移动到固定参考点以初始化绝对位置测量值。
- 我们将在本教程中使用的旋转编码器是一个增量编码器,也称为正交编码器。基本上,它是一个增量式编码器,具有2个异相输出通道,用于许多自动化应用,需要对运动方向进行感应。每个通道提供特定数量的等间距每转脉冲(PPR),运动方向通过一个通道领先或尾随另一个通道的相位关系来检测
1.3 编码器输出:
在这种情况下,编码器应以某种方式在DT和CLK线路上产生脉冲,该脉冲可由stm32的计时器读取。在下图中,是顺时针旋转时轴编码器的输出。Clk 是黄色的,DT 是蓝色的。
- 当轴编码器顺时针旋转时,CLK首先拉高,然后是DT线,这表明有旋转。
- 当发生计数器时钟旋转时,DT线首先被拉高,然后拉高CLK线。
旋转编码器将输出 2 个信号,彼此相差 90 度。
通过分析过渡的顺序,可以计算步数并检测方向
旋转编码器去抖动
旋转编码器采用机械触点,容易出现"弹跳"(一次按压产生多次中断)。
"信号"可以通过实现如下低通滤波器来清除:
低通滤波器(即电阻器和电容器)是容许低于截止频率的信号通过, 但高于截止频率的信号不能通过的电子滤波装置。
也可以采用数据手册里的电路