0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-14 10:36 次阅读

Ⅰ 关于编码器

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

本文讲述常见的增量式编码器,增量式编码器也可以叫正交编码器,也就是说可以通过其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);}

2.STM32CubeMX配置

STM32CubeMX是一套快速开发的工具,让很多不了解STM32底层的朋友可以快速的在STM32上编写应用程序。

本文说的配置编码器接口,在某些TIM上存在一个“Combined Channel”配置,可以理解为“连接通道”,也算是TIM的一种复用模式。选择里面的“Encoder Mode”即可。

Ⅳ 实例代码

本文提供的代码为一个使用标准外设库编写的简单Demo工程,其中里面附带一个工程(用于模拟编码器AB相波形的工程),如下如:

该工程主要配置TIM的编码器模式,通过定时读取编码器的方向(DIR),和计数(CNT),并通过串口打印出来。

下载地址:

百度网盘:

链接:https://pan.baidu.com/s/1jH8yOqM

密码:t4kx

GitHub:

https://github.com/EmbeddDeveloper/STM32F4_TIM_Encoder

CSDN:

http://download.csdn.net/download/ybhuangfugui/10165086

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    45

    文章

    3579

    浏览量

    134065
  • 接口
    +关注

    关注

    33

    文章

    8474

    浏览量

    150776
  • STM32
    +关注

    关注

    2265

    文章

    10859

    浏览量

    354546
收藏 人收藏

    评论

    相关推荐

    二进制编码器与绝对编码器的区别

    编码器是工业自动化和机器人技术中不可或缺的组件,用于将机械位置或运动转换为电信号。二进制编码器和绝对编码器是两种常见的编码器类型,它们各自有着独特的特点和应用场景。 二进制
    的头像 发表于 11-06 09:54 271次阅读

    磁电编码器和光电编码器的区别

    磁电编码器和光电编码器是两种不同类型的编码器,它们在原理、结构、性能和应用领域上都有所不同。 磁电编码器和光电编码器的区别 1. 引言
    的头像 发表于 10-12 09:54 575次阅读

    MT6501在线编程编码IC:光电编码器的理想替代品

    在现代工业控制和自动化领域,编码器是一种常见的传感,用于将机械运动转化为电信号,以实现位置、速度和方向的检测和控制。传统的光电编码器虽然技术成熟,但在一些特殊应用场景中,可能存在着一些局限性。而 MT6501 在线
    的头像 发表于 07-31 17:18 457次阅读

    带Arduino的旋转编码器设计 旋转编码器的工作原理和特点

    技术、精密测量、自动化设备以及计算机输入设备等领域。作为一种集光机电技术于一体的速度位移传感,旋转编码器具有高精度、高分辨率、长寿命和稳定可靠等优点。
    的头像 发表于 07-04 17:17 2014次阅读
    带Arduino的旋转<b class='flag-5'>编码器</b>设计 旋转<b class='flag-5'>编码器</b>的工作原理和特点

    PLC如何判断编码器正反转

    的工作原理、输出信号特性以及PLC编程方法等方面,详细阐述PLC如何判断编码器的正反转,并提供相应的编程思路和实现方法。
    的头像 发表于 06-17 09:31 1832次阅读

    旋转编码器在PLC中怎么编程

    在工业自动化领域,旋转编码器与可编程逻辑控制(PLC)的结合应用极为广泛。旋转编码器通过提供精确的旋转角度或位置信息,为PLC提供反馈信号,进而实现对设备的精确控制。本文将详细介绍旋
    的头像 发表于 06-17 09:24 1382次阅读

    增量编码器和绝对值编码器的区别

    在工业自动化和精密测量领域,编码器是不可或缺的关键设备。编码器能够将机械位移转换为电信号,以便于计算机或其他数字系统进行处理。在编码器的众多类型中,增量编码器和绝对值
    的头像 发表于 06-03 15:40 2444次阅读

    使用STM32编码器接口对接增量式编码器控制电机进行很低速的转动时,需要如何进行电机转速的测量?

    使用STM32编码器接口对接增量式编码器控制电机进行很低速的转动时,需要如何进行电机转速的测量? 可否将编码器信号接到
    发表于 04-30 06:05

    编码器脉冲信号(怎么测量 | 丢失怎么处理 | 丢失的原因)

    编码器脉冲信号怎么测量 要测量编码器的脉冲信号,可以采取以下步骤: 1. 连接编码器:首先,将编码器正确地连接到编码器
    的头像 发表于 04-17 15:24 2440次阅读

    差分编码器信号如何接plc?

    差分编码器信号通常用于测量旋转运动或线性位置,接收差分编码器信号的PLC(可编程逻辑控制)需要进行相应的信号处理才能正确读取并理解编码器
    的头像 发表于 03-05 08:42 2741次阅读
    差分<b class='flag-5'>编码器</b>信号如何接plc?

    编码器分辨率是什么意思 编码器分辨率和脉冲数的关系

    按照编码器支持的分辨率可以把编码器分成标清编码器、高清编码器、全高清编码器,分辨率越高帧率越高视频就越清楚。 1.
    的头像 发表于 02-21 18:07 3839次阅读
    <b class='flag-5'>编码器</b>分辨率是什么意思 <b class='flag-5'>编码器</b>分辨率和脉冲数的关系

    编码器原点设定方法 | 编码器原点丢失怎样找回

      编码器原点有什么功能 编码器的原点功能主要用于确定位置参考、启动和停止控制、运动方向判断以及定位回归操作。这些功能对于许多应用中的位置测量、运动控制和定位操作至关重要。 编码器的原
    的头像 发表于 02-21 15:02 1683次阅读

    编码器好坏怎么判断,编码器原理

    编码器(Encoder)是将输入数据转化为特定编码表示的一种技术。对于不同类型的编码器,评判其好坏可以从多个方面进行考量,包括编码质量、速度、模型结构等。
    的头像 发表于 01-23 10:58 1783次阅读

    磁性编码器和光电编码器的比较

    伺服电机编码器是一种关键的反馈装置,用于测量和控制电机的转速和位置。在选择伺服电机编码器时,常常面临一个选择:使用磁电编码器还是光电编码器。接下来将从几个关键方面比较这两种类型的
    的头像 发表于 01-18 10:29 2916次阅读

    编码器与PLC的接线方法

    编码器分为旋转编码器和线性编码器两种。旋转编码器用于检测旋转位置和速度,而线性编码器用于检测直线位置和速度。
    发表于 12-22 09:20 1327次阅读
    <b class='flag-5'>编码器</b>与PLC的接线方法