Перепрошивка ESC для мультироторов

В этой записи я постараюсь собрать полезную информацию по теме перепрошивки регуляторов оборотов (ESC) для работы на мультироторах.

Для чего это нужно:
Обычные регуляторы имеют внутри программный и аппаратный фильтры, сглаживающий реакцию на резкие скачки управляющего воздействия. Применительно к моделям самолётов и вертолётов — всё правильно, резко изменять газ совершенно ни к чему. Однако, принцип стабилизации мультироторных аппаратов основан на изменении тяги каждого ротора в отдельности. Чем более отзывчив будет регулятор, тем лучше будет стабилизация, меньше колебания, и т.п. Хорошо иллюстрирует это следующее видео от Дмитрия piranha:

И вот ещё один показательный пример.
Ещё один минус «родных» прошивок регуляторов — низкое разрешение. Т.е. регулятор весь диапазон оборотов проходит за, к примеру, 100 шагов. Кастомные прошивки обеспечивают большее разрешение.
Стоит отметить, что после перепрошивки регулятор теряет бОльшую часть своих функций. Не надо спрашивать — а как настроить отсечку, или — а где настраивается софтстарт. Этих функций просто нет. Прошитые регуляторы предназначены исключительно для работы на мультироторах. Исключением можно считать прошивку BLHeli — там пока что присутствуют фишки «фабричных» регуляторов.

Что для этого нужно:
— Собственно сам регулятор. Типы регуляторов, поддающиеся перепрошивке, перечислены в таблице по ссылке
Сайт опенпилотов периодически перестаёт показывать таблицу, поэтому владельцы аккаунта gmail могут посмотреть таблицу отдельно.
Стоит отметить, что в последнее время появилась тенденция делать регуляторы на чипах Silabs. Перешивать их геморройнее, однако, опыт в этом направлении уже какой-никакой наработан. Однако, предпочтение при прочих равных я отдаю проверенным регуляторам HK Blueseries / HK SuperSimple / Mystery Blueseries. Регуляторы HK SuperSimple, правда, сильно ругают за то, что в них стоят какие-то отстойные транзисторы, которые имеют свойство не успевать закрываться, что приводит к КЗ в регуляторе и выгоранию его нахрен. Саймон Кирби (автор прошивки SimonK) рекомендует избегать этих регуляторов. По своему опыту могу сказать — прошивал и использовал больше десятка суперсимплов — ни один не сбойнул и уж тем более, не сгорел.
УВАГА!!! У ХК была одно время замечена тенденция лочить чипы регуляторов при помощи установки фьюза RSTDISBL. Такие чипы не поддаются ISP программированию! Есть мнение, что это была чисто маркетинговая фишка в поддержку их новой серии регов для мультироторов (довольно невнятной, надо сказать). В качестве решения — довольно «громоздкая» процедура — выпаять родной чип с платы и заменить его на новый. Либо перепрограммировать его высоковольтным программатором, либо сбросить настройки фьюзов фьюзбитдоктором. К сожалению, по уточнённой информации, чтобы «вылечить» чип битдоктором, его необходимо выпаять. В середине 2013 года заказывал несколько разных регуляторов — залоченных среди них не было. Так что можно считать это предупреждение утратившим силу.
— ISP программатор для чипов Atmel Atmega. При наличии в компьютере LPT порта — собирается из 5 проводков. Сам таким пользуюсь по сей день, для перепрошивок «изредка» — самое оно (хотя не агитирую никого за этот способ — спалить LPT и регуль можно на раз). Также есть недорогие программаторы на чипах Atmel и FTDI
— Компьютер (ну, это вполне очевидно)
— Крайне желателен блок питания на напряжение 12 вольт и ток не более 1-2 ампер (желательно с электронной защитой от превышения тока). От него будем питать регулятор после прошивки во время первых тестовых запусков. Дело в том, что если выбрать неправильную прошивку, можно спалить ключи в регуляторе. Если же ток будет ограничен — худа не произойдёт, блок питания уйдёт в отсечку, намекая, что что-то сделано не так. Если блока питания нет, рекомендуют питать регулятор от аккумулятора, включая последовательно с ним лампу на 12 вольт и 20-50 ватт. Если регулятор замкнётся, лампа загорится на всю мощь, индицируя косяк.
Стоит заметить, при использовании лампы возможна ситуация, когда движок после перепрошивки медленно раскручивается нормально, а резко — начинает дёргаться и лампа вспыхивает. Это нормально.

