PX4 电调与电机(ESC & Motors)完全指南:协议选型、接线配置与校准实战
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 属于相对较慢的协议,且必须校准——不同 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 不支持校准序列,电机可能全速运转):
-
拆除螺旋桨(禁止带桨校准);
-
在 Actuator Configuration 中把待校准 ESC 映射为电机——只有被映射的执行器才有输出,只有映射为电机的 ESC 才会被校准;
-
拔掉电池给 ESC 断电(飞控保持供电,如保持 USB 连接地面站);
-
打开 QGroundControl Settings > Power,点击 Calibrate 按钮;
-
校准序列正常启动后,按提示直接给 ESC 上电,校准自动开始;
-
校准过程中会听到 ESC 分阶段蜂鸣,完成后有提示;
-
返回 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。
更多资源
如需进一步深入,可继续阅读:
- ESC 协议总览——PX4 支持的主要 ESC/舵机协议概览;
- PWM ESC 与舵机、OneShot ESC 与舵机、DShot、DroneCAN ESC;
- ESC 校准;
- 执行器配置与 执行器测试;
- 驱动实现源码:dshot 驱动、uavcan ESC 输出 及其参数定义(uavcan_params.yaml);
- AM32 4IN1 ESC、Hiwonder 编码器电机、Sapog 固件、Vertiq、VESC、RaccoonLab 节点、Zubax Telega 等设备专项文档。
快速决策建议:多旋翼优先 DShot(其次 BDShot 获得 eRPM 遥测);DroneCAN 主总线场景用 DroneCAN ESC;固定翼/地面车辆用 PWM;仅在硬件受限时回退 OneShot 125。接线永远保留信号地,校准永远先拆桨。
