Протокол 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 бит:
- 11 бит — значение газа (0–2047).
- 1 бит — запрос телеметрии (если поддерживается).
- 4 бита — контрольная сумма (XOR + инверсия).
Значение газа
- 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!»
Раздел: Конспекты, Глоссарий. Краткие заметки