Процесс прошивки
В данный момент прошивку можно залить двумя способами: через ISP и через сигнальный кабель самого регулятора (который с 3 проводами, он втыкается в приёмник). Однако, чтобы иметь возможность прошиваться через сигнальный провод, изначально бутлоадер всё равно придётся заливать через ISP, так что от этого неудобного способа никуда не денешься. Поэтому он и будет рассмотрен в первую очередь.

Процесс прошивки через сигнальный кабель с применением клона Turnigy USB Linker-а бегло рассмотрен в этой моей записи.

Железо
Первым делом надо вскрыть регулятор. Для этого разрезаем термоусадку по торцу регуля, стараясь не задеть элементы под ней. Снимаем термоусадку, отлепляем радиатор с ключей.
Смотрим на ключи, определяем их тип. Если все транзисторы с одной маркировкой, то регуль т.н. N-Fet only. Если с разной — P+N Fet. Эта информация пригодится при выборе прошивки.

У регуляторов HK Blueseries, HK F-series и Mystery Blueseries крайне желательно удалить BEMF конденсаторы в цепях схемы компаратора. Либо заменить их на 30-40 pF. Дополнительная информация начиная с этого поста и в течение 2 страниц далее. Выжимка для разных вариантов регулей здесь.

Теперь надо найти на плате контактные площадки для программирования. Очень много вариантов разных регулей находится здесь . В особо удачных случаях площадки расположены с торца платы в ряд:

Если площадок нет, либо они расположены в непонятном порядке — руководствуемся распиновкой процессора, чтобы подключиться к ногам MOSI, MISO, SCK, RST, GND, Vcc.

Для упрощения процесса подключения к процессору есть специальная коронка — суперпупер кабель . На мой взгляд, необоснованно дорого, но очень удобно.
Есть вариант изготовления коронки самостоятельно из полимерной глины.

Описано здесь. Мне кажется, наиболее хорошо этот вариант будет работать в соединении с pogo pin-ами в качестве контактов — практически, клон 19-долларовой коронки получится =)
Есть, например, и такой, экзотический, и на мой взгляд очень красивый способ подключения:

Я сейчас полностью перешёл именно на такой способ подключения.
На сайте немецких хоббистов увидел такую реализацию этого способа — немцы называют его Voodoo . Шикарно.

Денис Ткаченко сделал вариант способа «вуду» из фанеры. Получилось красиво, удобно и технологично. Рекомендую!
Также, для подключения существуют т.н. pogo pins, это такие подпружиненные иголки.

Надо сказать — иголки бывают весьма тонкие. Вот Р50:

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

Прошивка
Сейчас существует 3 варианта прошивок для мультироторных аппаратов:
1) Прошивка от Саймона Кирби aka SimonK. Она ещё называется RapidESC. Появилась первой и является довольно популярной. Поддерживается загрузка через сигнальный кабель при помощилинкера от ХК (можно сделать его аналог из ардуинки). Поддерживается реверс, т.е. «автомобильный регулятор», где нулевые обороты посередине диапазона. Только придётся компилировать такую прошивку самостоятельно. Получить готовые откомпилированные файлы для заливки, а также ознакомится с исходниками можно на https://github.com/sim-/tgy. Бывают проблемы с нахождением раздела «загрузки» на этом сайте — вот ссылка.
2) Прошивка от Дмитрия Каюкова aka ziss_dm . Называется Wii-ESC. Также поддерживает загрузку через сигнальный кабель. Имеет важную функцию — восстанавливает синхронизацию при её срыве, как утверждает автор, за 1/4 оборота. Получить готовые откомпилированные файлы для заливки, а также ознакомится с исходниками можно на http://code.google.com/p/wii-esc/

3) Для регуляторов, построенных на чипе Silabs, существует вариант прошивки BLHeli. Процесс прошивки весьма подробно и с картинками описан вот здесь . За описалово респект тов. JustACat-у. Также эта прошивка доступна для регуляторов на чипах Atmel, однако, не распространена.

