一、简介
这个编码器接口,其实就相当于是一个带有方向控制的外部时钟。它同时控制着CNT的计数时钟和计数方向。这样的话,CNT的值就表示了编码器的位置。如果我们每隔一段时间取一次CNT的值,再把CNT清零。是不是每次取出来的值就表示了编码器的速度。这个编码器接口计次更高级,它能根据旋转方向,不仅能自增计次,还能自减计次,是一个带方向的测速。
编码器的两个输入引脚,就是每个定时器的CH1和CH2引脚,CH3和CH4,不能接编码器
二、正交编码器
正交编码器(Quadrature Encoder)是一种旋转编码器,它能够提供关于旋转轴位置和旋转方向的精确信息。正交编码器通常由两个通道组成,它们输出相位相差90度(或π/2弧度)的脉冲信号。这种设计使得系统能够检测旋转的方向,而不仅仅是旋转的位置。
### 工作原理:
1. **A通道和B通道**:正交编码器有两个输出通道,通常标记为A和B。这两个通道产生的脉冲信号在相位上是正交的,即一个通道的脉冲在另一个通道脉冲的中间点发生。
2. **方向检测**:通过比较A和B通道的脉冲序列,可以确定旋转的方向。如果A通道的脉冲在B通道之前,表示一个方向的旋转;反之,则表示相反方向的旋转。
3. **位置检测**:通过计数两个通道的脉冲,可以确定轴的旋转位置。每个脉冲代表轴的一个微小旋转。
### 应用场景:
- **机器人和自动化**:用于精确控制机器人臂或自动化设备的位置。
- **伺服电机控制**:在伺服系统中,正交编码器用于提供关于电机轴位置的反馈,以实现精确控制。
- **测量设备**:如旋转测微计、角度测量仪等,用于测量角度或旋转。
- **汽车行业**:在汽车的ABS系统、转向系统等中,用于检测和控制旋转部件的位置和速度。
### 接口与连接:
在微控制器(如STM32)中,正交编码器的接口通常涉及以下步骤:
- **引脚配置**:将编码器的输出引脚连接到微控制器的输入引脚,并配置这些引脚为中断或事件输入。
- **中断服务**:配置中断服务程序,以响应编码器的脉冲信号,并更新位置和方向信息。
- **软件滤波**:可能需要软件滤波来处理编码器信号的噪声。
- **数据处理**:编写代码来解析脉冲信号,计算位置和方向。
### 注意事项:
- **分辨率**:正交编码器的分辨率取决于它能够产生的脉冲数量。分辨率越高,位置测量的精度越高。
- **同步误差**:在高速旋转或高分辨率应用中,需要考虑同步误差,确保信号处理的准确性。
正交编码器是实现精确位置和速度控制的关键组件,广泛应用于需要高精度旋转测量的场合。
正交编码器一般可以测量位置,或者带有方向的速度值,它一般有两个信号输出引脚,一个是A相,一个是B相
超前90度或者滞后90度,分别代表正转和反转
三、编码器输入部分
高级定时器和通用定时器都有一个编码器接口,基本则没有。
编码器有两个输入端,要接入A相和B相
这里有两个标号,可以看出,这个编码器接口的两个引脚。借用了输入捕获单元的前两个通道,所以最终编码器的输入引脚,就是定时器的GH1和CH2这两个号脚
信号的通路是,CH1、CH2通过这里,通向编码器接口,CH3、CH4与编码器接口无关
四、编码器输出部分
那编码器接口的输出部分,其实就相当于从模式控制器了。如果出现了边沿信号,…并且对应另一相的状态为正转,则控制CTI自增。否则,控制CNT自减。
注意在这里,我们之前一直在使用的72MHz内部时钟,和我们在时基单元初始化时设置的计数方向,并不会使用。因为此时计数时钟和计数方向都处编码器接口托管的状态。计数器的自增和自滅,受编码器控制
五、编码器接口的基本结构
编码器正转时,CNT自增,
编码器反转时,CNT自减
一般ARR会设置最大值,为了区分正反转,列如正转会从0、1 、2 、3 、而反转就是65535 、 65534这样自减。这里负数不应该是-1、-2吗,65535是不是就出问题了?没关系、我们直接把这个16位的无符号数转换为16位的有符号数。根据补码的定义,这个65535就对应-1。这样就可以直接得到负数,非常方便
六、工作模式
正转(红)、反转(蓝)
1.实例图
2.这个是T1反相、TI2不反相的图
在编码器模式下,这里就不再是边沿的极性选择了。而是高低电平的极性选择,如果我们选择上升沿的参数,就是信号直通过来,高低电平极性不反转。如果选择下降沿的参数,就是信号通过一个非门过来,高低电平极性反转。
如果两个信号都不反转,就是这里的均不反相那对应就是均不反转。如果把T1高低电平反转一下,就是这里的TI1反相
TI1反相记得把输入信号取反看。·