电机应用开发-编码器的使用

编码器

增量式编码器倍频技术

增量式编码器输出的常见脉冲波形信号形式:

占空比为50%的方波,通道A和通道B相位差为90°。

正弦波的模拟信号,通道A和通道B相位差为90°。

对于占空比为50%的方波,通道A和通道B相位差为90°。先以下图为例子。

如果只在某一通道的上升沿计数,则计数频率 = 该通道频率。

如果在某一通道的上升沿和下降沿都计数,则计数频率 = 该通道频率 * 2,即2倍频。

如果在双通道的上升沿和下降沿都计数,则计数频率 = 该通道频率 * 4,即4倍频。

因此,至少在1/2个原始方波周期内就可以计数一次,最多在1/4个原始方波周期内就可以计数一次。这样计数频率就是原始方波信号的2或4倍,即编码器的分辨率提高了2倍到4倍。

假设有个增量式编码器的分辨率是600PPR,能分辨最小角度是0.6°,对它进行4倍频后就相当于把分辨率提高到600*4=2400PPR,此时编码器能够分辨的最小角度为0.15°。

编码器倍频计数还可以用来扩展一些测速方法的速度适用范围。例如电机测试通常使用M法测量,编码器4倍频后可以扩展M法的速度下限。

常用编码器测速方法:M法、T法和M/T法

对于电机转速的测试,可以把增量式编码器安装到电机上,用控制器对编码器脉冲进行计数,然后通过特定的方法求出电机转速。

M法(频率测量法):在一个固定的定时时间内(以秒为单位),统计这段时间的编码器脉冲数,计算速度值。

设编码器单圈脉冲数为C,在时间T内统计到的编码器脉冲数为M,则转速n = M / CT。编码器单圈脉冲数C是一个常数,所以转速n和M成正比,使得在高速测量时M变大可以获得较好的测量精度和平稳度。但如果速度很低,低到每个T只有几个脉冲,此时算出的转速误差就会比较大,并且不稳定。

有一些方法可以改善M法在低速测量的准确性,比如增量式编码器倍频技术。当原本捕获到的脉冲M只有4个,经过4倍频后,相同电机状态M变成了16个,也就提升了低速下的测量精度。

T法(周期测量法):建立在一个已知频率的高频脉冲并对其计数,计数时间由捕获到的编码器相邻两个脉冲的间隔时间T决定,计数值为M。设编码器单圈总脉冲数为C,高频脉冲的频率为F,则转速n = 1/CT=F/CM。C和F是常数,所以转速n和M成反比。在电机高转速时,编码器脉冲间隔时间T很小,使得测量周期内的高频脉冲计数值M也变得很少,导致测量误差变大。而在低转速时,T足够大,测量周期内的M也足够多。所以T法和M法刚好相反,更适合测量低速

M/T法综合了M法和T法各自的优势,即测量编码器脉冲数又测量一定时间内的高频脉冲数。

在一个相对固定的时间内,计数编码器脉冲数为M0,并计数一个已知频率为F的高频脉冲,计数值为M1,设编码器单圈总脉冲数为C,则转速n = FM0/CM1。由于F和C是常数,所以转速n只受M0和M1的影响。电机高速时,M0增大,M1减小,相当于M法;电机低速时,M1增大,M0减小,相当于T法

STM32的编码器接口

STM32芯片内部有专门用来采集增量式编码器方波信号的接口,这些接口实际上是STM32定时器的其中一种功能。编码器接口功能只有高级定时器TIM1/8和通用定时器TIM2~TIM5才有。

编码器接口用到了定时器的输入捕获部分。

这个表格将编码器接口所有可能出现的工作情况全都列了出来,包括它是如何实现方向检测和倍频的。

STM32的编码器接口在计数时并不是单纯地采集某一通道信号地上升沿或下降沿,而是需要综合另一个通道信号的电平。

表中“相反信号的电平”指的是在计数时所参考的另一个通道信号的电平,这些电平决定了计数器的计数方向。

仅在TI1处计数:TI1比TI2提前1/4个周期,以TI1的信号边沿作为有效边沿。当检测到TI1的上升沿时,TI2为低电平,此时计数器向上计数一次,下一时刻检测到TI1的下降沿时,TI2为高电平,此时计数器仍然向上计数一次,以此类推。这样就能把TI1的上升沿和下降沿都用来计数,即实现了对原始信号的2倍频。

仅在TI2处计数:TI1比TI2滞后1/4个周期,以TI1的信号边沿作为有效边沿。当检测到TI1的上升沿时,TI2为高电平,此时计数器向下计数一次,下一时刻检测到TI1的下降沿时,TI2为低电平,此时计数器仍然向下计数一次,以此类推。这样就能把TI1的上升沿和下降沿都用来计数,即实现了对原始信号的2倍频。

