Если вы не знаете значение для своего регулятора, можете оставить значение по умолчанию. Не следует задавать значение большее, чем способны принять ваши регуляторы. Это чревато некорректным масштабированием управляющих сигналов контроллера, что приведет к не совсем адекватной реакции на резкие внешние воздействия. С Другой стороны, слишком низкое значение сужает динамический диапазон оборотов для акробатического пилотирования. Впоследствии, развив свои навыки пилотирования до акробатики, вы сможете проверить правильность настройки этого параметра при помощи тахометра. В графике оборотов мотора не должно быть горизонтальной площадки, когда вы увеличиваете газ на пульте, а фактические обороты мотора больше не растут.
Минимальный газ при включении
#define MINCOMMAND 1000
Это минимальное значение импульсов газа, которое подается на регуляторы, когда моторы не активированы. В регуляторы встраивается защита от включения, если газ при подаче питания не на "нуле", чтобы не нанести ущерб внезапным запуском пропеллера при подаче питания. Но у некоторых регуляторов защитный порог меньше 1000, поэтому может понадобиться уменьшить значение MINCOMMAND примерно до 900.
Скорость шины IС
#define I2C_SPEED 100000L
//#define I2CJ3PEED 400000L
Это скорость обмена данными между процессором и встроенными и/или внешними сенсорами и модулями. Начальную настройку и проверку работы платы желательно проводить на низкой скорости, стандартной для большинства плат контроллеров. Впоследствии можно проверить способность платы работать на высокой скорости, контролируя наличие ошибок шины через конфигуратор или на подключаемом дисплее.
Тип стандартной платы
Разработчики прошивки подготовили набор готовых конфигураций для множества популярных полетных контроллеров. В конфигурации описываются применяемые датчики и подпрограммы для работы с ними. Найдите и раскомментируйте нашу плату:
#define CRIUS_AIO_PRO_V1
Не обращайте внимание на версию платы. Прошивка подойдет и для второй версии.
Независимые сенсоры
Данная секция предназначена для опытных пользователей. Ничего не меняйте в этой секции без необходимости. Если вы используете самодельную или нестандартную плату, то можете закомментировать все наименования плат в предыдущей секции, а затем раскомментировать нужные датчики по отдельности в соответствии с компонентами своего полетного контроллера. В этой же секции можно указать положение микросхем акселерометра, гироскопа и компаса относительно положения рамы.
Активация моторов (арминг)
В секции 2, озаглавленной COPTER TYPE SPECIFIC OPTIONSs, сейчас нам может понадобиться только параметр
#define ALLOW_ARM_DISARM_VIA_TX_YAW
//#define ALLOW_ARM_DISARM_VIA_TX_ROLL
Первая строка обозначает активацию моторов перемещением рукоятки газа вниз вправо до упора (ARM) и деактивацию в позиции вниз влево (DISARM). Это стандартный способ активации. Если закрыть первую строку и раскрыть вторую, то будет работать активация двумя рукоятками. Позже в этой же секции мы будем настраивать управление стабилизированным подвесом камеры.
Модификации радиоприемника
Если вы используете стандартное подключение раздельных каналов приемника, когда каждый выход приемника подключается к соответствующему входу контроллера, то эту секцию можно пропустить. По умолчанию в ней закрыты все параметры.
Если используется приемник, оснащенный только выходом PPM-SUM, раскомментируйте под него одну из строк
//#define SERIAL_SUM_PPM
соответствующую информации в тексте комментария, и подайте сигнал на вход РРМ платы контроллера. Если раскомментировать строку
//#define PPM_ON_THROTTLE
то сигнал PPM-SUM подается на вход канала газа контроллера Crius AIOP.
При подключении приемника-сателлита Spektrum раскомментируйте строку
//#define SPEKTRUM 1024
если используется приемник DSM2, и строку
//#define SPEKTRUM 2048
если используется приемник DSMX. Физически приемник подключается ко входу Rx одного из последовательных портов. По умолчанию это SERIAL1, но вы можете раскомментировать расположенную ниже строку
//#define SPEK_SERIAL_PORT 1
и указать нужный порт 0, 1 или 2. Убедитесь, что этот порт не будет занят другим устройством.
Для подключения Futaba S-BUS сигнал необходимо инвертировать при помощи простейшего самодельного инвертора. Мы рассмотрим этот вопрос в разд. "Подключение приемника по шине S-BUS" главы 6.
Есть ряд проблем с подключением приемников по шине S-BUS. Недорогие и популярные приемники Orange RX9 имеют выход S-BUS, якобы совместимый с оригинальным протоколом Futaba, но поддержка этой опции реализована в приемнике некорректно. Насколько известно автору, пока никому не удалось использовать этот выход приемников Orange для подключения к полетному контроллеру одним сигнальным проводом. В коде прошивки MultiWii v2.20 также некорректно работала часть кода, отвечающего за прием и декодирование сигнала S-BUS, но впоследствии в код были внесены поправки.
Скорость портов
Для связи с большинством внешних модулей, а также для подключения к компьютеру используются встроенные последовательные порты SERIAL0-SERIAL3. Максимальная допустимая скорость любого из портов 115 200 бит/с.
#define SERIAL0_COM_SPEED 115200
#define SERIAL1_COM_SPEED 115200
#define SERIAL2_COM_SPEED 115200
#define SERIAL3_COM_SPEED 115200
Порт SERIAL0 используется для подключения к компьютеру. Через этот порт происходит обмен информацией с программами настройки и управления. Также к этому порту подключается адаптер Bluetooth или радиомодем для беспроводного соединения с компьютером или смартфоном. К порту SERIAL1 подключают выход приемника S-BUS. Порт SERIAL2 используется для подключения приемника GPS. К порту SERIAL3 подключается модуль OSD и/или телеметрии.
При начальной настройке нет необходимости менять параметры по умолчанию. В дальнейшем скорость может быть установлена в соответствии с параметрами применяемого внешнего модуля. Если вы изменили скорость порта SERIAL0, то не забудьте указать новую скорость в настройках интерфейсной программы WinGUI на компьютере.
Фильтр гироскопа
Как мы уже говорили ранее, гироскопы и акселерометры очень болезненно реагируют на вибрацию, поэтому приходится применять программную фильтрацию потока данных с датчиков. По умолчанию программный фильтр для гироскопов имеет максимальную полосу пропускания. Предполагается, что вы достаточно хорошо отбалансировали винтомоторные пары. Если же балансировка не позволяет устранить негативное влияние вибрации на гироскопы, которое проявляется в хаотичном и внезапном подергивании коптера по крену и курсу, придется опытным путем подобрать нужный фильтр. Сначала определите, какой интегральный гироскоп используется, ITG3200/ITG3205 или MPU6050. На платах Crius AIOP используется микросхема MPU6050. Далее выберите один из вариантов частоты среза фильтра:
//#define MPU6050_LPF_256HZ
//#define MPU6050_LPF_188HZ
//#define MPU6050_LPF_98HZ
//#define MPU6050_LPF_42HZ
//#define MPU6050_LPF_20HZ
//#define MPU6050_LPF_10HZ
//#define MPU6050_LPF_5HZ
Числовой параметр означает, что все колебания с частотой выше указанной будут подавлены цифровым фильтром прошивки. Первая строка используется по умолчанию и подходит только для микрокоптеров. Для коптера с диагональю около 450 мм и пропеллерами 10–11 дюймов следует начинать настройку с частоты 98 Гц. Большинство средних коптеров хорошо летают с фильтром на частоту среза 42 Гц.
К сожалению, не существует алгоритма быстрой настройки гироскопа. Это долгая и достаточно хлопотная процедура. Раскомментиррвав одну из строк, нужно попробовать полетать минут 10, внимательно следя за поведением коптера в разных режимах. Затем раскомментировать другую строку, закрыв предыдущую, и сравнить поведение коптера в воздухе. Для этого придется брать с собой в поле ноутбук и USB-провод, чтобы не возвращаться домой для перепрошивки. После того как вы окончательно остановились на одном из фильтров, понадобится заново настроить параметры РID через конфигуратор.
Функция Failsafe
Эта функция по умолчанию отключена в стандартной прошивке строкой
//#define FAILSAFE
но ее лучше включить, даже если ваш приемник оснащен неотключаемой функцией Failsafe. Абсолютная надежность работы приемника, особенно в непроверенной конструкции, не гарантирована. Например, питание приемника может внезапно пропасть из-за плохого контакта. Функция Failsafe контроллера активируется, если импульсы на одном из выходов приемника СН1-СН4 пропадают или делаются короче 985 мкс. Параметр в строке
#define FAILSAFE_DELAY 10
задает интервал времени с шагом 0,1 с, по истечении которого включается Failsafe после пропадания сигнала. При этом включается режим стабилизации горизонта, сигналы YAW, PITCH, ROLL выставляются в среднее положение и коптер начинает снижаться. Скорость снижения задается в строке
#define FAILSAFE_THROTTLE (MINTHROTTLE + 200)
Числовой параметр этой строки надо выбрать такой, чтобы скорость снижения составляла около 1 м/с. После настройки потребуется экспериментальная проверка. Если коптер снижается слишком быстро, увеличиваем значение.
По истечении интервала с шагом 0,1 с, указанного в строке
#define FAILSAFE_OFF_DELAY 200
моторы коптера отключатся.
Минимальная длительность импульсов для срабатывания Failsafe определяется в строке
#define FAILSAFE_DETECT_TRESHOLD 985
Мертвая зона и нейтральная зона
Предполагается, что коптер не должен реагировать на незначительные отклонения управляющих сигналов от центрального положения, потому что такие отклонения обусловлены скорее несовершенством аппаратуры, чем действиями пилота. По умолчанию задано значение ±6.
#define DEADBAND б
Если у вас качественная аппаратура со стабильными отцентрованными значениями сигнала, можно уменьшить значение этого параметра или закомментировать его.
Значение нейтральной зоны задает интервал изменений положения рукоятки газа, внутри которого коптер не реагирует на газ в режиме удержания высоты. Если изменение газа выходит за пределы заданного интервала, удержание высоты временно игнорируется и коптер начинает подниматься или снижаться.
#define ALT_HOLD_THROTTLE_NEUTRAL_ZONE 50
Магнитное склонение
Магнитное склонение определяется в секции настроек GPS, но вписать его нужно сразу для правильной последующей калибровки компаса и работы функции Head Free. Определите магнитное склонение для своей местности на сайте www.magnetic-declination.com (рис. 5.7).
Рис. 5.7.Определение магнитного склонения
В примере на рисунке магнитное склонение положительное и составляет 3°59′. Но в прошивке используется значение с десятичными долями градуса. Для конвертации надо к целому значению градусов прибавить значение минут, деленное на 60:
3°59′ -> 3° + 59'/60 = 3,98°.
Впишите это значение в строку
#define MAG_DECLINATION 3.98f
В связи с дрейфом магнитных полюсов значение склонения нужно периодически проверять на сайте и обновлять в прошивке.
* * *
На этом базовая настройка прошивки завершена. Сохраните файлы, скомпилируйте прошивку и загрузите ее в контроллер. Перед этим память EEPROM контроллера должна быть очищена, как сказано в начале раздела. После завершения загрузки прошивки на плате контроллера должны быстро мигать светодиоды А и С. Это означает, что контроллер ожидает от вас команду калибровки акселерометров. В этом состоянии контроллер еще не готов к полетам. Для дальнейшей настройки нам понадобится утилита конфигурации с визуальным интерфейсом, установленная на компьютер. Таких утилит две: упрощенная MultiWiiConf и более сложная MultiWii WinGU.
Альтернативная прошивка MahoWii
Проекту MultiWii, как и многим другим открытым проектам, присуще наличие ответвлений - альтернативных вариантов, настроенных под специфические цели или имеющих дополнительные опции. Начинающим владельцам мультикоптеров в качестве альтернативы настоятельно рекомендуем прошивку MahoWii. Детальное описание опций прошивки можно прочесть в дневнике разработчика по адресу http://forum.rcdesign.ru/blogs/83206/blogl7033.html и в комментариях к дневнику.
Прошивка MahoWii особенно хороша для начинающих. Существует упрощенная и заранее настроенная версия RC2.1_base, которая "из коробки" обеспечивает стабильный полет практически любого коптера с минимальными коррективами настройки либо вообще без изменений. Но в базовой версии отсутствует режим удержания высоты и поддержка GPS. Для более опытных пилотов предназначена полная версия MahoWii RC3.
Основными достоинствами этой прошивки для начинающего пилота являются следующие опции:
• эффективный режим удержания высоты;
• возможность задать минимальную "защитную" высоту полета, ниже которой коптер не опустится в случае ошибки пилотирования;
• эффективный фильтр вибропомех;
• динамическая автокоррекция высоты при пролетах, когда рама наклонена;
• поддержка ультразвукового сонара.
Кроме специфических параметров, описанных в дневнике разработчика, все остальные настройки соответствуют стандартной версии MultiWii. Прошивка MahoWii спонсируемая, т. е. для получения актуальной версии прошивки необходимо сделать фиксированный взнос на поддержку проекта.
В дальнейшем, говоря про настройку прошивки, мы будем подразумевать стандартный вариант прошивки MultiWii, а особенности MahoWii при необходимости отмечать отдельно.
Важно!
Для компилирования прошивки MahoWii следует использовать старую версию Arduino IDE 1.0.5, т. к. при использовании версии 1.6.x будут появляться ошибки компиляции из-за смены версии компилятора GCC.
Функциональные режимы контроллера
Прежде чем приступить к использованию программ-конфигураторов, нужно разобраться с функциональными режимами контроллера, которые переключаются при помощи органов управления пульта. Некоторые из этих режимов для платы Crius АIOР доступны всегда и в списке помечены звездочкой (*), остальные становятся доступными после настройки опций прошивки MultiWii. В других разновидностях прошивок многие опции имеют похожее или идентичное название и значение. Правила включения режимов настраиваются в конфигураторе, поэтому надо хорошо понимать, что мы будем настраивать.
ARM*: режим активации моторов. Управляется либо комбинацией положения рукояток пульта (см. приложение 3), либо тумблером одного из каналов AUX. Если моторы не активированы (disarmed), то регуляторы оборотов находятся в режиме ожидания, питание на моторы не подается. Коптер никак не реагирует на движение рукояток управления. Но в режиме ожидания контроллер ведет полноценный обмен информацией с периферийными модулями, ждет захват спутников GPS, передает телеметрию и т. д. После активации моторов (armed) моторы работают в минимальном режиме. Коптер реагирует на рукоятки управления и полностью готов к взлету. Это опасный режим, коптер следует активировать только непосредственно перед взлетом.
LEVEL (ANGLE)*: режим автоматической стабилизации положения коптера за счет гироскопов и акселерометров. Когда режим активен, при отклонении рукоятки крена Pitch-Roll контроллер "запоминает" углы текущего положения коптера в пространстве (level) и автоматически поддерживает это положение даже при возврате рукояток в нейтраль. Для выравнивания коптера в горизонталь нужно сместить рукоятку в противоположном направлении за нейтраль.
HORIZON*: режим автоматического выравнивания коптера в горизонтальное положение при возврате рукоятки Pitch-Roll в нейтраль. В остальном схож с режимом LEVEL и, по сути, представляет собой его модификацию. Чем сильнее рукоятка крена отклоняется от нейтрали, тем меньше удельный вес показаний акселерометра и тем больше вес показаний гироскопа в алгоритме стабилизации. Это помогает динамично управлять коптером. Но при возврате в нейтраль коптер автоматически возвращается в горизонтальное положение, соответствующее откалиброванному нулевому положению акселерометра. Режим особо рекомендуется начинающим пилотам, и при полетах по FPV достаточно просто отпустить рукоятку и правильно настроенный коптер сам выровняется и зависнет на месте (для стабилизации по высоте нужен еще и барометр).
Режимы LEVEL и HORIZON взаимоисключающие и не должны включаться одновременно. Рекомендуется присоединить их к одному каналу AUX, чтобы при одном положении тумблера включался режим LEVEL, а при другом HORIZON. Если оба режима отключены, работает стабилизация только за счет датчиков угловых ускорений - настоятельно НЕ рекомендуется так делать начинающим пилотам. Опытным вертолетчикам полет "на гироскопах" не составит особого труда.
BARO*: режим удержания высоты по барометру в положении газа, близком к точке висения. Доступен при наличии микросхемы интегрального барометра на плате. Работает независимо от других режимов. Режим начинает работать более-менее точно на высоте более 2–3 м. На меньшей высоте воздушная подушка и завихрения у земной поверхности, создаваемые винтами, вносят слишком большую погрешность в показания барометра. В некоторых версиях прошивки режим BARO может препятствовать полной посадке коптера и отключению моторов, поэтому его следует включать после взлета, на рабочей высоте, и отключать перед посадкой. В современных алгоритмах показания барометра учитываются совместно с показаниями акселерометра по вертикальной оси z, что позволяет гасить быстрые вертикальные флуктуации. Причем показаниям акселерометра при краткосрочных девиациях отдается предпочтение.