首页 / 驱动算法 / 高级篇

减速器齿轮对电机FOC控制的影响:惯量、间隙、刚度与反馈方案

FOC(磁场定向控制)本身控制的是电机轴——电流环采样电机电流、Park 变换用电机转子角。减速器不会改变电机内部电磁模型,但它把负载侧的物理量映射到电机轴(惯量、刚度、惯量比),同时引入齿轮特有的非线性扰动:侧隙换向空程、传动刚度谐振、摩擦粘滑、啮合传动误差。这些全部作用在 FOC 闭环上,影响速度环与位置环的稳定性、动态响应与稳态精度。本文逐项拆解每个物理量的作用机理与影响范围,用惯量折算阶跃响应仿真器看减速比对动态的影响、用间隙换向仿真器看空程与冲击,最后总结"哪个环受影响、怎么调",并给出电机端/负载端编码器方案的取舍与可编译 C 代码。

1. 先划清边界:FOC 控制电机轴,减速器在负载侧

一句话:FOC 的电流环完全不受减速器影响,速度环/位置环受减速器显著影响。原因在于信号流:

FOC 环节采样/反馈对象受减速器影响原因
电流环(id/iq)电机定子电流几乎不受电流采样在电机端,与后端机械无关
转矩环iq 指令 → 电磁转矩间接受负载侧机械扰动表现为转矩扰动,iq 需要跟随抵消
速度环电机轴速度明显受惯量折算、谐振、摩擦、间隙都会引起速度抖动
位置环电机轴/负载轴位置严重受间隙、传动误差、弹性形变直接落在位置精度上

减速器对 FOC 的影响可以归纳为四类:惯量折算(动态)→ 间隙/刚度(非线性+谐振)→ 摩擦/传动误差(稳态性能)→ 反馈方案(能观测到什么)。下面逐项拆解。

2. 惯量折算:最基础、最容易被忽略的影响

负载惯量 JL 通过减速比 N 折算到电机轴,与电机自身惯量相加得到总等效惯量

惯量折算

Jeq = Jm + JL / N²

转矩按 1/N 放大、转速按 N 缩小、加速度按 1/N² 折算——所以惯量是 N² 关系

对 FOC 控制的三点直接影响:

  1. 减速比越大,Jeq 越小:同样转矩下电机轴加速度更高,系统"更好控"、动态更快;
  2. 但 PI 参数必须按 Jeq 整定:速度环 PI 的 Kp ∝ Jeq、Ki ∝ Jeq(见《三闭环带宽分配与PI整定》)。只用电机铭牌惯量整定,接上减速器后动态会漂移;
  3. 惯量比 JL/Jm 决定"传动友好度":减速比越大,折算后的 JL/N² 越小,电机端看到的负载越"轻",抗扰与响应都更好——这是谐波减速器(大减速比)在机器人关节上"好控"的机械根源之一。
✅ 演示A预告

第 8.1 节仿真器会直观展示:同一个速度环 PI 参数,减速比 N 从 1 拉到 20,阶跃响应从"慢吞吞"变成"快且超调"——因为 Jeq 变了 30 倍。这正是"必须按 Jeq 重调 PI"的数值证据。

3. 齿轮间隙(Backlash):最头疼的非线性

齿轮啮合存在侧隙。换向时,主动轮先空走一段(2×侧隙)才重新贴住从动轮,这段行程里转矩传递是断开的。对 FOC 闭环的具体影响:

补偿思路分两条线:

手段做法代价
机械消隙双片齿轮、消隙齿轮、谐波减速器(近零背隙)成本/结构复杂度上升;谐波换向无空程但引入弹性形变(见下节)
算法补偿间隙预载(bias torque):换向前施加小转矩把齿面贴紧;或间隙死区模型前馈预载转矩造成稳态发热与额外功耗

4. 传动刚度与机械谐振:高频抖动的根源

齿轮、轴、轴承都有弹性,构成双惯量弹性系统:电机轴 ↔ 弹性环节 ↔ 负载惯量。这个系统存在机械谐振频率

机械谐振频率(折算到电机轴)

