首页 > 其他分享 >stm32入门教程--TIM编码器接口

stm32入门教程--TIM编码器接口

时间:2024-10-20 19:49:01浏览次数:3  
标签:编码器 定时器 -- 入门教程 接口 旋转 TIM 信号

TIM编码器接口是一种重要的硬件接口,主要用于接收增量(正交)编码器的信号。以下是对TIM编码器接口的详细介绍:

一、功能与作用

TIM编码器接口可以接收由编码器旋转产生的正交信号脉冲。这些信号脉冲被用来自动控制一个计数器(CNT)的自增或自减,从而能够指示编码器的位置、旋转方向和旋转速度。

二、结构与工作原理

  1. 结构

    • 每个高级定时器和通用定时器都拥有一个编码器接口。
    • 编码器接口的两个输入引脚通常借用了输入捕获的通道1和通道2。这意味着通道3和通道4不能用于编码器接口。
  2. 工作原理

    • 编码器旋转时,会产生两个相位相差90°(超前或滞后)的正交信号,分别代表编码器的正转和反转。
    • 当出现某个边沿信号时,编码器接口会根据另一相的状态来确定计数的增减(即计数方向)。
    • 如果对应另一相的状态出现在正转的表中,那么计数值自增;如果出现在反转的表中,那么计数值自减。

三、优势与特点

  1. 高精度:正交信号的频率更高,因为A相和B相都可以用于计次,所以计次频率提高了一倍,从而提高了测量的精度。
  2. 抗噪声:正交信号具有抗噪声的能力。如果一个信号不变,而另一个信号连续跳变(即产生了噪声),那么计次值是不会发生变化的。
  3. 方向控制:编码器接口能够根据编码器的旋转方向,自动控制计数器的计数方向。这使得它能够同时测量旋转速度和旋转方向。

四、应用与实例

TIM编码器接口通常应用于需要测量旋转速度和方向的场景,如电机控制项目。使用PWM驱动电机,并使用编码器测量电机的速度,然后利用PID算法进行闭环控制。通过定时器的编码器接口自动计次,可以节约软件资源,提高系统的效率和稳定性。在具体应用中,可以通过配置定时器的相关寄存器来初始化编码器接口,并设置其工作模式、输入捕获单元的滤波器和极性等参数。然后,通过读取计数器的值来获取编码器的位置和速度信息。

正交编码器:

旋转编码器

用来测量位置、速度或旋转方向的装置当其旋转轴旋转时,其输出端可以输出与旋转速度和方向对应的方波信号,读取方波信号和频率和相位信息即可得知旋转轴的速度和方向。

类型:机械触点式、霍尔传感器、光栅式

编码器电机一般有六根线,最左和最右是直接接到电机的靠里一些的两根线是编码器电源,最中间的两根线就是A相和B相的输出了。

参考实验:

编码器接口测速

基本原理

编码器测速本质上是通过测量编码器输出的脉冲信号来确定设备的运动速度。编码器通常与旋转设备的驱动轴或线性运动轴连接,可以检测设备的运动并产生相应的电信号。这些信号包括脉冲序列,每个脉冲代表一定的角度增量或线性位移。

在STM32等微控制器中,通常使用定时器捕获这些脉冲的上升沿或下降沿,通过计数器的增加或减少来计算电机的速度。编码器接口测速就是基于这个原理实现的。

配置步骤

以STM32为例,编码器接口测速的配置步骤通常包括以下几个方面:

  1. RCC开启时钟:首先,需要开启GPIO和定时器的时钟。这是为了确保相关外设能够正常工作。
  2. 配置GPIO:将编码器的输出引脚连接到STM32的GPIO引脚上,并配置这些引脚为输入模式。通常,会选择上拉输入模式以提高抗干扰能力。
  3. 配置时基单元:设置定时器的预分频器、自动重装载寄存器等参数。这些参数决定了计数器的计数范围和计数频率。
  4. 配置输入捕获单元:虽然编码器接口主要使用通道1和通道2的滤波器和极性选择,但仍然需要配置输入捕获单元的相关参数,如滤波器和极性。
  5. 配置编码器接口模式:调用库函数配置编码器接口模式,如选择TI1和TI2作为编码器输入通道,并设置相应的电平极性。
  6. 启动定时器:最后,启动定时器并开始计数。此时,编码器接口的计数器会随着编码器的旋转而自动增加或减少。

接线图

示例代码

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "Timer.h"
#include "Encoder.h"

int16_t Speed;			//定义速度变量

int main(void)
{
	/*模块初始化*/
	OLED_Init();		//OLED初始化
	Timer_Init();		//定时器初始化
	Encoder_Init();		//编码器初始化
	
	/*显示静态字符串*/
	OLED_ShowString(1, 1, "Speed:");		//1行1列显示字符串Speed:
	
	while (1)
	{
		OLED_ShowSignedNum(1, 7, Speed, 5);	//不断刷新显示编码器测得的最新速度
	}
}

