TIM编码器接口

文章介绍了如何使用编码器接口,特别是STM32F103C8T6芯片上的TIM1至TIM4定时器,来驱动电机并测量电机速度。通过接收正交编码器的A相和B相信号,经过滤波器和输入捕获通道,控制CNT计数器实现位置和速度的精确测量。编码器接口的工作模式和配置过程包括开启时钟、配置GPIO和定时器、设置输入捕获单元以及选择编码器模式。
摘要由CSDN通过智能技术生成

使用编码器可以节约软件资源,编码器常见的用法:使用PWM驱动电机,再使用编码器测量电机速度

                                编码器简介

encoder interface 编码器接口

编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置,旋转方向和旋转速度

简单来说就是,接收正交信号,自动执行CNT的自增或自减

每个高级定时器和通用定时器都拥有一个编码器接口,比如STM32F103C8T6这个型号,有TIM1,TIM2,TIM3,TIM4这四个定时器,所以只有四个编码器

编码器引脚借用了输入捕获的通道CH1和通道CH2

那么什么是正交信号?

正交编码器一般可以测量位置,或者带有方向的速度值,一般有两个信号输出引脚,一个是A相,另一个是B向,通过接收AB相的相位差来判断方向,每来一个上升沿信号,CNT记次,达到方向计数的效果

编码器在定时器里的结构图

通过输入捕获的通道CH1和CH2,到滤波器极性选择,再分别从TI1FP1和TI2FP2接入编码器的A相和B相,通过分频器,再到CNT,执行计数

为了方便写程序,再看一个方便理解的结构图 

 输入捕获的前两个通道,通过GPIO口接入编码器的A,B相,通过滤波器和边沿检测极性选择产生TI1FP1和TI2FP2,桐通向编码器接口,编码器接口通过预分频器控制CNT计数器的时钟,同时,编码器接口还根据编码器的旋转方向,控制CNT的计数方向,当然ARR也有效,一般设置为65535,最大量程,利用补码的特性更容易得到负数

再来了解一下工作模式

 一般我们都用TI1和TI2都计数,因为这个计数模式精度高一些,能滤去毛刺信号,前面两个模式就不行,所以我们默认用第三个模式来写代码,当然特殊情况除外

比如我画圈的位置,遇到毛刺信号后,电平按照表里的规则,计数器就来回跳变,达到中和计数器的作用

最后来写程序,按照刚才的结构图,把那些结构打通就行

第一步:RCC开启时钟,开启GPIO和定时器的时钟,假设时钟选择TIM3 

 

第二:配置GPIO口,参考引脚定义表,TIM3的CH1和CH2为PA6和PA7

 

第三:配置时基单元

 

 第四:配置输入捕获单元,只有滤波器和极性

 有两个通道,第二个通道直接在结构体下赋值就行

第五:配置编码器接口模式

TIM_EncoderInterfaceConfig(TIM3,TIM_EncoderMode_TI12,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);

最后,启动定时器

编码器配置好了,想测试有没有配置成功,可以外接一个OLED显示屏来显示计数,初始化OLED 

在显示函数里添加Encoder_Get函数就OK了 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值