# PID 输出过小无法映射到电机 PWM

> 原文链接：https://robotics.hellobike.com/pitfalls/2017-09-08-robotics-se-14179
> 频道：pitfalls | 更新日期：2017-09-08 | 标签：auto, stackexchange, control, pid
> 核心摘要：将 PID 项按 PWM 与皮带速度比例换算，并注意积分增益可能导致超调。

# PID 输出过小无法映射到电机 PWM

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[PID Controller Output Mapping for Motor Speed Control](https://robotics.stackexchange.com/questions/14179/pid-controller-output-mapping-for-motor-speed-control)（Robotics Stack Exchange #14179）

**状态**：已解决

## 问题

皮带速度误差单位为 `m/s`，PI 输出相对电机 `0` 到 `16393` 的 PWM 范围很小；启动时希望给 `100% PWM`，接近目标速度 `0.2 m/s` 后逐步降低。

## 环境

输送带；滚筒编码器测线速度；电机串口接收 `0` 到 `16393` PWM；最大速度 `0.5 m/s`。

## 解决办法

1. 将 PWM 单位换算到皮带速度单位，或反向换算。
2. 快速做法是把 `P`、`I`、`D` 各项乘以 `16393 / 0.5`，把速度域输出缩放到 PWM 范围。
3. 该方法假设 PWM 到皮带速度近似线性，原文认为剩余误差可由控制器压制。
4. 由于速度响应会滞后控制输入，建议在接近目标速度前将 `I` 增益设为 `0`，避免积分饱和导致超调。

原问题作者：Robotics nerd；采纳答案作者：SteveO。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #14179：PID Controller Output Mapping for Motor Speed Control](https://robotics.stackexchange.com/questions/14179/pid-controller-output-mapping-for-motor-speed-control)