在TI1和TI2处均计数:把两个通道的上升沿和下降沿都用来计数,计数方向也是两个通道同时参考,相当于仅在一个通道处计数的2倍,所以实现了对原始信号的4倍频。

编码器接口结构体

主要有时基初始化结构体TIM_Base_InitTypeDef和编码器初始化配置结构体TIM_Encoder_InitTypeDef。

编码器初始化配置结构体TIM_Encoder_InitTypeDef用于定时器的编码器接口模式,与HAL_TIM_Encoder_Init函数配合使用完成初始化配置工作。

高级定时器TIM1和TIM8以及通用定时器TIM2~TIM5都带有编码器接口,使用时都必须单独设置。

typedef struct
{
	uint32_t EncoderMode;    // 编码器模式。通道A计数/通道B计数/双通道计数。设定TIMx_SMCR:SMS[2:0]
	uint32_t IC1Polarity;    // 输入信号极性。设置定时器通道在编码器模式下的输入信号是否反相。设定TIMx_CCER:CCxNP、CCxP
	uint32_t IC1Selection;   // 输入通道。TIM_ICSELECTION_DIRECTTI/TIM_ICSELECTION_INDIRECTTI/TIM_ICSELECTION_TRC。设定TIMx_CCMRx:CCxS[1:0]
	uint32_t IC1Prescaler;   // 输入捕获预分频器。1/2/4/8,设定TIMx_CCMRx:ICxPSC[1:0]
	uint32_t IC1Filter;      // 输入捕获滤波器,0x0~0xf,设定TIMx_CCMRx:ICxF[3:0]
	uint32_t IC2Polarity;    // 输入信号极性。设置定时器通道在编码器模式下的输入信号是否反相。设定TIMx_CCER:CCxNP、CCxP
	uint32_t IC2Selection;   // 输入通道。TIM_ICSELECTION_DIRECTTI/TIM_ICSELECTION_INDIRECTTI/TIM_ICSELECTION_TRC。设定TIMx_CCMRx:CCxS[1:0]
	uint32_t IC2Prescaler;   // 输入捕获预分频器。1/2/4/8,设定TIMx_CCMRx:ICxPSC[1:0]
	uint32_t IC2Filter;      // 输入捕获滤波器,0x0~0xf,设定TIMx_CCMRx:ICxF[3:0]
 }TIM_Encoder_InitTypeDef;

单通道计数设置编码器接口为2倍频,双通道计数设置编码器接口为4倍频。

编码器接口模式下只能使用这个TIM_ICSELECTION_DIRECTTI。

减速电机编码器测试实验

硬件设计

用到的减速电机和之前的减速电机按键控制例程相同,所以电机、开发板和驱动板的硬件连接也完全相同,只加上了编码器的连线。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python实现WOA智能鲸鱼优化算法优化随机森林回归模型(RandomForestRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

基于单片机设计的气压与海拔高度检测计(采用MPL3115A2芯片实现)

一、前言 随着科技的不断发展,在许多领域中,对气压与海拔高度的测量变得越来越重要。例如,对于航空和航天工业、气象预报、气候研究等领域,都需要高精度、可靠的气压与海拔高度检测装置。针对这一需求,基于单片机设计…

基于SSM的学院网站设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

2024年测试工程师必看比列之Unittest单元测试框架-知识点总结

unittest单元测试框架 1.导入unittest包 2.创建类的时候要继承与unittest.TestCase类 2.1,setUp方法是在类中测试执行前的初始化工作 2.2,tearDown方法是在类中测试执行后的清除工作 2.3,测试用例函数以test开头的方法是普通的测试用例方法&…

基于单片机的公共场所马桶设计(论文+源码)

1.系统设计 本课题为公共场所的马桶设计,其整个系统架构如图2.1所示,其采用STC89C52单片机为核心控制器,结合HC-SR04人体检测模块,压力传感器,LCD1602液晶,蜂鸣器,L298驱动电路等构成整个系统&…

通达信吊灯止损指标公式,根据波动幅度自动调整止盈止损

吊灯止损指标是由查克勒博(Chuck LeBeau)发明的,亚历山大埃尔德(Alexander Elder)在其著作《走进我的交易室》中介绍了这种止盈止损方法(中文版翻译为倒挂式离场法则),它是根据平均真实波幅ATR设置跟踪止损。吊灯止损指标的目的是…

使用 LCM LoRA 4 步完成 SDXL 推理

LCM 模型 通过将原始模型蒸馏为另一个需要更少步数 (4 到 8 步,而不是原来的 25 到 50 步) 的版本以减少用 Stable Diffusion (或 SDXL) 生成图像所需的步数。蒸馏是一种训练过程,其主要思想是尝试用一个新模型来复制源模型的输出。蒸馏后的模型要么尺寸…

论文阅读:“基于特征检测与深度特征描述的点云粗对齐算法”

文章目录 摘要简介相关工作粗对齐传统的粗对齐算法基于深度学习的粗对齐算法 特征检测及描述符构建 本文算法ISS 特征检测RANSAC 算法3DMatch 算法 实验结果参考文献 摘要 点云对齐是点云数据处理的重要步骤之一,粗对齐则是其中的难点。近年来,基于深度…

VM——绘制亮度均匀性曲线

1、需求:检测汽车内饰氛围灯的亮度均匀性,并绘制均匀性曲线 2、结果: 3、方法: 主要分为3步 (1)提取氛围灯ROI,忽略背景 (2)对提取到的ROI图进行切片处理,计算出每个切片的亮度均值 (3)绘制均匀性曲线 3.1 提取氛围灯ROI step1: 转成黑白图 step2:通过blob和…

【图像分类】【深度学习】【Pytorch版本】Inception-ResNet模型算法详解

【图像分类】【深度学习】【Pytorch版本】Inception-ResNet模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】Inception-ResNet模型算法详解前言Inception-ResNet讲解Inception-ResNet-V1Inception-ResNet-V2残差模块的缩放(Scaling of the Residuals)Inception-…

第1关:图的邻接矩阵存储及求邻接点操作

任务要求参考答案评论2 任务描述相关知识 顶点集合边集合编程要求测试说明 任务描述 本关任务:要求从文件输入顶点和边数据,包括顶点信息、边、权值等,编写程序实现以下功能。 1)构造无向网G的邻接矩阵和顶点集,即图…

