STM32 TIM(四)编码器接口

STM32 TIM(四)编码器接口

编码器接口简介

  • Encoder Interface 编码器接口

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

    • 正交编码器,输出的两个方波信号,相位相差90度,超前90度或者滞后90度,分别代表正转和反转。
    • 编码器接口工作流程,接收正交信号,自动执行CNT的自增或自减
    • 最终的实验现象,编码器有两个输出,一个是A相,一个是B相,然后接入到STM32,定时器的编码器接口,编码器的接口自动控制定时器时基单元中的CNT计数器,进行自增或自减。比如初始化之后,CNT初始值为0,然后编码器右转,CNT就++,右转产生一个脉冲,CNT就加一次,比如右转产生10个脉冲后,停下来,那么这个过程CNT就由0自增到10,停下来,编码器左转,CNT就–,左转产生一个脉冲,CNT就自减一次, 比如编码器再左转产生5个脉冲,那CNT就在原来10的基础上自减5,停下来。
    • 编码器接口,其实就相当于是一个带有方向控制的外部时钟,同时控制着CNT的计数时钟和计数方向,这样CNT的值就表示了编码器的位置。如果我们每隔一段时间取一次编码器的值,再把CNT清零,那么每次取出来的值就表示了编码器的速度。
    • 编码器测速实际上就是测频法测正交脉冲的频率,CNT计次,然后每隔一段时间取一次计次,这就是测频法的思路。编码器计次能根据旋转方向,不仅能自增计次还能自减计次,是一个带方向的测速。
  • 每个高级定时器和通用定时器都拥有1个编码器接口

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

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

正交编码器

  • 正交编码器一般可以测量位置,或者带有方向的速度值,一般有两个信号输出引脚,一个是A相,一个是B相。
  • 当编码器的旋转轴转动时,A相和B相就会输出这样的方波信号,转的越快,方波信号的频率就越高,所以方波的频率就代表了速度,去除任意一相的信号来测频率,就能知道旋转速度了,但是只有一相的信号,无法测量旋转方向,因为无论是正传还是反转,都是这样的方波信号。想要测量方向还必须要有另一根线的辅助。
    • 正转时,A相提前B相90度,反转时,A相滞后B相90度,当然正转时是A相提前还是A相滞后,并不是绝对的,这只是一个极性问题,毕竟正转和反转的定义也是相对的,总之就是朝一个方向转是A相提前,另一个方向是A相滞后。
    • 正交信号精度更高,A、B相都可以计次,相当于计次频率提高了一倍,其次,正交信号可以抗噪声,因为正交信号,两个信号必须是交替跳变的,所以可以设计一个抗噪声电路,如果一个信号不变,另一个信号连续跳变,也就是产生了噪声,那这时计次值是不会变化的。
  • 编码器接口的设计逻辑
    • 首先把A相和B相的所有边沿作为计数器的计数时钟,出现边沿信号时,就计数自增或自减,具体是自增还是自减,有另一相的状态来决定。
    • 当出现某个边沿时,我们判断另一相的高低电平,从而判断是正转还是反转,继而确定是自增还是自减。

在这里插入图片描述

边沿另一相状态
A相↑B相低电平
A相↓B相高电平
B相↑A相高电平
B相↓A相低电平

在这里插入图片描述

边沿另一相状态
A相↑B相高电平
A相↓B相低电平
B相↑A相低电平
B相↓A相高电平

编码器接口框图

  • 编码器接口有两个输入端TI1FP1和TI2FP2,分别要接到编码器的A相和B相,可以看出,编码器接口的两个引脚,借用了输入捕获单元的前两个通道,所以最终编码器的输入引脚,就是定时器的CH1和CH2这两个引脚。

    • 信号的通路是,CH1经过输入滤波器和边沿检测电路,通过TF1FP1,通向编码器接口;CH2经过输入滤波器和边沿检测电路,通过TF2FP2,通向编码器接口。CH3和CH4和编码器接口无关。后面的是否交叉、预分频器和CCR寄存器与编码器接口无关。
  • 编码器接口的输出部分,相当于从模式控制器,去控制CNT的计数时钟和计数方向,例如,如果出现了边沿信号,并且对应另一相的状态为正转,则控制CNT自增,否则控制CNT自减。

    • 在这里,之前在使用的72MHz内部时钟和我们在时基单元初始化时设置的计数方向并不会使用,因为此时计数时钟和计数方向都处于编码器接口托管的状态,计数器的自增和自减,受编码器控制。

