STM32编码器接口笔记

news2024/9/30 10:49:49

1. 引言

  在现代控制系统中,编码器扮演着非常重要的角色。它就像一个精密的测量工具,可以告诉我们机械部件的位置和运动状态。在STM32微控制器中,编码器接口可以轻松地与各种编码器连接,实现精确的控制。我将在这里探讨STM32编码器接口的电路结构、工作逻辑以及如何有效地抗噪声。

2. 编码器接口的电路结构

2.1 基本组成

  STM32编码器接口主要由以下部分组成:

  • 输入部分:接收来自编码器的A相和B相信号。
  • 输出部分:将处理后的位置信息和状态反馈给主控系统。
  • 定时器模块:负责计数和计算速度。

2.2 电路连接

  将正交编码器的A相和B相信号分别连接到STM32的定时器输入引脚。编码器的VCC和GND分别连接到电源和地线。这样,编码器的信号就可以通过定时器被STM32读取。

  可以把这个过程想象成一条高速公路,车辆的运动就像编码器的信号。车上的传感器(即编码器)通过监测车轮的转动(A相和B相信号)来确定位置,而STM32微控制器则是交通指挥中心,实时接收并处理这些信息。

3. 工作逻辑

3.1 输入部分

  输入部分主要负责接收编码器信号。正交编码器通常输出两个信号(A相和B相),它们之间有90度的相位差。这样,STM32可以通过这两个信号判断旋转的方向和位置。

3.2 输出部分

  输出部分将编码器的状态反馈给主控系统,通常是通过定时器的计数器值来实现。比如,可以读取当前计数值,得出旋转角度,并进一步控制电机的运动。

  想象你在骑自行车,A相和B相信号就像你脚踏板的转动。每转动一次,你的车轮就会前进一定的距离(输出位置)。同时,你的身体会感知到车轮的转动(输出反馈),这样你就能调整踏板的速度,保持骑行的平稳。

4. 三种工作模式

STM32的编码器接口支持三种工作模式:

4.1 计数模式

在这个模式下,STM32会持续计数输入的A相信号脉冲。每次检测到脉冲,计数器就会加一。这种模式适合于需要精确位置跟踪的场合。

// 初始化定时器
void TIM_Encoder_Init(void) {
    // 选择定时器和通道
    TIMx->SMCR |= TIM_SMCR_SMS_2; // 设置为编码器模式
    TIMx->CCMR1 |= TIM_CCMR1_CC1S_0; // A相选择
    TIMx->CCMR1 |= TIM_CCMR1_CC2S_0; // B相选择
    TIMx->CR1 |= TIM_CR1_CEN; // 启动定时器
}

// 获取计数值
uint32_t Get_Position(void) {
    return TIM_GetCounter(TIMx); // 获取编码器计数值
}

4.2 方向模式

该模式可以根据A相和B相的相位关系来判断旋转的方向。如果A相先于B相变化,表示顺时针旋转;反之则为逆时针旋转。这有助于系统对旋转方向做出反应。

// 判断旋转方向
void Check_Direction(void) {
    static uint32_t last_position = 0;
    uint32_t current_position = TIM_GetCounter(TIMx);

    if (current_position > last_position) {
        // 顺时针旋转
    } else {
        // 逆时针旋转
    }
    last_position = current_position; // 更新位置
}

4.3 增量模式

增量模式结合了计数和方向模式,能够同时提供旋转的增量信息。这种模式特别适合于动态系统中,例如机器人手臂的控制。

// 判断旋转方向
void Check_Direction(void) {
    static uint32_t last_position = 0;
    uint32_t current_position = TIM_GetCounter(TIMx);

    if (current_position > last_position) {
        // 顺时针旋转
    } else {
        // 逆时针旋转
    }
    last_position = current_position; // 更新位置
}

可以将三种模式想象成不同的行驶方式:

  • 计数模式:就像在马路上计算过了多少个红绿灯(每个脉冲)。
  • 方向模式:就像你骑车时判断前方是左转还是右转(顺时针或逆时针)。
  • 增量模式:就像实时调整骑行的速度和方向,确保始终沿着理想的路径行驶。