配置文件自动提示

1、引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId> </dependency> 2、修改IDEA配置

mysql底层是如何存放数据的

总览 首先总的来说&#xff0c;分为四个层级&#xff0c;行页区段。行就是数据库里的一行数据。 但一次从磁盘读进内存的数据量是一页&#xff08;页是读写的单位&#xff0c;默认16KB一页&#xff09;&#xff0c;页分很多种类&#xff0c;例如数据页、溢出页、undo日志页。 …

OpenAI宫斗,尘埃落定,微软成最大赢家

周末被OpenAI董事会闹剧刷屏,ChatGPT之父Sam Altman前一天被踢出董事会,免职CEO,后一天重返OpenAI,目前结局未知。 很多同学想要围观,缺少背景知识,这里老章为大家简单介绍前因后果及涉及的人物,时间线,让大家轻松围观。 备好瓜子,开始。 1、主角 先看一张图,看一…

Java基于B/S架构,包括PC后台管理端、APP移动端、可视化数据大屏的智慧工地源码

智慧工地管理平台充分运用数字化技术&#xff0c;聚焦施工现场岗位一线&#xff0c;依托物联网、互联网、AI等技术&#xff0c;围绕施工现场管理的人、机、料、法、环五大维度&#xff0c;以及施工过程管理的进度、质量、安全三大体系为基础应用&#xff0c;实现全面高效的工程…

无人售货奶柜:颠覆传统零售行业的潜力黑马

无人售货奶柜&#xff1a;颠覆传统零售行业的潜力黑马 无人售货奶柜具备体积小、灵活运用空间、无需人工看守和自动结算等特点。相较于传统建店方式&#xff0c;它的成本大大降低&#xff0c;从而提高了运营效率。此外&#xff0c;无人售货奶柜独特的优势之一就是可以保持24小时…

【GUI】-- 11 贪吃蛇小游戏之绘制静态的小蛇

GUI编程 04 贪吃蛇小游戏 4.2 第二步&#xff1a;绘制静态的小蛇 现在绘制静态的小蛇(即小蛇初始位置)&#xff0c;并且完善游戏默认初始状态。这一步还在GamePanel类中实现。 首先&#xff0c;定义了小蛇的数据结构&#xff0c; //定义蛇的数据结构int length; //小蛇总长…

LeetCode【45】跳跃游戏2

题目&#xff1a; 思路&#xff1a; 注意和跳跃游戏【55】不同的是&#xff0c;题目保证可以跳到nums[n-1];那么每次跳到最大即可 代码&#xff1a; public class LeetCode45 {public static int jump(int[] nums) {int jumps 0;int currentEnd 0;int farthest 0;for(int…

案例研究|北京交通大学基于DataEase开展多场景校园数据分析与展示

北京交通大学是教育部直属&#xff0c;教育部、交通运输部、北京市人民政府和中国国家铁路集团有限公司共建的全国重点大学&#xff0c;是国家“211工程”“985工程优势学科创新平台”“双一流”建设高校。 多年来&#xff0c;北京交通大学积极发挥信息技术赋能学校人才培养、…