在这里插入图片描述

编码器接口基本结构

  • 输入捕获的前两个通道,通过GPIO口接入编码器的A、B相。
  • 然后通过滤波器和边沿极性检测,产生TI1FP1和TI2FP2,通向编码器接口。
  • 编码器接口通过预分频器控制CNT计数器的时钟,同时,编码器接口还根据编码器的旋转方向,控制CNT的计数方向,编码器正转时,CNT自增,编码器反转时,CNT自减
    • 这里ARR是有效的,一般设置ARR为65535,最大量程。这样,利用补码的特性,很容易得到负数,比如CNT初始为0,正转,CNT自增,0,1,2,3,4,5,6,7……,反转,CNT自减,0下一个数就是65535,接着是65534,65533,可以把这个16位的无符号数转换为16位的有符号数,根据补码的定义,65535就对应-1,65534就对应-2,65533就对应-3……这样就可以直接得到负数,十分方便。

在这里插入图片描述

工作模式

  • TI1FP1和TI2FP2界的就是编码器的A、B相,在A相和B相的上升沿或者下降沿触发计数,具体是向上计数还是向下计数,取决于边沿信号发生的这一时刻,另一相的电平状态,也就是相对信号的电平,TI1FP1对应TI2,TI2FP2对应TI1,就是另一相电平的意思。

  • 边沿另一相状态
    A相↑B相低电平
    A相↓B相高电平
    B相↑A相高电平
    B相↓A相低电平
    • 例如,假设TI1接A相,TI2接B相(在TI1和TI2上计数),当A、B相为上表这4个状态时,就是正转,计数器需要自增,上表第一个状态,A相上升沿,B相低电平,对应下表就是TI1FP1上升沿,TI2FP2低电平,执行的是向上计数;上表第二个状态,
      A相下降沿,B相高电平,对应下表就是TIFP1下降沿,TI2FP2高电平,执行的是向上计数,以此类推。

在这里插入图片描述

实例(均不反相)

  • 第一个状态,TI1上升沿,TI2低电平,由表可知,TI1FP1上升沿,TI2FP2低电平,对应向上计数,所以计数器变高了一级,接着后面的这几个状态,由查表可知,都是向上计数,正转。
  • 接着后面的毛刺,展示的就是正交编码器抗噪声的原理了,在这里TI2没有变化,TI1却跳变了多次,不符合正交编码器的信号规律,正交信号,两个信号交替变化,这里TI2没变化,但是TI1变化了多次,显然是一个毛刺信号,二通过下面这张表的逻辑,就可以不计数,把这种噪声过滤掉。
    • 比如毛刺部分开始,TI1上升沿,TI2低电平,查表得向上计数,自增;下一个状态,TI1下降沿,TI2还是低电平,查表得向下计数,自减;然后继续TI1上升沿,TI2低电平,自增,继续,TI1下降沿,TI2低电平,自减。所以如果出现了一个引脚不变,另一个引脚连续跳变的毛刺信号,计数器就会+,-,+,-,来回摆动,最终计数值还是原来那个数,并不受毛刺噪声的影响,这就是正交编码器抗噪声的原理。
  • 接着是反转的波形,都是向下计数,计数值下降,然后TI1不动,TI2多次跳变,计数值也是来回摆动,过滤噪声,最后是正转,向上计数。

在这里插入图片描述

在这里插入图片描述

