STM32编码器接口,以及应用编程

STM32编码器接口,以及应用编程

  2017-12-19  strongerHuang  EmbeddDeveloper


Ⅰ关于编码器

编码器的种类有很多,什么增量式编码器、绝对值编码器,有轴或者无轴编码器,电压输出、推拉输出、集电极开路输出等等。但不管什么类型的编码器,其目的都类似,得到转动的角度,角速度、位移等。


本文讲述常见的增量式编码器,增量式编码器也可以叫正交编码器,也就是说可以通过其A、B的相位知道编码器是正转,还是反转,还可以根据编码器参数得出旋转了多少角度等。


常见的增量式编码器A、B、Z三根线代表什么意思呢?使用过编码器的人不难理解,这里简单给初学者讲述一下:


A、B两线提供相位相差90度的脉冲信号,用其来计算旋转的角度;Z线为过零点线,也就是说每转一转,经过某一点都会输出一个脉冲信号,主要用于“过零校正”,三线的信号大致如下图(左边):



有些编码器出来的线有一个对应的“非”信号线(如上图右边),其实主要用于抗干扰的。


更多关于编码器的描述,请网上搜索相关的知识进行了解,本文不再讲述。


ⅡSTM32编码器接口模式

在STM32芯片中,都有这么一个定时器,叫通用定时器“General-purpose timers”,定时器里面存在这么一个模式,叫编码器接口模式“Encoder interface mode”。当然,具体是哪一个TIM,可参看芯片对应的数据手册,可以一目了然。


STM32提供的编码器接口模式主要针对的就是“正交编码器”,它可以利用定时器的“计数”功能,得出编码器计了多少个脉冲;同时,它可以根据编码器AB的相位得出编码器是正转,还是反转


(图片来自STM32参考手册)


1.计算脉冲个数

有点类似TIM的捕获功能,捕获A相、B相的脉冲信号;只是编码器模式是捕获A(TI1)、B(TI2)相的边沿信号(如上图),相当于一个周期内,计4个脉冲信号的值。


2.计数器的增减(方向)

STM32的计数器会根据方向(+ 或者 -)来进行计数,TI1和TI2相位相差90,4个阶段的边沿,对应TI1和TI2不同电平信号,从这个不同的信号,硬件自身可以判断出其方向。在编码器模式下,有个寄存器(TIMx_CR1)中有一个方向位(DIR),会随着编码器旋转方向的改变而改变,我们可以通过读取该位来判断编码器的正转,还是反转。


3.TIM时基

STM32编码器接口模式,其实是通过利用AB相位TIM时基提供时钟信号,使其计数。


Ⅲ应用编程

相信看了上面的一些描述,大家应该对编码器有所理解了。其实,在STM32中,可以通过配置编码器模式对应的函数,就能实现获取编码器传感器上面的信息了。

使用STM32提供的标准外设库,或者使用STM32CubeMX工具很容易将TIM配置成编码器模式。


1.标准外设库配置编码器

TIM_EncoderInterfaceConfig,它就是编码器接口的配置函数。简单的只需要配置该函数,使能TIM,即可实现采集编码器上面的信息。(当然,需要复杂的操作,还需要做其他相应的配置)

void ENCODER_Configuration(void)
{
  TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
  TIM_Cmd(TIM3, ENABLE);
}
  
  
  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: STM32编码器多圈指的是STM32微控制器通过编码器读取物理位置时,能够精确地获取超过一整圈(360度)的旋转位置信息。 一般情况下,编码器是用来监测转子的位置和速度的设备,常见的有增量式编码器和绝对式编码器。增量式编码器一圈通常是360度,而绝对式编码器一圈可能是多圈。 在STM32中,通常通过GPIO外设来读取编码器信号。在多圈编码器中,可以通过输入捕获单元(ICU)和TIMx计数器来处理更大范围的位置信息。 具体操作步骤如下: 1. 配置GPIO外设,将编码器信号线连接到指定的GPIO引脚。 2. 配置TIMx计数器为编码器模式。 3. 配置输入捕获单元(ICU)以捕获编码器的脉冲信号。 4. 编写中断服务程序,在捕获到编码器信号后更新编码器的位置信息。 5. 可以通过读取TIMx计数器的值来获取当前的位置信息。 多圈编码器的工作原理是通过在每一圈结束时产生一个特殊的标记信号,然后通过编码器信号的脉冲数来计算出转子的精确位置。 总之,STM32编码器多圈功能可以帮助我们在控制系统中获得更精确的位置信息,并且可以适用于需要超过一圈旋转的应用场景。 ### 回答2: STM32是一种非常流行的微控制器系列,广泛应用于各种嵌入式系统中。编码器是一种用于测量物理量(如位置、速度等)的传感器,常用于电机控制、机器人、汽车导航等领域。 多圈编码器是一种具有高精度的编码器,可以测量超过一圈的位置。传统的编码器只能测量一圈的位置,而多圈编码器能够测量超过一圈的位置,并且可以精确地标记每一圈的起点。 STM32微控制器可以通过与多圈编码器接口进行通信来读取编码器的测量值。通常,多圈编码器会给出一个32位的数值,其中低16位表示当前位置的角度,而高16位表示当前圈数的计数。 为了使用多圈编码器,首先需要配置STM32的外部中断或定时器来捕获编码器的测量值。编码器的输出通常接到微控制器的外部中断引脚或定时器输入捕获引脚上。 然后,通过读取外部中断或定时器的计数值,可以获取编码器的位置和圈数信息。使用适当的算法,可以将编码器输出的数值转换为实际的位置或角度值,以满足具体应用的需求。 需要注意的是,多圈编码器通常需要额外的硬件支持,如电源供应和信号处理电路等。因此,在使用STM32与多圈编码器时,需要仔细阅读多圈编码器的相关说明和STM32的技术手册,以确保正确连接和配置。 总之,STM32可以与多圈编码器配合使用,通过读取编码器的测量值并进行适当的处理,实现对位置或角度的精确测量和控制。 ### 回答3: STM32编码器多圈是指能够对旋转物体进行多圈计数的编码器编码器是一种能够测量物体旋转位置和速度的装置,多圈编码器则可以在旋转多圈后仍能正常计数。 STM32是一款32位微控制器,可以通过其内部的外部中断或定时器来对编码器进行计数。对于多圈编码器,常见的编码器类型是绝对式编码器和增量式编码器。 绝对式编码器通过每一个位置的码盘信息来确定旋转位置,可以在每圈结束后提供一个绝对位置信号。因此,绝对式编码器可以准确地测量旋转物体的位置,既能实现多圈计数,又能够获得精确的旋转位置信息。 增量式编码器则是通过两个光电传感器来测量旋转的相对位移,它只提供增量信号,并不能直接得知绝对位置。在多圈情况下,增量式编码器需要通过编程来跟踪圈数,通常需要使用外部中断或定时器进行计数,并结合算法进行累加,以得到正确的圈数信息。 对于使用STM32的多圈编码器,首先需要配置外部中断或定时器来计数编码器输出的脉冲信号。同时,需要定义一个变量来保存圈数,并在每次计数达到一个完整圈后进行累加。此外,还可以通过编程来设置编码器的参数,如编码器类型、分辨率等。 总之,STM32编码器多圈是指能够对旋转物体进行多圈计数的编码器,通过配置外部中断或定时器,并结合编程进行计数与累加,可以实现对多圈编码器的完整监测与计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值