STM32通用定时器-输入捕获-脉冲计数

一、知识点

  1. 编码器
      两相编码器(正交编码器):两相编码器由 A 相和 B 相组成,相位差为 90 度。当旋转方向为顺时针时,A 相先变化,然后 B 相变化;当旋转方向为逆时针时,B 相先变化,然后 A 相变化。通过检测相位差变化,可以确定旋转的方向。STM32 单片机可以使用定时器的正交编码器模式(Encoder Mode)来实现两相编码器的接口。
    STM32通用定时器-输入捕获-脉冲计数_第1张图片

  四相编码器:四相编码器由 A 相、B 相、C 相和 D 相组成,相位差为 90 度。通过检测相位差变化和不同相位的信号变化情况,可以确定旋转的方向。STM32 单片机可以使用定时器的四相编码器模式(X4 Encoder Mode)来实现四相编码器的接口。

  1. 编码器接口
      编码器的两个输入引脚,就是每个定时器的CH1和CH2引脚,CH3和CH4不能接编码器。
      最终的实验现象,编码器有两个输出,一个是A相,一个是B相,然后接入到STM32,定时器的编码器接口,编码器的接口自动控制定时器时基单元中的CNT计数器,进行自增或自减。比如初始化之后,CNT初始值为0,然后编码器右转,CNT就++,右转产生一个脉冲,CNT就加一次,比如右转产生10个脉冲后,停下来,那么这个过程CNT就由0自增到10,停下来,编码器左转,CNT就–,左转产生一个脉冲,CNT就自减一次, 比如编码器再左转产生5个脉冲,那CNT就在原来10的基础上自减5,停下来。
      编码器接口,其实就相当于是一个带有方向控制的外部时钟,同时控制着CNT的计数时钟和计数方向,这样CNT的值就表示了编码器的位置。如果我们每隔一段时间取一次编码器的值,再把CNT清零,那么每次取出来的值就表示了编码器的速度。
      编码器测速实际上就是测频法测正交脉冲的频率,CNT计次,然后每隔一段时间取一次计次,这就是测频法的思路。编码器计次能根据旋转方向,不仅能自增计次还能自减计次,是一个带方向的测速。
    每个高级定时器和通用定时器都拥有1个编码器接口。

二、框图

STM32通用定时器-输入捕获-脉冲计数_第2张图片
  
STM32通用定时器-输入捕获-脉冲计数_第3张图片
  

三、编码器计数操作

STM32通用定时器-输入捕获-脉冲计数_第4张图片
  解释:当Tl1先产生脉冲,Tl2后产生脉冲。(A相先变化,B相后变化)时电机正转,计数器开始计数CNT++。当产生毛刺时,CNT不计数。Tl2先产生脉冲,Tl1后产生脉冲。(B相先变化,A相后变化)时电机反转,计数器CNT–。当产生毛刺时不计数。

  
STM32通用定时器-输入捕获-脉冲计数_第5张图片

你可能感兴趣的:(stm32,嵌入式硬件,单片机)