当前位置: 首页 > news >正文

在 STM32 中实现电机测速的方法介绍

在 STM32 中实现电机测速的方法介绍

关键字:M 法测速, T 法测速,编码器

1. 电机测速方法介绍

在电机控制类应用中,经常会需要对电机转速进行检测,测速常用的方式有 M 法测速和 T法测速。
M 法测速是利用在规定时间 Ts 内编码器输出脉冲数量 M1 计算电机转速,如下图所示,信号 A 和 B 为正交编码器的输出信号,C 解码后的计数脉冲(4x)。
图1. M 法测速原理
单位时间(1s)内编码器输出脉冲数量,即脉冲频率:

𝑓𝑐 = 𝑀1⁄𝑇𝑠

假设电机每旋转一圈正交编码器(4x)的输出脉冲数量为 Z,则电机转速为:

𝑛 =𝑓𝑐/𝑍∗ 60 =(60∗𝑀1)/(𝑍∗𝑇𝑠) (r/min) -----(1)

r/min 代表圈/分钟。

M 法测速的分辨率为:

𝑄 =( 60 ∗ (𝑀1 + 1))/(𝑍 ∗ 𝑇𝑠) −(60 ∗ 𝑀1)/(𝑍 ∗ 𝑇𝑠) =60/(𝑍 ∗ 𝑇𝑠)

M 法测速的误差率为:

在这里插入图片描述
由上可知,M 法测速的分辨率与速度无关,要提高分辨率,即减小 Q 值,必须增大编码器每圈输出的脉冲个数 Z ,或者增大采样周期 Ts。M 法测速误差率与测定时间内的脉冲数量成反比关系,转速越高 M1 值越大,当转速很低时,M1 值很小,误差率会变大,因此 M 法适合高速测量。

T 法测速是测量编码器输出两个脉冲之间的间隔来计算转速,通过计算高频时钟脉冲数量M2 来衡量编码器两个脉冲间隔的时间。
图2. T 法测速原理
在这里插入图片描述
由上可知,T 法测速的分辨率 Q 与 M2 相关,当转速越低时 M2 的值越大,Q 值越小,分辨能力越强。T 法测速的误差率也与 M2 相关,当转速越低时 M2 的值越大,误差率越小,因此T 法测速非常适合低速测量。

2. M 法与 T 法测速在 STM32 中的实现

STM32 中的很多定时器都带编码器接口,在对输入编码器信号进行计数的同时,还通过该接口可以将正交编码器的输入信号解码成脉冲输出映射到 TIMx_TRGO,手册中的原文描述如下:
在这里插入图片描述

结合上述的测速原理,在 STM32 中应用定时器的编码器接口完成 M 法测速和 T 法测速的方案框图如下:
图3. STM32 定时器测速方案框图
使用两个 32bit 的定时器 TIM2 和 TIM3 来处理编码器信号,TIM3 的编码器接口与外部的编码器信号连接直接实现 4x 计数 ;解码后的输出映射到 TIM3_TRGO,并作为 TIM2 的定时器捕获和复位的触发源。TIM6 作为基本定时器,实现一个 ms 级别的中断,在中断服务程序中实现 M 法和 T 法测速的计算。

M 法测速中,在 TIM6 的定时中断服务程序中读取 TIM3 的计数值 TIM3_CNT,两次连续读取值的差值即为图 1 种的 M1,TIM6 的中断定时时间即为 Ts,在 Z 为已知固定值的情况下,根据公式(1)即可计算出转速 n。

T 法测速中,在 TIM6 的定时中断服务程序中读取 TIM2 捕获值 TIM2_CCR1(TIM3_TRGO内部连接到 TIM2_CH1),TIM2_CCR1 即为图 2 中所示的编码器连续两个输出脉冲之间的高频脉冲数量 M2,TIM2 的时钟频率即为 ft,在 Z 为已知固定值的情况下,根据公式(2)即可计算出转速 n。

3. 方案测试结果

基于以上的方案,通过定时器模拟生成编码器输出信号 A 和 B,分别的高速和低速情况下进
行模拟测试,结果如下,图中 Speed_M_Ref 和 Speed_T_Ref 为速度参考值,Speed_M 和
Speed_T 为测试结果值。
高速 M 法测试结果(1460rpm~2920rpm):
在这里插入图片描述
高速 T 法测试结果(1460rpm~2920rpm):
在这里插入图片描述
在这里插入图片描述
中速 M 法测试结果(146rpm~292rpm):
在这里插入图片描述
中速 T 法测试结果(146rpm~292rpm):
在这里插入图片描述
低速 M 法测试结果(19rpm~35rpm):
在这里插入图片描述
在这里插入图片描述
低速 T 法测试结果(19rpm~35rpm):
在这里插入图片描述

4. 小结

本文简单介绍了电机控制中 M 法和 T 法测速的原理,给出了在 STM32 中如何利用定时器
的编码器接口和多个定时器合作的方式实现两种测速的方案,并对方案进行了模拟测试,给出测
试结果,高速下 M 法的效果更好,在低速情况下 M 法测速偏差大,T 法测速更适合低速测速。


本文档参考ST官方的《LAT1447-电机测速方法以及在STM32中的实现-M法与T法的应用详解》文档。
参考下载地址:https://download.csdn.net/download/u014319604/90471172

相关文章:

  • 职责分配矩阵(RAM)详解
  • GPU显存不足?分布式训练如何让单卡变百卡:PyTorch实战与弹性算力启示
  • 014_多线程
  • 2、文件上传漏洞的防范
  • 12、nRF52XX蓝牙学习(GPIOTE任务触发LED)
  • Python爬虫第11节-解析库Beautiful Soup的使用上篇
  • 安装NVIDIA驱动、配置docker运行时、docker部署GPUStack及ragflow集成GPUStack模型(WSL下ubuntu)
  • uniapp微信小程序基于wu-input二次封装TInput组件(支持点击下拉选择、支持整数、电话、小数、身份证、小数点位数控制功能)
  • iframe学习与应用场景指南
  • 【技术白皮书】外功心法 | 第四部分 | 数据结构与算法基础(常用的数据结构)
  • MySQL之事务理论和案例
  • SQLyog使用教程
  • ASP.NET中将 PasswordHasher 使用的 PBKDF2 算法替换为更现代的 Scrypt 或 Argon2 算法
  • 语音外呼提高CPS转化案例
  • 【教程】优化xrdp的性能
  • 数字内容体验构建品牌忠诚新路径
  • Open GL ES-> 工厂设计模式包装 SurfaceView + 自定义EGL的OpenGL ES 渲染框架
  • AI大模型学习七:‌小米8闲置,直接安装ubuntu,并安装VNC远程连接手机,使劲造
  • selenium元素获取
  • 【时时三省】Python 语言----正则表达式
  • wordpress开发的网站/西安seo管理
  • 平台推广员是干嘛的/账号seo是什么
  • 滨海专业做网站/企业短视频推广
  • 拉萨市网站建设/东莞网站提升排名
  • 怎么用电脑做网站服务器吗/自媒体平台排名
  • 涿州市网站建设/湖南网站建设加盟代理