第一次写博客,还请大佬们多多指教。下面进入正题。
首先我们先要了解编码器的工作原理。电机在带动码盘转动时,码盘会产生A、B两相脉冲信号,二者相位差90度(正交)。即可以根据信号来的先后判断电机转动的方向(顺、逆)。根据得到的脉冲信号多少及码盘线数(**电机每圈所产生脉冲信号数,可以问商家)**及电机减速比就可以算出电机转了多少圈在结合轮的直径便可以算出车走的距离,若加上定时器便可以计算出电机的转速。
那么该如何获取编码器的值呢?(1)通过定时器输入捕获。(2)IO口外部中断来检测边缘信号。这两个思路在单片机上都行的通。但是STM32单片机具有硬件计数方式。下面就讲下该如何去配置软件。
首先呢就是CH1.CH2(通道1、2)的IO口配置。(必须为每个定时器的CH1、CH2,原因下面会讲)由于编码器的输出模式是开漏输出的所以IO口要配为上拉输入模式。
编码器模式配置有三种:
TIM_EncoderMode_TI1,计数器仅在TI1的边沿处计数
TIM_EncoderMode_TI2时,计数器仅在TI2的边沿处计数
TIM_EncoderMode_TI12时,计数器在TI1和TI2边沿处均计数
从上面编码器模式来看就不难理解了为啥一定要配置定时器CH1、CH2IO口为编码器读取IO口了。
模式1、模式2基本是一样的,实际中很少去使用,因为误差太大。模式3就是大家熟知的4倍频原理。
STM32f103c8t6正交编码器读取问题
最新推荐文章于 2024-04-11 17:04:04 发布