1. 正交编码器原理
码盘:正交编码器有两个光电传感器,另一头有一个光源,当黑白相间的码盘转到白色对准光电传感器时,光电传感器发出一个脉冲。AB之间相隔的角度往往是90°的相位,即白格或者黑格的一半。
方向:A相和B相相差一个相位,一般来说是90°。A相信号在前表示正转,B相信号在前表示反转。
计数:在每个上升沿或者下降沿检测,检测到计数器就加+1。
线数和脉冲数的关系:假如一个编码器是1024线的,那么它转过一圈,若是只检测上升沿和下降沿,A相和B相应该各自发出了1024个脉冲,计数器记的数应该是2048。如果将其设置为上升沿下降沿都检测,则计数器应该计到了4096。
Z相:有的编码器还有一个Z相,它表示的是0位,即检测到0刻线即输出高电平,也就是给增量式编码器一个寻零的功能。
2. HAL库的编码器模式
STM32的定时器TIM1,2,3,5,8中有专门的编码器模式,省去了我们读脉冲和计数的操作。而且配置全面
可以配置:
计数方式(counter mode):即向上计数还是向下计数,不过使用编码器都是记录转的角度,读取计数器从0开始的计数,所以一般来说都是向上计数
编码器模式(encoder mode):Tl1是只检测上升沿,Tl2只检测下降沿。Tl1 and Tl2是上下沿都检测,那么脉冲数将是只检测一个沿的两倍。
检测极性(Polarity):触发捕获AB相的极性。意思是比如设为Rising Edge,那么检测到上升沿的时候就触发encoder捕获AB相的值
3. 具体配置
将所选TIM中的“Combined Ch