DShot — это новый протокол обмена данными между полетным контроллером (ПК) и регуляторами скорости (ESC), замена протоколам Oneshot и Multishot. DShot сокращение от Digital Shot.
Протокол разработан Flyduino при сотрудничестве с Betaflight. Многие удивляются — как быстро летит время: еще совсем недавно был представлен протокол Multishot, и вот уже новая более совершенная технология, всего ведь несколько месяцев прошло.
Про существующие протоколы можно почитать подробнее:
Преимущества DShot
При сравнении с Oneshot и Multishot мы видим следующие преимущества:
- Нет необходимости калибровать регуляторы (нет джиттера)
- Более точная и помехоустойчивая передача данных
- Высокое разрешение — 2048 шагов (в старых протоколах всего 1000 шагов)
- Быстрее чем Oneshot
- Безопаснее (надежнее), каждый пакет данных содержит контрольную сумму
DShot — что это?
DShot — это цифровой протокол!
Стандартный PWM, Oneshot125, Oneshot42 и Multishot — аналоговые. Они основаны на вычислении длительности импульса. Аналоговые сигналы имеют проблемы с точностью потому что:
- Разная частота кварцевых резонаторов в регуляторах и ПК может внести погрешность в измерение длительности импульсов. Также это причина необходимости калибровать регуляторы.
- Шум и скачки напряжения могут исказить данные
При использовании цифрового протокола этих проблем нет. Офигенно, больше не нужно калибровать регули. А благодаря цифровой передаче (там всего лишь нули и единицы), протокол менее подвержен воздействию шумов.
На сколько быстро работает DShot?
Варианты: DShot600, DShot300, DShot150
Есть 3 варианта протокола, цифры определяют скорость интерфейса:
- DShot600 – 600,000 бит/сек
- DShot300 – 300,000 бит/сек
- DShot150 – 150,000 бит/сек
Вычисляем задержку при передаче сигнала
Для начала нужно выяснить размер пакета передаваемых данных, затем поделить на скорость передачи данных. В протоколе DShot длина пакета — 16 бит: 11 бит данные (2048 значений), 1 бит — запрос данных телеметрии, 4 бита — контрольная сумма.
Берем для примера DShot600, частота передачи данных 600,000/16 = 37500 Гц= 37.5 кГц. Т.е. задержка при передаче данных от ПК к регулю составит 26.7 мкс.
Сравниваем скорости
Я все подсчитал 🙂 При условии, что газ = 100% получаем следующие цифры:
- Oneshot125 – 250 мкс
- DShot150 – 106.7 мкс
- Oneshot42 – 84 мкс
- DShot300 – 53.3 мкс
- DShot600 – 26.7 мкс
- Multishot – 25 мкс
Большая скорость передачи данных DShot теоретически позволяет использовать время цикла ПК (FC looptime) порядка 33 кГц (не 37.5 кГц, т.к. нужны кое-какие паузы между значениями). Хотя DShot600 не так быстр, как Multishot, но пока он быстрее чем looptime, его хватит. 🙂 Со всеми прочими преимуществами, которые мы уже увидели, DShot вне конкуренции.
Какие ESC поддерживают DShot?
BLHeli_S
В настоящее время только некоторые регуляторы с BLHeli_S поддерживают DShot. Например: Cicada, Racestar V2, Aikon SEMF, TBS 25A, Lumenier 30A, DYS XS30A и т.д. Однако эти регули имеют ограничение по скорости и могут использовать только DShot300 (а некоторые только DShot150). Если верить Стефану Скагу (Steffen Skaug) новые регуляторы на чипах EFM8BB21x смогут использовать DShot600.
DShot для BLHeli_S реализовала команда Betaflight, если вы хотите знать больше (список поддерживаемого железа, известные проблемы и т.д.) то смотрите тут.
KISS ESC
KISS 24A ESC поддерживают все три варианта DShot, скорость можно выбрать прямо в конфигураторе (даже DShot600).
В KISS 24A ESC используется процессоры STM32, в полетных контроллерах коптеров тоже используются процессоры этих серий. Внутри этих процессоров есть такая штука как DMA (Direct Memory Access, прямой доступ к памяти), она позволяет передавать данные без использования значительных вычислительных ресурсов.
Требования к полетным контроллерам
Похоже, что все ПК на F3 и F4 могут выдавать данные в формате DShot.