Прошивка регуляторов оборотов на 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 - для хвостового
Соглашаемся и ждем:

После прошивки пробуем прочитать информацию с регулятора кнопкой Read Setup:
Готово. Изначально все параметры устанавливаются в дефолтное значение и нет нужды заниматься настройкой сейчас, так как теперь подключиться к регуляторам можно через полетный контроллер прошитый Betaflight/Cleanflight.




Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.