[具身智能-796]:直流电机的信号死区?并图示
直流电机信号死区(控制死区)
概念:控制器输出PWM 控制指令已经不为 0,但电机实际转速 / 输出转矩仍然为 0的输入区间,属于非线性环节。 ❗区分:
- 信号死区(控制死区):指令‑转速非线性,摩擦、压降造成,毫秒‑百毫秒级;
- H 桥死区时间 (dead‑time):MOS 管防直通保护,微秒级硬件延时,二者完全不同。
示意图形(文本 ASCII 图,可直接复制到笔记)
图 1:指令 PWM ➜ 实际转速关系曲线
横轴:控制器 PWM 输出指令(‑255 ~ +255) 纵轴:电机实际转速
plaintext
转速 ↑ | ↗ | ↗ | ↗ -----|----┌─┘ 正向死区:0 ~ +D+ | │ |────┘ 死区区间:[-D‑ , +D+],指令在这个范围内电机不动 │ └─┐ ↘ ↘ ↘ → PWM指令 -D⁻ 0 +D⁺- \(+D_+\):正向启动阈值,PWM 大于 \(D_+\) 电机才开始正转
- \(-D_-\):反向启动阈值,PWM 小于 \(-D_-\) 电机才开始反转
- \(\boldsymbol{-D_- \sim +D_+}\):信号死区,此区间内 PWM≠0,但转速 = 0
工程上:\(|D_+| \neq |D_-|\),正负死区往往不对称。
图 2:时间域现象:阶跃小指令落在死区
plaintext
指令(PWM) ^ | ____ |____| | +------------------> t 实际转速 ^ | | |_________________> t 【指令已经输出,但电机完全不动】图 3:PID 闭环下死区引发极限环振荡(低速来回抖)
plaintext
位置 ^ ╭─╮ ╭─╮ | │ │ │ │ |────┘ └────┘ └────→ t 反复小幅来回震荡,无法收敛到目标原理:
- 存在位置误差,PID 输出小指令,落入死区,电机不动;
- 误差持续存在,PID 积分不断累加;
- 积分累积到突破死区阈值,电机突然转动,直接冲过目标位置;
- 反向误差产生,又重复上述过程,形成来回抖动。
死区产生根源
- 机械静摩擦(主导):齿轮箱、轴承静摩擦力,必须克服静摩擦才能启动;转动后动摩擦变小,维持转动的 PWM 可以比启动 PWM 更低。
- 电气压降:H 桥 MOS 导通电阻、电机电刷、绕组内阻,小 PWM 时有效电压被损耗吃掉。
- 齿轮回差换向时齿轮需要走完间隙,输出轴无运动,等效换向死区。
重要现象:启动阈值 > 维持阈值例:PWM=140 才转起来;转起来之后 PWM=60 就可以维持低速转动。
死区带来工程问题
- 开环:低速段 PWM‑转速严重非线性,小指令无响应。
- 闭环定位:目标点附近极限环振荡、来回抖动。
- 换向滞后:指令已经换向,输出轴短暂无动作。
- 启动卡顿:要么不动,一动就冲出去。
常用补偿思路
- 阈值抬升补偿:输出落在死区内,直接把输出抬到启动阈值。
c
运行
//示例:PWM范围‑255~255 #define D_PLUS 140 #define D_MINUS -120 int pwm = pid_out; if(pwm>0 && pwm<D_PLUS) pwm = D_PLUS; if(pwm<0 && pwm>D_MINUS) pwm = D_MINUS;缺点:负载变化、温度变化,阈值会漂移。
- 积分抗饱和(必做):输出落在死区区间时,关闭积分器,防止积分无限累积。
- 前馈查表补偿:实测得到 PWM‑转速非线性表,对小信号做映射修正。
- 速度斜坡规划:启动时 PWM 平滑爬升,避免直接给到死区内部。
硬件层面缓解
- 使用低 Rdson 驱动芯片(AM2857、TB6612),避免 L298N 大压降。
- 不要过低供电电压,电压越高死区占比相对越小。
- 改善机械润滑减小静摩擦;死区只能补偿,不能完全消除。
指标制约关系
- 减速比越大,齿轮级数越多,静摩擦越大 →死区越大;
- 追求低速高精度,必须做死区补偿;但补偿值设置过大,会引入额外抖动;
物理层面:不能同时实现 “极小死区 + 大减速比大转矩”,需要取舍。