实例(TI1反相)

  • TI1和TI2都会经过边沿检测和极性选择的部分,在输入捕获模式下,这个极性选择是选择上升沿有效还是下降沿有效的,但是在编码器接口模式下,显然上升沿和下降沿都是有效的,上升沿和下降沿都需要计次。

    • 所以在编码器接口模式下,不再是边沿的极性选择,而是高低电平的极性选择,如果我们选择上升沿的参数,就是信号直通过来,高低电平极性不反转,如果选择下降沿的参数,就是信号通过一个非门过来,高低电平极性反转,所以就会有两个控制极性的参数,选择要不要加一个非门,反转一下极性。
  • 把TI1高低电平反转一下,就是这里的TI1反相,需要先将TI1高低电平取反,才是反相后实际给编码器接口的电平,然后在查表,第一个状态,应该是TI1下降沿,TI2低电平,查表得到是向下计数,与下图对应。后续也一一对应。

  • TI1反相的作用,比如你接一个编码器,发现它数据的加减方向反了,想要正转的方向,结果却自减了,想要反转的方向,结果却自增了,这时就可以调整一下极性,把任意一个引脚反相,就能反转计数方向了,当然也可以通过直接把A、B相两个引脚换一下。

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

MySQL的数据库操作、数据类型、表操作

