一、引入

(1)编码器接口的好处:

  • 节约软件资源:外部中断计次,程序频繁进入中断,则软件资源会被简单频繁的工作给占用,效率不高
  • 使用定时器的编码器接口,再配合编码器,就可以测量旋转速度和旋转方向

(2)编码器测速:

  • 一般应用在电机控制的项目上,使用编码器测量电机的速度,然后再用PID算法进行闭环控制
  • 一般电机转速比较高,会选择无接触式的霍尔传感器或者光栅

二、编码器接口(Encoder Interface

作用可以接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度
解释

正交:输出两个方波信号,相位相差90度

超前90°——正转

滞后90°——反转

原理测频法正交脉冲的频率CNT计次,然后每隔一段时间取一次计次
优点可以根据旋转方向,不仅能自增计次,还能自减计次,是一个带方向的计次
特点

每个高级定时器和通用定时器都拥有一个编码器接口

如果一个定时器配置成了编码器接口模式,基本上就干不了其他活了

C8T6芯片只有TIM1-4总共4个计时器,所以最多只能接4个编码器

也可以通过外部中断来接编码器——通过软件资源弥补硬件资源

两个输入引脚借用了输入捕获的通道1和通道2

(编码器的两个输入引脚就是定时器的CH1和CH2引脚,CH3和CH4不能接编码器)

定位编码器接口模式基本上相当于使用了一个带有方向选择的外部时钟

三、正交编码器

功能测量位置、或者带有方向的速度值
配置

一般有两个信号输出引脚,一个是A相,一个是B相

正交信号优势

①精度更高:A、B相都可以计次,相当于计次频率提高一杯

②可抗噪声:正交信号必须交替跳变,所以可以设计一个抗噪声电路,如果一个信号不变,另一个信号连续跳变,也就是产生了噪声,这时计次值是不会变化的

编码器接口设计逻辑

将A相和B相素有的边沿作为计数器的计数时钟,出现边沿信号时计数自增or自减

②判断计数是增还是减:计数方向由另一相的状态来确定,当出现某个边沿时,判断另一相的高低电平

四、编码器接口的电路结构

高级定时器和通用定时器都是一样的,每个定时器都只有一个编码器接口基本定时器是没有编码器接口

(1)编码器接口的输入连接与核心资源

编码器接口的核心功能是通过检测编码器 A 相、B 相的相位信号实现计数,其输入部分的硬件与资源关联如下:

编码器的 A 相、B 相分别连接到编码器接口的两个输入端,这两个输入端复用了定时器输入捕获单元的前两个通道(CH1 和 CH2),即编码器的实际输入引脚为定时器的 CH1 和 CH2 引脚
输入捕获单元的 CH3、CH4 与编码器接口无关,不参与编码器信号的处理。

(2)编码器接口对输入捕获资源的复用

编码器接口虽然复用了 CH1CH2 通道,但并非使用输入捕获单元的全部功能,具体复用的资源包括:

输入捕获滤波器CH1 和 CH2 通道配置的输入滤波器会被编码器接口使用,用于对 A 相、B 相的输入信号进行滤波减少噪声干扰(例如通过设置滤波系数,滤除高频毛刺)。
边沿检测电路CH1 和 CH2 通道的边沿检测功能(上升沿 / 下降沿检测)也会被编码器接口利用,用于捕捉 A 相、B 相信号的跳变,作为计数触发的依据

(3)与编码器接口无关的输入捕获资源

输入捕获预分频器输入捕获单元的预分频器(用于控制捕获信号的分频)不影响编码器接口,因为编码器的计数触发直接由 A 相、B 相的边沿信号决定,无需对信号进行分频处理

捕获比较寄存器

(CCR)

CCR 是输入捕获模式下用于存储捕获时刻计数器值的寄存器,而编码器接口的核心是通过 A、B 相信号控制计数器(CNT)的增减,无需使用 CCR 寄存器

(4)编码器接口对计数的控制逻辑

编码器接口的输出部分本质上是一个 “从模式控制器”,其核心作用是根据 A 相、B 相的信号状态控制计数器(CNT)的计数行为(计数时钟和计数方向)

计数时钟不依赖定时器的内部时钟(如 72MHz 内部时钟),而是以 A 相、B 相的边沿信号作为计数触发时钟
计数方向

不受时基单元初始化时设置的计数方向影响,而是由 A 相、B 相的相位关系决定:

当检测到某一相的边沿信号时,通过判断另一相的当前状态(高 / 低电平)

若符合 “正转” 相位关系则控制 CNT 自增,若符合 “反转” 相位关系则控制 CNT 自减。

此时的计数时钟和计数方向都处于编码器接口托管的状态

五、编码器接口的基本结构

(一)连接方式

输入捕获的前两个通道,通过GPIO口接入编码器的A、B相,然后通过滤波器边沿检测极性选择,产生TI1FP1和TI2FP2 ,通向编码器接口,编码器接口通过预分频器控制CNT计数器的时钟,同时编码器接口根据编码器的旋转方向控制CNT的计数方向

(二)运行逻辑

编码器正转时,CNT自增,编码器反转时,CNT自减

(三)使用补码的特性

这里ARR是有效的,一般设置ARR为最大量程65535,这样利用补码的特性很容易得到负数:

如正转,CNT正常自增;但反转CNT自减,0减一下,是65535,65534,65533

将65535这个16位无符号数转为16位的有符号数,根据补码的定义,65535对应-1,65534对应-2,65533对应-3

六、工作细节

下表描述的就是编码器接口的工作逻辑

TI1FP1和TI2FP2就是A、B相,在A相和B相的上升沿或者下降沿触发计数

是向上计数还是向下计数呢?

取决于边沿信号发生的这一时刻,另一相的电平状态(即上标的相对信号的电平)

  • 仅在TI1(TI2)计数,就是仅在一相的边沿技术,另一相边沿忽略,不计数

仅在TI1计数:仅在A相的上升沿和下降沿自增或自减,而B相的这两个状态忽略掉,不执行计数

仅在TI2计数:仅在B相的上升沿和下降沿计数,A相的边沿忽略,不计数

  • 在TI1和TI2上计数(一般用这个模式):

如果A相上升沿、A相下降沿、B相上升沿、B相下降沿这四种状态都执行自增或自减,即A相和B相的边沿都计数,正转的状态都向上计数,反转的状态都向下计数

七、例子

(一)实例1——两个引脚都不反相

    展示计数方向逻辑与正交编码器抗噪声的原理

    上图使用的就是两个引脚的边沿都计数的模式

    这里是TI1和TI2的时序信号,下面是计数器值的变化情况

第一个状态TI1上升沿,TI2低电平向上计数
第一个状态TI1高电平,TI2上升沿向上计数
第一个状态TI1下降沿,TI2高电平向上计数
第一个状态TI1低电平,TI2下降沿向上计数
毛刺状态

展示抗噪声原理:

TI2没有变化,TI1却跳变了好几次

这不符合正交信号的变化规律

这样就可以将这个噪声滤掉

TI1上升沿,TI2低电平,向上计数

TI1下降沿,TI2低电平,向下计数

TI1上升沿,TI2低电平,自增

TI1下降沿,TI2低电平,自减

因此在出现毛刺现象的时候,计数器就会加、减、加、减来回摆动,最终的计数值还是原来的那个值

第三个状态TI2上升沿,TI1低电平向下计数
第三个状态

TI2高电平,TI1上升沿

向下计数
第三个状态

TI2下降沿,TI1高电平

向下计数
第三个状态TI2低电平,TI1下降沿向下计数

(二)实例2——TI1反相、TI2不反相

     展示极性的变化对计数的影响

TI1反相是什么意思?——首先要理解这个极性选择的作用是什么

  • TI1和TI2进来都会经过这个极性选择的部分,在输入捕获的情况下,这个极性选择是选择上升沿有效还是下降沿有效
  • 但是编码器接口显然始终都是上升沿和下降沿都有效的,上升沿和下降沿都需要计次的

所以在编码器接口这里就不再是边沿的极性选择了,而是高低电平的极性选择

选择上升沿的参数信号直通过来,高低电平极性不反转;
选择下降沿的参数信号通过一个非门过来,高低电平极性反转

这意味着存在两个控制极性的参数,用于决定是否对 TI1 或 TI2 的信号进行极性反转

均不反相TI1 和 TI2 都不进行反转
TI1 反相选择对 TI1 的信号进行处理时,即 TI1 高低电平取反,这才是反相后实际给编码器接口的电平
  • 需要注意的是,在分析过程中,如果直接将 TI1 和 TI2 画成输入信号并对照相关表格,得到的计数方向可能是错误的。
  • 因为 TI1 反相后,实际给到编码器接口的电平是 TI1 高低电平取反后的结果。
  • 例如:第一个状态原本是 TI1 上升沿、TI2 低电平,经过 TI1 反相后,实际状态变为 TI1 下降沿、TI2 低电平,此时编码器会向下计数。

实例1和实例2的计数方向是相反的,这有什么用呢?

比如,当连接一个编码器时,若发现其数据的加减方向与预期相反 —— 即正转时计数器自减,反转时计数器自增,这时就可以通过调整极性来解决,只需将任意一个引脚(TI1 或 TI2)进行反相,就能实现计数方向的反转。不过,实际上想要反转计数方向,也可以直接将 A、B 相两个引脚互换。

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

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

相关文章

01数据结构-交换排序

01数据结构-交换排序1.冒泡排序1.1基础冒泡排序1.1.1基础冒泡排序代码实现1.2冒泡排序的一次优化1.2.1冒泡排序的第一次优化代码实现1.3冒泡排序的二次优化1.3.1 冒泡排序的二次优化代码实现2.快速排序2.1双边循环法2.1.1双边循环法的代码实现2.2单边循环法2.2.1单边循环法代码…

MySQL架构和储存引擎

MySQL服务器整体架构如下:连接层:连接层的作用是处理客户端的连接,如何管理连接的。网络端口和连接管理线程:网络端口:一台服务器可以连接网络上多个端口的客户连接,只需要开放多个端口,只需要在…

详解flink java基础(一)

文章目录1.流式处理flink介绍2.Flink SQL介绍3. Flink Runtime4.使用flink集成kafka5.使用Flink SQL进行有状态流处理6.Event time & Watermarks7. flink Checkpoints & recovery1.流式处理flink介绍 实时服务依赖流式处理: flink优点: 高性能丰富的特性&#xff1a…

Day119 持续集成docker+jenkins

Day119 dockerjenkins 1.Dockerfile Dockerfile 可以用于项目部署。通过编写 Dockerfile,可以将整个项目及其所需的依赖项打包到一个 Docker 镜像中,然后在任何支持 Docker 的环境中部署和运行该镜像 Dockerfile 是用于构建 Docker 镜像的文本文件。它包…

Vue3+Vite MPA多页面应用开发完整指南 – 从零搭建到部署优化

什么是 MPA 多页面应用 MPA(Multi-Page Application)是由多个独立的 HTML 页面组成的应用,每个页面都有独立的入口文件。与 SPA 不同,MPA 的每个页面都是独立的,页面间通过链接跳转,适合大型项目或需要 SE…

【企业级架构】企业战略到技术落地的全流程【第一篇】

目录 一、人生蓝图与企业罗盘:战略视角下的成长架构 1. 大学毕业迷茫期 → 企业未制定战略前:无方向、无目标​ 2. 制定职业规划 → 企业战略制定:明确 “去哪” 和 “分几步走”​ 3. 盘点自身能力差距 → 业务架构梳理:搞清…

(二) Python + 地球信息科学与技术 = 经典案例分析

目录 四、农业精准施肥与产量预测(植被指数 机器学习) 五、公共场所踩踏事故预警系统(时空大数据 Web 开发) 六、森林火灾智能识别与救援路径规划(遥感 路径优化) 七、海岸线侵蚀动态监测与防护&…

从需求到部署全套方案:餐饮服务许可证数据可视化分析系统的大数据技术实战

🎓 作者:计算机毕设小月哥 | 软件开发专家 🖥️ 简介:8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 🛠️ 专业服务 🛠️ 需求定制化开发源码提…

Qt 关于QString和std::string数据截断的问题- 遇到\0或者0x00如何处理?

Qt 关于QString和std::string数据截断的问题- 遇到\0或者0x00如何处理?引言一、解决方案二、使用QByteArray注意事项引言 在Qt开发中,使用QString或std::string获取、发送字符串时,遇到\0(空字符)或者0x00(十六进制表示)可能导致数据截断&am…

Spring Cloud LoadBalancer 最佳实践

Ribbon 曾经是 Spring Cloud 家族默认的客户端负载均衡工具,而 Spring Cloud LoadBalancer (SCLB) 是官方替换 Ribbon 的新实现。表面上它们都解决 “服务调用时选哪个实例” 的问题,但在理念、架构和生态上差异不小。一、Ribbon vs SCLB1. 定位和生态…

【STM32】SPI 与 Flash 笔记

1️⃣ SPI(Serial Peripheral Interface,串行外设接口)英文解释: Serial:串行Peripheral:外设Interface:接口用途:MCU 与外部设备(Flash、传感器等)高速数据通…

抽象工厂设计模式 Abstract Factory

抽象工厂抽象工厂设计模式是一种创建模式,它提供了一个用于创建相关或从属对象族的接口,而无需指定其具体类。 它在以下情况下特别有用: 您需要创建必须一起使用并且是一致系列的一部分的对象(例如,按钮、复选框和菜单…

WSL 下的虚拟网卡配置

第一部分:Windows 虚拟网卡创建指南 1. 原理 在 Windows 里,“虚拟网卡”本质是由网络驱动在系统网络栈中创建的一个 软件网卡接口。它的作用和物理网卡类似,只不过不直接连接到物理硬件,而是通过内核网络驱动与宿主机网络进行交换…

Dify web前端源码本地部署详细教程

目录 1. 先启动API 2. 启动worker服务 3. 启动web 4. 访问登陆地址 在前面的文章中,Dify源码部署,搭建二次开发环境(一) 已经记录了如何在本地启动API、work、中间件。在本篇文章中,将概述如何启动dify web源码项…

CVPR 2025|英伟达联合牛津大学提出面向3D医学成像的统一分割基础模型

在 2D 自然图像和视频的交互式分割领域,基础模型已引发广泛关注,这也促使人们开始构建用于医学成像的 3D 基础模型。然而,3D 医学成像存在的领域差异以及临床应用场景,要求开发一种有别于现有 2D 解决方案的专用模型。具体而言&am…

解决“Win7共享文件夹其他电脑网络无法发现共享电脑名称”的问题

要让运行 Windows 7 的电脑被局域网中其他设备(包括另一台电脑、手机、NAS 等)“发现”,必须同时满足三个条件: 网络发现功能已启用;对应的后台服务已启动;防火墙规则放行。 下面给出最简、最稳妥的 3 步设…

Python pyzmq 库详解:从入门到高性能分布式通信

一、前言 在现代软件开发中,进程间通信(IPC)与分布式系统通信已经成为基础能力。无论是构建一个微服务架构的后端,还是实现大规模并行计算任务,如何让不同的进程或节点之间高效地传递消息,都是核心问题。 传…

CentOS 7更换国内镜像源

第一步:检查系统版本 在修改任何配置之前,先确定你的 CentOS 版本,因为不同版本的镜像源配置文件不同。 cat /etc/redhat-release这个命令会显示你的 CentOS 版本信息,例如 CentOS Linux release 7.9.2009 (Core)。从你的错误日志…

详解 doclayout_yolo:Python 文档布局检测

目录一、doclayout_yolo 核心功能二、安装方法1. 直接安装2. 通过 PDF-Extract-Kit 安装三、使用示例1. 快速体验(HuggingFace Demo)2. 本地推理代码3. 批量处理四、技术亮点五、应用场景六、其他说明1.相关资源2. 注意事项doclayout_yolo 是一个基于 Y…

猫头虎AI分享|一款Coze、Dify类开源AI应用超级智能体Agent快速构建工具:FastbuildAI

猫头虎AI分享|一款 Coze、Dify 类开源 AI 应用超级智能体快速构建工具:FastbuildAI 区别在于它的易用度和商业闭环功能 摘要:FastbuildAI 是一个开源的 AI 应用“快速构建 商业化闭环”工具。它让个人开发者与小团队用 可视化 零代码 的方…