5. 抗噪声原理

在实际应用中,编码器的信号可能会受到外部噪声的干扰,这可能导致错误的计数和判断。STM32通过以下几种方法来增强抗噪声能力:

5.1 滤波器

在硬件上,可以使用低通滤波器来滤除高频噪声,只保留编码器的有效信号。这就像在嘈杂的环境中听到朋友的声音,低通滤波器会帮助你过滤掉其他噪声,专注于重要信息。

5.2 软件去抖动

  在软件中,可以实现去抖动算法。当检测到信号变化时,可以等待短暂的时间再确认状态,确保信号的可靠性。这就像在确认朋友发来的信息时,稍等片刻再回复,以确保信息准确。

  设想你在一个拥挤的市场中,想要跟随一位朋友。如果周围有太多的干扰声,你可能会听错方向。通过选择在安静时段观察和确认,你就能更清楚地跟随朋友(抗噪声)。

6. 总结

STM32编码器接口为精确的旋转位置和速度控制提供了强大的支持。通过合理的电路连接、清晰的工作逻辑、适当的工作模式和抗噪声措施,可以方便地实现对编码器的读取和控制。就像骑自行车时,通过感知和调整,你可以顺畅地到达目的地,编码器同样为自动化系统的精确运行提供了保障。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2179422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

string类的使用(上)

目录 1.string类的概念 2.string的构造函数(实现初始化) 3.对string类容量获取和操作 4.string类对象的访问和遍历 4.1operator[] 4.2begin和end 4.3 rbegin 和 rend 4.4迭代器分类 4.5范围for(自动实现遍历) 5.string类…

打造高效舒适的气膜网球馆—轻空间

气膜网球馆,作为现代运动设施的创新选择,其成本构成涵盖多个重要方面,确保为运动者提供最佳体验。 一、膜材选择 膜材是气膜网球馆的核心,品质不同直接影响成本。高品质膜材不仅增强了耐用性,也能有效阻挡外界气候影响…

【展会回顾】阿尔泰科技2024上海工博会精彩瞬间,圆满收官 ,感恩遇见 ,共赴新程!

9月24日,以“工业聚能 新质领航”为主题的第二十四届中国国际工业博览会(以下称“工博会”)在国家会展中心(上海)举办,展示了一批代表中国工业领域的最新技术与前沿成果。 本届工博会的主题“工业聚能&…

Pycharm 本地搭建 stable-diffusion-webui

一、下载工程源码 Github官方连接 https://github.com/AUTOMATIC1111/stable-diffusion-webui 二、Pycharm打开工程 1、设置环境 文件-设置-项目-Python解析器-添加解释器-添加本地解释器 Conda环境-创造新环境-Python版本3.10 注意一定要选择Python3.10版本,否…

uni-app canvas文本自动换行

封装 支持单行文本超出换行。多行文本顺位排版 // 填充自动换行的文本function fillFeedText({ctx, text, x, y, maxWidth, lineHeight, color, size}) {// 文本配置ctx.setFontSize(size);ctx.setFillStyle(color);// 计算文本换行宽高,换行逻辑const words text…

JavaScript中的函数定义

第8章 函数 在JS中函数即对象,程序可以随意操控他们。可以把函数赋值给变量,或者作为参数传递给其他函数。因为函数就是对象,所以可以给他们设置属性,甚至调用他们的方法。 JavaScript的函数可以嵌套在其他函数中定义&#xff0…

初识C语言(四)

目录 前言 十一、常见关键字(补充) (1)register —寄存器 (2)typedef类型重命名 (3)static静态的 1、修饰局部变量 2、修饰全局变量 3、修饰函数 十二、#define定义常量和宏…

5250 Fantasy RPG Icons Pack 幻想RPG游戏图标合集

这里是集合 - 幻想RPG图标 它包括50个主题图标。文件:PNG。 在档案中,带有背景的图标(512512)和没有背景的单个对象(大小取决于主题)。仅具有背景技能的技能。 2024年2月更新(+500个图标): RPG蔬菜图标; RPG游戏中的蜘蛛战利品图标; RPG海战战利品图标; RPG怪物战利…

