PX4 电调与电机(ESC & Motors)完全指南:协议选型、接线配置与校准实战

原创2026-10-02 16:05:191,899 阅读
文章标签:无人机嵌入式机器人智能硬件

PX4 电调与电机(ESC & Motors)完全指南:协议选型、接线配置与校准实战

PX4 无人机普遍使用由飞控通过电子调速器(Electronic Speed Controller,ESC)驱动的无刷电机,ESC 负责把飞控输出的小功率信号转换成驱动电机的大功率输出。本篇指南以 PX4 官方外围设备文档(docs/en/peripherals/esc_motors.md)为核心骨架,系统梳理 PX4 支持的 ESC 主流协议(PWM、OneShot、DShot、DroneCAN 等)、各厂商受支持设备的接入方式、接线与供电规范、以及 ESC 校准的完整实操流程。读完本文,你将能够根据机型与性能需求选择合适的 ESC 协议,正确接线并完成飞控侧配置与校准。

PX4 中的 ESC 与电机体系

在 PX4 系统中,电机控制链路为:飞控(FMU/IO)→ 协议信号 → ESC → 电机。ESC 接收飞控发出的转速指令信号,据此控制输送给电机的功率等级,最终决定电机转速与推力。PX4 对 ESC 的支持覆盖多种主流通信协议:

  • PWM ESC:传统脉宽调制方式,广泛用于固定翼与地面车辆;
  • OneShot ESC:PWM 的高速变体,主要面向多旋翼;
  • DShot ESC:数字 ESC 协议,延迟低、鲁棒性强、无需校准;
  • DroneCAN ESC:基于 CAN 总线的数字协议,支持遥测回传;
  • PCA9685 ESC(通过 I2C);
  • 部分 UART ESC(来自 Yuneec)。

所有协议的选择与输出分配都在 QGroundControl 的 Actuator Configuration(执行器配置)界面中完成,PX4 通过该界面把电机/舵机映射到具体输出引脚。

受支持的 ESC 设备

PX4 官方维护一份(非穷举)受支持 ESC 清单,涵盖不同厂商、不同协议与固件的产品,见下表:

ESC 设备 支持协议 固件 备注
ARK 4IN1 ESC DShot、PWM AM32 提供带/不带连接器的版本
Hiwonder 4Ch 编码器电机 I2C — 有刷直流,4 通道且带编码器反馈(用于无人车/rover)
Holybro Kotleta 20 DroneCAN、PWM PX4 Sapog ESC 固件 —
Vertiq 电机与 ESC 一体模块 DShot、OneShot、Multishot、PWM Vertiq 固件 更大尺寸的模块支持 DroneCAN;ESC 与电机集成一体
RaccoonLab CAN PWM ESC 节点 DroneCAN、Cyphal — 提供 Cyphal 与 DroneCAN 两种 PWM ESC 接入说明
VESC ESC DroneCAN、PWM VESC 项目固件 —
Zubax Telega DroneCAN、PWM Telega 系列 ESC 与电机集成一体

各厂商设备的接线与固件配置细节在对应子页面中展开,例如 Vertiq 模块支持在 PWM/DShot 与 DroneCAN 两种方式间切换,其灯控 light_id 按 esc_index × 3 + BASE_ID(RGB 为 1、白色防撞灯为 2)计算;VESC 则要求其 VESC Tool 中的 CAN Baud Rate 与 PX4 参数 UAVCAN_BITRATE 保持一致。选型时建议依据"协议列"对照下文的协议能力差异做决策。

协议选型:PWM、OneShot、DShot 与 DroneCAN 对比

协议选型直接决定延迟、鲁棒性、校准需求与遥测能力,下面按 ESC Protocols 总览 逐项对比。

PWM:最通用但最慢

PWM ESC 以周期性脉冲通信,脉冲宽度表示期望转速:典型范围为零功率 1000 μs 到满功率 2000 μs。信号帧率取决于 ESC 能力,常见为 50 Hz~490 Hz(理论上限接近 500 Hz,因为需要一个极小的 "off" 周期)。频率越高对 ESC 越好,尤其是在需要快速响应设定值变化时;对于 PWM 舵机,50 Hz 通常足够,且多数舵机不支持更高频率。

PWM 占空比示意图