fres = (1/2π)·√(Keq / Jeq)

Keq:折算到电机轴的传动刚度;减速比增大 → Keq 变大(Keq=Kload/N² 的倒数关系需按实际折算)、Jeq 变小 → 谐振频率上升

对 FOC 的关键约束:

⚠️ 谐波减速器的特殊性

谐波没有背隙,但柔轮弹性形变取代间隙成为主要误差源:负载转矩越大,负载端角度滞后越多(弹性形变 ∝ 转矩/刚度)。表现为"位置跟随误差随输出转矩变化"——这不是背隙,而是刚度问题,需要转矩前馈补偿弹性形变。

5. 齿轮摩擦与粘滑效应:低速性能的敌人

齿轮副存在库仑摩擦 + 粘性摩擦,低速时出现 Stribeck 粘滑

6. 齿轮转矩波纹与传动误差:周期性角度误差

齿轮加工有齿形误差、分度误差,旋转时带来周期性的传动误差——负载角度相对电机理论角度的周期性偏差:

7. 编码器反馈方案:电机端还是负载端?

这是机器人关节的经典矛盾,直接决定 FOC 外环"能看见什么":

方案反馈对象优点缺点适用
A:电机端编码器 电机轴角度/速度 简单、稳定、成本低;采样噪声小 负载端位置=电机角/N,间隙、传动误差变成观测误差——FOC 只知道电机轴转了多少 不需要极高负载端定位精度的场合(大多数伺服)
B:负载输出端编码器 负载真实位置 间隙、传动误差被闭环抑制,位置精度高 采样噪声放大到电机侧,系统更难稳定、调参难度高;弹性形变进入环路 高精度关节(谐波+末端编码器是主流组合)
✅ 演示B预告

第 8.2 节仿真器会演示:电机端闭环时,换向空程让负载端位置"走直线"(空程);切到负载端闭环后空程被反馈消除,但注意观察转矩指令的冲击与震荡趋势——这就是"精度换稳定性"。

8. 交互式仿真器

两个仿真器都使用示例参数(非真实测量),帮助建立直观:

8.1 演示A:减速比对等效惯量与速度阶跃响应的影响

电机 Jm=5e-4 kg·m²,负载 JL=0.02 kg·m²,Jeq=Jm+JL/N²。速度环 PI 有两种模式:固定参数(按 N=10 整定)与按 Jeq 重调(Kp、Ki 随 N 自动更新)。拖动减速比看阶跃响应的变化:

惯量折算 · 速度环阶跃响应(减速比影响)
红=固定PI响应,蓝=按J_eq重调响应。下图:J_eq 随减速比变化(对数轴)。

观察要点:

8.2 演示B:齿轮间隙(Backlash)换向影响

位置指令 θref=0.5·sin(2π·1·t) 往复运动,间隙死区半宽 b。对比电机端反馈(间隙变观测误差)与负载端反馈(间隙被闭环抑制)两种方案。上图位置(灰=指令,蓝=电机轴,绿=负载端),下图转矩指令(换向冲击):

齿轮间隙 · 换向空程与冲击
灰=位置指令,蓝=电机轴,绿=负载端。电机端闭环时换向出现空程;负载端闭环时空程消失但转矩冲击变化。

观察要点:

9. 代码实现(C语言,可编译模块)

9.1 惯量折算 + 速度环按 J_eq 整定

/* 减速比折算与速度环 PI 整定 减速比 n: 电机轴 -> 负载轴 的减速比 (n>=1) 负载惯量 jl、电机惯量 jm 单位 kg·m^2 带宽 wn (rad/s)、阻尼 zeta -> Kp=2*zeta*wn*Jeq, Ki=wn^2*Jeq */ float inertia_reflected(float jm, float jl, float n) { return jm + jl / (n * n); /* J_eq = J_m + J_L/N^2 */ } typedef struct { float kp; float ki; } pi_t; void speed_pi_tune(pi_t *pi, float j_eq, float wn, float zeta) { pi->kp = 2.0f * zeta * wn * j_eq; pi->ki = wn * wn * j_eq; } /* 使用示例: 电机+减速器+负载接入后, 每次减速比变化都要重算 */ float jm = 5e-4f, jl = 0.02f; float j_eq = inertia_reflected(jm, jl, 10.0f); /* N=10 -> 7e-4 */ pi_t spd; speed_pi_tune(&spd, j_eq, 30.0f, 1.0f); /* 带宽30rad/s 临界阻尼 */

