直流电机位置式 PID 控制 和 舵机的区别

最近在做平衡车项目时,很多嵌入式开发者都会有一个疑问:直流电机的位置式 PID 控制舵机,明明都能实现精准的位置定位,比如让电机转到指定角度、让机械臂停在预设位置,现象看起来几乎一模一样,它们之间到底有区别吗?

其实答案很明确:二者是完全不同的两类控制方案------ 一个是 "自由组装的闭环系统",一个是 "开箱即用的一体化执行器"。今天就从结构、控制逻辑、性能和应用场景四个维度,把这个问题讲透。

一、核心区别:"组合方案" vs "一体化产品"

这是二者最本质的差异,决定了后续所有的控制逻辑和开发方式。

直流电机 + 位置式 PID:需要自己搭的 "闭环系统"

直流电机本身是开环控制元件------ 给它通上固定占空比的 PWM,它只会以固定转速一直转,根本不知道自己转了多少圈、停在哪个角度。

而我们实现 "位置精准控制" 的核心,是给它配上反馈元件PID 算法,组成一个完整的闭环系统。这个系统的核心组成缺一不可:

  1. 执行单元:直流电机本体(带或不带减速器)+ H 桥驱动电路(如 L298N、DRV8825)
  2. 反馈单元:编码器(光电编码器 / 霍尔编码器),负责实时采集电机的转动角度、转速
  3. 控制单元 :MCU(比如 STM32F103),运行位置式 PID 算法------ 实时对比 "目标角度" 和 "编码器反馈的实际角度",计算偏差,再动态调整输出给驱动电路的 PWM 占空比,直到偏差为 0。

简单说,直流电机的位置控制是 "软件 + 硬件" 的组合方案,从硬件接线到算法编写,都需要开发者自己完成。

舵机:出厂自带闭环的 "一体化执行器"

舵机本质是一个高度集成的闭环控制模块------ 它把 "电机、减速器、反馈电位器、控制板" 全塞在了一个小壳子里。

我们使用舵机时,完全不用关心内部的控制逻辑,只需要给它一个标准的 PWM 控制信号就行。比如常见的 SG90 舵机:

  • 控制频率固定为 50Hz(20ms 周期)
  • 高电平时间 1ms 对应 0°,2ms 对应 180°,1.5ms 对应 90°

当我们给舵机发一个 "1.5ms 高电平" 的 PWM 信号时,舵机内部的控制板会自动完成三件事:

  1. 读取内部电位器的反馈值(当前角度)
  2. 对比目标角度(1.5ms 对应的 90°)和实际角度,计算偏差
  3. 驱动内部小电机转动,直到偏差为 0,然后自动锁死位置

也就是说,舵机的闭环控制是 "出厂自带" 的,开发者只需要发指令,不用管中间的控制过程。

二、控制逻辑:"开发者主导" vs "黑盒运行"

表象上二者都能 "精准定位",但底层的控制逻辑完全不同,这也是开发时最直观的差异。

位置式 PID 控制:算法参数由你说了算

位置式 PID 的核心公式很简单:u(k)=Kp​⋅e(k)+Ki​⋅∑i=0k​e(i)+Kd​⋅[e(k)−e(k−1)]

  • e(k):当前时刻的角度偏差(目标角度 - 实际角度)
  • 、、:比例、积分、微分系数
  • u(k):当前时刻输出的 PWM 占空比

这个算法的所有参数都由开发者调试------ 比如平衡车的驱动轮控制,你需要根据电机的负载、减速器的减速比、编码器的分辨率,反复调整 PID 参数,才能达到 "响应快、无超调、稳态误差小" 的效果。

而且你可以灵活修改控制逻辑:比如想让电机先加速再减速,或者加入限幅保护,都可以在代码里直接实现。

舵机:控制逻辑是 "黑盒"

舵机的内部控制算法是厂家预设好的,开发者无法修改。你能做的只有两件事:

  1. 发送对应角度的 PWM 信号
  2. 等待舵机完成转动