PWM 属于相对较慢的协议,且必须校准——不同 ESC 对"低值/高值"脉冲宽度的界定差异可能很大。与 DShot、DroneCAN 不同,PWM 无法提供 ESC(或舵机)状态的遥测与反馈。因此 PWM 通常用于固定翼与地面车辆;对延迟敏感的多旋翼一般选用 OneShot 或 DShot。

OneShot 125:PWM 的 8 倍加速

OneShot 本质上仍是 PWM,但脉宽缩短 8 倍(零到满功率从 125 μs 到 250 μs),从而获得高得多的帧率。PWM 理论上限约 500 Hz,而 OneShot 理论可达约 4 kHz;实际速率取决于具体 ESC,通常在 1 kHz~2 kHz 之间。

PX4 仅支持 OneShot 125(其他 OneShot 变体不支持)。它比 PWM 更灵敏、更易调参,是多旋翼优于 PWM 的选择——但并非优于 DShot(DShot 无需校准且可能支持遥测)。仅在 DShot 引脚不足或 ESC 不支持 DShot 的硬件限制下,才应回退到 OneShot。接线与 PWM 完全相同,仅需在 Actuator 配置中选择协议;输出范围值仍按常规 PWM 范围(名义上 1000~2000)设置,内部会按比例缩放为 OneShot 对应的脉宽。

DShot:数字协议,低延迟免校准

DShot 是数字 ESC 协议,相比 PWM/OneShot 具备多重优势:

  • 更低延迟;
  • 通过校验和(checksum)提高鲁棒性;
  • 数字编码免去 ESC 校准;
  • 部分 ESC 支持遥测回传;
  • 可通过指令反转电机转向(无需重新布线/焊接);
  • 支持其他实用指令。

DShot 提供 DShot150 / DShot300 / DShot600 三档速率(数值为千比特/秒,kbit/s),应依据 ESC 数据手册设置为所支持的最高速率。在 Actuator 配置界面选择 DShot 并分配电机后,会出现 Set Spin Direction(设定旋转方向) 选项,可用来修正电机转向。接线与 PWM ESC 相同,但只能接到 FMU(通常是 AUX 口;无 IO 板的控制器为 MAIN 口,如 Pixhawk 4 Mini 需以 PWM AUX 标签为准)。

ESC 命令可通过 MAVLink shell 发送,完整命令参考见 dshot 驱动模块(源码位于 src/drivers/dshot)。ESC 遥测(温度、电压、电流、累计电流消耗、转速 RPM)需要把各 ESC 遥测线并接至空闲串口 RX 引脚,并通过参数 DSHOT_TEL_CFG 开启;若 RPM 数值不准,需按电机极对数配置 DSHOT_MOT_POL1~DSHOT_MOT_POL12(默认 14 极,对应常见 5 寸桨电机)。

自 PX4 v1.16 起支持双向 DShot(BDShot):ESC 在同一根信号线上回传 eRPM 遥测,无需额外遥测线。高频率 eRPM 数据能显著改善动态陷波滤波器(Dynamic Notch Filters)的性能,提升整机调参精度。BDShot 需要具备 DMA 定时器的飞控(STM32H7 全 FMU 输出、i.MXRT V6X-RT 与 Tropic 全输出),在 Actuator 配置中按定时器选择 BDShot150/300/600 即可启用(无独立开关参数)。扩展 DShot 遥测(EDT) 通过 DSHOT_BIDIR_EDT=1 开启,可在 eRPM 帧中交织温度、电压、电流数据(需 AM32 等支持 EDT 的固件)。此外,PX4 可通过地面对 AM32 ESC 的 EEPROM 设置进行远程读写:要求 ESC 运行 AM32 固件并连接串口遥测(DSHOT_TEL_CFG)、DSHOT_ESC_TYPE=1,PX4 在开机时自动读取全部 EEPROM,改动经 DShot 编程协议逐字节写回。

DroneCAN:CAN 总线上的数字 ESC

