Перепрошивка регулятора Cheerson CX20 ver 2.4b прошивкой BlHeli
DISCLAIMER
Данная прошивка является неофициальной! Автор не несёт ответственности за любые проблемы, вызванные использованием ESC с этой прошивкой! Во время прошивки соблюдайте предосторожности, описанные далее!
ДАННАЯ ПРОШИВКА РАБОТАЕТ ТОЛЬКО НА РЕГУЛЯТОРАХ ВЕРСИИ 2.4b. РЕГУЛЯТОРЫ 1.6 ИМЕЮТ ДРУГУЮ СХЕМУ И С ДАННОЙ ПРОШИВКОЙ РАБОТАТЬ НЕ БУДУТ!!!
Предыстория
Как известно многим пользователям Cheerson CX20 родные регуляторы имеют неприятную привычку со временем выходить из строя сами по себе. Обычно это происходит после долгого стояния. Симптомы - либо просто полная тишина, либо непрекращающийся прерывистый писк вместо нормальной инициализации. Судя по симптомам - проблемы во входе в какой-то некорректный режим, а не железные.
Столкнулся с такой проблемой и я. Был заказан и получен новый регулятор, после чего я попытался снять с него прошивку. Выяснилось, что производитель закрывает прошивку от чтения и снять её нельзя. Посмотрев внимательно на устройство ESC я подумал, что на него вполне нормально должен встать BlHeli для микроконтроллеров SiLabs. Убив на это дело пару дней мне таки удалось заставить работать BlHeli на данном ESC.
Исходные данные
По всему тексту я буду ссылаться на файлы в папке на GoogleDrive:
drive.google.com/open?id=0B4WG5OG778SzNDRzbmk2cUVn…
Если я просто даю имя файла - надо его скачать оттуда. В некоторых случаях буду давать прямые линки на сторонние ресурсы.
В процессе работы была снята полная схема ESC:
cx20_esc.pdf
Все обозначения деталей соответствуют фотографиям face.jpg и rear.jpg.
Тип драйверов на самом деле неизвестен, так как затёрты - были взяты подобные по функциям. Особенности - внутренний диод на бустер (обычно внешний), инвертированный сигнал по нижнему драйверу (выход активен при 0 на входе).
Силовые транзисторы PK650BA, их Datasheet:
…com.cn/…/201584092224-PK650BA_REV1.1_20150720.pdf
Кратко: до 30В, сопротивление в открытом состоянии 3.3мОм, постоянный прямой ток - 19А, импульсный - до 100А, время включения - 23нс, время выключения - 40 нс. В общем - очень приличные параметры.
Необходимое
Для прошивки надо приготовить:
Arduino Nano - одна из самых дешёвых ардуин, меньше 2$
Лампочку на 12В. Желательно на небольшую мощность, например какую-нибудь подсветки салона из машины.
Провода, паяльник, терпение.
Процедура прошивки
Скачиваем BLHeliSuite16514801.zip , распаковываем его в любое место.
Скачиваем обновление 16514800to16514801patch.zip , распаковываем его туда же.
Качаем прошивку XP_3A_MULTI_REV14_8.HEX
Подключаем Arduino Nano по USB, ждём появления нового последовательного порта и смотрим его номер в диспетчере устройств. У меня это COM6, в дальнейшем буду использовать этот номер. Если вместо последовательного порта обнаружилось неизвестное устройство - качаем драйвера для CH340 и устанавливаем:
www.wch.cn/download/CH341SER_ZIP.html
Либо гуглением они находятся за 5 минут.
Запускаем BlHeliSuite.
Идём на закладку MakeIntefaces.
Панель Make Arduino Interface Boards.
Arduino Board - выбираем Nano w/ Atmega 328.
Baud - 57600
Port (в самом низу) - выбираем тот, на который встала Arduino.
Теперь жмём по нижней кнопке: Arduino 4Way-interface
Появится окошечко подтверждения, нажимаем OK.
Появляется окно выбора файла прошивки. Выбираем:
4wArduino_Nano__16_PB3PB4v16400.hex
ВНИМАНИЕ: именно с PB3PB4 в имени, не перепутайте.
Еще одно окошечко подтверждения - жмём Yes.
Появится окно со всякими бегающими строками, всё должно закончиться окном с сообщениями от флешера и кнопкой OK. Убеждаемся, что последняя строка от флешера “done. Thank you” и жмём OK.
Всё, Silabs C2 интерфейс для прошивки подготовлен. Пока отключаем Arduino от USB.
Вытаскиваем ESC, отпаиваем провода мотора, отключаем управление, отпаиваем питание, кладём на стол.
Подпаиваем три коротких проводочка (сантиметров 10-15, не более) к Arduino:
С другой стороны подпаиваем их к ESC в соответствии с картинкой:
VDD НЕ ПАЯЕМ
От отдельной батарейки ЧЕРЕЗ ЛАМПОЧКУ заводим питание на ESC. Лампочка защитит от бросков тока, если вдруг ключи откроются неправильно во время перепрошивки.
Подключаем Arduino к USB.
Запускаем BlHeliSuite. Закладка SiLabs ESC Setup. Меню Select Atmel / Silabs Interface - выбираем вариант B Silabs C2 (4way-if).
Внизу проверяем номер порта, должен быть тот, Arduino. Нажимаем около него Connect.
На родном ESC выдастся ошибка, что память не может быть считана, игнорируем.
Нажимаем Flash other. Появится окно выбора файла - выбираем тот самый скачанный XP_3A_MULTI_REV14_8.HEX
Будет предупреждение какое-то - типа “Вы уверены, что хотите прошить именно этот файл”. Отвечаем Yes. Если всё нормально, то побегут отсчёты Write, потом Read.
Появится табличка с надписью “Flashed file succesfully” и кучей предупреждений. Жмём Ок.
Появится вопрос: Do you want write current settings to ESC? То есть сохранить ли текущие настройки в ESC. Если вы еще не настраивали ESC, то нажимаем NO.
Всё, прошились.
Настраиваем. Мои рекомендации (многие взяты с потолка):
Closed loop mode: Off
Motor Gain: x1.00
Startup power: 1.00
Temperature protection: On
PWM Output Dither: 7
Low RPM power protect: On
Brake on Stop: On
Motor direction: Normal
Demag compensation: Low
PWM Frequency/ Damped: High
Enable PWM Input: off
Motor timing: MediumHigh
Input polarity: Positive
Programming by TX: галочка снята
Остальное на ваш вкус - там всё понятно.
Настроили - давим на Write Setup и потом на Restart ESC.
Всё. Подключаем мотор, подключаем управление, пробуем покрутить (пока с лампочкой).
Если мотор без пропеллера, то на малых оборотах ток должен быть порядка 200-300 мА.
Если больше - что-то не так. Я проверял от лабораторного блока питания - там проще оценивать потребление.
TODO:
- времена включения/выключения сейчас в прошивке стоят по прикидке. Надо бы померить реальные и понять - в каких единицах они задаются в прошивке
- разобраться с DampedLight. Вроде он работает, но какой вариант макроса надо ставить в прошивке - пока не понял