Skip to content

DShot 电调配置 ​

DShot 是数字电调协议,用数字帧代替 PWM 脉宽的油门传递方式:帧带校验、不受电调与控制器时钟偏差影响、不需要做油门行程校准。

DShot 两种遥测接法

▲ 两种遥测接法

WARNING

只对明确支持 DShot 的电调启用。给普通 PWM 电调设 DShot 会出现不可预期的转动,装桨前务必空载测试。

前提条件 ​

  • 电调固件为支持 DShot 的数字固件。
  • 双向 DShot 需要电调固件较新(支持沿信号线回传转速);老固件只能走单线遥测。
  • 双向 DShot 需要独占 DMA 通道,并非所有控制器通道都支持。

各机型支持哪些速率和通道 ​

M 表示 MAIN 输出、A 表示 AUX 输出;M1-M4 即 MAIN 1~4,M1-A6 表示从 MAIN1 一直到 AUX6。下表为 APM 固件实测结果。

双向 DShot(BDShot)

控制器速率可用通道
V5+150 / 300 / 600 / 1200A1-A6
V5 nano150 / 300 / 600 / 1200M1-M4
X7+150 / 300 / 600 / 1200M1-M4
Nora+150 / 300 / 600 / 1200M1-M8
X7+ Pro150 / 300 / 600 / 1200M1-M4
V6X150 / 300 / 600M1-M4、A1-A4
V6X1200A1-A4
V6X v2150 / 300 / 600M1-M4、A1-A6
V6X v21200A1-A4
7-Nano V1不支持—
7-Nano V2150 / 300 / 600 / 1200M1-M4
X25 EVO150 / 300 / 600 / 1200M1-M8
X25 SUPER150 / 300 / 600 / 1200M1-M8
X25 MEGA150 / 300 / 600 / 1200M1-M8

单向 DShot

控制器速率可用通道
V5+150 / 300M1-A6
V5+600 / 1200A1-A6
V5 nano150 / 300 / 600 / 1200M1-M6
X7+150 / 300 / 600 / 1200M1-M12
Nora+150 / 300 / 600 / 1200M1-M12
X7+ Pro150 / 300 / 600 / 1200M1-M12
V6X150 / 300 / 600M1-A6
V6X1200A1-A6
V6X v2150 / 300 / 600M1-A6
V6X v21200A1-A6
7-Nano V1150 / 300 / 600 / 1200M1-M12
7-Nano V2150 / 300 / 600 / 1200M1-M12
X25 EVO150 / 300 / 600 / 1200M1-M14
X25 SUPER150 / 300 / 600 / 1200M1-M14
X25 MEGA150 / 300 / 600 / 1200M1-M14

TIP

双向 DShot 对线材长度更敏感。大型机或信号线较长时,优先降到 DShot150/300,比追高速率更稳。

配置步骤 ​

1. 在全部参数表中配置 ​

打开 Mission Planner,进入 配置 / 调试 → 全部参数表,按下表填好再点 写入参数。

参数目标值参数注释
FRAME_CLASS按机型设置机架类型;设好后系统自动分配输出通道,也可以手动改 SERVOx_FUNCTION
BRD_SAFETY_DEFLT1(需要关闭安全开关填 0)安全开关使能
BRD_IO_DSHOT0(带 IO 的板子可设 1)开启 IO 芯片的 DShot
MOT_PWM_TYPE按所需 DShot 速率设置指定通道的 DShot 协议
SERVO_BLH_BDMASK勾选要输出的通道,四旋翼为 15走 DShot 的通道
SERVO_DSHOT_ESC1DShot 电调类型;要用遥测回传必须设置,一般填 1
SERVO_DSHOT_RATE0(按需配置)DShot 脉冲的发送频率;0 按循环频率固定 1 kHz,1 等于循环频率(400 Hz 循环即 400 Hz),3 为 1.2 kHz。不建议低于 1 kHz

注释

所有基于掩码的配置只能在 PWM 组级别 更改。哪些输出属于同一组以控制器分组为准;同组内混用不同协议,改动不会生效。

注意

一旦某输出被配置为 DShot,其对应的 SERVOx_MIN / SERVOx_MAX / SERVOx_TRIM 参数将失效,因为 DShot 不使用这些参数。可逆输出的中位值为 1500,普通输出则为 1000,输出范围始终为 1000–2000。无需进行 ESC 校准。

提示

需要按下安全开关和解锁后才有输出。

2. 检查输出通道是否生效 ​

重启后连接地面站,在消息(Messages) 面板看开机横幅里的 RCOut: 一行,它会列出每个通道当前使用的输出协议:

消息面板中的 RCOut 行

▲ RCOut: 行显示各通道的协议,DShot 通道会标出速率(如 DShot600)

  • 显示 DShot150/300/600/1200 说明该通道已切到数字输出。
  • 仍显示 PWM 说明通道没有切换成功,通常是接在了 MAIN 口,或同一定时器组内混用了协议。

DShot 命令 ​

部分电调支持通过 DShot 下发命令,用来控制电调 LED、让电机发出哔声、设置电机方向。

目前支持的命令:

  • DShot LED 开关
  • DShot 蜂鸣器开关
  • 反向运动方向(见 SERVO_BLH_RVMASK 参数)
  • 可逆 DShot(又称 3D 模式)

启用前先按下表配好:

参数目标值说明
SERVO_DSHOT_ESC1(按电调型号选)设为所用 DShot 电调类型;用双向 DShot 或扩展遥测时必须设置
NTF_LED_TYPES勾选 DShot允许用 DShot 命令控制电调 LED
NTF_BUZZ_TYPES勾选 DShot允许把电机当蜂鸣器用

警告

当前 ArduPilot 只支持常用的指令集(SERVO_DSHOT_ESC = 1),其他指令集可能不兼容、出现未定义行为。确认电调属于类型 1 之前,务必拆桨测试。

验证 ​

  1. 地面站的飞行数据 → 状态页搜索 esc1_rpm,转速随油门变化说明遥测已通(遥测链路需 MAVLink2)。
  2. 机载日志中查看 ESCn 消息:转速、电压、电流、温度、总电流。
  3. 用电机测试逐个确认转向。

常见问题 ​

1、电机不转?

  • 接在 MAIN 口(带 IO 协处理器的机型不支持),或同一定时器组内混用了 PWM 与 DShot

2、没有转速数据?

  • 电调固件不支持双向回传、SERVO_BLH_BDMASK 未设置,或 SERVO_DSHOT_ESC 仍为 0

3、转速数值偏大 / 偏小?

  • SERVO_BLH_POLES 与实际电机极数不符

4、切换协议后电机异常?

  • 之前按 PWM 校准过油门,切回模拟输出前需要重新校准

WARNING

输出从 DShot 改回模拟 PWM 时,必须先重新做一次油门行程校准,否则可能一解锁电机就高速转动。

IOMCU DShot 限制 ​

加载支持 DShot 的 IOMCU 固件后,有两条限制:

  • RCin 引脚不能再检测 PPM 信号。
  • MAIN 输出支持 PWM 和普通 DShot,同一协议组内的输出必须用同一种协议:
输出协议组
MAIN 1、2第 1 组
MAIN 3、4第 2 组
MAIN 5~8第 3 组

所有 DShot 输出的常规设置步骤依然适用。

文档反馈:hongle@cuav.net