当 DroneCAN 作为整车主总线时推荐使用 DroneCAN ESC。它具备与 DShot 类似的优点:高数据率、长线缆鲁棒、遥测反馈、ESC 本身无需校准;但 PX4 实现当前限于 200 Hz 更新率。接线与配置见 DroneCAN 硬件设置,核心要点:

  • 建议让 DroneCAN ESC 独占独立 CAN 接口,避免 ESC 消息占满总线、饿死其他节点;
  • 将参数 UAVCAN_ENABLE 设为 3(同时启用动态节点 ID 分配与 DroneCAN ESC 输出;自 PX4 v2.0 起 ArmingStatus 会自动发布,无需再设 UAVCAN_PUB_ARM);
  • 用 UAVCAN_ESC_IFACE 选择承载 ESC 数据输出的 CAN 接口(默认全部接口);
  • 在 Actuator 配置中设置电机顺序与舵机输出。

已知问题(Quirks):部分 Hobbywing DroneCAN ESC 上报的 esc_index 从 1 起始(规范要求从 0 起始),导致状态反馈(RPM、电压、电流)匹配到错误电机,可通过 UAVCAN_QUIRKS 位掩码的 bit 0 修正。

可逆电机(PX4 v2.0 起):若电机硬件支持反转、ESC 固件配置为 3D/双向、且电机在 Actuator 配置中设为 bidirectional,则可"飞行中"双向运转。此时 PX4 以带符号的 uavcan.equipment.esc.RawCommand 指令电机:零为停止/中立,正值为正推,负值为反推;未设双向的电机只收到正值。可通过遥测 RPM 符号确认反转生效。可逆电机还可用于 电机失效恢复(Motor Failure Recovery),在六旋翼单电机失效后保持可控。

接线与供电:PWM/OneShot/DShot 通用规范

PWM/OneShot/DShot ESC 接线方式一致。每个 PWM ESC 至少包含:

  • 电源 VBAT(通常为粗红线)与电源 GND(通常为粗黑线);
  • 舵机插头内的 PWM 信号线(通常白/黄)与 GND(通常黑/棕);
  • 舵机插头可能带 +5V 线(通常红/橙),其接法取决于 ESC 与机型。

电源连接要点:始终把 VBAT 与 GND 接电池,舵机插头的信号与 GND 接飞控。任何接线方案都不得缺少信号地——没有地回路,信号脉冲会变得噪声极大,飞行极不安全。+5V 线的处理按机型区分:

  • 固定翼 / VTOL:+5V 通常是 BEC(Battery Elimination Circuit)输出,可接到 Pixhawk 舵机供电轨以驱动襟翼、副翼等舵机。注意:Pixhawk 系列飞控的 AUX 舵机轨默认不带电且限流 1A,严禁用飞控航电电源给舵机/ESC 供电;经验法则是一个舵机轨只接入一个 BEC 的输出。
  • 多旋翼:+5V 线可能不存在或无需连接——多旋翼通常无舵机需求,电机由独立的分电板(PDB)供电;即便有该线,接到舵机轨也无益无害(DJI ESC 常含此线但悬空不接)。
  • 光耦隔离 ESC(无 BEC):+5V 线可能需要接电以给 ESC 内部单片机供电,此时需由额外 BEC 给舵机轨供电。

接线完成后在 QGroundControl 的 Actuator Configuration 界面分配输出并完成基础校准,必要时再做 ESC 校准。更多 PWM 输出参数见 PWM Outputs 参数参考。

ESC 校准实操(PWM / OneShot)

ESC 校准的目的是让全机所有 ESC 对飞控输入的响应一致。校准会以固定的最大(2000 μs)与最小(1000 μs)PWM 输入更新所有 ESC,此后各电机在整个输入范围内行为统一。仅 PWM 与 OneShot ESC 需要此校准;DShot 与 CAN(DroneCAN/Cyphal)ESC 无需校准。低端 ESC 个体差异大,校准尤其重要;高端 ESC 出厂已校准,但若出厂后被手动校准过也可能行为不一,建议同样校准。

前置条件:校准过程要求飞控持续供电、而 ESC 可手动断电/上电。Pixhawk 推荐方案是用 USB 单独给飞控供电,按需插拔电池给 ESC 供电;若电池经电源模块接入,校准流程可检测电池连接并驱动流程,否则按超时执行。

