Обсуждение и перепрошивка регуляторов (ESC) прошивками SimonK/BLHeli
Все, что вы делаете - на свой страх и риск. Кстати, 495Гц PWM…
- После прошивки к ESC подключить слабый аккумулятор через предохранитель. Иначе брызги жидкой меди попадут в лицо.
- Во время прошивки никакие провода ESC не должны замыкаться (3 провода к мотору, 2 питания - болтаются в воздухе, на них есть потенциал).
- Выбор прошивки целиком определяется типом транзисторов, которые стоят в регуляторе. А НЕ НАЗВАНИЕМ РЕГУЛЯТОРА ИЗ СПИСКА . Под одним и тем же названием выпускаются регуляторы с разной схемотехникой. Если прошивка не предназначена для данной схемы, вас ждет выгорание ключей.
Старые ESC Mystery 20A имеют P и N fets (4407 +4420 или 4407 + IRF P033A). P-FET управляются тремя NPN-транзисторами, а N-FET управляются напрямую. github.com/sim-/tgy - тут подробнее написано.
Помимо этого варианта бывает множество других – использование только N-FET, с инвертирование и т.д. Всегда читаем ***.bin файл, который лежит рядом с ***.hex прошивкой.
Общее представление о процессе даст тема www.rcgroups.com/forums/showthread.php?t=1513678
-----------------------------
Итак, прошиваем Mystery 20A ESC P и N fets (4407 +4420 или 4407 + IRF P033A). P-FET управляются тремя NPN-транзисторами, а N-FET напрямую. Новые партии могут иметь только N-fet. Им нужна другая прошивка! Какая именно - не знаю.
-
Вскрываем регулятор.
Подпаиваем проводки. 0v = GND, +5V. – сюда паяем 2 проводка, через которые подаем +5В и землю. Естественно, у программатора и контроллера должна быть общая земля. Сам ESC НЕ подключаем к аккумулятору! Питание +5В, которое идет по проводку, достаточно для прошивки. Не забываем про MISO MOSI RST SCK =)
-
Я использую AVRDUDE, в качестве программатора – Ардуино Bit-Bang. www.freeduino.ru/arduino/isp.html
-
github.com/sim-/tgy/downloads - качаем свежий архив с прошивками, берем из него bs.hex и bs.bin, бросаем в папку, где у нас AVRDUDE.
-
В консоли пишем cd disc:/path/to/avrdude В этой папке лежит наша прошивка bs.hex – именно она нужна для нашего контроллера. С другими вариантами он сгорает.
-
В консоли пишем: avrdude -C avrdude.conf -p m8 -c diecimila -P ft0 -U flash:r:mys20.hex:i
Так мы скачиваем оригинальную прошивку в новый файл mys20.hex – вдруг пригодится.
В консоли пишем: avrdude -C avrdude.conf -p m8 -c diecimila -P ft0 -U lfuse:r:loworig.hex:h -U hfuse:r:highorig.hex:h так мы скачиваем оригинальные фьюзы в loworig.hex и highorig.hex – вдруг пригодится.
Если у вас не Бит_бэнг программатор на базе Ардуино, то директивы «avrdude.conf -p m8 -c diecimila -P ft0» у вас будет выглядеть иначе.
- Заливаем новую прошивку bs.hex (файлы bs.hex и bs.bin) лежат в папке с AVRDUDE.
avrdude -C avrdude.conf -p m8 -c diecimila -P ft0 -U flash:w:bs.hex
c:\usr\avrdude>avrdude -C avrdude.conf -p m8 -c diecimila -P ft0 -U flash:w:bs.hex
avrdude: BitBang OK
avrdude: pin assign miso 3 sck 5 mosi 6 reset 7
avrdude: drain OK
ft245r: bitclk 230400 -> ft baud 115200
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9307
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
ft245r: bitclk 230400 -> ft baud 115200
avrdude: reading input file "bs.hex"
avrdude: input file bs.hex auto detected as Intel Hex
avrdude: writing flash (1730 bytes):
Writing | ################################################## | 100% 1.43s
avrdude: 1730 bytes of flash written
avrdude: verifying flash memory against bs.hex:
avrdude: load data flash data from input file bs.hex:
avrdude: input file bs.hex auto detected as Intel Hex
avrdude: input file bs.hex contains 1730 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.43s
avrdude: verifying ...
avrdude: 1730 bytes of flash verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.
- Теперь фьюзы, рекомендованные в bs.bin для нашего контроллера с внешним кварцем.
avrdude -C avrdude.conf -p m8 -c diecimila -P ft0 -U lfuse:w:0x3f:m -U hfuse:w:0xd7:m
c:\usr\avrdude>avrdude -C avrdude.conf -p m8 -c diecimila -P ft0 -U lfuse:w:0x3f
:m -U hfuse:w:0xd7:m
avrdude: BitBang OK
avrdude: pin assign miso 3 sck 5 mosi 6 reset 7
avrdude: drain OK
ft245r: bitclk 230400 -> ft baud 115200
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e9307
avrdude: reading input file "0x3f"
avrdude: writing lfuse (1 bytes):
Writing | ################################################## | 100% 0.05s
avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0x3f:
avrdude: load data lfuse data from input file 0x3f:
avrdude: input file 0x3f contains 1 bytes
avrdude: reading on-chip lfuse data:
Reading | ################################################## | 100% 0.02s
avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xd7"
avrdude: writing hfuse (1 bytes):
Writing | ################################################## | 100% 0.05s
avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xd7:
avrdude: load data hfuse data from input file 0xd7:
avrdude: input file 0xd7 contains 1 bytes
avrdude: reading on-chip hfuse data:
Reading | ################################################## | 100% 0.02s
avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
-
Готово! Отпаиваем проводки, подключаем мотор и слабый аккумулятор через предохранитель. Все работает.
-
Если возникают проблемы, то заливаем эту же прошивку bs.hex, а фьюзы ставим родные: avrdude -C avrdude.conf -p m8 -c diecimila -P ft0 -U lfuse:w:0x2e:m -U hfuse:w:0xcf:m
-
В любом случаем, фьюзы указывают на внешний кварцевый генератор 16МГц. Его наличие на плате – огромный плюс. Некоторые модели регуляторов не имеют его и используют внутренний таймер для тактирования, у них от этого плавает частота.
-
Я сравнивал отклик оригинального регулятора и прошитого. Небо и земля. Прошитый регулятор мгновенно реагирует на изменение задания, а непрошитый сглаживает, не дает быстро “играть” оборотами.
Мы получили:
16MHz operation on most boards
16-bit output PWM with full clock rate resolution (~18kHz PWM with a POWER_RANGE of 800 steps) было 80-100 шагов
24-bit timing and PPM pulse tracking at full clock rate resolution
ICP-based pulse time recording (on supported hardware) for zero throttle jitter
Immediate PPM input to PWM output for best possible multicopter response (eg: ideal for tricopters, quadcopters, etc., but NOT where where slow-start or really any significant current limiting is needed!)
Accepts 495Hz PPM update rates (minimum ~5microseconds PPM low time)
Optimized interrupt code (very low minimum PWM and reduced full throttle bump, and should work beyond 120,000 RPM
Configurable board pin assignments by include file
Improved startup (though heavy hard drives are still a bit dodgy - suggestions/patches welcome!)
Forward and reverse commutation supported, including RC-car style reverse-neutral-forward PPM ranges, with optional braking
Подключил ESC к платке с Мультивии. Снимал на телефон, поэтому присутствует рассинхронизация звука и видео. В реальности после щелчка по плате мгновенно возникает отклик мотора. Если исполнять дробь, то мотор будет подыгрывать в такт, уловить запаздывание не могу.
Круто!
У меня есть читире Mystery 20A, стоят на коптере с СС, еще шесть едут. Но прошивать я наверное не решусь их, хотя результаты конечно впечатляют!
А что если просто со стандартной прошивкой перевести их на 16кHz частоты ШИМ, прошивка вроде бы позволяет? Будет лучше? Я как-то не пробовал, опасался…Надо попробовать.
А что если просто со стандартной прошивкой перевести их на 16кHz частоты ШИМ, прошивка вроде бы позволяет?
Я сразу перевел с пульта. Трели пришлось долго слушать. У меня на 8кГц ШИМ DT750 иногда барахлил (сказать уверенно, что именно 8кгц ШИМ так влияло - не могу).
В новых Мистери могут быть только N-транзисторы, для них другую прошивку надо - bs_nfet\что-то еще(?)
еще шесть едут.
Вот эти регули за 10баксов с бесплатной доставкой. www.rctimer.com/index.php?gOo=goods_details.dwt&go…
Быстродействие не хуже чем на вышеприведенном видео.
Смотрите на 1:06 быстрое постукивание пальцами
www.youtube.com/watch?v=XTn6YBlQ2PQ
Позволяют даже на КУКе зависать без медленного крена, если выровнять горизонтально и бросить стики. Казалось как буд то с горизонтом плата.
Позволяют даже на КУКе зависать без медленного крена, если выровнять горизонтально и бросить стики.
У меня на КУКе все регули себя так вели, в том числе и те, что вы посоветовали (их есть у меня 😉 ) Вот пощелкивание ключей на Рцтамовских мне совсем не нравится, мистери в этом отношении совсем тихие, и надежнее (ИМХО).
зрительно прошитые лучше реагируют 😃
У меня на КУКе все регули себя так вели, в том числе и те, что вы посоветовали (их есть у меня 😉 ) .
Я не видел ниодного видео на форуме, где бы КУК зависал, на всех видео он куда то сваливается, его подлавливают. Это не упрек, просто действительно не видел. А по поводу все регули - не знаю какие у вас все.Я сравнивал несколько типов регулей на КУКе, у них задержка очень отличается и поведение в воздухе. Особенно хорошо заметно на мелких квадриках. У Регулей с большей задержкой раскачка начиналась при меньшей чувствителньости, за счет запаздывания сигнала и приходилось откручивать чувствительность. РЦ Таймеровские оказались самыми быстрыми. Хотелось бы сравнить конечно с ESC Mystery 20A
Вот пощелкивание ключей на Рцтамовских мне совсем не нравится, мистери в этом отношении совсем тихие, и надежнее (ИМХО).
Пощелкивания есть только без нагрузки, на холостом ходу, с пропами ничего не щелкает. Только щелкают не ключи, а возможно сбавается синхронизация на холостых оборотах. Легкая нагрузка даже небольшим пропом все убирает. Ну и щелкание надежность не определяет.
зрительно прошитые лучше реагируют 😃
ПРосто обороты выше по этому возможно кажется, что лучше. Я к плате прикладывал телефон с виброй включенной, так моторы тоже “вибрировали”, только не заснял.
З.Ы. Я не говорю что прошивать не стоит! Наоборот, стоит заморочиться!
регули с P-канальными ключами впринцепе гадость , ибо нормальных P-канальных ключей (с параметрами как у топовых N-канальных) просто нет в природе … и управляются они через попенгаген …
нужно в какойто теме собирать информацию о регулях на только N-канальных ключах и атмегах (ато в последнее время стали часто попадаться регули с х51 ядром) …
где продаются , как называются , версиярегуля ,внешний вид (фото) , фото самой платы ну и соответственно кним схемы и прошивки …
при наличии схемы (которую впринцепе можно и срисовать с регуля) поправить прошивку под него не составит большого труда …
всвязи с отказом от I2C для управления регулями впользу PWM процесс переделки сильно упростился (ненужно освобождать ноги I2C интерфейса , резать дорожки и паять перемычки ) …
ктомуже после выхода спецрегулей на stm32 , будет возможность использовать регули вкачестве доноров N-канальных транзисторов и их драйверов для самодельных плат …
simonk
Yes, either bs.inc or bs_nfet.inc for the Mystery boards. Some of the bigger/newer ones are all-nfet but with gate drivers and went back to the original non-inverted pinout, but that small one probably doesn’t have gate drivers or all-nfets and is probably bs.inc. The easiest way to find out is to check while the old firmware is running a motor. Every ESC I’ve seen still PWMs the low side and leaves the high side on for the whole commutation, so you can easily identify the pins with an oscilloscope. The pins that PWM very fast in bursts are the "nfet"s (low side), and the pins that stay on for 1/3rd of the cycle are the "pfet"s (high side). If they stay high when off and just go low for 1/3rd, they’re inverted. Likewise with the low side. I haven’t seen any boards yet that invert both sides (likely because they’d need external pullups to avoid explosions when the MCU is not running ). Anyway, this seems to be the fastest way to get the right pinout and inversion state, and the right sense lines if not the correct order of them.
I’d appreciate it if anybody could think of a way to autodetect the inversion and/or board pinout. A build that could just autodetect the board would be awesome, since the rest of the code is already dynamic enough that it could work without much overhead. There are some pulled-down/pulled-up pins on some boards that can be used as hints, but short of actually shorting the output FETs and checking the MCUCSR for a reset by brownout, I can’t think of a good way of autodetecting the inversion.
Братцы, а какую прошивку нужно для вот таких регуляторов? Подскажите, пожалуйста 😉 Hobbyking 40A
И вот эти бы - Plush 30A
Первые в дороге, а вот Плюши на Атмеге, могу сделать снимок платы с обоих сторон (завтра выложу).
На github.com появилась новая прошивка с калибровкой газа.
И вот эти бы - Plush 30A
А зачем их прошивать? (у меня такие)… вроде все работает и 400Hz PWM то же.
вроде все работает и 400Hz PWM то же
Прошивают ведь не для ПВМ, прошивают чтобы отклик мотора на управляющее воздействие было минимальным по времени. 😉
У стоковых ПЛюшей из-за фильтра - порядка 127мс задержка.
На github.com появилась новая прошивка с калибровкой газа.
да вроде и была она , эта калибровка, вот только
Halve minimum throttle range with brmi->brne in puls_find_multiplicand. [Simon Kirby] добавлено 13часов назад. чего это дает?.
у меня зашиты мистери 12А p\n fet
прошивал месяца полтора назад
Прошивают ведь не для ПВМ, прошивают чтобы отклик мотора на управляющее воздействие было минимальным по времени.
У стоковых ПЛюшей из-за фильтра - порядка 127мс задержка.
- сглаживающий фильтр на входе удаляется. Быстрое изменение задания на входе якобы нештатная ситуация, а в плане управления коптером - рабочий режим.
новая прошивка с калибровкой газа
По-моему, для коптеров отлично подходит вшитая намертво калибровка 1000_2000. Тогда никакие сигналы с мозгов не собьют калибровку.
Странно, подключил прошитые ESC Mystery к Мегапирату. Они не работают. Совсем. 😃 Измерил PWM на пинах 2,3,5,6 - 240Hz.
В то же время, на Мегапирате работают непрошитые SS18A, туповаты, но мотор крутят.
Подцепил эти же ESC к МультиВии - все отлично запустилось! 490Hz PWM на управляющих пинах. Летает отлично.
Прошитые ESC Mystery также без проблем заводятся напрямую с приемника PWM 50Hz.