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

mil-lion

Я бы в протокол добавил бы бит четности, чтобы был контроль правильности дешифровки сигнала. А ещё лучше 3-4 бита на CRC.
Может так Борис и сделал, надо будет код посмотреть.

Сергей_Уж

Цитата от автора ( это проблемы и решения на сегодня )
в новой сегодняшней прошивке есть это

  • if there are more then 6% bad signals a second, it counts up now and if there was 10 seconds (could be single or in a row) it beeps 1x each second when the motor is stopped to show that there is a problem with too many false D shot signals
    и далее
    the KISSFC code simply does the normal outputs"1000-2000"-1000*2.047f for now. the KISS ESC’s read 0-47 as 0 and 48 as “1024” so they start spinning then (the new T5 version)
    im not sure what is better maybe we should simply vote what we prefer

so i give my vote for:
0-47 reserved for settings, motor start with 48 at 2.4% PWM (it should be low enogh) then at 2047 100% PWM
i think this is a good thing because then the crc is included and wrong bits cant set a setting.
Борис
Bf “test” code does the same at the moment. It simply outputs the 0-2000 in steps of 2. This is only because it is not finished and some other cleanup needs to be done to increase the resolution for motor output. The idea is to first make it work and than make it nice at the end.

But the idea was to use 1048-2047 for throttle. I am not sure how to deal with it internally in the ESC’s, but if you ask me you can already make it spin from 1048.

@felix
What do you think? Should we rescale from 1048 perhaps?
I think it’s a better idea as the values below that can have other functions. 48 = 1001, 49=1002 and 0 = 1000 (disarmed)
Value of 1 can be beeper etc.
Also preventing output below that would be a good idea I think?
автор
as no motor spins at 0% PWM and we need no margin to be save as there is no drift or jitter, i would say lets start the motor at 48 of the 2047. everything below (0-47) gets read as 0 (ESC armes as it is a valid signal) so then we can use 1-47 for settings.

Они еще до конца не решили в каких границах будет рабочий диапазон и как это все будет . Интересно следить как рождается новье 😃 Хотя посмотрел сегодня видео DuDlik (Михаил Королев) был удивлен, я всегда считал что кисс это быстро, но сегодня все поменялось, мне бы так и без Dshot хватило 😃

Сергей_Уж

update to T7

  • the FC FW now sends each Dshot signal twice, to ensure that the right signal can be read no matter of current spikes (thanks borisb for that idea )
  • the ESC uses now the full range of Dshot so 0-2000 (-24 as it starts the motor at 2,4%)

the GUI stays at T41 … there has nothing changed
i have tested it on some setups without any problems for now… but please, still be careful

Прошивка полетника теперь шлет ( повторяет ) каждый сигнал дважды, для уверенности что сигнал будет прочтен правильно даже несмотря на помехи ( идея Бориса )
ESC теперь использует полный диапазон значений от 0 - 2000 ( -24, пуск мотора происходит при величине 2,4% )
В графическом интерфейсе T41 ничего не поменялось. Автор протестировал несколько своих коптеров без единой проблемы, но все равно нужно быть осторожными.
Самой стабильной оказалась сборка T41 как показали тесты пользователей, поэтому автор вернулся снова к ней доработав и улучшив. Сама сборка
update to T7 находится на первой странице их форума
www.rcgroups.com/forums/showthread.php?t=2756129

Конфиги на которых автор тестировал прошивку
i took for testing:

my worst case copter:

  • some bad ZMR H quad clone
  • F40 (old ones 2204 2300kv)
  • DAL 5x4x3 probs
  • bad, loose wiring but sig GND connected

others:

  • krieger 5"

  • emax RS2205 2300KV

  • 5x4x3 HQ

  • good wiring (very less signal desyncs)

  • custom 4" X CF frame

  • emax RS2205 2600KV

  • 4x4x3 HQ

  • good wiring

custom 5" X CF frame

  • cobra 2204 2300KV
  • 5x4x4 HQ
  • very good wiring (prototype)
lokanaft

Чёт непонятно, тоже срывы у него там? И это на киссах с датчиком тока, который глушит плюс и не даёт проседать земле…

Сергей_Уж
lokanaft:

Чёт непонятно, тоже срывы у него там? И это на киссах с датчиком тока, который глушит плюс и не даёт проседать земле…

Было очень много ошибок в сигнале ( signal errors ) из за скачков тока , ошибка возникает из за the signal errors are still there on a bad wiring. Учимся хорошо паять…Но вот эта двойная посылка сигнала делает эту ошибку практически незаметной ( they are just almost not noticable… ). Борис пишет что избыточность это ключ к решению( это про повторы )Но , все равно проблем хватает, один пишет что уже с новой прошивкой на втором аке моторы в воздухе остановились.
Читаю как роман 😃 Хотелось бы что бы получилось и идея не сдохла…

