Настройка телеметрии между Multiwii и MinimOSD

Публикация 12.08.2017

Подробная инструкция по настройке стабилизации с gps и osd телеметрией для полетов средней дальности. Инструкция предназначается для летающего крыла. Для самолета тоже подходит, но будут небольшие изменения в программном коде.

fpv крыло

Все работы по внедрению электроники проводились с летающим крылом типа "Вжика" (размах крыльев 92 см). Крыло используется в качестве FPV носителя средней дальности. Аппаратура 2.4Ghz - РУ, 5.8Ghz 600 mW - fpv.

Видео запись осуществляется FULL-HD камерой SJCAM и курсовой камерой. До этого использовал пантил, но из-за вращения камеры были трудности с ориентацией (или из-за неопытности) и вообще для такого крыла верхнее расположение камер сильно увеличивало лобовое сопротивление. Скорость полета падала и летать можно было только "блинчиком". Перешел на фиксированные камеры в носу (что-то на подобие популярной сейчас Рептилии S800) и все проблемы отпали сами собой.

Закончим вступление, перейдем к делу. Наш конфиг будет с супер бюджетными компонентами:

Multiwii SE 2.0/2.5 - полетный контроллер. Используется для коптеров и самолетов.

Multiwii SE 2.5

Minim OSD (Micro) - телеметрия для наложения на изображение полетные данные.

MinimOSD

Или ее более компактный брат Minim Micro OSD

Minim Micro OSD

GPS NEO-6 - GPS модуль. Данный вариант порадовал чувствительностью и стабильностью работы, но в прочем, подойдет любой другой GPS модуль.

GPS NEO-6

I2C GPS NAV - модуль конвертирования UART сигналов с GPS на протокол I2C. Этот же модуль может принимать данные ультразвукового высотомера (может быть полезно для коптеров). В принципе, если у вас есть GPS с поддержкой I2C, то этот модуль может не понадобиться.

I2C GPS NAV

FTDI-USB переходник для зашивки и конфигурирования.

FTDI-USB

Прочие компоненты, которых не коснутся наши настройки тоже должны быть: PAL/NTSC курсовая камера, РУ приемник 2.4Ghz, видео передатчик 5.8Ghz, пару 9-и граммовых серв, ESC на 30A, двигатель 1400KV и пропеллеры к нему, аккумулятор LiPo 2.2A/h 25C, пульт РУ FSky T9 на 6 каналов.

Настройка модуля стабилизации полета Multiwii (автопилота)

Это основной модуль который будет управлять моделью. Конечно, вам кажется, что управляете вы, но сигналы с РУ напрямую не идут на привода - управлять ими будет микроконтроллер. Так что это уже с некоторой натяжкой.
Функции контроллера: включать горизонтальную стабилизацию (стабилизировать полет) при включении таковой по сигналу AUX1; спасать модель при потере сигнала (FAIL-SAFE); вести модель к точке взлета при сигнале с земли AUX2 (Return To Home - RTH); обмениваться данными с телеметрией; работать с экранным меню в телеметрии (доступны такие опции как регулировка PID т.е. характеристик стабилизации) и пр. функции.
В корпусе встроены: акселерометры, гироскопы, барометр, магнитометр. Все эти датчики используются при полете, к ним еще добавится GPS, но чуть позже.
Модуль должен жестко устанавливаться в корпус модели, принимать все вращательные моменты. После этого нужно правильно подключить двигатель, сервы и каналы от приемника. Сделать это можно руководствуясь схемой:

Подключение Multiwii SE 2.5 к летающему крылу

