Перейти к содержимому
DShot и прошивки ESC

DShot и прошивки ESC

02 сентября 2026
Пилоту БПЛА | Технику БПЛА | Хобби

Протоколы в БАС: полный курс · Урок 12 из 18 · Модуль 4. Моторы и сервы: PWM и DShot

Цифровые кадры с контрольной суммой, отсутствие калибровки, телеметрия оборотов — и состояние прошивок регуляторов в 2026 году.

DShot не требует калибровки диапазона и поддерживает bidirectional-телеметрию оборотов — без неё невозможен RPM-фильтр, основной инструмент подавления вибраций квадрокоптера.

Содержание

1. Цели урока

После этого урока вы сможете:

  • объяснять структуру 16-битного кадра DShot и роль CRC
  • выбирать скорость DShot150/300/600/1200 под свою плату
  • включать bidirectional DShot и использовать телеметрию оборотов
  • ориентироваться в прошивках ESC: AM32, Bluejay, BLHeli_S, BLHeli_32
↑ К оглавлению

2. Кадр DShot

DShot (Digital Shot) — цифровой протокол управления регуляторами: команда передаётся кодом из 16 бит, а не длиной импульса. Кадр устроен так:

Кадр DShot: 11 бит газа, бит запроса телеметрии, 4 бита CRC

Кадр DShot: 11 бит газа (0–2047), 1 бит запроса телеметрии (T), 4 бита контрольной суммы (CRC).

dshot600_frame_b5f5b.png

Один бит передаётся парой уровней: короткий импульс — «0», длинный — «1».

Биты DShot600: у логического «0» высокий уровень 625 нс, у «1» — 1250 нс. Период одного бита — 1,67 мкс (1670 нс) — примерно в 600 раз короче импульса серво-PWM.

СкоростьБитКадр (16 бит)Применение
DShot150 6,67 мкс 107 мкс совместимость со старыми ESC
DShot300 3,33 мкс 53 мкс стандарт для большинства сборок
DShot600 1,67 мкс 27 мкс гонки, частые обновления контура
DShot1200 0,83 мкс 13 мкс только F7/H7 с поддержкой

Значение газа 0–47 зарезервировано под спецкоманды (звуковые сигналы, реверс, настройка). Газ 48–2047 — обычный диапазон 0–100 %. Контрольная сумма позволяет ESC молча отбрасывать повреждённый кадр — команда просто повторится со следующего цикла.

↑ К оглавлению

3. Bidirectional DShot и телеметрия оборотов

Обычный DShot — односторонний: контроллер командует, ESC молчит. Bidirectional DShot добавляет ответ: по биту T контроллер запрашивает телеметрию, и ESC возвращает пакет с текущими eRPM — электрическими оборотами (число коммутаций фаз в минуту). Пересчёт в механические обороты:

RPM = eRPM / число пар полюсов
Plain text

Пример: мотор 2207 на 14 полюсов (7 пар) выдаёт eRPM 210000 — механические обороты 30000 об/мин.

Данные оборотов нужны для RPM-фильтра: частоты вибраций, порождаемых моторами и пропеллерами, точно известны по оборотам, и фильтр вырезает их, не трогая полезный сигнал гироскопа. В Betaflight включается во вкладке Motors: протокол DSHOT300 и переключатель Bidirectional DShot; после этого в телеметрии появляются обороты каждого мотора.

↑ К оглавлению

4. Прошивки ESC в 2026

ПрошивкаСтатусНастройка
AM32 ✓ актуальная, открытая стандарт новых регуляторов; настраивается через ESC Configurator (веб-приложение)
Bluejay ✓ актуальная, открытая для регуляторов BLHeli_S; добавляет bidirectional DShot
BLHeli_S 🕰 старая, но массовая сток на недорогих ESC; лучше перешить в Bluejay ради телеметрии RPM
BLHeli_32 ✗ закрыта проект свёрнут, новые версии не выходят; существующие регуляторы работают, новые приобретать нецелесообразно

am32_esc4in1_df012.png

Типовой FPV-стек: полётный контроллер и 4-в-1 ESC. Между платами — шлейф или пайка: четыре сигнальных провода моторов (DShot), телеметрия, питание 5 В (BEC от ESC питает контроллер) и общий GND.

Настройка через ESC Configurator: подключи регулятор к компьютеру (обычно по USB через полётный контроллер или напрямую), открой веб-приложение, выбери прошивку — и меняй параметры: тайминги, частоту ШИМ, направление вращения, прошивку целиком. Прошивка 4-в-1 ESC обновляется одним действием для всех четырёх регуляторов сразу.

↑ К оглавлению

5. Настройка в Betaflight и ArduPilot

  • Betaflight: вкладка Motors → ESC/Motor protocol → DSHOT300 (или DSHOT600). Там же — Bidirectional DShot и громкость маяка (beacon) на случай поиска потерянного аппарата.
  • ArduPilot: тип сигнала моторов — MOT_PWM_TYPE: 5 = DShot300, 6 = DShot600. Частота обновления — SERVO_DSHOT_RATE (0–3, от DShot150 до DShot1200). Телеметрия оборотов включается при выборе DShot автоматически.
  • Ограничение DMA: DShot требует пины с прямым доступом к памяти. В Betaflight при выборе DShot конфигуратор сам подскажет, если пин не подходит.
Что настраиваемBetaflightArduPilot
Протокол ESC Motors → DShot300/600 MOT_PWM_TYPE = 5 (DShot300)
Телеметрия оборотов Bidirectional DShot включается автоматически
Маяк (beacon) DShot Beacon не используется (свой механизм)
↑ К оглавлению

6. Для программиста

💻 Для программиста

Кадр DShot передаётся из буфера памяти через DMA: процессор готовит 16 бит заранее, а таймер «передаёт» их на пин без участия ядра — отсюда точность таймингов в сотни наносекунд. Программная генерация DShot на не-DMA пинах не даст стабильного сигнала: микросекундные прерывания размывают фронты.

Если пишешь драйвер: «0» и «1» различаются только шириной первого импульса (625 нс против 1250 нс на DShot600), полная длительность бита — 1,67 мкс. Значения 0–47 — спецкоманды, 48–2047 — газ. CRC считается по всем 12 битам кадра (11 бит газа + бит T).

↑ К оглавлению

7. Чек-лист самопроверки

Урок освоен, если каждый пункт выполнен на практике:

  • Настроил DShot300 и bidirectional DShot в Betaflight
  • Вижу обороты моторов во вкладке Motors (столбец RPM)
  • Включил RPM-фильтр и сравнил вибрации до и после
  • Перешил BLHeli_S-регулятор в Bluejay через ESC Configurator
  • Знаю, почему BLHeli_32 больше не развивается
Результат: все пункты выполнены — переходите к следующему уроку.
↑ К оглавлению

8. Что дальше

  • Предыдущий урок: Урок 11. PWM: сервы и классические ESC
  • Следующий урок: Урок 13. SBUS и IBUS: кадры и параметры
  • Полный перечень тем — в статье «Содержание курса».
↑ К оглавлению
DShot и прошивки ESC
13