3、速度测量方法:M法测速、T法测速、M/T法测速、测速精度与分辨率分析
做直流电机速度闭环,第一步要解决什么问题?
你得先知道电机现在转多快,对吧?
测速不准,后面PID调得再好也是白搭。我见过太多新手,PID参数调了半天,最后发现是测速环节出了问题。嗯,今天我们就来把测速这件事彻底讲透。
3.1 测速的基本原理
说白了,电机速度测量就是数脉冲。
电机轴上装一个编码器,转一圈发出固定数量的脉冲。比如常见的增量式编码器,一圈发1000个脉冲。你数一数单位时间内收到了多少个脉冲,就能算出速度。
但问题来了——怎么数?
这就引出了三种经典方法:M法、T法、M/T法。
核心概念速览:
- M法:固定时间,数脉冲个数 → 适合高速
- 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都是实时测得的,不是固定的。
具体实现时,我一般这样处理:
- 设定一个基础采样周期,比如50ms
- 在这个周期内,同时计数脉冲M和计时T
- 如果M值较大(高速),直接用M法计算
- 如果M值较小(低速),切换到T法计算
- 在中间区域,用组合公式平滑过渡
实际效果: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