В микроконтроллере уже будет прошивка, но наверняка она будет коптерская и не подходящая нам. По тому нам нужно зашить свою. Подключаем FTDI-usb адаптер к плате. Скачиваем архив MultiWii_2_4.zip (см. в конце статьи или с сайта разработчика) и открываем содержимое /MultiWii/MultiWii.ino с помощью среды Arduino IDE (должна быть предварительно установлена на компьютер).
Пугаться не надо, мы не будем тут жестко кодить, а лишь активируем функции о которых уже позаботился разработчик. Перейдем к файлу config.h нам в нем нужно убрать комментарии (символы //) для следующих функций:

  • #define FLYING_WING // это логика для управления летающим крылом (если у вас самолет, то активируйте #define AIRPLANE)
  • #define GYRO_SMOOTHING {10, 10, 3} // что бы вибрация не сбивала показания акселерометра
  • #define I2C_GPS // активируем поддержку GPS модуля по каналу I2C
  • #define CRIUS_SE_v2_0 // тип нашей платы Multiwii SE 2.5/2.0

Остальные настройки не являются обязательными.

Теперь зашьем скетч в нашу плату. Все наши платы будут шиться с одинаковыми настройками: порт, плата - Arduino Pro or Pro Mini; процессор ATmega328 (5v 16 MHz); программатор AVRISP mkII.

Следующим шагом переходим к настройке Мультивая. В скаченном архиве запустим приложение для конфигурирования (оно находится в папке MultiWiiConf). Поддерживаются ОС osx/linux/windows.
В программе выбираем ваш COM порт, затем нажимаем Start и Read. График зашевелится, значения настройки заполнятся. Включите свою аппаратуру и убедитесь, что всех стиков/ручек по каналам соответствуют их обозначениям в программе (если то не так - вы напутали провода - исправляйте).

Проверка каналов связи

Нужно будет расположить модель строго горизонтально и выбрать CALIB_ACC (калибровка гироскопов). Это необходимо, что бы самолет знал где горизонт. Откалибруйте магнитометр CALIB_MAG (после нажатия нужно покрутить модель).

Калибровка

Настройте AUX функции по вашему усмотрению. Я использую две - HORIZONT (удерживание горизона - удобно при взлете и при съемках с воздуха) и GPS HOME (возвращает модель к точке взлета).

Программирование функций

Завершающим штрихом станет настройка PID. Точно сказать какие настройки будут идеальны для вашей модели - нельзя. Это можно понять только опытным путем многократно меняя их после полетов. Главная цель - добиться устойчивой стабилизации полета при сильных порывах ветра и отсутствия раскачек на больших скоростях. P - сила, I - ускорение, D - время воздействия. Эти настройки можно будет менять с помощью РУ и OSD прямо в поле без ноутбука. Мои настройки далеки от идеала (есть раскачка), но стабилизирует неплохо:

PID настройки для летающего крыла

Настройка I2C GPS NAVI

Подключаем FTDI переходник к плате. Скачиваем архив с скетчем I2C_GPS_NAV.zip (файл в конце статьи). С помощью Arduino IDE открываем файл /I2C_GPS_NAV.ino в списке файлов выбираем config.h в нем будем производить настройку под наш GPS модуль.
Выполним следующие изменения:

  • #define GPS_SERIAL_SPEED 9600 // в моем GPS модуле задана такая скорость обмена даными. Вам нужно указать свою. Обычно это 57600
  • #define NMEA // в моем GPS модуле используется такой протокол данных, у вас он может быть UBLOX или MTK

Остальные настройки менять не нужно. Зашиваем скетч с теми же настройками, что прошлый раз (все платы одинаковые). Подключаем компоненты:

Подключение GPS к Multiwii через i2c конвертер

При включении модуль отображает состояние с помощью красного диода.
Если диод зажигается/гаснет каждую секунду - модуль GPS не обнаружен - проверяйте настройки кодировки и скорости данных, они не соотвествуют тем, что отдает GPS.
Если диод моргает одиночными короткими вспышками - данные передаются, но спутники не найдены.
Если диод трижды быстро моргает - данные передаются, найдены спутники - все отлично.

Мы можем еще раз подключить FTDI адаптер к Multiwii. В программе конфигурирования отображаются данные о координатах с GPS модуля тем самым убедиться, что все работает верно.

Инструкция по точной настройке PID

Знакомство с воздействием P, I и D на характеристики
Р - это величина корректирующей силы, приложенной для того, чтобы вернуть модель в начальное положение.
Величина силы пропорциональна общему отклонению от изначальной позиции минус любое командное воздействие на изменение направления с пульта управления.
Более высокое значение Р создаст более мощное усилие по сопротивлению любой попытке изменить положение модели. Если значение Р слишком велико, то при возврате в исходное положение возникает перерегулирование и, следовательно, требуется противоположная сила, чтобы компенсировать новое отклонение. Это порождает эффект раскачки до тех пор, пока наконец не будет достигнута стабильность или, в худшем случае, модель может стать неуправляемой.

Увеличение значения Р:
- Приводит к большей устойчивости /стабильности до тех пор, пока слишком большое значение Р не приведет к колебаниям и потере контроля над моделью.
- Вы заметите очень большую силу воздействия, противодействующую любому изменению положения модели.

Уменьшение значения Р:
- Приведет к дрейфу в управлении до тех пор, пока слишком малое значение Р не сделает модель неуправляемой.
- Коптер будет меньше сопротивляться любым попыткам изменить его положение.

Акробатические (пилотажные) полеты требуют чуть более высоких Р. а
Аккуратные и плавные полеты – чуть более низкого Р.

I – это период времени, в течение которого угловые отклонения записываются и усредняются.
Величина силы, прикладываемой для возврата в исходное положение, увеличивается на значения I настолько долго, насколько угловое отклонение сохраняется, пока не будет достигнута максимальная величина усилия. Более высокое значение I способствует улучшению курсовой устойчивости.

Увеличение значения I:
- Увеличит способность удерживать начальное положение и уменьшит дрейф, но так же увеличит задержку возврата в начальное положение.
- Также уменьшает влияние Р.

Уменьшение значения I:
- Улучшит реакцию на изменения, но увеличит дрейф и уменьшит способность удерживать положение.
- Так же увеличивает влияние Р.

Акробатический полёт: требует немного меньших значений I
Аккуратный плавный полёт: требует немного большие значения I

D – это скорость, с которой модель вернется в его начальное положение.

Увеличение значения D: (означает меньшее число, т.е. значение близкое к нулю) улучшает скорость, с которой отклонения восстанавливается.
- Увеличение значения D (помним, что это значит МЕНЬШЕЕ число, т.к. значение отрицательное) увеличивает скорость, с которой все отклонения будут скомпенсированы. Это означает так же увеличение вероятности появления перерегулирования и колебаний.
- Так же увеличивается эффект от изменения Р.

Уменьшение значения D: (это уже значит БОЛЬШОЕ число (дальше от нуля), т.к. это отрицательно значение)
- Уменьшает колебания при возврате в начальное положение.
- Возврат в начальное положение происходит медленнее.
- Так же уменьшает эффект от изменения Р.

Для акробатического полёта: увеличьте D (меньшее число, т.е. ближе к нулю)
Для аккуратного и плавного полёта: уменьшите D (большее число, т.е. дальше от нуля)

Настройка GPS модуля

Этот пункт не обязателен, только если у вас возникли проблемы с настройкой I2C-GPS-NAV модуля. Скачивайте программу U-center с сайта производителя U-box. С ее помощью можно задать скорость обмена данными и узнать кодировку данных.

u-center

Настройка MinimOSD

На рынке есть как минимум три типа таких модулей. Самый неудобный классический Minimum OSD. В нем нет встроенных резисторов для замера напряжения питания и приходится колхозить вот так:

Измерение напряжения питания в minimosd

Так что лучше выбрать платы с пинами под измерение напряжения батареи или Micro версию. Вот их распиновки:

MinimOSD

С подключением все понятно - подключаем FTDI переходник и переходим к прошивке. Прошивки можно использовать разные: ArduCAM, MWOSD и пр. Качаем архив с скетчем scarab-osd-1.6.zip (файл в конце статьи). Это последняя бесплатная версия программы MW OSD. Она отлично дружит с Multiwii без каких-либо настроек. Из минусов - в версии 1.6 нельзя менять местами индикаторы на экране.
Выполняем до боли знакомый порядок действий: открываем в Arduino IDE файл /MW_OSD/MW_OSD.ino в настройках файла Config.h нужно раскомментировать строки:

  • #define MULTIWII // поддержка обмена данными мультиваем
  • #define FIXEDWING // тип нашей модели - летающее крыло или самолет

Зашиваем скетч так же как прошлые два раза.

Следующая задача - сконфигурировать OSD. Запустим программу конфигурирования из папки /MW_OSD_GUI
Выбираем наш com порт.

com порт OSD GUI

Жмахаем SETTINGS READ.

read settings OSD GUI

Теперь нужно пройти по всем настройкам и задать отображение нужных вам данных. Отдельно отмечу, что Voltage Adjuist нужно подбирать опытным путем, что бы расхождения в показаниях напряжения батареи были минимальными.
Последний шаг - загрузить шрифт. Стандартный шрифт отображает некоторые линии китайскими загагулинами - это не столь круто. Скачиваем файл digital.mcm (файл в конце статьи), затем нажимаем SELECT, а после выбора файла UPLOAD. Дожидаемся загрузки шрифта. Все, можно подключать OSD к Multiwii. UART разъем OSD нужно подключить к UART разъему Multiwii.

MW OSD экран

Важно! Если вы с подключенной OSD попытаетесь подключиться к Multiwii по FTDI, то у вас скорее всего ничего не выйдет т.к. они используют одни и теже порты - по тому перед заливкой скетча в Multiwii или перед конфигурированием отключайте OSD от платы, что бы не тратить время на поиски причины.

Заключение

Точно следуйте инструкциям и никаких проблем у вас не возникнет, а результат компенсирует все затраченные нервы. OSD + контроллер полета - это очень приятная штука. Они помогут вам расслабиться и насладиться полетом, перестать бояться потерять модель или разбить при недостаточных навыках. Автопилот и стабилизация решат все проблемы щелчком тумблера, если не слишком поздно)) Enjoy!

Настройка телеметрии между Multiwii и MinimOSDКомпановка в крылеКомпановка в крылеFPV вжик
Файлы для скачивания:
* комментарии публикуются после модерации
Нет комментариев