
编码器是一种比较常见的产品(也可以理解为传感器),最常见的就是配合电机一起工作,那么,你对编码器有多了解呢?# Z" d4 ]: w* i$ ` 6 y# [( _' x, i: a2 e0 j 一、关于编码器 编码器的种类有很多:增量式编码器、绝对值编码器,有轴或者无轴编码器,电压输出、推拉输出、集电极开路输出等等。但不管什么类型的编码器,其目的都类似,得到转动的角度,角速度、位移等。本文讲述常见的增量式编码器,增量式编码器也可以叫正交编码器,也就是说可以通过其A、B的相位知道编码器是正转,还是反转,还可以根据编码器参数得出旋转了多少角度等。 常见的增量式编码器A、B、Z三根线代表什么意思呢?使用过编码器的人不难理解,这里简单给初学者讲述一下: A、B两线提供相位相差90度的脉冲信号,用其来计算旋转的角度;Z线为过零点线,也就是说每转一转,经过某一点都会输出一个脉冲信号,主要用于“过零校正”,三线的信号大致如下图: ![]() 有些编码器出来的线有一个对应的“非”信号线(如上图右边),其实主要用于抗干扰的。 e) ?- H; l* o) G) V; O& _" h" ]/ u 更多关于编码器的描述,请网上搜索相关的知识进行了解,本文不再讲述。8 [' I: T: P* s$ G6 n 二、STM32编码器接口模式 在STM32芯片中,都有这么一个定时器,叫通用定时器“General-purpose timers”,定时器里面存在这么一个模式,叫编码器接口模式“Encoder interface mode”。当然,具体可参看芯片对应的数据手册。 }4 ~; c6 v) x! k STM32提供的编码器接口模式主要针对的就是“正交编码器”,它可以利用定时器的“计数”功能,得出编码器计了多少个脉冲;同时,它可以根据编码器AB的相位得出编码器是正转,还是反转。 ![]() (图片来自STM32参考手册) , ~: y9 @! s, E9 I 1.计算脉冲个数 有点类似TIM的捕获功能,捕获A相、B相的脉冲信号;只是编码器模式是捕获A(TI1)、B(TI2)相的边沿信号(如上图),相当于一个周期内,计4个脉冲信号的值。 3 _: ^1 _, x) K! ~2 p 2.计数器的增减(方向) STM32的计数器会根据方向(+ 或者 -)来进行计数,TI1和TI2相位相差90,4个阶段的边沿,对应TI1和TI2不同电平信号,从这个不同的信号,硬件自身可以判断出其方向。在编码器模式下,有个寄存器(TIMx_CR1)中有一个方向位(DIR),会随着编码器旋转方向的改变而改变,我们可以通过读取该位来判断编码器的正转,还是反转。 3.TIM时基 STM32编码器接口模式,其实是通过利用AB相位TIM时基提供时钟信号,使其计数。 ![]() 三、应用编程 相信看了上面的一些描述,大家应该对编码器有所理解了。其实,在STM32中,可以通过配置编码器模式对应的函数,就能实现获取编码器传感器上面的信息了。 使用STM32提供的标准外设库,或者使用STM32CubeMX工具很容易将TIM配置成编码器模式。 1.标准外设库配置编码器 TIM_EncoderInterfaceConfig,它就是编码器接口的配置函数。简单的只需要配置该函数,使能TIM,即可实现采集编码器上面的信息。(当然,需要复杂的操作,还需要做其他相应的配置) 0 ?3 i' Y5 P/ O/ w8 ^+ v& ]. y 2.STM32CubeMX配置 STM32CubeMX是一套快速开发的工具,让很多不了解STM32底层的朋友可以快速的在STM32上编写应用程序。 : J1 v! c& H" [1 F( e$ d: G; ` 本文说的配置编码器接口,在某些TIM上存在一个“Combined Channel”配置,可以理解为“连接通道”,也算是TIM的一种复用模式。选择里面的“Encoder Mode”即可。 ![]() ; ~; Z7 N% H6 O- G0 W) H 四、实例代码 本文提供的代码为一个使用标准外设库编写的简单Demo工程,其中里面附带一个工程(用于模拟编码器AB相波形的工程),如下: ![]() 8 {/ `- c% v" N% m9 S 该工程主要配置TIM的编码器模式,通过定时读取编码器的方向(DIR),和计数(CNT),并通过串口打印出来。 下载地址: 百度网盘: 链接:https://pan.baidu.com/s/1jH8yOqM 密码:t4kx GitHub: http://github.com/EmbeddDeveloper/STM32F4_TIM_Encoder) `! B$ x/ I6 {3 q" H CSDN:# U7 d# @' U! A6 ]( k http://download.csdn.net/download/ybhuangfugui/10165086 |
STM32F10xxx 正交编码器接口应用笔记 及源代码
基于STM32定时器ETR信号的应用示例
STM32 生态系统|基于STM32WB的低功耗蓝牙应用(一)
《无刷直流电机控制应用 基于STM8S系列单片机》
STM32定时器触发SPI逐字收发之应用示例
【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC
【银杏科技ARM+FPGA双核心应用】STM32H7系列57——MDK_FLM
【STM32图书分享之九】—《STM32F 32位ARM微控制器应用设计与实践》
无刷直流电机控制应用+基于STM8S系列单片机---电子书
STM32 USB的程序,包含固件、驱动和测试用的应用程序