Прошивка ATmega - MultiWii_FAQ

Перейти к контенту

Главное меню:

Прошивка ATmega

Прошивка ESC

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

Автор статьи; Егор Серов (gorbln)
   

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

Все представленные ссылки и торговые наименования не являются рекламой, вся информация, представленная в записи, мне не принадлежит, и собрана из открытых источников, в первую очередь http://forum.rcdesign.ru

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


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


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


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

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

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

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





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




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

Есть, например, и такой, экзотический, и на мой взгляд очень красивый способ подключения:




Также, для подключения существуют т.н. 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.
Выбираем прошивку по таблице в соответствии с маркой регулятора и установленными на нём силовыми ключами.

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

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

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

Известные траблы
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 ресетит его, а после такого ресета автором прошивки запланирована бесконечная сирена (до следующего ресета).



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

 
 
Назад к содержимому | Назад к главному меню