RSS лента

{gorbln}

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

Рейтинг: 4.91. Голосов: 11.
27.09.2012 в 18:05 (65135 Показов)
В этой записи я постараюсь собрать полезную информацию по теме перепрошивки регуляторов оборотов (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

P.S. Вопросы, требующие быстрого ответа, лучше направлять мне в личку, а не постить в комментарии, ибо оповещение о новых комментариях у меня не работает

Обновлено 22.08.2015 в 20:14 [ARG:5 UNDEFINED]

Метки: blheli, rapidesc, wiiesc
Категории
Без категории

Комментарии

  1. Аватар для {gorbln}
    И то и другое дохнет через год. К сожалению, не вариант
  2. Аватар для 5yoda5
    Яндекс.диск?
  3. Аватар для {gorbln}
    нет. Он не даёт ссылку на изображение и вообще отстой - работает через flash.
    Вот пример:

    Как видим - картинки нету.
  4. Аватар для 5yoda5
    Тогда может зафанатеть по flikr ?
  5. Аватар для Иван
    проще свой хостинг намутить?
  6. Аватар для {gorbln}
    нееее.. Свой хостинг - эт для фанатов. Да и желания покупать имя или держать вечно включенный сервер - никакого.
    Фликер - посмотрю, спасибо.
  7. Аватар для {gorbln}
    Удивительное рядом. Всё как я хотел предоставляет habrastorage.
  8. Аватар для Leximy
    Коллеги, пытаюсь найти информацию по BEMF-конденсаторам на Multistar 30A нового типа, но ничего не получается. Никто не сталкивался с вопросом их удаления на указанных регулях?
  9. Аватар для {gorbln}
    Народ! Вопрос. Может быть, кто-нибудь, сохранял эту запись до того, как картинки пропали? Просто я у себя картинки, похоже, потерял. Если у кого-нибудь есть - закиньте мне архивчик с картинками, пожалуйста?
  10. Аватар для Re-Loader
    Я вроде нормально пользуюсь яндекс.диском для целей хранения картинок и файлов . И яндекс.фотки тоже подходили. Раньше еще photofile.ru пользовал, пока его qip не испоганил(хотя для нужд форумов он вроде и щас подходит, и живет уже много лет
  11. Аватар для STRIMSS
    а нельзя ли заливать прошивку через обычный ftdi по сигнальному проводу?
  12. Аватар для Re-Loader
    мне тоже интересно. регули афро 30а
  13. Аватар для Иван
    ссыль на регули можно?
  14. Аватар для bb_my_friends
    Добрый день, возможно прошить ZTW Spider 30A После установки данных регулей (Naza, SunnySky x4108s 380kv, MultiStar 6s 5200mah) коптер неадекватен =\ может кто-то помочь?
  15. Аватар для targetorsk
    Интересно а можно отключить калибровку регуля при включении ? Как ? в Wii-Esc в конфигураторе есть галочка - включить калиьбровку, но ее ликвидация ни к чему не приводит как была калибровка так и остается.

    Т.е. надо чтобы при подаче питания вне зависимости от положения газа ESC сразу крутил двигатель.
  16. Аватар для {gorbln}
    Сходу ничего не нашёл в прошивке. Но я бы смотрел в сторону уменьшения вот этого:
    .equ TIMEOUT_START = 48000 ; Timeout per commutation for ZC during starting
    и выключения всех бутлоадеров, тестов и прочего барахла при старте.

    P.S. Разговор про SimonK
  17. Аватар для alvleal
    Здравствуйте!
    Подскажите, чем прошить этот ESC?
    [IMG][/IMG]
    [IMG][/IMG]
    [IMG][/IMG]
    Atmega8L (BAU 1317D)
    D208 12шт. все одинаковые.

    Большое спасибо!