/**
  * 函    数:TIM2中断函数
  * 参    数:无
  * 返 回 值:无
  * 注意事项:此函数为中断函数,无需调用,中断触发后自动执行
  *           函数名为预留的指定名称,可以从启动文件复制
  *           请确保函数名正确,不能有任何差异,否则中断函数将不能进入
  */
void TIM2_IRQHandler(void)
{
	if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)		//判断是否是TIM2的更新事件触发的中断
	{
		Speed = Encoder_Get();								//每隔固定时间段读取一次编码器计数增量值,即为速度值
		TIM_ClearITPendingBit(TIM2, TIM_IT_Update);			//清除TIM2更新事件的中断标志位
															//中断标志位必须清除
															//否则中断将连续不断地触发,导致主程序卡死
	}
}

标签:编码器,定时器,--,入门教程,接口,旋转,TIM,信号
From: https://blog.csdn.net/weixin_61733189/article/details/143097233

相关文章

  • Spring Boot 整合 RocketMQ 之事务消息
    前言:上一篇我们分享了RocketMQ完成顺序消息发送的案例,本篇我们来分享一下RocketMQ事务消息的使用。RocketMQ系列文章传送门RocketMQ的介绍及核心概念讲解SpringBoot整合RocketMQ之普通消息SpringBoot整合RocketMQ之定时/延时消息SpringBoot整合Rocke......
  • 【毕业设计】基于SpringBoot + Vue的工资信息管理系统
    一、项目背景随着信息技术的飞速发展,传统的工资管理方式已经无法满足现代企业对数据安全、效率和信息处理能力的需求。为了提高工资信息管理的效率和准确性,开发一套工资信息管理系统显得尤为重要。该系统通过信息化手段,能够有效管理员工工资、津贴、考勤记录等信息,为企业管理......
  • 《Linux从小白到高手》综合应用篇:深入理解Linux常用关键内核参数及其调优
    1.题记有关Linux关键内核参数的调整,我前面的调优文章其实就有涉及到,只是比较零散,本篇集中深入介绍Linux常用关键内核参数及其调优,Linux调优80%以上都涉及到内核的这些参数的调整。2.文件系统相关参数fs.file-max参数说明::控制系统中打开文件描述符的数量上限。默认值......
  • CentOS 7 更换阿里源
    1、备份系统原本的源文件mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup2、获取阿里源文件如果有wget工具的话可以执行如下命令,然后进入第三步wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo......
  • spring笔记
    @Slf4j@RestController@Validated1、Circularviewpath[register]:woulddispatchbacktothecurrenthandlerURL[/register]again.(循环视图路径)把@Controller改成@RestController (相当于@Controller和@ResponseBody的组合)2、@Slf4j注解使用,方便调试log.info......
  • Modbus调试工具《二》快速开始
    目录前言制定采集任务暂停和继续采集工作设置单元格颜色设置单元格的字体写单个线圈值监视Modbus通讯报文总结前言DickMorley在1979年发表的Modbus协议,最初只是为了让自动化系统使用可编程逻辑控制器PLC设备而制定了这样的一个总线协议。由于其无版权而免费,简洁......
  • 白嫖正版xshell和XFTP
    在哪里可以下载正版免费的xshell和XFTP,并且还能够获得官网免费持久更新白嫖步骤首先直接在浏览器搜索xshell官网点进官网之后直接点击下载接着点击免费授权页面进入之后就可以免费下载了下载安装完成后填写用户名和邮箱并提交,这里就以xshell为例,XFTP同理,这里就不......
  • gc cr/current block 2-way
    官方文档描述14.9.4AnalyzingCacheFusionTransferImpactUsingGCSStatisticsDescribeshowtomonitorGCSperformancebyidentifyingobjectsreadandmodifiedfrequentlyandtheservicetimesimposedbytheremoteaccess.Waitingforblockstoarrivem......
  • C语言深入理解指针笔记(3)
    1.字符指针变量 我们已经了解的指针变量类型有:整形指针变量:int*pint:存放的是整型变量的地址浮点型指针变量:float*pf:存放的是浮点型变量的地址类比可知:char*pc:字符型指针变量:存放的是字符型变量的地址,指向字符型的数据 首先,字符型指针变量的使用有两种方法:......
  • springboot+vue奥迪汽车信贷系统 【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着全球汽车市场的蓬勃发展,汽车信贷作为一种重要的金融工具,极大地促进了汽车销售与消费。奥迪汽车作为国际知名的豪华汽车品牌,其市场占有率和消费者群体日益扩大。在竞争激烈的市场环境中,提供高效、便捷的汽车信贷服务成为奥迪汽车吸......