Прошивки компилируются под разные частоты ШИМ. Бывают прошивки с ШИМом 16 КГц (это «стандартный» вариант) и прошивки с ШИМом 8 КГц. Пониженная частота ШИМ полезна, если часто срывается синхронизация, или горят без видимой причины (работа на пределе тока и тп) ключи регулятора. Также есть информация, что при пониженной частоте ШИМ меньше греются регуляторы и двигатели. В принципе, для движков с достаточно низким KV (ну, скажем, ниже 2000) — можно смело лить прошивку 8 КГц и не париться. Особенно это полезно для регулей старой конструкции с P+N Fet-ами (Р-канальные полевики там не фонтан). Хотя мои суперсимплы замечательно работают на 16-килогерцовой RapidESC. ziss_dm упомянул, что частота ШИМ 16 КГц сделана для поддержки высокооборотистых инраннеров для машинок.
Недавно в дневнике у одного пользователя обнаружил такую формулу для определения подходящей частоты PWM:
Частота PWM = KV мотора * количество полей мотора * номинальное напряжение / 20

Скачиваем архив с прошивками. Выбор прошивки — на ваше усмотрение. Самая фичастая сейчас прошивка — это BLHeli, самая стабильная — похоже, WiiESC, а самая распространённая — точно RapidESC.
Стоит отметить, что поддержка WiiESC, по видимому, прекращена. Последний коммит прошивки был в феврале 2013 года. Поэтому сейчас имеет смысл заливать SimonK, поддержка которого не прекращается.
Выбираем прошивку по таблице в соответствии с маркой регулятора и установленными на нём силовыми ключами.

Подключаем программатор к регулятору. Вариантов — море. Припаяться и вывести в торец регуля разъём, прижать провода к площадкам, воткнуть pogo pin-ы…

Далее. Заливаем прошивку в регулятор! Именно сейчас он должен быть или без питания (если питание есть у нас на разъёме программатора) — или питаться через слабый блок питания (только в том случае, если питания на разъёме у нас нет).
Для заливки есть программа avrdude. Сам я заливал свои Меги именно ей. Но интерфейс у неё оставляет желать лучшего (DOS, чёрной пеленой экран заполнил, чистый dos…). Есть графические оболочки к «дудке» — например, SinaProg . По ссылке приведено также и описание, как с софтиной работать.
Итак, запускаем софтинку.
Выбираем тип программатора. 5 проводков — это STK200, остальное вполне очевидно. Открываем файл с прошивкой, ударяем в шаманский бубен, и нажимаем кнопку «Program» в панельке «Flash».
Если это требуется (например, в прошивке WiiESC так программируется калибровка) — записываем также файлик с настройками в EEPROM, щёлкнув по соответствующей кнопочке в интерфейсе, и выбрав нужный файлик.
Всё! Ваш регулятор никогда не станет прежним =).

Сейчас для прошивки регуляторов удобно ещё использовать программу KKMulticopter flash tool от товарища LazyZero. Чтобы софтина работала, ей нужна установленная Java. Преимущество софтины — сама устанавливает какие нужно фьюзы, имеет внутри себя готовый архив с прошивками, можно подкачивать свежую прошивку. Поддерживает RapidESC и WiiESC. (хотя, wiiesc я бы рекомендовал заливать родной софтиной-заливальщиком). Пример пользования KKMulticopterFlashTool-ом можно посмотреть здесь.

Проверка.
Для проверки — подключить двигатель к регулю, подключить сам регуль к сервотестеру или приёмнику, подать питание на регуль через маломощный блок питания либо от аккума через лампочку.
Если регулятор заливисто пискнул движком, и из него при этом всём не повалил приятный синенький дымок, блок питания не ушёл в защиту, лампочка не загорелась на всю дурь — всё в порядке, вы прошили регулятор оборотов кастомной прошивкой! Мои поздравления.
Осталось откалибровать регуль (если в прошивке не выставлены жёсткие лимиты уровней сигнала, или прошит файлик с настройками), после чего протестировать работоспособность регуля безо всяких ограничителей.

Если вы ошиблись с направлением и не хотите перепаивать провода — специально для вас тов.Prikupets замутил мини-гайд по самостоятельной сборке реверснутой прошивки SimonK. Плюс, в KKMulticopterFlashTool для всех прошивок есть «нормальная» и «реверснутая» версии.

