DShot 电子调速器

../_images/hobbywing-esc.jpg

DShot 是一种数字式电调协议,可实现快速、高分辨率的数字通信,从而改善载具控制,这在多旋翼和四旋翼应用中尤为有用。其他优势包括

  • 发送到 ESC 的值受校验和保护

  • 电调与(飞行)控制器之间的时钟差异不会影响飞行性能

  • 无需进行电调校准

DShot 是底层的电调控制协议,由 BLHeli 电调。许多 BLHeli ESC 版本还提供更多功能,如 ESC 配置、 电调遥测LED控制和/或 双向 dshot.如果选择支持 DShot 的电调,我们建议使用同时支持 BLHeli32 或 BLHeli_S 的电调。

备注

只能在已知支持 DShot 的电调上尝试,否则会得到不可预知的结果。

备注

最近,越来越多的专有和非专有 16 / 32 位电调的固件支持 DShot 和其他数字电调协议,但不支持 BLHeli32 特有的功能,如直通和遥测。有关支持功能的更多详情,请参阅电调手册。

备注

大多数 DShot 电调通常也能正常运行 PWM 电子调速器.

连接电调

对于 4.5 之前的固件版本,带有 IOMCU 协处理器(如 Pixhawk、CubeOrange 等)的(飞行)控制器,DShot 电调应连接至 IOMCU 协处理器的 AUX 输出,而非 MAIN 输出。在 4.5 或更高版本的固件中,DShot 电调应连接到辅助输出,而不是 IOMCU 协处理器的主输出。 BRD_IO_DSHOT 对于某些使用 F103 IOMCU 的(飞行)控制器,可以设置该参数以便在下次启动时加载与 Dshot 兼容的 IOMCU 固件。如果不存在该参数,则(飞行)控制器的 IOMCU 输出端不具备 DShot 功能。请参见 IOMCU Dshot 限制 部分了解限制和更多信息。

在 CubeOrange 上,DShot 可用于所有通道。AUX1 不能用于双向 DShot,这意味着只有 AUX2 至 AUX6 可用于双向 DShot。(见问题).

对于 其他官方 无需单独的 IOMCU 协处理器,任何伺服/电机输出都可用于 DShot。

请参阅 混合使用 ESC 协议 有关限制的更多详情,请参阅下文

双向 DShot

一些木板

选择 DShot 波特率

设置 Q_M_PWM_TYPE 为 VTOL 电机设置所需的波特率,并重新启动(飞行)控制器

  • DShot150 150kbaud(建议用于信号线较长的大型飞机)

  • DShot300 300kbaud

  • 600kbaud 的 DShot600(建议用于大多数载具)

  • DShot1200,1200kbaud 速率

对于使用 DShot ESC 协议、电缆线较长的大型飞机,我们建议使用最低波特率 DShot150,因为它是最可靠的协议(较低的波特率不易受电缆噪音的影响)。

对于较小的船只来说,DShot600 是迄今为止使用最广泛的协议,因此与较新的 DShot1200 协议相比,DShot600 经过了大量的测试,是更合适的选择。

更高的速率(如 DShot600 和 DShot1200)更容易受到噪声的影响,但其优点是占用分配的 DMA 通道的时间更短,这对有大量 DMA 共享的(飞行)控制器是有利的。

如果 双向 DShot 因为该功能需要较长的脉冲宽度,因为它必须等待来自 ESC 的响应,然后才能发送另一个脉冲。双向 DShot 不共享 DMA 通道,因此对其他外设没有影响。双向 DShot 仅支持 BLHeli32 电调

配置伺服功能

如上所述,如果使用带有 IOMCU 的(飞行)控制器(如 Pixhawk、CubeOrange 等),则应将电调连接到 AUX 输出端,而不是默认的 MAIN 输出端。这意味着相应的 SERVOx_FUNCTION 必须更新参数,以便(飞行)控制器知道连接到电调/电机的输出。这可以通过Mission Planner地面站的 "伺服输出 "页面轻松完成

../_images/dshot-setup-mp-servooutput.png

备注

当为 DShot 配置了输出时,输出的 SERVOx_MIN/MAX/TRIM 由于 DShot 不使用这些参数,因此该输出的参数将始终被忽略。如果是可逆输出,则使用的微调值为 1500;如果是 DShot 中的正常输出设置,则使用的微调值为 1000,输出范围始终为 1000-2000。无需进行电调校准步骤。

在 Plane 中,所有其他电机都使用正常(PWM)协议。不过,在 Plane 模式下,任何电机,如传统固定翼的主电机或双电机尾翼(SERVOx_FUNCTION = 70节流阀、73节流阀左侧和/或 74节流阀右侧),都可以通过使用 SERVO_BLH_MASK 参数来指定电机的输出编号以及 伺服布尔型 参数来选择这些电机的协议,而不是为旋翼飞行器功能电机选择的协议。

备注

所有基于掩码的配置只能在 PWM 组一级进行更改,请查阅(飞行)控制器的相关文档以确定不同组上的输出。请参见 混合使用 ESC 协议 见下文。

警告

请确保您的电调能够支持您为其选择的配置。否则会造成损坏。这包括下面讨论的帧速率。在未重新校准电调的情况下在数字和模拟输出类型之间切换时也要小心,因为这可能会导致电机输出无指令。

