**
STM32定时器捕获编码器模式测速和方向测不准问题
- 问题概述
关于STM32编码器模式电机测速的资料网上一抓一大把,却发现真的拿过来用还是有问题的,比如刚刚做了个东西,是个个头比较大的麦克纳姆轮车,控制运动就需要精确的测量转速和方向,我用的是直流有刷、减速比90、11线霍尔编码器的减速电机。
原本想着用个定时器的编码器模式直接把速度和方向读回来多省事,后面花点时间去调PID,然而问题来了,编码器我知道,定时器编码器模式我也知道,但是凑在一起就是不好好工作我就知道为什么了。
问题表现是什么样的呢:
接法是这样的,我用的STM32F103,TIM2、3、4、5的CH1、2分别接四个直流电机霍尔编码器的A/B信号,然后开了四个TIM的编码器模式捕获,计数器上限值设最大,起始值设中间值。
再开个TIM6,100模式溢出读四个定时器的计数值,来求转速和方向,计划很好,现实却让人无法理解。
调试嘛,我先用手拧轮子,想看看准不准,然而就发现,没有速度、也没有方向,中间值设的32767,拧完轮子发现计数值要么是32768要么就是32765,这也不对啊。
尝试着拧快点,多拧会,发现计数值确实变了,正常情况下减速比90、11线的电机轮子转一圈编码器出脉冲990个,但计数值明显不符,比实际少了很多。
- 问题分析
那么问题来了,为什么会少呢?线没问题,脉冲好像也没问题,我用单个编码器的A信号直接用定时器捕获上升沿测频率,并保存数据