Сборка квадрокоптера на раме RC180 V2 (часть 2) - настройка
И хотя это уже третий квадрокоптер, который я собираю сам, на этапе настройки я наступил на такое количество грабель, которое не мог даже представить. В некоторых случаях причиной была собственная неопытность, в других - неудачное стечение обстоятельств.
Во многих аспектах, данная статья выражает субъективное мнение автора. Это мой путь и мои грабли. По мере "просветления" автора, статья будет дополняться/исправляться.
Столкнулся со следующими проблемами:
Проблема: не мог прошить полётный контроллер SPRacingF3 Acro.
Решение: неправильно прошивал, надо было замыкать boot pins. Подробнее об этом ниже.
Проблема: после сохранения настроек, к ПК больше невозможно было подключиться по USB.
Решение: опять же "самдурак", я отключал передачу данных MSP для порта UART1, так как "оно мне там не надо" (OSD у меня на UART2), а делать этого ни в коем случае нельзя. Отключение MSP для UART1 отключает и передачу данных по USB-разъёму, так как они запараллелены.
Проблема: не работала OSD.
Решение: тут мистика какая-то. Плата была правильно настроена, но никакой картинки вообще не выдавала. Для проверки подключил её к другому квадрокоптеру - работает. Переставил назад на этот - тоже работает.
Проблема: приёмник при подключении к ПК вообще не подавал признаков жизни.
Решение: оказалось, бракованный кабель из комплектации ПК, там перебит один провод.
Проблема: неадекватное поведение пищалки: начинала монотонно пищать сразу при подключении батареи.
Решение: бракованая пищалка. Позднее подумалось, что надо было не ломать голову, а для проверки подключить вместо пищалки светодиод, тогда сразу стало бы ясно в пищалке дело или в ПК.
Последние две проблемы удалось диагностировать только с помощью мультиметра, так что если у вас ещё нет такого прибора, рекомендую задуматься о покупке. Перейдём непосредственно к настройке. Сначала более простые вещи, а потом - его величество полётный контроллер.
OSD
О прошивке MinimOSD я уже писал. В данном случае ещё проще - минимализм и аскетичность:
Настройки MWOSD
Регуляторы
Долго думал, ставить Multishot или уже проверенный Oneshot125? С одной стороны, на устаревшем чипе F330 в скорости особой разницы не заметно, с другой - мелодия из "Звёздных войн" при включении и, как пишут на форумах, "более чистый сигнал". Решили всё неединичные жалобы на то, что моторы стихийно начинают вращаться на максимальных оборотах при подключении к CLI. В итоге поставил BLHeli последней версии (на момент сборки 14.5), включил Damped Light и выставил Motor Timing на "Medium". Позднее откалибровал регуляторы по этой инструкции.
Прошивка SPRacingF3
На этом этапе я застрял дольше всего, так как были проблемы с прошивкой. Оказалось, шить надо обязательно с замыканием boot-контактов (как в этом видео).
Кстати, иногда бывает, что ПК защищён от записи и невозможно прошить новую прошивку. Вот инструкция от Олега Бовыкина, как это исправить. На случай, если оригинал станет недоступен, продублирую её ниже.
Китайский Seriously Pro Racing F3: Лечим ошибку STM32 communication failed
- Скачиваем и устанавливаем STM32 Flash Loader Demonstrator
- Подключаем контроллер по USB с закороченными пинами BOOT
- Запускаем Flash Loader Demonstrator, выбираем COM-порт, ставим Baud Rate 256000 и жмём Next
- В следующем окне снимаем защиту, нажав кнопку Remove Protection и жмём Next
- В следующем окне проверяем Target, должно быть что-то вроде STM32F3, жмём Next
- В следующем окне нажимаем "Download to device", нажимаем на "…" и выбираем файл прошивки для SPRacingF3 и жмём Next
- Дожидаемся прошивки контроллера, раскорачиваем BOOT и проблем с перепрошивкой больше нет.
Пожалуй, самой популярной прошивкой на сегодняшний день, вполне заслуженно, является Cleanflight. После её установки достоточно только настроить протокол приёмника и квадрокоптер уже может вполне сносно лететь. Для настройки используется удобная графическая оболочка Cleanflight Configurator, которая лично мне показалась намного удобнее и понятнее, чем OpenPilot GCS.
Благодаря открытому коду прошивки, у неё есть несколько ответвлений (форков). Самым интересным из них является Betaflight от человека под ником Boris B. Прошивка очень динамично развивается и некоторые её "фичи" потом переходят в "родительский" Cleanflight (например, полётный режим Airmode). Минусом Betaflight является то, что релизы выходят достаточно часто, а стабильность их не всегда высока. Кстати, эта причина на несколько недель задержала написание данной статьи. На момент завершения сборки квадрокоптера как раз вышла версия 2.8.0, которая имела пару ошибок и отличалась недружелюбными дефолтными настройками. Очень быстро появилась исправленная версия 2.8.1 RC1, но опыт работы программистом подсказал мне, что лучше подождать релиза. Я не прогадал, так как одновременно с релизом версии 2.8.1, появился и Betaflight Configurator. Можно сказать, что это новый этап в истории данной прошивки. Дело в том, что по мере своего развития Betaflight всё больше и больше отдалялся от Cleanflight и конфигуратор последнего становился всё более и более бесполезным, так как основная часть настроек всё равно делалась через консоль CLI.
Ниже я подробно опишу, как я настроил свой квадрокоптер через Betaflight Configurator.
Настройка через Betaflight Configurator
Вкладка Setup
Сделал калибровку акселерометра.
Вкладка Ports
- Для того, чтобы работала OSD, включил MSP для порта UART2.
- Как я уже писал выше, ни в коем случае не отключайте MSP для порта UART1.
Betaflight Configurator, вкладка Ports
Вкладка Configuration
Собственно тут и производятся почти все настройки.
- В разделе "Board and Sensor Alignment" указал, что мой ПК повёрнут на 90 градусов по оси yaw. Корректность этого параметра потом можно проверить во вкладке Setup.
- В "Reciever Mode" выбрал RX_PPM.
- Выбрал ONESHOT125 в качестве протокола регуляторов (почему не MULTISHOT, я писал выше).
- Отключил "Unsynced PWM output", опять же, потому что не использую MULTISHOT.
- Чтобы моторы всегда вращались в заармленном состоянии, отключил MOTOR_STOP.
- Включил опцию "Disarm motors regardless of throttle value", так как буду делать арм моторов на отдельном канале.
- Уменьшил значение "Minimum Throttle" до 1030. Это обороты холостого хода, подбирал субъективно.
- Включил опцию "VBAT" для активации индикатора заряда батареи. Остальные параметры в разделе "Battery Voltage" я не менял, так как показания заряда соответствуют действительности. Если же в них есть погрешность, её можно убрать настройкой "Voltage Scale".
- В "Other Features" активизировал BLACKBOX, SUPEREXPO_RATES, а также LED_STRIP и выключил AIRMODE. О неё я расскажу чуть ниже.
Betaflight Configurator, вкладка Configuration
Вкладка Failsafe
C failsafe всё оказалось несколько сложнее, чем мне виделось ранее. На профильных форумах иногда встречаются холивары на тему "где лучше настраивать failsafe: на приёмнике или на ПК?" На самом деле, правильно это вопрос звучит так: "где лучше настраивать failsafe: только на приёмнике или на приёмнике и на ПК?"
Настраивать failsafe на приёмнике необходимо в любом случае. По крайне мере, на Frsky D4R-II, который я использую. Дело в том, что у него есть три варианта поведения при потере сигнала от передатчика:
- передать на ПК сигнал, имитирующий предустановленные положения стиков и переключателей (режим Pre-set Positions, именно он и описан в мануале)
- продолжать передавать на ПК последние данные, полученные от передатчика (режим Hold Last Position)
- прекратить передавать сигнал на ПК (режим No Pulse)
По умолчанию в Frsky D4R-II установлен режим Hold Last Position, который способствует улёту аппарата в далёкие дали. Так что если использовать failsafe только на приёмнике, надо настраивать режим Pre-set Positions. Другое дело, что failsafe активируется даже при кратковременной потере сигнала. Будет очень неприятно, если сигнал через долю секунды восстановиться, а квадрокоптер уже задизармил моторы и падает вниз. Ситуацию может улучшить настройка failsafe на ПК, так как там этот режим имеет задержку срабатывания, что служит фильтром от кратковременных потерь сигнала. Кроме того, там есть настраиваемый сценарий, согласно которому квадрокоптер будет себя вести в случае активации failsafe. Например, можно включить режим со стабилизацией и попытаться более-менее мягко сесть или вообще активизировать RTH, если он есть. Но на практике такие вещи востребованы на больших аппаратах с GPS, а на маленьких и быстрых, опытные пилоты советуют не мудрить и выключать моторы после потери сигнала. Из-за высокой скорости полётов, так будет безопаснее для окружающих.
Нюанс в том, что, если на приёмнике установлен режим Pre-set Positions или Hold Last Position, то ПК даже не узнает, что произошла потеря сигнала. Таким образом, failsafe на ПК можно использовать лишь в том случае, если на приёмнике установлен режим No Pulse. На Frsky D4R-II он устанавливается кратковременным (менее 1 сек) нажатием на кнопку failsafe при выключенном передатчике (видео-инструкция).
На вкладке Failsafe Betaflight Configurator`а я сделал следующее:
- В разделе "Channel Fallback Settings" установил значения переключателей передатчика, которые нужно будет сымитировать. В моём случае только включил пищалку на AUX3.
- Активизировал Failsafe Stage 2.
- Установил задержку активации режима failsafe 1 сек (значение 10 в пункте "Guard time for stage 2 activation...")
- Установил время работы моторов после активации failsafe 1 сек (значение 10 в пункте Failsafe Throttle Low delay).
- В Failsafe Procedure выбрал сценарий с падением (Drop), а не с попыткой плавного приземления (Land).
Betaflight Configurator, вкладка Failsafe
Вкладка PID Tuning
Настройка PID - процесс, в который совершенно не стоит лезть "не зная брода". В первую очередь, необходимо теоретическое понимание этих трёх составляющих. Вот несколько статей, которые могут с этим помочь:
- ПИД для квадрокоптеров (перевод)
- О ПИД-регуляторах замолвите слово
- И еще о ПИД-регуляторах
- Основы настройки ПИД контроллера с помощью логов Blackbox (перевод)
- Видео Просто о настройке ПИДов
Я себя не чувствую готовым к подобной настройке, поэтому я оставил значения по умолчанию, благо Betaflight позволяет неплохо летать и с ними. Но два изменения я всё же сделал:
- Выбрал Float в разделе "PID Math". Это приемник режима LuxFloat из Cleanflight и устанавливать его рекомендуется только для ПК с процессорами F3 или F4.
- Выбрал MEASUREMENT в разделе "Derivative method". Если коротко, то MEASUREMENT предпочтительнее для фристайла, а ERROR - для гонок.
Вкладка Modes
Повесил на переключатели арминг моторов и Blackbox (AUX1), активацию полётного режима Horizon (AUX2) и включение пищалки (AUX3). Кстати, есть люди, которые настраивают арминг на два переключателя. Не знаю, насколько это востребовано, сам я ещё такого уровня дзэн не достиг.
Режим Horizon - это стабилизация при положениях стика близко к центру и отсутствие стабилизации при смещении стиков близко к краям (для флипов). Если вы начинающий пилот и хочется чего-то ещё более безопасного, подойдёт режим Angle. В нём стабилизация не отключается, вдобавок ПК не даст наклонить квадрокоптер свыше заданного угла (своего рода ограничение горизонтальной скорости). Угол этот регулируется специальной командой через CLI, где в качестве значения надо указывать желаемый угол * 10:
set max_angle_inclination = 500
Отдельно хочется сказать про AIRMODE. Изначально он был уникальной "фишкой" Betaflight, но в какой-то момент стал так популярен, что Boris B поделился им с авторами Cleanflight и сейчас данный режим доступен и там тоже.
Несмотря на то, что AIRMODE отображается как отдельный режим полёта - это скорее дополнительная опция, а не полноценный режим. Он позволяет квадрокоптеру удерживать заданный угол даже при минимальном газе. Именно поэтому не рекомендуется использовать AIRMODE вместе с режимами со стабилизацией. Кроме того, приземление с AIRMODE тоже процесс непростой: квадрокоптер начинает прыгать, как лягушка. Опытные пилоты предпочитают просто "ронять" квадрокоптер, выключая моторы в паре десятков сантиметров над землёй. Кстати, если у вас включена остановка моторов при нулевом газе (опция MOTOR_STOP во вкладке Configuration) и одновременно с этим работает AIRMODE, то остановки моторов не будет, так как AIRMODE имеет более высокий приоритет.
В Betaflight версии 2.8.1 появилась новая возможность: можно включить AIRMODE в фоновом режиме и тогда он активен всегда и не будет отображаться во вкладке Modes, либо, как и ранее, повесить его включение на какой-либо канал. Делается это в "Other Features" вкладки Configuration.
У себя я не стал включать AIRMODE в фоновом режиме, так как использую ещё режим со стабилизацией HORIZON. Таким образом, у меня на AUX1 два полётных режима: HORIZON (для полётов со стабилизацией и посадки) и ACRO + AIRMODE.
Betaflight Configurator, вкладка Modes
Вкладка LED Strip
Настроил свою подсветку на отображение предупреждений, индикацию поворотов/торможения и свечение синим цветом, когда ничего из этого нет.
Betaflight Configurator, вкладка LED Strip
Вкладка Blackbox
Blackbox - это "чёрный ящик" квадрокоптера. Нужен для диагностики, более точной настройки PID, а также чтобы можно было наложить инфографику на полётное видео (как тут). Данные пишутся на внешний логгер или, если того позволяет объём памяти, на внутреннюю память ПК. Например, у Naze32 Acro её недостаточно, а у Naze32 Deluxe и SPRacingF3 Acro - хватает, хотя и не намного. При настройках по умолчанию, на 2Мб памяти можно записать данные полёта продолжительностью 3-4 минуты, что весьма мало. Усугубляет ситуацию то, что реализовать запись "по кругу", как в автомобильных регистраторах, здесь невозможно из-за низкой скорости чтения/записи памяти. Единственный вариант - уменьшить в несколько раз скорость записи. Для диагностики такие данные уже будут малопригодны, а для видео - самое то. В этой вкладке я сделал следующее:
- Выбрал запись на внутреннюю память (опция "On-board dataflash chip") в разделе "Blackbox logging device".
- В разделе "Portion of flight loop iterations to log" выбрал 50%, что по сути уменьшает скорость записи вдвое.
Betaflight Configurator, вкладка Blackbox
Как я уже писал выше, логгирование запускается тем же тумблером на аппаратуре, что и арминг, чтобы запись начиналась при старте моторов. Подробнее о работе и настройках Blackbox можно почитать в мануале. Также несколько полезных ссылок по теме:
- Статья Setup Blackbox in Cleanflight
- Перевод статьи "Накладываем данные Blackbox на видео" (оригинал)
- Перевод статьи "Основы настройки ПИД контроллера с помощью логов Blackbox " (оригинал)
- Видео по настройке и использованию Blackbox
- Приложение Blackbox Explorer для просмотра логов
- Приложение Blackbox tools для работы с данными. Например, можно рендерить в png
Вкладка CLI
CLI - это консоль, через которую можно менять уже более продвинутые настройки, а также делать резервную копию всех настроек. Я сделал следующее:
set small_angle = 180 # Включить возможность армить моторы даже в перевёрнутом состоянии
set vbat_pid_compensation = ON # Включить компенсацию PID при разрядке батареи
save # Сохранить настройки
Также в Betaflight есть очень полезная возможность подключения к OSD через ПК. Теперь можно запрятать эту платку подальше, не беспокоясь, что к ней может понадобиться подключиться. Для подключения к плате OSD через ПК необходимо подключить батарею к квадрокоптеру, затем набрать в CLI команду serialpassthrough с необходимыми параметрами, затем отключить (Disconnect) Betaflight от ПК и запустить MWOSD. У меня получилось с первого раза. По поводу параметров, то для Micro MinimOSD, подключенной к UART2 (мой случай) они таковы:
serialpassthrough 1 115200
На этом настройка полётного контроллера закончена.
Настройка передатчика
Передатчик (он же "пульт") каждый пилот настраивает индивидуально: таймеры, миксы, голосовые уведомления и прочее. Единственная вещь, сделать которую крайне желательно, это проверить минимальные, средние и максимальные значения стиков управления в конфигураторе. Делается это во вкладке Reciever. Идеальные значения составляют 1000 - 1500 - 2000. В моём случае они составляли 996 - 1508 - 2020, что не очень хорошо. Во-первых, "выпадения" за пределы диапазона (значения менее 1000 и более 2000) плохи сами по себе. Во-вторых, центральное положение, отличное от 1500 мс, будет восприниматься ПК, как лёгкое подруливание, которое он будет отрабатывать и квадрокоптер постоянно будет сносить в какую-то сторону. Словом, имеет смысл повозиться и настроить "как надо".
Как настроить эти значения на передатчике Taranis, показано здесь. У меня Turnigy 9XR PRO, там это делается в пункте Limits. Также можно выполнить настройку через программу eePskye (вкладка Limits), но это неудобно, так как результат сразу не видно в Betaflight Configurator. Сделать это необходимо для каждого из четырёх каналов управления.
После настройки центральные значения максимально приблизились к 1500, но у меня они начали "прыгать" примерно на 5 мс в одну или другую сторону. Не знаю, с чем это связано, вероятно, значения пульта являются пограничными для ПК и после их округления получается такой эффект. Для решения этой проблемы в Betaflight (и CleanFlight тоже) есть специальная команда, настраивающая фильтрацию подобных вещей.
set deadband = 5
Значение может быть от 0 до 32 и с его повышением чувствительность управления снижается. Управление становится более мягким. Надо указывать то число мс, на которое у вас "прыгают" показания. После сохранения команды "прыжки" во вкладке Reciever не исчезнут, но теперь ПК будет их отфильтровывать.
Уже позднее я узнал, что вышеприведённый способ настройки нежелателен. Сейчас полётные контроллеры достаточно мощны, чтобы обрабатывать всё необходимое, в том числе и крайние точки каналов. "Кошерный" способ настройки через CLI я описал в этой статье.
На этом всё, удачных полётов!
Знатно накомментили:
Можно вопрос один, а как вы снова подключили порт uart1, как удалось вернуть подключение контроллера к компьютеру?
Вообще с такими вопросами лучше на forum.rcdesign.ru/, там всё же коллективный опыт.
Не 5 мс, а 5 мкс.