跳转至

42. 电机控制与 PID 实现

42.1 学习目标

从编码器计数得到轮速,理解增量 PI 怎样更新 PWM,并根据目标值、测量值和输出曲线调整参数。仅凭电机声音无法判断控制误差和稳定性。

比例—积分—微分控制(Proportional-Integral-Derivative Control, PID)根据目标值与测量值之间的误差计算控制输出。底盘速度环常使用其中的比例和积分两项,简称 PI 控制;微分项并非每个速度环都需要。本章观察的是“目标轮速 → 误差 → PWM → 实际轮速”这条闭环。

本节代码:电机控制

仓库目录:stm32/control/motor/stm32f4-stdperiph。完整文件集见 metadata/code-resource-manifests/motor.txt。验收:能定位电机映射。边界:无编译器与实机证据。

42.2 适用范围

直流编码器电机速度环;舵机位置环和速度/位置串级控制采用同一误差反馈思路,但参数与输出不同。

本节代码:PID 控制

仓库目录:stm32/control/pid/stm32f4-stdperiph。完整文件集见 metadata/code-resource-manifests/pid.txt。验收:能定位 PID 常量。边界:无编译器与实机证据。

42.3 闭环前置检查

进入闭环前先逐项检查三个最小外设实验的停止条件;任一项触发即停止,不把外设观察外推为整车控制结论。

串口实验停止条件

  • 测得接口电平超出 MCU/USB-TTL 模块允许范围;
  • TX/RX 或地线无法确认,接口接入后板卡复位、掉电或异常发热;
  • 串口与下载口、主控通信口或其他外设冲突;
  • 固件目标芯片、下载地址或回滚文件不能确认。

停止后断电并恢复原接线。不要用反复更换固件、提高电压或短接未知引脚来试错。

PWM 实验停止条件

  • PA0 的板级用途不能确认,或它仍连接电机驱动/功率级;
  • 输出电压、频率或板卡温度异常;
  • 探头接入导致复位、波形严重畸变或电源限流;
  • 为获得波形需要取消安全使能、短接驱动器或提高供电电压。

该实验只验收 MCU 引脚波形。要进入电机实验,必须另行核对驱动器、使能、方向、限流和急停。

编码器实验停止条件

  • 编码器输出电平或接线无法确认;
  • 手动转轴阻力异常、机械结构带动轮子或其他执行机构;
  • 静止计数持续快速增长,或输入幅值超出 MCU 范围;
  • 需要使能电机才能观察计数,但急停、架空和限速尚未完成。

编码器实验通过后,也只能证明单个输入链路。轮号映射、减速比、轮径和完整底盘方向仍需在第 34–35 章逐轮验收。

  • 编码器方向、每转计数、减速比和轮径正确。
  • 电机架空测试可靠,PWM 限幅存在。
  • 备份当前参数和固件。

42.4 工作原理

目标轮速来自逆运动学,测量轮速来自编码器。增量 PI 常写为:

\[ u_k=u_{k-1}+K_p(e_k-e_{k-1})+K_i e_k \]

比例项决定控制器对当前误差变化的反应强度,积分项累积一段时间内的误差,用于减小持续偏差。控制周期改变后,同一组参数产生的效果也会改变。程序还要限制 PWM 输出、处理低速死区,并在失能时清除积分,防止重新使能后突然输出较大控制量。

42.5 操作步骤

  1. 用固定周期记录目标速度、测量速度、误差和 PWM。
  2. 先确认开环方向和编码器反馈方向一致。
  3. 从保守参数开始做小阶跃,不在满负载下首次调参。
  4. 响应太慢时小幅增加比例;稳定误差明显时再增加积分。
  5. 出现持续振荡、噪声或过冲时回退参数,检查采样和机械问题。
  6. 测试停止、反向、低速和常用负载。
  7. 每次参数变更保存曲线和版本。

闭环调参前必须先证明 PWM 周期/占空比和编码器方向/计数可靠。STM32 串口、PWM 与编码器最小实验给出了无需使能电机的观察步骤;其中引脚和工程基线不能直接套用于其他控制板。

42.6 验收标准

  • 各轮响应方向正确,目标和实测曲线可解释。
  • 常用速度下稳定误差可接受,无持续振荡。
  • 停止和失能后 PWM、积分状态安全归零。
  • 电机和驱动器温升正常。
  • 参数在重启后按预期加载。

42.7 故障排查

现象 优先检查
参数很小仍振荡 编码器方向、采样周期、机械间隙
低速长期不动后突然冲出 死区和积分饱和
左右轮参数差异很大 电机、驱动、轮胎和负载差异
PWM 饱和仍达不到速度 供电、负载、减速比或目标不现实

本章代码:电机与 PID

使用 stm32/control/motor/stm32f4-stdperiph/USER/main.c 与 stm32/control/pid/stm32f4-stdperiph/USER/main.c 及完整 F4 CMSIS/StdPeriph/BSP 依赖。验收:静态核对电机映射和 PID 常量;边界:未提供编译器与实机证据。

章节导航

上一章:硬件初始化、车型选择与接口 · 返回本篇 · 下一章:修改、编译、烧录与回滚固件