Прошивка Dshot для ESC

Сергей_Уж

Пишут что Dshot игнорирует настройки “Motor PWM speed Separated from PID Speed” если так их в будущей версии конфигуратора уберут для DShot.
DSHOT is sync’d. There’s no unsync’d option. The setting is ignored. As it’s digital there’s no point in repeating the signal.
И еще интересный факт, у меня на 8 8 32000 Dshot работает без замечаний, если выставить DShot150 два левых мотора не работают,
но если выставить 8 4 32000 то DShot150 работает супер. То есть работоспособность напрямую связано с PID loop настройками в конфигураторе.

mil-lion

Наконец то дошли руки и попробовал DShot. Прошил LUX F3 версией BetaFlight 3.1.0 сборка 709 с поддержкой DSHOT. В регуляторы ZTW Flash 30A BLHeli_S залил прошивку 16.43 с поддержкой DSHOT. И попробовал повисеть в офисе с DSHOT600. Вроде бы висит и адекватный, полный тест нужен в поле.
Но вот только с PID looptime 8kHz нагрузка проца 100% и короче еле реагирует, пришлось снизить до 4kHz. В итоге 8/4/4 получилось. Наверное LUX F3 не тянет DSHOT на looptime больше 4kHz.

lunohod
Сергей_Уж:

И еще интересный факт, у меня на 8 8 32000 Dshot работает без замечаний, если выставить DShot150 два левых мотора не работают, но если выставить 8 4 32000 то DShot150 работает супер. То есть работоспособность напрямую связано с PID loop настройками в конфигураторе.

Гм, у меня с dshot600 на aikon 30a v1 тоже два левых мотора не работают. Если заармиться, то правые сразу запускаются, а левые вдруг начинатют пищать как при запуске, потом один из них начинает дёргаться.

С dshot300 работают, но не совсем стабильно: в закладке моторов резко передвигаю ползунок с 0 до 50%, правые моторы запускаются, а левые дёргаются. В полёте периодически чирикает и подкидывает коптер вверх.

Это всё на dtfc и 8/4. Может стоит попробовать 8/2?

Сергей_Уж
lunohod:

Если заармиться, то правые сразу запускаются, а левые вдруг начинатют пищать как при запуске, потом один из них начинает дёргаться.

Я написал о проблеме разрабам, если есть замечания писать здесь
github.com/betaflight/betaflight/issues

Они моих пару ошибок исправили и быстро.

lunohod

Не факт, что проблема в прошивке. Хотя очень подозрительно, что похожие симптомы на третьем и четвёртом моторах. С другой стороны, у кого-то dshot600 заработал на таком же сетапе как у меня.

По идее, надо бы попробовать поменять местами сигнальные провода левого и правого моторов. Если ничего не изменится, то проблема в регуле, если работающий до этого мотор не запустится на третьем или четвёртом выходе, то проблема в FC или в прошивке.

Сергей_Уж

Чуть обновили первую страницу Dshot на RSG, добавили три ссылки на ресурсы
Update: some more info to Dshot can be found in the folowing links

kiss.flyduino.net/dshot-new-d...ocol-for-kiss/ (for the KISS24A and the KISSFC)

some blog posts:

more technical infos from blckmn, he worked since the start on the betaflight Dshot support:
blck.mn/2016/11/dshot-the-new-kid-on-the-block

mor generell:
blog.seidel-philipp.de/dshot-digital-esc-signal/

arb

Спасибо за ссылки. Если про дшот и сразу было понятно, но все равно нашел полезное (особенно по 2 ссылке). То про ваншот дошло в чем минус технологии (потеря точности управления). Дшот в этом плане и впрямь шаг вперед - 2000 шагов за тоже время, что и ваншот. Сколько шагов у ваншот с мультишот я не нашел , но я так понял мало и должно зависеть от разрешения мозгов при генерации / измерении сигнала.
Однако и с дшот есть подводные камни. Надо теперь смотреть даташиты мозгов на возможность измерения наносекунд. Т.к. если мозг различает только микросекунды , то заставить его работать с 600 будет невозможно. Он просто 1 не отличит от 0. И чувствительность к 600 наносекундам должна быть с запасом, чтоб помехи не влияли.

Сергей_Уж

И еще прочитал и попробовал прогу “BLHeli Configurator” из Хрома для прошивки ESC любой прошивкой без скачивания. Все просто и понятно, прошивка выбирается ( последняя есть ) из выпадающего меню.
Попробуйте, ничего особенного но мне понравилась
…google.com/…/mejfjggmbnocnfibbibmoogocnjbcjnk

PS И о скачке hex файлов, забыл как правильно, при сохранении получал файл на 100кб больше. Правильно когда на странице скачки в закладке RAW нужно кликнуть по самой кнопке RAW правой кнопкой и скачать, тогда получаем правильный файл. Просто выскочило из башки, копировал в блокнот и сохранял как hex 😃

DieHertz
arb:

Сколько шагов у ваншот с мультишот я не нашел , но я так понял мало и должно зависеть от разрешения мозгов при генерации / измерении сигнала.

240

arb:

Однако и с дшот есть подводные камни. Надо теперь смотреть даташиты мозгов на возможность измерения наносекунд. Т.к. если мозг различает только микросекунды , то заставить его работать с 600 будет невозможно. Он просто 1 не отличит от 0. И чувствительность к 600 наносекундам должна быть с запасом, чтоб помехи не влияли.

Не понял идеи, все BLHeli_S на базе EFM8BB10x/21x и поддерживают DSHOT того или иного битрейта. Не понял, что за 600 наносекунд такие и откуда они взялись.

Сергей_Уж:

И еще прочитал и попробовал прогу “BLHeli Configurator” из Хрома для прошивки ESC любой прошивкой без скачивания. Все просто и понятно, прошивка выбирается ( последняя есть ) из выпадающего меню.
Попробуйте, ничего особенного но мне понравилась
…google.com/…/mejfjggmbnocnfibbibmoogocnjbcjnk

PS И о скачке hex файлов, забыл как правильно, при сохранении получал файл на 100кб больше. Правильно когда на странице скачки в закладке RAW нужно кликнуть по самой кнопке RAW правой кнопкой и скачать, тогда получаем правильный файл. Просто выскочило из башки, копировал в блокнот и сохранял как hex 😃

С BLHeli Configurator скачивать HEX вручную не требуется.

arb
DieHertz:

240

Тогда получается длина шага 5/240*1000=20,8 наносекунд. Опять надо смотреть даташит на разрешение мозгов.

DieHertz:

Не понял, что за 600 наносекунд такие и откуда они взялись.

Отсюда

Сергей_Уж:

more technical infos from blckmn, he worked since the start on the betaflight Dshot support:
blck.mn/2016/11/dshot-the-new-kid-on-the-block

Бит длина (период времени) составляет 1,67 микросекунд (T0H + T0L или T1H + T1L).
Чтобы различить 0, Ширина импульса должна быть равна 625 наносекунд (T0H – время импульса для нулевого значения);
Чтобы различить 1, Ширина импульса должна быть равна 1250 наносекунд (T1H – время импульса для высокого значения)

А 625 или 600 разницы уже нет. Т.к. если есть разница, то тогда можно было бы еще раз в 10 сократить время цикла и получилось бы Дшот 6000. Но что-то и с таким временем проблемы.

DieHertz
arb:

Тогда получается длина шага 5/240*1000=20,8 наносекунд. Опять надо смотреть даташит на разрешение мозгов.
Отсюда

А 625 или 600 разницы уже нет. Т.к. если есть разница, то тогда можно было бы еще раз в 10 сократить время цикла и получилось бы Дшот 6000. Но что-то и с таким временем проблемы.

Понял откуда, спасибо. Да с 600 никаких проблем и нет, если устранить фильтр в цепи сигнала. На BLHeli_S проблема в том, что нет DMA, обрабатывать сигнал приходится программно, 600 Kbps - практически предел для семейства EFM8BB21x.
А KISS (STM32F051x) в тестах может и DSHOT1200.

wind7
arb:

Вся проблема именно здесь. Для достижения высокой скорости приходится уменьк раз бы остановились бы на самом принципе. Сделали бы 150, ну максишать ширину импульса, а это погрешность измерения 1 и 0. Когда на грани, ошибок не избежать.

вы в корне не правы , посмотрите как устроенны высокоскоростные протоколы допустим в автомобилях, по одному проводу может передаваться сразу 3 сигнала с разным порогом по напряжению , допустим +1в до -1в , +2.5в до-2.5 +3.5в до -3.5 или другие комбинации , и соответственно каждый канал будет читать свой порог как 0 или 1 , хотя обычно высоко скоростные протоколы идут по 2 поводам один на прием второй на передачу

arb

Это у Вас комп так коверкает чужой текст или специально сделали? Надеюсь первое.

wind7:

вы в корне не правы

Может быть, хотелось бы еще узнать только в чем.

wind7:

посмотрите как устроенны высокоскоростные протоколы допустим в автомобилях,

Мы обсуждаем конкретный протокол, реализованный на конкретных мозгах. На всякий случай повторю ссылку Сергея.

Сергей_Уж:

some blog posts:

more technical infos from blckmn, he worked since the start on the betaflight Dshot support:
blck.mn/2016/11/dshot-the-new-kid-on-the-block

Принцип протокола одно и по ссылке он хорошо описан, а вот возможности оборудования (мозгов) по измерению длины импульса другое. Зачастую проблема упирается в погрешность измерения. В противном случае возможны ошибки. И чтоб этого избежать на старом оборудовании и придумали ширину импульса 1000 мкс. Но даже старый протокол можно было просто сократить 2 раза по времени не меняя ширины импульса, а значит и количества шагов из расчета 1 шаг 1 мкс. Надо было всего лишь сократить задержку с 1000 до 50.

wind7:

хотя обычно высоко скоростные протоколы идут по 2 поводам один на прием второй на передачу