标准校准步骤(务必先拆下螺旋桨!校准期间电机不应旋转,但若时序不当或 ESC 不支持校准序列,电机可能全速运转):

  1. 拆除螺旋桨(禁止带桨校准);

  2. 在 Actuator Configuration 中把待校准 ESC 映射为电机——只有被映射的执行器才有输出,只有映射为电机的 ESC 才会被校准;

  3. 拔掉电池给 ESC 断电(飞控保持供电,如保持 USB 连接地面站);

  4. 打开 QGroundControl Settings > Power,点击 Calibrate 按钮;

  5. 校准序列正常启动后,按提示直接给 ESC 上电,校准自动开始;

  6. 校准过程中会听到 ESC 分阶段蜂鸣,完成后有提示;

  7. 返回 Actuator Configuration,验证并微调电机 PWM 输出(默认值偏保守,可按需调整):

    • 最小值(默认 1100 μs):让电机缓慢但可靠地转动,且停转后能可靠再启动。可用 Actuator Testing 把测试滑块推到最底档验证;若需寻找"最优"最小值,把滑块置于 disarmed,然后逐步抬高 disarmed 设置(如 1025 μs、1050 μs……)直到电机可靠起转(宁高勿低),把该值写入所有电机输出的 minimum,再把 disarmed 恢复为 1100 μs;
    • 最大值(默认 1900 μs):取"继续加大转速不再上升"的值。把滑块置于 disarmed,将 disarmed 抬高至接近默认最大值(1900),听电机音调随 maximum 递增(1925 μs、1950 μs……)直至音调不再变化,写入所有电机输出的 maximum 后恢复 disarmed;
    • disarmed 值(默认 1000 μs):应让电机停止且保持停止。若默认 1000 μs 下电机仍转,说明 ESC 校准失败;对无法校准的 ESC,应把输出值降到电机不转的点以下(如 950 μs 或 900 μs)。

    VTOL 与固定翼电机无需特殊 PWM 配置:默认配置下,受控停机时电机会自动停转。

常见故障排查:

  • 校准"假成功":若未在正确时刻给 ESC 上电或 ESC 不支持校准,PX4 无法获知结果(ESC 无反馈通道),只能依赖校准蜂鸣与后续电机测试确认;
  • 电源模块阻断校准:已配置并连接电源模块时 PX4 出于安全会拒绝启动校准,需先断开 ESC 电源;若仍需电源模块维持飞控供电,可临时用 BATn_SOURCE 参数禁用电源模块检测,改用基于超时的校准流程;
  • 电流突增中止:校准启动后若系统检测到电流消耗突增(需要电源模块),PX4 会出于安全中止校准。

这些设置内部对应逐输出的 PWM_MAIN_DISn / PWM_AUX_DISn 等参数(见 参数参考)。

常见接线故障与排查

即使 ESC 与飞控兼容,多数"不工作"案例源于接线或配置错误(Pixhawk 与市面上所有 PWM ESC 兼容):

  • 地线未接:确认 ESC 舵机插头黑线已接至 Pixhawk。缺少地回路会让信号脉冲形状脏乱、噪声剧增,属不安全配置;
  • 光耦 ESC 供电:对无 BEC 的光耦 ESC,确认其 +5V 线是否需要供电给光耦;
  • 无效最小值:部分 ESC 上电时需先看到特殊低值脉冲(防止用户开机时油门在中位造成危险)。PX4 在解锁(disarmed)状态下会发送脉冲,使 ESC 静默并正确初始化,对应值在 Actuator 配置/测试流程中确定;
  • 超时:部分 ESC 若上电数秒内未收到有效低脉冲会超时锁止。PX4 上电后立即发送 idle/disarmed 脉冲防止超时;
  • 脉冲形状/电压/更新率:Pixhawk 采用高电平有效脉冲(与 Futaba、Spektrum、FrSky 等主流品牌一致)。PWM 接口虽无正式标准,但常见微控制器均采用 TTL/CMOS 电平(TTL 低 <0.8V、高 >2.0V,部分厂商以 >2.4V 增强抗噪;CMOS 类似)。5V 电平并非成功触发的必要条件;Futaba/FrSky/Spektrum 接收机输出 3.0V~3.3V 即可正常驱动,新款 Pixhawk 板输出 3.3V。

更多资源

如需进一步深入,可继续阅读:

快速决策建议:多旋翼优先 DShot(其次 BDShot 获得 eRPM 遥测);DroneCAN 主总线场景用 DroneCAN ESC;固定翼/地面车辆用 PWM;仅在硬件受限时回退 OneShot 125。接线永远保留信号地,校准永远先拆桨。

登录后查看全文
PX4-Autopilot