检查 RC 横幅

重新启动(飞行)控制器并检查 "RC banner",确认输出通道已按预期设置(下载参数时会出现此 banner)。

./_images/dshot-setup-mp-rcbanner.png

附加配置

DShot 更新率

发送 DShot 脉冲的频率可通过以下方式配置 伺服射速.默认情况下,每次准备好新的 IMU 样本时,ArduPilot 都会输出一个 DShot 数据脉冲 固定间隔为 1Khz。在使用标准 400Hz 调度器循环速率的旋翼飞行器上,这一频率约为 1.4Khz。然而,输出很不规则--为了获得更有规律的输出 伺服射速 可以配置为以调度器循环速率的倍数发送脉冲。因此,如果设置为 2,脉冲将以 800Hz 的频率发送,设置为 3 则以 1.2Khz 的频率发送,以此类推。两者的区别在于输出非常均匀,这对需要更严格电机控制的飞行器(例如小型赛车)非常有利。不建议以低于 1Khz 的频率发送脉冲,因为有报告称 BLHeli32 有时会在某些(飞行)控制器上丢失帧,同样,以更高的频率发送脉冲可以提高可靠性,并在需要时更快地从丢失的脉冲中恢复,但会占用一些 CPU。极高的速率只能用于更快的 DShot 速度,否则脉冲可能会重叠,例如 DShot150 理论上可以支持的最快速率是 4Khz。

DShot 命令

某些电调支持 DShot 命令。这些命令允许(飞行)控制器控制电调 LED 指示灯、蜂鸣声和电机方向等功能。要使用 DShot 命令,请执行以下操作

  • 设置 伺服_dshot_esc 应设置为所用 DShot ESC 的类型。尤其是在使用双向 DShot 遥测技术或扩展遥测技术时,更需要这样做。

  • 设置 NTF_LED_TYPES的 "DShot "复选框,以启用控制电调 LED 的功能。

  • 设置 NTF_BUZZ_TYPESDShot "复选框,将电机用作蜂鸣器

目前支持的命令有

警告

目前,ArduPilot 支持命令集 (伺服_dshot_esc =1) 是常用的类型,但也出现了其他类型,可能与之不兼容,从而导致未定义的操作。请谨慎使用(移除刀片!),直到为您的电调验证了使用 type=1 的正确操作。

可逆式 DShot 电子调速器

可逆式 DShot(又称 3D 模式)允许马达向任一方向旋转,这对于UGV无人车、游艇和其他设备来说非常重要。 反推力飞机.

目前,仅支持 BLHeli32 和 BLHeli_S 可逆 DShot 电调。要使用可逆 DShot 电调,必须在驱动它的输出中指定相应的位。 伺服 BLH_3dmask 位掩码参数。这将把输出 1000-1500-2000 的值映射为正确的数字值,以便电调分别提供全反转-空闲-全前进范围的操作。

如果 DShot 命令 已启用,那么 ArduPilot 将在启动时自动将电调配置为可逆模式(3D 模式)。 伺服 BLH_3dmask.启用 DShot 命令 中讨论的 DShot 屏蔽参数配置为 DShot 的任何其他电调发送其他 DShot 命令。 DShot 设置说明.

否则,您必须将电调的 "电机方向 "手动配置为 "双向 3D",如下图所示。

./_images/blheli-reversible-dshot.png

备注

目前,ArduPilot 只支持在 Plane 和 Rover 中使用可逆电调,而不支持 Copter。

混合使用 ESC 协议

虽然 ArduPilot (飞行)控制器的所有伺服/电机输出都能以 50Hz 或更高帧频进行正常 PWM 操作,但并非所有输出都能使用其他电调协议配置。而且通常情况下,这些配置必须适用于预先指定的输出组,即使它们并非都在驱动电调。因此需要注意以下几点:

  1. 使用 IOMCU 的(飞行)控制器(如 PixHawk 和 Cube)的 8 个 "主 "输出不能用于 DShot。在这些(飞行)控制器上,只有额外的 "AUX "输出支持 DShot。如果您尝试将 "主 "输出设置为 DShot,则会出现正常的 PWM 输出,即使它已被设置为 DShot 协议。

  2. 对于 Pixracer其他官方 无需单独的 IOMCU 协处理器,即可使用所有伺服/电机输出。

  3. 共用一个定时器的输出组必须具有相同的高级配置。这些配置通常在(飞行)控制器的硬件描述中指定,并从 选择(飞行)控制器 页。例如,如果在一个组中为 DShot 配置了一个输出,则不能将该组中的另一个输出用于 Normal PWM ESC。 正常 PWM 伺服运行。

备注

每次(飞行)控制器初始化时,它都会向地面控制站发送一条信息,显示哪些输出为 PWM/Oneshot/或 DShot。其余编号较高的输出被分配为 GPIO。

./_images/RCOutbanner.jpg

IOMCU DShot 限制

如果已加载启用 DShot 功能的 IOMCU 固件(参见 连接电子调速器 但也有一些限制:

  • RCin 引脚无法再检测到 PPM

  • 主 "输出可支持 PWM 和普通 DShot,但定时器组的 "分组 "协议与之类似:
    • 主 1、2 组1

    • MAIN 3,4 第 2 组

    • MAIN 5-8 第 3 组

DShot 输出的所有常规设置说明同样适用。