Рассказ в картинках про прошивку БК регуляторов EMAX 30a с помощью Arduino UNO.
Emax Simon K Series 30A Brushless ESC for Multirotor RC Quadcopter
Товар http://www.parkflyer.ru/ru/product/1732197/

Америку я не открыл, лишь делюсь собственным опытом. Статью написал, потому что не нашел подобной инструкции.

Начну издалека. На форуме, где я являюсь достаточно активным пользователем, возникла у одного человека (назовем его Олегом) проблема с регуляторами. Он купил их на Бангуде, выше привел одну ссылку на них, ниже дам ещё две ссылочки:
Emax Simonk Series 12A 20A 25A 30A 40A ESC For Quadcopter QAV250
Товар http://www.parkflyer.ru/ru/product/1558876/

( http://www.banggood.com_/Emax-Simonk-Series-12A-20A-25A-30A-40A-ESC-For-Quadcopter-QAV-250-p-918126.html - после слова ".com" убрать один пробел, даю специально ссылку на место покупки).
Так вот, Олег купил регуляторы на якобы 30 ампер, с якобы Симонком (про "якобы" позже), получил их, начал с ними ковыряться. Ну и по неосторожности столкнулся с "недокументированным режимом" при настройке регулей по пикам. Понятно, что Олег только-только начинает, но ведь инструкция к регуляторам должна соответствовать оригиналу! Короче, один регулятор остался нормальным, два регулятора были загнаны в режим с инверсным управлением (регуль с опцией "реверс"), один регуль был загнан в инверсный режим. Причем эти три были откалиброваны непонятно по-какому диапазону газа, из-за чего в меню настройки никак не входили. А карта программированияя есть не у всех (например - у меня нет, и не будет).
Помучив их немного, изучив прошивку здорового регуля, почитав описание меню, я решил их прошить (сервотестером их "вразумить" не удалось). Если верить документации на сайте (выше была ссылка), то в регуляторы залит совсем не SimonK, а обычная "самолетная" прошивка с низким таймингом управления. А у нас мультикоптеры (человек строит квадрокоптер), и нужен более быстрый отклик по управлению.
У меня уже был опыт по прошивке регуляторов на чипе АтМега прошивками SimonK и BlHeli.
Подумав, что Silabs имеет более хорошую поддержку в BlHeli, я качаю последнюю версию с их домашней странички https:/blhelisuite.wordpress.com (что-то при вставке Паркфлаер конвертирует мою ссылку, копируйте ссылку текстом).
Хорошо, вскрываем регули и смотрим, что внутри:

И ищем что-нибудь подобное в списке поддерживаемых регуляторов (в архиве с программной есть, качать второй раз необязательно, 11 мегабайт). Листал-листал-листал...и на 34 странице нашел Emax 20A - по внешнему виду очень похоже на наши "тридцадчики" (регуля на 30 ампер не оказалось, в конце статьи - разгадка почему). И подпаиваемся к пятачкам (на фото внизу, над силовой шиной четыре контактных точки). Если смотреть на фото выше, тогда слева-направо это будут контакты: 1.GND (паяем черный), 2. 3.3 вольта (я не подпаивал, но ниже ещё коснусь), 3. C2CK (паяем красный), 4. C2D (паяем белый).
В принципе, народ использует прищепку с контактами, но мне что-то не хотелось изготавливать сей девайс ради четырех регулей.
У меня получилось следующее:

Ну вот, что шить (регули с дата-проводками) и прошивку имеем (судя по описанию, это наверное всё-таки ближе к 20 амперам, нежели к 30).
Далее, чем именно шить (инструмент). Я потратил целый день, пытаясь прошить регуляторы однопроводным программатором (который просто отлично работает с регуляторами на АтМегах, позволяя настраивать регуляторы по сервокабелю), пока не узнал, что Silabs не работает по интерфейсу однопроводного программатора (если не так - поправьте меня, буду благодарен ссылке с описанием процесса). Везде было описание подготовки программатора из Ардуино УНО. Нашел ещё описание, как прошить с помощью контроллера АИОП. (ниже дам ссылку на прошивку с помощью АИОПа). Так как у меня пылилась на полке УНО, решил сделать из неё программатор.
Запускаем BLHeliSuite.exe, щелкаем на вкладку "Make Interface"

Далее, выбираем номер COM порта (у меня это COM3), тип контроллера, скорость порта и в самом конце нажимаем кнопку "Arduino 4way-interface", далее ещё немного скринов без комментариев:

(только один комментарий - прошивка MULTI нам не нужна, это для работы сразу с несколькими одновременно подключенными регуляторами)

Далее, подключаем наш новоиспеченный программатор по схеме:

Далее, сначала подключаем наш новый программатор (к компьютеру и к регулятору), а только потом подаем питание на регуль. Ремарка: надежнее всего не подавать СИЛУ на регулятор, надежнее подавать питание на тот контакт который я пропустил при подпайке к пятачкам. И это питание должно быть 3,3 вольта (будьте внимательны)! Чем этот способ лучше - когда заливаем неправильную прошивку, при подключении регуля по силовым проводам он стартует, и могут сгореть ключи (у меня один ФЕТ щёлкнул, его я потом перепаивал).

Ладно, так или иначе, подключили, на регуль в последний момент питание подали. Далее, опять идем в программу BLHeliSuite.exe, идем в меню Select Atmel/Silabs interface, выбираем тип программатора под буквой B - Silabs C2 (4-way if), далее внизу номер порта и жмем кнопку Connect
Если все сделано правильно, регулятор увидится сразу. В противном случае будет долго бегать Connecting...., И в конце концов обругается. Простите, два этих скрина я не снял.

Если регулятор не увиделся - значит "что-то пошло не так" что-то сделано было неправильно при создании программатора или при подключении регулятора.
Если там уже прошит BlHeli, то регулятор определится и покажет версию текущей прошивки, как вот тут:

(кстати, этот скрин я снял уже после успешной прошивки)

Может регулятор сам по себе определиться, но не определится версия прошивки. Как было в моем случае:

(а вот так первоначально определился наш подопытный)

Далее, собственно прошиваем регулятор прошивкой BLHeli. Выбираем тип регулятора (Emax 20A), тип прошивки (внимательно, на скрине ниже неправильно) - главный ротор вертолета (MAIN), хвостовой ротор (TAIL), мультикоптеры (MULTI). Мне нужен был MULTI как я потом уже выяснил (для роторов другой метод регулирования оборотов движка, неподходящий для мультикоптера, слишком большая пауза на первоначальный набор оборотов).
Выбираем тип прошивки, нажимаем ОК и получаем последнее китайское предупреждение:


Ну и ещё несколько скриншотов самого процесса:



Всё, регулятор прошит, далее настройка регулятора.
Я сделал такие параметры:

То есть включил Damped Light (тормоз на регуле). Я мог бы побаловаться параметром Motor Timing для более тонкой настройки регулятора под мотор (своего рода угол опережения "зажигания"), но у меня не было целевых моторов (регуляторы не мои).
Если интересно, приведу перевод основных параметров BLHeli (взято из чужой статьи - http://mcheli.blogspot.ru/2014/10/blheli-brushless-esc-firmware.html )
Приведу выдержку из статьи тут:
"
Общие параметры:
1. Startup Power - мощность импульса при старте мотора.
2. Startup RPM - частота вращения мотора при старте.
3. Startup Acceleration - ускорение разгона мотора.
4. Startup Method - метод старта мотора. Stepped - постепенно, с учетом предыдущих трех параметров, Direct - сразу.
5. Throttle Change Rate - частота обработки сигнала газа.
6. Programming by TX - разрешить программировать регулятор с пульта. Для хвостового регулятора лучше это не включать, да и для основного не всегда нужно.
7. Motor Direction - направление вращения мотора. Если мотор вращается не в нужную сторону, то просто поменять этот параметр. Для хвостового регулятора есть еще значение Bidirectional - это для систем с изменяемым направлением вращения мотора.
8. Demag Compensation - защита от срыва синхронизации. Для небольших двигателей не актуально.
9. PWM Frequency - частота входящего ШИМ-сигнала. Значение Low- в районе 8кГц, High - в районе 20кГц, Damped и Damped Light - используются для хвоста, описание ниже.
10. Motor Timing - тайминг двигателя. Low - 0 градусов, MediumLow - 8 градусов, Medium - 15 градусов, MediumHigh - 23 градуса, High - 30 градусов. Если мотор на низких оборотах начинает дергаться при резком увеличении газа, то можно попробовать увеличить тайминг.
11. Temperature Protection - защита от перегрева.
12. Input Polarity - полярность ШИМ сигнала. Если при нулевом газе мотор включает полный газ - значит полярность ШИМ нужно изменить этим параметром.
13. Beep Strenght - громкость сигнала.
14. Beacon Strenght - громкость сигнала при бездействии.
15. Beacon Delay - задержка перед подачей сигнала бездействия.
16. PPM Min Throttle - минимальное значение PPM-сигнала.
17. PPM Max Throttle - максимальное значение PPM-сигнала.
"

Когда поменяем параметры, не забываем тыкнуть кнопочку "Write Setup", чтобы перезагрузить регуль (и запустить его с новыми параметрами), нажимаем кнопочку "Restart ESC".

По самой прошивке регулей в общем-то всё. Регуляторы в итоге стали гораздо шустрее реагировать на изменения газа (видно даже на глаз при резких бросках газа сервотестера), калибровка диапазона газа делается по верхней, по средней и по нижней точке диапазона газа, плюс возможности более тонкой настройки под конкретные моторы (справедливости ради скажу, что и в старой прошивке был аналог Motor Timing'а)

Остался один момент. Arduino UNO у нас хотя сейчас и прошивается скетчами, но платка осталась с "неродным" загрузчиком. Если нам по каким-либо причинам нужно вернуть родной загрузчик, можно это сделать с помощью USBasp, подключившись к ISP разъему. Далее пойдут несколько скринов без объяснений (чтобы не быть уж совсем "капитаном Очевидность"):

Ну вот собственно и всё что хотел сказать.

Напоследок приведу фоточку веселеньких регулей, перед отправкой их владельцу (пасхальная термоусадка поверх родной):

Пшикнул Plastik'ом, положил радиатор, надел родную термоусадку, потом паcхальную, и отправил назад хозяину регулей.
Да, ещё забыл написать. В процессе выяснилось, что силовые ключи в регуле были использована на 12 ампер, стояло по два на каждой фазе (A, B,C), таким образом, реально регули оказались на 24 ампера, а по схемотехнике - 20 амперные (а не 30 амперные, как было написано на Банггуде). Вот она, Великая Китайская Лотерея :)

Если у кого-то нету Arduino Uno, то может быть можно прошить той же USBasp, или Нано или вдруг завалялась АИОП. Мне в моих исканиях помогла вот эта статья:
Прошивка TURNIGY Plush 30А с контроллером SiLabs BLHeli - AIO Flight Controller.
И вот эта статья, а так же вот этот дневничок. Ну и конечно гугл!

Если что-то непонятно, спрашивайте, если знаю - отвечу.