Прошивка регуляторов оборотов на BLHeli через Arduino UNO
Зачем
Название прошивки неоднозначно намекает на ее применение в РУ вертолетах (helicopter). Так и есть - если углубиться в историю, то можно узнать, что первые вертолеты летали на неэффективных и быстроизнашивающихся коллекторных двигателях, обороты которых регулировались открытием одного транзистора, который управлялся PWM (ШИМ) сигналом с приемника (то есть фактически изменением питающего напряжения).Регуляторы же бесколлекторных двигателей понимают PPM сигнал, и для управления ими требуется сперва конвертировать PWM-сигнал в PPM - это создает приличную задержку из-за которой хвостовой двигатель вертолета не успевал адекватно реагировать на сигналы с гироскопа, что ставило крест на использовании бесколлекторных двигателей в хвостах вертолетов.
Прошивка BLHeli позволяет регулятору оборотов (ESC) на чипе Silabs понимать PWM-сигнал, что собственно исключает этап конвертации сигнала и задержку отклика, что незаменимо в DroneRacing’е.
Кроме того, данная прошивка позволяет настраивать множество параметров регулятора прямо через полетный контроллер - не прибегая к пайке и/или разборке коптера.
Подготовка
Список поддерживаемых регуляторов: официальный репозиторийЕсли нужный регулятор присутствует в документе - идем дальше: на фотографиях указаны точки, к которым нужно подпаяться. Далее рассмотрим пример регуляторов EMAX 12A
Из документа узнаем точки пайки (1). Желательно при пайке использовать провода того же цвета, что и маркеры на фото также в качестве доп. информации рекомендую подпаять и четвертый контакт - это питание микроконтроллера 3,3 В - позволит не запитывать регулятор оборотов через силовой вход. По типу разъемов: оранжевый провод - папа, все остальные - мама (при использовании Arduino Uno для прошивки).
Кроме того, под цифрой (2) видим, что для прошивки подойдет файл от регулятора XP 12A.
Вот что примерно должно получиться: на питание 3,3 В взять оранжевый провод (рабочая часть проводов - это МГТФ, так как не плавится и не облезает при пайке, а паять их придется часто)
Программатор
Как понятно из названия статьи, в роли программатора может выступить Arduino UNO, чей загрузчик будет прошит под текущие нужды. А сделать это можно через саму программу BLHeli.Качаем архив с офф. сайта и распаковываем (архив начинающийся с BLHeliSuite32… - для 32bit регуляторов).
Подразумеваем, что драйвер Arduino установлен, плата подключена к компьютеру и распознана как Arduino UNO => известен задействованный под нее COM-порт.
Идем во вкладку Make interfacesЗаполняем поля как на скриншоте, внизу указываем COM-порт и нажимаем кнопку Arduino 4-way interface:Откроется диалог выбора прошивки: multi - для работы с несколькими регуляторами сразу, у нас один, так что выбираем другой оставшийся вариант:Соглашаемся
Прошивка
Если цвета проводов, припаянных к регулятору совпадают с рекомендациями, то подсоединяем их к Arduino следующим образом (оранжевый, питающий контроллер регулятора - к разъему 3,3 В в колодке POWER - не перепутать с 5 В !!!):Возвращаемся в программу BLHeli и во вкладке выбора интерфейса выбираем как на скриншоте:Выбираем COM-порт Arduino и жмем ConnectЕсли все сделано правильно, то регулятор сразу законнектится, иначе загрузка будет долго бегать. Скорее всего никакой информации не высветиться - значит в данный момент регулятор прошит не BLHeli.
Жмем Flash BLHeli и выбираем из списка файл прошивки ВАЖНО правильно выбрать тип:
- MULTI - для коптера
- MAIN - для главного ротора вертолета
- TAIL - для хвостового
Готово. Изначально все параметры устанавливаются в дефолтное значение и нет нужды заниматься настройкой сейчас, так как теперь подключиться к регуляторам можно через полетный контроллер прошитый Betaflight/Cleanflight.