匿名管道 Linux

管道 首先自己要用用户层缓冲区,还得把用户层缓冲区拷贝到管道里,(从键盘里输入数据到用户层缓冲区里面),然后用户层缓冲区通过系统调用(write)写到管道里,然后再通过read系统调用&…

新手上路:Anaconda虚拟环境创建和配置以使用PyTorch和DGL

文章目录 前言步骤 1: 安装 Anaconda步骤 2: 创建新的 Anaconda 环境步骤 3: 安装最新版本的 PyTorch步骤 4: 安装特定版本的 PyTorch步骤 5: 安装最新版本的 DGL步骤 6: 安装特定版本的 DGL步骤 7: Pycharm中使用虚拟环境解释器第一种情况:创建新项目第二种情况&am…

Linux Shell编程最重要的十个核心概念

对于每个Linux学习者而言,Shell编程的重要性不言而喻。它是连接用户与系统操作的桥梁,能够培养命令行的熟练度和解决问题的能力。通过Shell编程,学习者可以深入理解系统管理和日常任务自动化的精髓,提高工作效率。此外&#xff0c…

应急响应(1)-同事电脑

一、现象 重要时间节点,同事反馈桌面有鼠标移动、随机断网;发现登录账户多了一个,由于电脑长时间没有更改过密码,导致忘记密码无法登录。随机联系进行应急处理。 二、排查 2.1、密码重置/删除 由于同事忘记密码导致无法进行登录…

Linux文件系统入门详解-总结大章

我们先看一张图: 这张图大体上描述了 Linux 系统上,应用程序对磁盘上的文件进行读写时,从上到下经历了哪些事情。 这篇文章就以这张图为基础,介绍 Linux 在 I/O 上做了哪些事情。 文件系统 什么是文件系统 文件系统&#xff0…

EKF学习笔记

扩展卡尔曼滤波,也就是EKF,常用于在动态系统中对状态的估计。比如,在机器人领域,EKF则常常用于对状态(位置,方向)的估计,也就是我们常说的数据融合,结合运动模型和观测数…

vscode使用yarn 启动vue项目记录

第一次启动yarn项目,这个是公司的老项目,遇到了点问题,记录下首先是我一般使用的是npm命令,所以没有安装yarn vscode安装yarn vscode进入到该项目文件夹下,输入命令:npm install -g yarn 安装成功后&…

河南人社厅:注册满两年可按条件认定副高

河南省工程系列建筑专业中高级职称 申报评审标准 总则 一、为培养造就高素质、社会化的工程建设领域专业技术人才队伍,充分发挥工程建设领域专业技术人才在科技发展和经济建设中的作用,推动技术创新、科技成果转化和实现高新技术产业化,根据…

CSS给一行按钮统一设置间隔

使用css的&#xff0b;&#xff08;相邻兄弟选择器&#xff09;&#xff0c;找到指定元素后面的相邻元素。 <div class"btn-list"><button class"btn">按钮1</button><button class"btn">按钮2</button><butto…

Arthas memory(查看 JVM 内存信息)

文章目录 二、命令列表2.1 jvm相关命令2.1.11 memory&#xff08;查看 JVM 内存信息&#xff09;举例1&#xff1a;查看 JVM 内存信息 本人其他相关文章链接 二、命令列表 2.1 jvm相关命令 2.1.11 memory&#xff08;查看 JVM 内存信息&#xff09; 基本用法&#xff1a; mem…

第一讲-环境安装

PyCharm安装 官网下载 https://www.jetbrains.com/pycharm/ 点击Download跳转到下载界面,会有专业版跟社区版两个选择,专业版需要购买,可自行在淘宝上买个激活码。一般开发社区版够用了。 这是专业版: 这是社区版:

WinRAR技巧:如何给多个压缩包设置同一个密码

RAR压缩包是大家经常使用的文件&#xff0c;并且可以进行加密&#xff0c;也是一种文件加密方式&#xff0c;那么当你有很多文件都需要压缩加密&#xff0c;b并且想要设置同一个密码&#xff0c;防止以后忘记密码&#xff0c;该如何高效的完成这个工作呢&#xff1f;今天分享如…