3、控制系统建模:电机数学模型、机械系统模型、传感器模型简化

说实话,很多初学者一听到「建模」两个字就头大。我当年也是这样,总觉得建模是数学家干的事,跟我做控制的有什么关系?

后来被现实狠狠教育了一回——有次我调一个伺服系统,PID参数怎么整都振荡,最后发现是模型里忽略了一个摩擦项。嗯,从那以后我再也不敢跳过建模这一步了。

这一章,咱们就把三环控制里最常用的三个模型拆开揉碎。不搞复杂的偏微分方程,只讲你写代码、调参数时真正用得上的东西。

3.1 电机数学模型:从电压到转速的桥梁

电机是执行器的核心。你给一个电压,它转起来。但转多快、能输出多大扭矩,这中间有个数学关系。

我习惯把直流电机模型分成两部分:电气方程和机械方程。

3.4.1 电气方程

说白了就是基尔霍夫电压定律。电枢回路上有三个电压分量:

  • 电阻压降:i · R
  • 电感压降:L · di/dt
  • 反电动势:Ke · ω(转速越高,反电动势越大)

合起来就是:

U = i · R + L · di/dt + Ke · ω

你想想看,如果电机堵转了(ω=0),反电动势消失,电流会瞬间飙升。我在项目里见过有人忘了这个,直接把驱动板烧了。

3.4.2 机械方程

电机轴上的力矩平衡:

J · dω/dt = Kt · i - B · ω - TL

其中:

  • J:转动惯量(电机转子+负载折算)
  • Kt:扭矩常数(通常 Kt ≈ Ke)
  • B:粘性阻尼系数
  • TL:负载扭矩
我的小技巧: 实际调试时,L 通常很小(毫亨级),如果电流环带宽不高,可以直接忽略电感项。这样模型就从二阶降为一阶,调参省事不少。

3.2 机械系统模型:惯量、阻尼与弹性

电机后面连着负载,可能是齿轮、丝杠、皮带或者直接连一个转台。这些东西加在一起,构成了机械系统。

我一般把机械系统简化成三种基本元件:

元件 符号 物理意义 单位
惯量 J 抵抗加速度的能力 kg·m²
阻尼 B 与速度成正比的阻力 N·m·s/rad
刚度 K 抵抗形变的能力(弹性) N·m/rad

大多数工业应用里,机械系统可以简化为一个二阶振荡环节:

G(s) = 1 / (J · s² + B · s + K)

为什么会这样?因为惯量储能、阻尼耗能、刚度储能,三者构成了一个弹簧-质量-阻尼系统。

避坑指南: 我曾经遇到过一台设备,低速运行时一切正常,一到高速就剧烈抖动。查了三天,最后发现是联轴器的弹性变形被忽略了。机械刚度不够时,模型里必须加上弹性项,否则速度环和位置环都会出问题。

3.3 传感器模型简化:编码器、霍尔与电流采样

传感器是控制系统的眼睛。你模型建得再好,传感器不准,一切都是白搭。

3.3.1 编码器模型

增量式编码器输出两路正交脉冲(A、B),通过计数得到位置。速度则通过对位置差分得到。

但这里有个坑:差分求速度会放大噪声。我习惯在速度计算后面加一个低通滤波器,截止频率设为速度环带宽的 3~5 倍。

// 伪代码:带滤波的速度计算
static float prev_pos = 0;
static float filtered_vel = 0;
float raw_vel = (current_pos - prev_pos) / dt;
filtered_vel = 0.8f * filtered_vel + 0.2f * raw_vel;  // 一阶低通
prev_pos = current_pos;

3.3.2 霍尔传感器模型

霍尔传感器只能给出 60° 或 120° 电角度的离散位置。用于方波控制还行,但做正弦波控制就太粗糙了。

我个人的做法是:用霍尔信号估算转速,然后用这个转速去推算连续位置,作为启动时的临时反馈。等编码器信号稳定了再切换。

3.3.3 电流采样模型

电流采样通常用采样电阻+运放,或者霍尔电流传感器。采样值经过 ADC 读入单片机。

这里要注意两个问题:

  • 采样时刻: 必须在 PWM 载波的中点采样,避开开关噪声。
  • 偏置校准: 运放有零漂,上电后先采一次零电流值,后面所有采样值都减去这个偏置。

核心要点: 传感器模型简化的原则是——保留主要特性,忽略次要细节。编码器的分辨率、电流采样的延迟、霍尔的角度误差,这些必须保留;而传感器的温漂、非线性,在入门阶段可以先忽略。

3.4 知识体系总览

下面这张图把本章的三个模型串起来了。你看一眼,就能明白它们在三环控制里的位置。

控制系统建模知识体系 控制系统建模知识体系 电机数学模型 机械系统模型 传感器模型 电气方程 机械方程 惯量 J 阻尼 B 刚度 K 二阶系统 编码器 霍尔 电流采样 三环控制映射:电流环 → 电机模型 | 速度环 → 机械模型 | 位置环 → 传感器模型 每个模型都对应一个控制环,模型精度决定了控制性能的上限 💡 入门阶段:先掌握简化模型,再逐步增加细节

3.5 模型简化原则:什么时候可以偷懒?

做工程不是做学术。模型不是越精确越好,而是够用就好。我总结了几条简化原则:

  1. 忽略小时间常数: 如果电感时间常数 L/R 远小于电流环采样周期,直接忽略电感。
  2. 合并惯量: 电机和负载的惯量可以折算到同一根轴上,用一个 J 表示。
  3. 线性化摩擦: 库仑摩擦(静摩擦)是非线性的,但在低速场合可以用粘性阻尼近似。
  4. 传感器延迟等效为一阶惯性: 编码器采样延迟、电流采样滤波延迟,都可以用一个 1/(T·s+1) 代替。
我的经验: 刚开始做三环控制时,先把电机模型简化成 K/(J·s+B) 的一阶形式,把传感器延迟忽略掉。等电流环和速度环调稳了,再回头把被忽略的项加回来。这样调试路径最清晰,不容易把自己绕晕。