lokanaft

Контакт он либо есть, либо его нет. Скорее под плохим он подразумевает отсутствие земли.

Сергей_Уж
lokanaft:

Контакт он либо есть, либо его нет. Скорее под плохим он подразумевает отсутствие земли.

Ну да, это две существующие неисправности в электронике, других нет “Контачит там где не нужно или не контачит там где нужно” 😃 И да когда плохая земля…

Mugz
Сергей_Уж:

И да когда плохая земля…

Вот кстати меня интересует этот вопрос. Стоит ли контур земли замыкать везде?

Н унапример земля от камеры идет на осд от осд до втх от втх до аккума, в это же время от аккума идет на бэк 5в от бэка на пк от пк идет только рх тх. Стоит ли мне землю от осд соеденить с полётником?

lokanaft

Если помех на видео нет, значит всё нормально.

Mugz
lokanaft:

Если помех на видео нет, значит всё нормально.

Помех нет. Но вот на входе питания сгорел коннектор отвечающий за землю.

Сергей_Уж

Testing out DShot 600 T7

Обновили
KISSFC-1.03-RC30-8-Dshot-T71
KISS24A_Dshot_T72_w_o_debug
Устранили ошибку остановки моторов
Update to FC T71 and ESC T72

on the FC there was a possible int overrun problem fixed which could be the reason for a motor stop

on the ESC’s the failure beep codes are more clear (if the ESC stops for a reason that is not disarm) also the debug version now counts all Dshot failures in the mah (consumption) output. to be more easy to see on the TX

Mugz

Выложили DShot для BLHeli_S

Dshot150 and Dshot300 are supported (as well as pwm, OS125, OS42 and MS).
Dshot600 is not supported, for two reasons. Most BLHeli_S ESCs have an input filter that is too slow. And the MCU is not fast enough (interrupt handling) to detect Dshot600.

Dshot150 и Dshot300 поддерживается (так же как pwm, OS125, OS42 и MS)
Dshot600 не поддерживается по двум причинам. Большинство BLHeli_S регуляторов имеют входной фильтр, который очень медленный. И MCU не достаточно быстрые (управление прерыванием???) для определения Dshot600

DuDlik
Mugz:

Dshot150 и Dshot300 поддерживается (так же как pwm, OS125, OS42 и MS)
Dshot600 не поддерживается по двум причинам. Большинство BLHeli_S регуляторов имеют входной фильтр, который очень медленный. И MCU не достаточно быстрые (управление прерыванием???) для определения Dshot600

А Betaflight еще нету же с поддержкой Dshot

Mugz
DuDlik:

А Betaflight еще нету же с поддержкой Dshot

Видимо для тех кто летает KISS FC + BLHELI_S

SergejK

Думаю зря они погнались за большим разрешением. 500, максимум 1000 шагов газа было бы за глаза. И позволило бы с меньшими ограничениями и проблемами портировать на большее количество железа. Толку то от высокой точности и скорости, если изза этого часть пакетов вообще не будет доходить. Кроме того 32КГц это уже больше, чем частота силовых импульсов подаваемых регулем непосредстсвенно на мотор, что лишает ее на мой взгляд вообще какого либо смысла.

lokanaft

Это всяко лучше, чем мало пакетов с низкой точностью с такими же потерями)

Я смотрю там в этой теме кондёров уже хоть отсыпай, то есть никакая помехоустойчивость не пришла.

arb
SergejK:

Думаю зря они погнались за большим разрешением. 500, максимум 1000 шагов газа было бы за глаза.

1000 шагов это 10 бит (10 импульсов), 2000 шагов - 11 бит. Как раз здесь большой разницы нет.

SergejK:

Толку то от высокой … скорости, если из-за этого часть пакетов вообще не будет доходить.

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

Mugz
arb:

Следующим просто введут цифровой протокол по 2 проводам (плюс земля) и прощай старые реги

Я за бидирекшионал

SergejK
lokanaft:

Это всяко лучше, чем мало пакетов с низкой точностью с такими же потерями

Это не два возможных варианта. Уменьшая битрейт за счет меньшей точности и частоты получается более высокая надежность передачи.

arb:

1000 шагов это 10 бит (10 импульсов), 2000 шагов - 11 бит. Как раз здесь большой разницы нет.

На мой взгляд 500 шагов было бы за глаза и уши. А это уже почти 20% разницы в ширине импульса и, что немаловажно - меньшее количество самих импульсов при передаче. Плюс ограничившись разумной частотой можно было бы иметь меньше гем**роя в разработке, отладке и портированию на имеющееся железо.