Перейти к содержимому
Протокол DShot: Новое поколение цифровой связи с ESC
16
июля
2025

Протокол DShot: Новое поколение цифровой связи с ESC

DSHOT — это новый цифровой протокол управления регуляторами скорости (ESC), разработанный Феликсом (KISS) при участии Бориса и команды Betaflight, а также Штефана (BLHeli), внедрившего протокол в BLHeli_S.

Примечание: BLHeli означает Brushless ESC for Helicopters — регуляторы скорости для бесщеточных двигателей, изначально разработанные для вертолётов.

DSHOT является цифровым протоколом, несмотря на использование PWM-регистров микроконтроллера. Каждый импульс представляет собой отдельный бит данных, значение которого (0 или 1) определяется соотношением длительности высокого уровня к общему периоду бита. Для генерации сигнала используются DMA и аппаратные таймеры, чтобы минимизировать нагрузку на процессор.

Чем DSHOT отличается от существующих протоколов?

Аналоговые протоколы, такие как Multishot, Oneshot42 и Oneshot125, используют ширину импульса для передачи значения газа, что приводит к следующим проблемам:

  • Джиттер (дрожание): небольшие временные колебания сигнала.
  • Неопределённые значения минимума и максимума газа.
  • Необходимость калибровки ESC, чтобы определить диапазон.

DSHOT использует временное соотношение (pulse ratio), где значение бита определяется не уровнем напряжения, а длительностью высокого уровня относительно общего периода. Это делает протокол устойчивым к джиттеру и не требующим калибровки.

Что означает название DSHOT?

Цифры в названии обозначают битрейт (в килобитах в секунду):

  • DSHOT600 — 600 кбит/с.
  • DSHOT300 — 300 кбит/с (в 2 раза медленнее).
  • DSHOT150 — 150 кбит/с (в 4 раза медленнее).

Таким образом, временные параметры DSHOT300 и DSHOT150 увеличиваются в 2 и 4 раза соответственно. Это позволяет использовать протокол даже на менее мощных ESC.

Важно: В отличие от Oneshot, где меньшее число означает более высокую скорость, в DSHOT большее число = более высокая скорость.

Технические параметры DSHOT600

  • Длительность одного бита (T_Total): 1.67 мкс (частота 600 кбит/с).
  • Бит 0: T_High = 625 нс, T_Low = 1045 нс.
  • Бит 1: T_High = 1250 нс, T_Low = 420 нс.

Структура фрейма DSHOT

Каждый фрейм состоит из 16 бит:

  1. 11 бит — значение газа (0–2047).
  2. 1 бит — запрос телеметрии (если поддерживается).
  3. 4 бита — контрольная сумма (XOR + инверсия).

c85ec0f1ad950f004bb0571d2b9c6144e6c9200a.png

Значение газа

  • 0 — двигатель выключен (disarmed).
  • 1–47 — зарезервированы (например, для команд или звуковых сигналов).
  • 48–2047 — рабочий диапазон (2000 шагов).

Пауза между фреймами

Между фреймами всегда есть пауза не менее 2 мкс, которая служит маркером сброса. Это указывает на начало нового фрейма. В реальной работе, особенно в конце PID-цикла, пауза может быть значительно длиннее.

Эффективность DSHOT

Хотя DSHOT не является самым эффективным по количеству передаваемых бит на единицу времени, его устойчивость к шуму делает его оптимальным выбором для мультироторных БПЛА.

Совместимость с полётными контроллерами и ESC

Полётные контроллеры

  • STM32 F1 (Naze32, CC3D) — не поддерживают DSHOT из-за ограничений DMA.
  • STM32 F3, F4, F7 — полностью поддерживают DSHOT.

Регуляторы (ESC)

  • BLHeli_S и выше — полностью поддерживают DSHOT. (сам BLHeli_S не поддерживается)
  • ARM-основанные ESC (например, KISS 24A RACE) — поддерживают или могут быть обновлены.
  • ATMEL-based ESC (AVR) и SILAB-based ESC — не поддерживают DSHOT из-за аппаратных ограничений.

Преимущества DSHOT

  • Точность сигнала без джиттера.
  • Контрольная сумма позволяет обнаруживать ошибки.
  • Нет необходимости в калибровке ESC.
  • Поддержка телеметрии через DSHOT Bidirectional (DSHOT Bidir).

DSHOT Bidirectional (DSHOT Bidir)

DSHOT Bidir реализует двустороннюю связь между полётным контроллером и ESC. Отличительные особенности:

  • Используется инвертированный сигнал (состояние ожидания = 1).
  • Младшие 4 бита фрейма содержат инвертированную XOR-сумму старших 12 бит.
  • После получения команды ESC отвечает телеметрией через 30 мкс.

Формат телеметрии

  • 16-битное значение eperiod (1/ERPS).
  • Кодирование: 3 бита E и 9 бит M, где M << E = период в мкс.
  • Диапазон: от 1 мкс до 65408 мкс, что соответствует от 15,29 Гц до 1 МГц.

GCR-кодирование

0 → 19  
1 → 1B  
2 → 12  
3 → 13  
4 → 1D  
5 → 15  
6 → 16  
7 → 17  
8 → 1A  
9 → 09  
A → 0A  
B → 0B  
C → 1E  
D → 0D  
E → 0E  
F → 0F

NRZI-подобное кодирование

После GCR-кодирования 20-битное значение преобразуется в 21-битное, используя NRZI-подобный алгоритм:

  • Начинаем с 0.
  • Если входной бит = 1 → инвертируем.
  • Если входной бит = 0 → повторяем предыдущее значение.

Битрейт обратного канала

  • DSHOT300: 375 кбит/с (5/4 × 300).
  • DSHOT600: 750 кбит/с (5/4 × 600).

Заключение

DSHOT стал новым стандартом в управлении ESC в дрон-сообществе. Он обеспечивает:

  • Высокую точность и устойчивость к шуму.
  • Отсутствие джиттера и необходимости калибровки.
  • Поддержку телеметрии и обратной связи.

Таким образом, можно сказать: «Покойся с миром, PWM — у нас появился новый друг: DSHOT!»

Раздел: Конспекты, Глоссарий. Краткие заметки

Протокол DShot: Новое поколение цифровой связи с ESC