3、速度测量方法:M法测速、T法测速、M/T法测速、测速精度与分辨率分析

做直流电机速度闭环,第一步要解决什么问题?

你得先知道电机现在转多快,对吧?

测速不准,后面PID调得再好也是白搭。我见过太多新手,PID参数调了半天,最后发现是测速环节出了问题。嗯,今天我们就来把测速这件事彻底讲透。

3.1 测速的基本原理

说白了,电机速度测量就是数脉冲。

电机轴上装一个编码器,转一圈发出固定数量的脉冲。比如常见的增量式编码器,一圈发1000个脉冲。你数一数单位时间内收到了多少个脉冲,就能算出速度。

但问题来了——怎么数?

这就引出了三种经典方法:M法T法M/T法

核心概念速览:

  • M法:固定时间,数脉冲个数 → 适合高速
  • T法:固定脉冲个数,测时间 → 适合低速
  • M/T法:两者结合 → 全速域都适用
直流电机速度测量方法 速度测量方法 M法(测频法) T法(测周法) M/T法(综合法) 固定时间 ΔT 数脉冲个数 M 高速时精度高 固定脉冲数 M0 测时间 T 低速时精度高 同时测 M 和 T 动态切换 全速域精度高 选择哪种方法?取决于你的转速范围和精度要求

3.2 M法测速(测频法)

M法的思路很简单:固定一个时间窗口,数这个窗口内来了多少个脉冲

比如我设定采样周期为100ms,在这100ms内编码器发出了500个脉冲。编码器一圈1000个脉冲,那转速就是:

转速(rpm) = (500 / 1000) × (60 / 0.1) = 300 rpm

公式长这样:

n = (M / P) × (60 / Tc)

其中:

  • M:采样周期内计数的脉冲数
  • P:编码器每转脉冲数(PPR)
  • Tc:采样周期(秒)

我的经验:M法在高速时非常好用。我之前做一个风机项目,电机额定转速3000rpm,用M法测速,分辨率完全够用。但如果你让电机跑到100rpm以下,M法就开始露怯了——采样周期内可能只抓到几个脉冲,甚至一个都没有,那测出来的速度就跳得厉害。

M法的精度分析:

M法的误差主要来自±1个脉冲的计数误差。转速越高,M值越大,相对误差越小。说白了,高速时精度好,低速时精度差。

注意:采样周期不能太短。我曾经为了追求快速响应,把采样周期设到10ms,结果低速时经常测到0脉冲,速度直接跳变到0。嗯,这是个坑,别踩。

3.3 T法测速(测周法)

T法反过来——固定脉冲个数,测量经过的时间

比如我设定每来100个脉冲算一次速度。用定时器记下这100个脉冲花了多长时间。如果花了50ms,编码器一圈1000个脉冲,那转速就是:

转速(rpm) = (100 / 1000) × (60 / 0.05) = 120 rpm

公式:

n = (M0 / P) × (60 / T)

其中:

  • M0:固定的脉冲个数
  • P:编码器每转脉冲数
  • T:测得的时间(秒)

你想想看,T法在低速时有什么优势?

低速时,脉冲间隔长,测得的时间T就大,时间测量的相对误差就小。所以T法天生适合低速测量。

关键对比:

特性 M法 T法
适合速度 高速 低速
误差来源 ±1脉冲计数误差 定时器量化误差
采样时间 固定 不固定(随速度变化)
实时性 好(固定周期) 低速时更新慢

避坑指南:我曾经在一个AGV小车的项目中用了纯T法测速。小车低速运行时还好,但一旦急加速,T法的采样时间会突然变短,导致速度更新频率暴增,控制周期都乱了。后来我加了限幅才解决。

3.4 M/T法测速

既然M法适合高速,T法适合低速,那能不能把两者结合起来?

当然可以。这就是M/T法

M/T法的思路是:同时测量脉冲个数M和经过的时间T。然后根据速度高低,动态选择用M法还是T法来计算,或者干脆用两者的组合公式。

组合公式长这样:

n = (M / P) × (60 / T)

注意,这里的M和T都是实时测得的,不是固定的。

具体实现时,我一般这样处理:

  1. 设定一个基础采样周期,比如50ms
  2. 在这个周期内,同时计数脉冲M和计时T
  3. 如果M值较大(高速),直接用M法计算
  4. 如果M值较小(低速),切换到T法计算
  5. 在中间区域,用组合公式平滑过渡

实际效果:M/T法在全速域都能保持较好的精度。我在一个伺服电机项目中使用M/T法,从10rpm到3000rpm,测速误差都能控制在1%以内。而纯M法在低速时误差会飙到5%以上。

3.5 测速精度与分辨率分析

这两个概念容易搞混,我简单说清楚:

  • 分辨率:能区分的最小速度变化量
  • 精度:测量值与真实值的接近程度

举个例子:

你用M法测速,采样周期100ms,编码器1000PPR。那分辨率就是:

分辨率 = 60 / (P × Tc) = 60 / (1000 × 0.1) = 0.6 rpm

也就是说,你只能分辨出0.6rpm的变化。小于这个值的变化,你是测不出来的。

而精度呢?它受编码器本身误差、定时器精度、计数误差等多方面影响。一般增量式编码器的精度在±1个脉冲以内。

重要提醒:分辨率不等于精度。分辨率高不代表测得准。我见过有人用高分辨率编码器,但定时器精度不够,结果分辨率很高,测出来的值却一直在跳。嗯,木桶效应,哪个短板都不行。

如何提升测速质量?

  • 提高编码器线数:直接提升分辨率,但成本也上去了
  • 延长采样时间:提升M法低速时的精度,但牺牲实时性
  • 软件滤波:比如滑动平均滤波,能平滑速度曲线
  • 使用M/T法:全速域兼顾,我个人的首选方案

我的习惯:做产品时,我一般先用M/T法做基础测速,然后加一个一阶低通滤波。截止频率根据系统带宽来调,通常设在10-50Hz。这样既保证了实时性,又不会让速度信号太毛躁。

好了,测速这部分就讲到这里。记住一句话:测速不准,控制白费。下一节我们开始讲PID控制器本身,到时候你会感谢今天把测速搞清楚的自己。


公众号:蓝海资料掘金营,微信deep3321