目录 一、数据库操作 (1)、显示数据库 (2)、创建数据库 (3)、删除数据库 (4)、使用数据库 二、常用数据类型 (1)、数值类型 (2&#xff0…

uniapp 在 Android Studio 模拟器中运行项目

在开发App时,无论是使用 Flutter 还是 React native,还是使用uni-app 开发跨端App时,总是需要运行调试。一般调试分为两种。 第一:真机调试 第二:模拟器调试 真机调试的好处是可以看到更好的效果,缺点就是…

基于物联网云平台的分布式光伏监控系统的设计与实现

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 摘要:针对国内光伏发电监控系统的研究现状,文中提出了基于云平台的光伏发电监控体系。构建基于B/S架构的数据实时采集与推送,以SSH(strutsspringhibernate)作为Web开发框架,开发基…

07 MIT线性代数-求解Ax=0:主变量,特解 pivot variables, special solutions

前面定义了矩阵的列空间和零空间,那么如何求得这些子空间呢? 1. 计算零空间 Nullspace A的零空间即满足Ax0的所有x构成的向量空间 对于矩阵A进行“行操作”并不会改变Axb的解,因此也不会改变零空间 unchanged 第一步消元: echelon 阶梯型 …

香港服务器运行不正常原因简析

​  网站在线业务的部署需要服务器的存在。于我们而言,租用正规服务商(正规机房)的服务器,一般情况下是会很少出现问题。但,要知道,再稳定的服务器也有出现问题的时候,香港服务器也不例外,而且恰恰这个原…

基于Kubesphere容器云平台物联网云平台Devops实践

基于Kubesphere容器云平台物联网云平台Devops实践 项目背景 ​ 公司是做工业物联网相关业务的,现业务是云平台,技术栈 后端为 Springboot2.7JDK11 ,前端为 Vue3Ts,需要搭建自动化运维平台以实现业务代码自动部署上线,…

168. Excel表列名称

168. Excel表列名称 Java代码: 26进制,但是每个进制是从1开始的,不是从0开始;因此要计算要构建从0开始的求余! class Solution {public String convertToTitle(int cn) {StringBuilder sb new StringBuilder();whi…

简单方法搭建个人网站

随着互联网的发展,越来越多的人希望拥有一个属于自己的网站,用来展示自己的个人才华、推广自己的产品或服务。但是,很多人都因为没有编程知识而望而却步。现在,有一个简单的方法可以帮助你轻松搭建网站,无需编程知识。…

大模型在百度智能问答、搜索中的应用

本文主要介绍了智能问答技术在百度搜索中的应用。包括机器问答的发展历程、生成式问答、百度搜索智能问答应用。欢迎大家加入百度搜索团队,共同探索智能问答技术的发展方向,文末有简历投递方式。 01 什么是机器问答 机器问答,就是让计算机…

基于5G工业CPE打造智慧煤矿无人巡检监测应用

煤炭是我国重要的能源资源,对于煤炭的开采和利用也是我国重要的工业产业部分。得益于5G物联网技术的发展普及,煤矿场景也迎来智能化升级,实现了包括智能采掘、智能调度、无人运输、无人巡检等新型应用,极大提升了煤矿采运产业的效…

音频类型识别方案-audioset_tagging

audioset_tagging github上开源的音频识别模型,可以识别音频文件的类型并打分给出标签占比,如图 echo off set CHECKPOINT_PATH"module/Cnn14_mAP0.431.pth" set MODEL_TYPE"Cnn14" set CUDA_VISIBLE_DEVICES0 python pytorch\in…

Ubuntu系统编译调试QGIS源码保姆级教程

在之前的文章中,我详细介绍了怎么在Windows下编译QGIS源码,也得到了不错的反馈。但是不足的是Windows下只能编译QGIS的Release模式和RelWithDebInfo模式,想要分析源码,“断点调试”肯定是少不了的,但是这两种模式虽然也…

git 推送到github远程仓库细节处理(全网最良心)

我查看了很多网上的教程都不是很好 我们先在github创建一个仓库,且初始化 readme 我们到本地文件初始化仓库 添加远程仓库 这时候我们就 git add . , git commit ,再准备git push 的时候 显示没有指定远程的分支 我们按照提示操作 提示我们要先git pull 提示我…

论文写作框架示例:论软件系统建模方法及其应用

标题 前言题目要求写作框架(1)摘要(300~330字)(2)正文(2000~2500字,2200字左右为宜)(3)收尾(200字左右)前言 本章内容参考了51cto的薛老师的《软考论文高分特训与范文10篇》的内容,是帮助初学者打开写作思路的工具,而不是必须要遵循的模式。建议软考人多读多看…

centos 8 yum源不能使用问题

问题:新安装的centos 8 不能使用wget就不能下载和安装其他的软件 错误:为仓库 appstream 下载元数据失败 : Cannot prepare internal mirrorlist: No URLs in mirrorlist 解决: [rootlocalhost ~]# cd /etc/yum.repos.d [rootlocalhost yu…

Connectify Hotspot 23.0.1.40175 MAX Crack

您是学生吗?你在宿舍打游戏吗?你是在集体宿舍吗?如果是:你需要功能上网吧 Connectify Hotspot 专业 WiFi 热点共享管理工具 Connectify 是一款强大的无线热点工具,可以让带有无线网卡 / 3G 上网卡的电脑变成无线路由器…

CSS3中的字体和文本样式

CSS3优化了CSS 2.1的字体和文本属性,同时新增了各种文字特效,使网页文字更具表现力和感染力,丰富了网页设计效果,如自定义字体类型、更多的色彩模式、文本阴影、生态生成内容、各种特殊值、函数等。 1、字体样式 字体样式包括类…

MySQL2:MySQL中一条查询SQL是如何执行的?

MySQL2:MySQL中一条查询SQL是如何执行的? MySQL中一条查询SQL是如何执行的?1.连接怎么查看MySQL当前有多少个连接?思考:为什么连接数是查看线程?客户端的连接和服务端的线程有什么关系?MySQL参数…

H5游戏源码分享-考眼力游戏猜猜金币在哪

H5游戏源码分享-考眼力游戏猜猜金币在哪 <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><meta charset"UTF-8"><meta name"apple-mobile-web-app-capa…

Web入门笔记

Web入门笔记 HTTP协议 超文本传输协议 规定了浏览器和服务器之间数据传输的规则&#xff0c;请问数据和响应数据的格式 基于TCP请求-响应模式一次请求对应一次响应无状态的协议 请问数据格式 浏览器版本&#xff1a;解决浏览器兼容问题。GET请求体&#xff1a;存放请求参数…