STM32编码器接口笔记

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.rhkb.cn/news/435524.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis面试笔记

1.什么是Redis 简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持…

LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大

LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大 1、鉴权直播2、视频点播3、RTMP推流视频直播和点播流媒体服务 1、鉴权直播 鉴权直播-》播放 ,左键单击可以拉取矩形框,放大选中的范围&#x…

群晖安装Audiobookshelf(有声书)

一、Audiobookshelf是什么? Audiobookshelf是一款自托管的有声读物和播客服务器,用于管理和播放您的有声读物。为用户提供便捷、个性化的音频书籍管理与播放体验 支持网页端、安卓端、IOS端三端同步,支持对有声书进行不同分类。 二、安装教程 通过群晖…

关于HTML 案例_个人简历展示02

展示效果 用table进行布局label 标签进行关联 例如&#xff1a;点姓名就可以到text中去填写内容 input的使用 text 文本框radio 单选框select与option 选择框checkbox 复选框 textareaul与li 无序列表文中图片是本地的 链接: 图片下载地址 代码 <!DOCTYPE html> <…

【多线程奇妙屋】 Java 的 Thread类必会小技巧,教你如何用多种方式快速创建线程,学并发编程必备(实践篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

JAVA智慧社区系统跑腿家政本地生活商城系统小程序源码

智慧社区系统集成跑腿家政与本地生活商城 —— 打造便捷高效的社区生活圈 &#x1f3e0; 智慧社区新时代&#xff1a;一站式服务新体验 在快节奏的都市生活中&#xff0c;智慧社区系统正悄然改变着我们的生活方式。它不再只是一个居住的空间&#xff0c;而是集成了跑腿家政、本…

无线物联网通信与智能家居

无线物联网通信技术与智能家居之间存在着密不可分的关系。无线物联网通信技术作为智能家居系统的核心支撑&#xff0c;为智能家居设备之间的互联互通提供了可能&#xff0c;从而实现了家居生活的智能化、便捷化和舒适化。 一、无线物联网通信技术在智能家居中的应用 1、传感器…

【C++】vector详解:接口使用、迭代器、内存理解、与模拟实现

文章目录 1. 前言2. 内存角度 理解3. vector的使用定义 | 构造函数vector iteratorvector 空间增长问题vector 增删查改vector 迭代器失效避免迭代器失效的建议 4. 如何理解 二维动态vector5. 模拟实现 vector6. 相关文档 1. 前言 vector 是 C 标准模板库&#xff08;STL&…

万界星空科技数字孪生:解锁制造业未来,重塑智慧工厂新纪元

万界星空科技的数字孪生技术是一项创新的技术解决方案&#xff0c;它深度融合了工业大数据、物联网&#xff08;IoT&#xff09;、人工智能&#xff08;AI&#xff09;等先进技术&#xff0c;为制造业工厂提供了一个高度智能化、可视化的运营管理系统。以下是对万界星空科技数字…

《程序猿之Redis缓存实战 · 集合类型》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

「OC」探索 KVC 的基础与应用

「OC」KVC的初步学习 文章目录 「OC」KVC的初步学习前言介绍KVC的相关方法key和keyPath的区别KVC的工作原理KVO的setValue:forKey原理KVO的ValueforKey原理 在集合之中KVC的用法1. mutableArrayValueForKey: 和 mutableArrayValueForKeyPath:2. mutableSetValueForKey: 和 muta…

Java项目实战II基于Java+Spring Boot+MySQL的智能物流管理系统(文档+源码+数据库)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者 一、前言 随着电子商务的蓬勃发展&#xff0c;物流行业迎来了前所未有的挑战与机遇。传统物流管理方式在应对海…

PDCA优化任务流程

这里写目录标题 一、背景二、PDCA重要性与必要性概念PDCA循环的重要性 三、PDCA分析这次任务的执行任务描述分析原因&#xff1a;结合PDCA分析&#xff1a;提高办法&#xff1a; 四、总结 一、背景 汇报任务完成情况&#xff0c;未提交实际成果。 本次总结旨在通过PDCA循环的视…

二值图像的面积求取的两种方法及MATLAB实现

一、引言 面积在数字图像处理中经常用到&#xff0c;在MATLAB中&#xff0c;计算二值图像的面积通常可以通过两种主要方法实现&#xff1a;遍历法和直接利用bwarea函数。下面将分别介绍这两种方法的原理和相应的MATLAB代码示例。 二、遍历法计算二值图像面积的原理和MATLAB代码…

如何创建虚拟环境并实现目标检测及验证能否GPU加速

创建虚拟环境&#xff1a; 先创建一个虚拟python环境&#xff0c;敲如下代码 然后再到该虚拟环境里面安装自己想要的包 激活虚拟环境 然后再聚类训练这些 验证GPU加速 阿里源 pip install torch torchvision -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mir…

Appinventor2 多屏幕之间如何共享过程?

先说结论&#xff1a;不能共享&#xff0c;但可以变通&#xff0c;这个问题上没有完美方案&#xff01; Appinventor2 多屏幕之间如何共享过程&#xff1f;或者说如何跨屏幕调用其他屏幕的过程&#xff1f; 相信有很多人有过这样的问题&#xff0c;但是目前来看每个屏幕都是独…

Linux下驱动开发实例

驱动开发 驱动与硬件的分离 在传统的嵌入式系统开发中&#xff0c;硬件信息往往是直接硬编码在驱动代码中的。这样做的问题是&#xff0c;当硬件发生变化时&#xff0c;比如增加或更换设备&#xff0c;就需要修改驱动程序的代码&#xff0c;这会导致维护成本非常高。因此&…

机器学习周报(9.23-9.29)

文章目录 摘要Abstract1 自监督学习&#xff08;Self-Supervised Learning&#xff09;1.1 BERT1.1.1 Masking Input1.1.2 Next Sentence Prediction1.1.3 BERT的使用方式 1.2 Why does BERT work?1.3 Multi-lingual BERT 2 pytorch中tensor相关函数学习使用2.1 张量拼接与拆分…

4G模组SIM卡电路很简单,但也要注意这些坑

上次水SIM卡相关的文章&#xff0c;还是上一次&#xff1b; 上一篇文章里吹牛说&#xff0c;跟SIM卡相关的问题还有很多&#xff0c;目的是为下一篇文章埋下伏笔&#xff1b;伏笔埋是埋下了&#xff0c;但如果债老是不还&#xff0c;心里的石头就总悬着&#xff0c;搞不好老板…

MAC的几个常见的快捷方式

1.mac 查看图片好的方式 默认查看图片的方式无法直接切换上一张下一张 解决方法&#xff1a; 1.&#xff08;最好的方法&#xff09;选中图片直接按空格&#xff0c;进入快速预览图片 2.就是全部选中然后打开&#xff0c;但是说实话有点奇怪&#xff0c;而且很占内存 3.直接显示…