STM32 - 编码器资料集锦

我在编写STM32F103小车编码器代码的过程之中几乎把整个CSDN里面的介绍和代码看遍了,整理出如下几篇,个人认为对于利用STM32编码器模式和PID进行小车调速,看过这几篇就足够了。

首先是编码器的介绍(相关术语)链接:编码器介绍
例如:编码器线数,是旋转一圈你的A(B)会输出多少个脉冲 ,这里的A B就是上面的输出脉冲信号线,它们转一圈发出的脉冲数一样的,不过存在90°相位差 通常都是360线的 线数越高代表编码器能够反应的位置精度越高

注意点:一个定时器做一种工作,如果你配置了编码器模式,那么剩下的通道就不能配置其他模式。

定时器初始化好以后,任何时候CNT寄存器的值就是编码器的位置信息,正转计数器会加,反转计数器会减,这是不需要软件干预的,TIM_Period 值设置一般有两种形式

  • 初始化时给的TIM_Period 值应该是码盘整圈的刻度值,在减溢出会自动修正为这个数.加超过此数值就回0. 参考博文0
  • TIM_Period 值应该设为寄存器的最大值减一参考博文1(比如F103的定时器寄存器是16位的,则TIM_Period设置为65536-1)然后还要在后续代码之中,手动进行编码器值分析,即编程计算出CNT。使用库函数TIM_GetCounter(TIMx)得到TIMx的计数器值,正向的时候,计数器自增,小车车轮的运动位置计算公式:CNT=TIM_GetCounter(TIMx),反向的时候,计数器自减,此时应这样计算:CNT=65536-TIM_GetCounter(TIMx)参考博文2

对手册之中图表的解析+有用的代码参考博文1
写了小车控速思路+有用的代码参考博文2
对参考博文2中PID算法代码的补充参考博文3
还算比较有用的参考博文4
写了硬件连接+风格比较好的编码器代码参考博文5

猜你喜欢

转载自blog.csdn.net/Leonie_/article/details/106452665