stm32用两个定时器读取两个电机上编码器的输出脉冲,为什么两者极性要取反

做两轮平衡小车的控制,参考了别人的代码,在读取两个车轮速度的时候,将读取的脉冲数取反,注释为“读取编码器的值,因为两个电机的旋转了180度的,所以对其中一个取反,保证输出极性一致”不太明白这句话的意思。定时器不是仅仅对脉冲进行计数吗,这个反向或者什么相位差的有什么影响呢?
截图不太清楚,内容是这样的:
/////////////////////////////
Encoder_Left=-Read_Encoder(2); //===读取编码器的值,因为两个电机的旋转了180度的,所以对其中一个取反,保证输出极性一致
Encoder_Right=Read_Encoder(4); //===读取编码器的值
//////////////////////////////////////
具体是用stm32 f103系列的timer2和timer4进行脉冲计数的。

取反不是因为程序上的原因,而是结构上的原因。人家的注释“读取编码器的值,因为两个电机的旋转了180度的,所以对其中一个取反,保证输出极性一致”说的很明白了。再举个例子,你说地球的自传方向是顺时针呢还是逆时针呢?因为从南极上方和北极上方看到的转动方向是相反的,两个编码器也是同样的道理,你把两个编码器分别当成南北极再思考思考。
当然还有另一种情况,要是你编码输出的是正交信号,在连接定时器ch1和ch2通道引脚时,两个编码器线序交叉相连,你在硬件连接上纠正了结构上的“错误”,那么程序上就无需在取反了。追问

你好,感谢答复!
你说的意思我懂了,但是不解的是,定时器记录的是脉冲,最后在记录的脉冲前面加了个负号,就得到了个“-”速度了,然后和另一个车轮是“+”速度,那就相反啦,哪里还有什么保持极性一直呢。。
我尝试着调试了下,发现Encoder_Left=-Read_Encoder(2); Encoder_Right=Read_Encoder(4);

温馨提示:答案为网友推荐,仅供参考