9.2 间隙预载(Bias Torque):换向前把齿面贴紧

/* 间隙预载: 换向瞬间施加小转矩把齿面贴紧, 消除空程冲击 检测: 速度过零(换向) 或 转矩方向与速度方向相反时 注意: 预载转矩是"稳态功耗"的代价, 取额定转矩的 2%~5%, 低速/高精度场合按需调整 */ typedef struct { float t_bias; /* 预载转矩 N·m */ float w_th; /* 换向检测速度阈值 rad/s */ float t_prev; /* 上一拍转矩指令 */ uint8_t bias_on; /* 当前是否处于预载 */ } lash_comp_t; void lash_comp_init(lash_comp_t *c, float t_bias, float w_th) { c->t_bias = t_bias; c->w_th = w_th; c->t_prev = 0.0f; c->bias_on = 0; } float lash_comp_update(lash_comp_t *c, float t_cmd, float w) { /* 换向检测: 转速过零(速度变号)且转矩指令同向变化 */ if (fabsf(w) < c->w_th) { c->bias_on = 1; /* 低速/换向区 -> 预载 */ } else if (t_cmd * c->t_prev < 0.0f) { c->bias_on = 1; /* 转矩换向 -> 预载 */ } else { c->bias_on = 0; } c->t_prev = t_cmd; if (c->bias_on) { /* 预载方向: 与当前转矩指令同号, 幅值取 t_bias */ float dir = (t_cmd >= 0.0f) ? 1.0f : -1.0f; return t_cmd + dir * c->t_bias; } return t_cmd; }

10. 总结:哪些环受影响、怎么调

减速器特性影响环节典型现象对策
惯量折算 JL/N²速度环、位置环PI 按铭牌惯量整定 → 响应漂移/振荡按 Jeq 重调 PI
齿轮间隙位置环最严重换向空程、冲击、抖动机械消隙 / 预载转矩 / 负载端编码器
传动刚度不足速度环机械谐振、啸叫压带宽 / 陷波滤波器
摩擦粘滑速度环、位置环低速波动、爬行DOB / 摩擦前馈 / dither
传动误差波纹位置环周期性位置纹波角度域重复控制 / 查表补偿(见第22篇)
弹性形变(谐波)位置环位置误差随负载变化转矩前馈 / 负载端编码器闭环

11. 工程调参顺序与常见误区

  1. 先空载调好电流环:脱开减速器,单独调电机 FOC 电流环(见《三闭环带宽分配与PI整定》),保证电流响应正常;
  2. 接上减速器与负载,重调速度环:辨识总等效惯量 Jeq,按 Jeq 重整定速度环 PI;
  3. 扫频找机械谐振点:添加陷波滤波器,再决定速度环带宽上限;
  4. 低速换向测试:观察是否有间隙抖动,按需开启预载转矩;
  5. 考虑减速箱损耗:损耗转矩变成电机的稳态负载,要在转矩前馈里补偿。
⚠️ 常见误区

① 误以为"谐波零背隙 = 位置精度高":负载变化时柔轮弹性形变同样带来位置误差,不是背隙;② 电机端编码器 + FOC 位置环,只能保证电机轴角度准,负载端精度由齿轮间隙与传动误差决定;③ 谐波减速器不能盲目拉高速度环带宽,极易啸叫、振荡甚至损坏柔轮。

✅ 一句话记住

FOC 控制电机轴,减速器在负载侧:惯量按 N² 折算(PI 必须重调)、间隙造成换向空程(预载或末端反馈)、刚度软带来谐振(压带宽+陷波)、摩擦与传动误差污染低速(观测器+周期补偿)。电流环几乎不受影响,速度环明显受影响,位置环受伤害最大。