Ну здесь прием не требуется. Хотя на Кисс прием телеметрии реализован на отдельном проводе, это все же другое. А к примеру в протоколе SPI используется 2 провода для проверки, по 1 идет прямой сигнал, а по 2 инверсный. Но это другой протокол и здесь его никто не собирался использовать для сохранения совместимости со старым протоколом.
Да можно сравнить этот протокол с осциллографом. Ведь есть осциллографы способные измерять без искажений высокочастотные сигналы, но там уже и АЦП другой и частоты другие, и используются специальные щупы, которые точно не сравнить даже с витым проводом.

Сергей_Уж

Искал и нашел отличный ответ как найти и где находится тот самый кондюк фильтра который нужно удалить на Cicada\Racerstar RS30A V2 30A Blheli_S для корректной работы DShot600
Может кому то пригодится
www.rcgroups.com/forums/showpost.php?p=36216745&po…

DieHertz
Сергей_Уж:

Искал и нашел отличный ответ как найти и где находится тот самый кондюк фильтра который нужно удалить на Cicada\Racerstar RS30A V2 30A Blheli_S для корректной работы DShot600
Может кому то пригодится
www.rcgroups.com/forums/showpost.php?p=36216745&po…

Спасибо, я старался 😃 Это работает для большинства контроллеров на BLHeli_S.

nminnakh
DieHertz:

Это работает для большинства контроллеров на BLHeli_S.

А нужно именно удалить?
На сколько помню, речь шла о том, чтобы заменить на конденсатор бОльшей емкости.

DieHertz

Намного проще удалить вовсе, так делает большинство.
Если очень хочется заменить - стоит оценить частоту среза фильтра, обеспечив её приемлемое значение для желаемого DSHOT. Тут еще и сопротивление измерить придётся.

lunohod

Большой конденсатор вроде советуют на силовую линию ставить

SergejK
nminnakh:

А нужно именно удалить?
На сколько помню, речь шла о том, чтобы заменить на конденсатор бОльшей емкости.

Это врядли, конденсатор для того и стоит, чтобы сглаживать и фильтровать импульсы, что в конце концов может сгладить короткие импульсы настолько, что они не будут распознаны вообще. В сигнальную цепь регуля обычно ставят резистор и конденсатор в виде простого ФНЧ. Так вот конденсатор лучше всего удалять вообще. А вот резисор лучше оставить. Плюс да, конденсатор, да побольше и лоу еср, на вход питания регуля.

Сергей_Уж
DieHertz:

Спасибо, я старался 😃 Это работает для большинства контроллеров на BLHeli_S.

Суперовая статья, я мог бы не потеть с переводом , а здесь спросить 😃 Сейчас у меня на 600 моторки чуть чихают, работа неровная. Как было у тебя до и после, исчезли срывы ?
( монтировка сдернуть кондюк рядом, руки чешутся 😃 )

DieHertz
Сергей_Уж:

Суперовая статья, я мог бы не потеть с переводом , а здесь спросить 😃 Сейчас у меня на 600 моторки чуть чихают, работа неровная. Как было у тебя до и после, исчезли срывы ?
( монтировка сдернуть кондюк рядом, руки чешутся 😃 )

На моих RS30A v2 моторы вообще не стартовали на DSHOT600, без конденсатора - всё гладко. Я только на стенде проверяю пока, нет возможности полетать.
Один человек в теме на RCG жаловался на небольшие неравномерности в звучании без конденсатора на DSHOT600 с этими же контроллерами, но это не последняя инфа 😃

Сергей_Уж
DieHertz:

Один человек в теме на RCG жаловался на небольшие неравномерности в звучании без конденсатора на DSHOT600 с этими же контроллерами, но это не последняя инфа

Да, я это читал. Такое Феликс лечит на кисах прошивкой. У меня в режиме висения на 600 короткие срывы которые ни на что не влияют ( с кондюком ), на 300 все ровно и четко. Наверное попробую убрать кондюки, отпишусь…

arb
DieHertz:

Я только на стенде проверяю пока, нет возможности полетать.

А осциллографом глянуть сигнал есть возможность?

DieHertz
arb:

А осциллографом глянуть сигнал есть возможность?

Нет.

Я бы не гнался за 600, пока BetaFlight не поддерживает 16/32КГц для PID-регулятора и гироскопа.
Разве что из спортивного интереса, другое дело - контроллеры, которые вообще DSHOT из коробки не тянут из-за частоты среза на уровне 40КГц.

arb
DieHertz:

Нет.

Жаль так можно было воочию глянуть как там режется.

DieHertz:

Это работает для большинства контроллеров на BLHeli_S.

Спасибо. Так и есть. 17 нога (Р0.5) приемник. Проверил на ЛБ30_S. Кондер стоит.

DieHertz:

Я бы не гнался за 600, …
Разве что из спортивного интереса,

Я пока больше чтобы разобраться что к чему. Вообще если посчитать цифры в разных направлениях, то интересно получается.
2000 шагов это 0,05% от полного диапазона стика. С такой точностью стик ручками не двинуть.
Частота цикла мультишот и Дшот600 порядка 33 - 35 кГц.
Частота сигнала (1 импульса) Дшот 600 около 0,6 МГц. А длина 0 - 1,6 МГц. Это уже не десятки кГц, соответственно ФНЧ нужен другой.