它的优点是开发成本极低------ 不用写 PID 算法,不用接编码器,一根 PWM 线就能控制;缺点也很明显 ------ 控制逻辑固定,无法根据项目需求灵活调整。比如舵机的响应速度、超调量,都是出厂就定死的,你改不了。

三、性能与适用场景:各有所长,不能混用

正因为结构和控制逻辑的差异,二者的性能特点和适用场景完全不同,这也是我们做项目选型的关键。

对比维度 直流电机 + 位置式 PID 舵机
负载能力 可搭配大功率电机 + 减速器,负载能力强(适合平衡车驱动轮、机器人底盘) 负载能力弱,多为小扭矩(适合机械臂关节、云台转向)
控制精度 精度由编码器分辨率决定,可做到极高(比如 1000 线编码器,精度 0.36°) 精度由内部电位器决定,一般为 1°-2°,精度中等
响应速度 可通过调整 PID 参数优化,响应速度灵活可控 响应速度固定,小舵机一般几十 ms 完成转动
开发复杂度 高(需要接线编码器、写 PID 算法、调参数) 低(只需要配置 PWM 输出)
适用场景 大负载、高精度、需要灵活控制的场景(平衡车、AGV 小车、数控平台) 小负载、小角度、快速部署的场景(机械臂、玩具车转向、云台)

四、为什么 "现象看起来一样"?

回到开头的问题:为什么我们会觉得二者的现象一样?

因为它们最终都实现了 "位置闭环控制"------ 不管是你用 PID 算法控制直流电机,还是给舵机发 PWM 指令,最终的结果都是 "执行器精准停在目标位置"。

就像 "自己买菜做饭" 和 "点外卖"------ 最终都是吃到了饭,但前者需要你自己选食材、调味、烹饪,后者只需要下单就行,过程和主动权完全不同。

五、项目选型建议

做嵌入式项目时,该怎么选?给两个核心建议:

  1. 如果是小负载、小角度控制:优先选舵机,比如平衡车的姿态调整机构、机械臂关节,开发快、成本低。
  2. 如果是大负载、高精度控制:必须选直流电机 + 位置式 PID,比如平衡车的驱动轮、AGV 小车的运动控制,虽然开发复杂,但性能可控。

总结

直流电机的位置式 PID 控制和舵机,看似现象相同,实则是两种完全不同的控制思路:

  • 前者是 **"开源" 的闭环系统 **,开发者掌握全部主动权,适合高性能需求的场景;
  • 后者是 **"闭源" 的一体化产品 **,开箱即用,适合快速部署的小负载场景。

在实际项目中,我们往往会把二者结合起来 ------ 比如平衡车项目,用直流电机 + PID 控制驱动轮 ,用舵机控制转向机构,各司其职,才能达到最佳的控制效果。

相关推荐
LZYmarks2 小时前
小白买车笔记
笔记
码途漫谈2 小时前
Easy-Vibe开发篇阅读笔记(二)——前端开发之Figma与MasterGo入门
人工智能·笔记·ai·开源·ai编程·figma
LaLaLa_OvO2 小时前
jetbrains 的 datagrip 导出csv,中文乱码
笔记
大囚长3 小时前
权力的哲学洞察与反思
笔记
y = xⁿ3 小时前
Redis八股学习日记:布隆过滤器
数据库·redis·学习
java_logo4 小时前
SiYuan 思源笔记 Docker 部署终极指南:Windows+Linux 双平台
windows·笔记·docker·思源笔记·思源笔记部署·docker部署思源笔记·思源笔记文档
d111111111d4 小时前
了解Modbus
网络·笔记·stm32·单片机·嵌入式硬件·学习
三佛科技-134163842124 小时前
主控FT32F031便携式吸尘器方案,迷你手持吸尘器MCU控制方案开发
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
愚昧之山绝望之谷开悟之坡4 小时前
什么agentskill.io大白话说清楚
笔记