Известные траблы
EugeneV сообщил о такой трабле:
На квадрокоптере стоят перепрошитые регуляторы mystery 20a все ключи n-fet. Прошивка bs_nfet от simonk.
Дома и в гараже всё нормально работает. На улице, когда холодно, регулятор теряет синхронизацию и «ресетится». Если его несколько раз завести, подержать на малом газу то он как бы «прогревается» и начинает работать устойчиво. Такой же эффект, если его погреть рукой.
Несколько раз было, что регулятор после остановки начинал пищать как сирена (понятно, что физически пищит двигатель).
Такая же ситуация (звук сирены) была пару раз с несколькими регуляторами сразу после включения питания. После выключения/включения питания (порой несколько раз) регуляторы всё-таки начинают работать, но не так, что сразу все, а по одному, по два приходят в чувство.
Были прошиты фьюзы: -U lfuse:w:0x3f:m -U hfuse:w:0xd7:M (это рекомендованные для прошивки в bs_nfet.inc). В фабричной прошивке были: -U lfuse:w:0x2e:m -U hfuse:w:0xcf:M

В итоге выяснилось, что дело было во фьюзах:
Прошил заводские и регулятор в охлажденном состоянии начал работать, даже после холодильника!
Фьюз CKOPT в hfuse отвечает за энергопотребление/помехоустойчивость. В рекомендованных (из bs_nfet.inc) его нет. Т.е. процессор меньше жрёт, но также и менее помехоустойчив, т.к. на генератор подается пониженное напряжение. И, видимо, термостабильность из-за этого тоже снижается. Происходит срыв генерации, процессор зависает, watchdog ресетит его, а после такого ресета автором прошивки запланирована бесконечная сирена (до следующего ресета).

Особенности прошивки конкретных экземпляров регуляторов
palikar купил регуляторы Hobbywing Skywalker 20A, которые оказались подделками. Есть информация, что они должны прошиваться прошивкой TGY.
Алексей Гореликов успешно прошил старые регуляторы Jeti JES-18.

Самостоятельная сборка прошивки SimonK
Периодически возникают вопросы — как собрать прошивку из исходников?
Григорий rinatka7 подогнал неплохой мини-гайд на эту тему:

Скачал зип архив вот отсюда — http://lunarflow.com/index.php?topic=7.0
Скачал свежие исходники СимонК с гитхаба.
Прим. {gorbln}: По ссылке доступны релизные версии исходников (чтобы не тупить, а брать гарантированно рабочее)
Исходники положил в D://SimonK
Разархивировал зип архив с двумя файлами(avra.exe и MakeHexFiles.bat) тоже в папку D://SimonK.
В исходниках нашел файл tgy.asm, открыл его блокнотом!
(далее — специфика именно для задачи Григория — сборка AFRO прошивки с разными Motor_ID)
Нашел упоминание (.equ MOTOR_ID = 1)
Поменял Motor_id с 1го по 6й.
Так же на всякий случай поменял реверс моторов.(MOTOR_REVERSE = 0 или MOTOR_REVERSE = 1)

После того как сохранил изменения в файле tgy.asm, через командную строку из папки D://SimonK запускал батник с параметрам MakeHexFiles afro_nfet
В итоге у меня получилось 6 хексов с одним направлением и 6 хексов с обратным движением моторов!

Видео про прошивку регуляторов при помощи KKMulticopterFlashTool:

Большое тестирование прошивок:

Данный мануал, конечно, не претендует на истину в последней инстанции, и, наверное, содержит какие-нибудь мелкие косяки. Обо всех замечаниях прошу сообщать мне в личку, буду стараться всё оперативно исправлять.

По теме прошивки регуляторов — полезно ознакомиться со ссылками:
Прошивка регуляторов Mystery прошивкой RapidESC
Вики проекта RapidESC, краткое описание и таблица совместимых регулей
Обширная тема, посвящённая перепрошивке регуляторов прошивкой RapidESC
Удаляем BEMF-конденсаторы
Прошивка регуляторов через Turnigy USB Linker
Прошивка регулятора HK MultiStar 15A прошивкой wii-esc (изначально такой возможности нет)

Прошивка от Саймона Кирби
Прошивка от Дмитрия Каюкова
Прошивка BLHeli

Ваш комментарий будет первым

Добавить комментарий