Подключение к ардупилоту и проверка

Итак перед этим проведены тесты показателей аналоговых сенсоров на прошивке 1.7, в плату сенсоров была закачана последняя версия прошивки, настроены параметры на используемый тип модуля GPS и включен бинарный вывод - именно этот формат понимает ардупилот в отличие от тестовой программы.

В моем случае используется обычный NMEA GPS модуль

#define GPS_PROTOCOL 0

#define PRINT_BINARY 1

обратите внимание что параметр GPS_PROTOCOL есть и в прошивке пилота,

там ему надо присвоить значение 3

теперь следует соединить ее с платой ардупилота и проверить как они работают в комплексе.

Первым делом мною было замечено, что плата сенсоров выждав несколько секунд после сброса (она в это время занимается калибровкой сенсоров, ее нужно выдерживать строго горизонтально и неподвижно) начинает непрерывным потоком выдавать данные с выхода TX на плату пилота вход RX и если попытаться в это время записать в ардупилот новую прошивку или изменившиеся настройки - произойдет ошибка. (но наоборот, плату сенсоров программировать в подключенном к пилоту состоянии можно)

Подключаем плату сенсоров

Я сначала полагал что имеет смысл сделать на штыревых разъемах, но так как цепь D6-D8 имеет одноконтактное и соответственно слабое соединение или потребует еще одной вилки на плате сенсоров сбоку, я решил что оптимальнее соединить под пайку жгутом из мгтф закрепленным на краях платы (впоследствии попробую сделать соединение разъемным со стороны пилота, иму будет подключаться в неиспользуемый на стороне пилота GPS разъем )

дорабатываем плату ардупилота чтобы он мог не только стабилизировать крен и таганаж но и управление тягой:

это важно канал газа! http://diydrones.com/profiles/blogs/important-ardupilot-users

на плате ардупилота он не разведен! поэтому паяем проводками.

В прошивке 2.7 в отличие от 2.6 добавлен канал киля - руль направления (RUDDER),

для его использования дополнительные соединения выглядят так:

Голубой провод подключать по пунктирной линии!!!

Подключение приемника и тестирование входов пилота.

Первым делом следует выбрать канал по выключателю на котором для ардупилота будет выбираться режим, лучше всего для этого подойдет канал к которому подключен трехпозиционный выключатель на пульте, это позволит использовать три любых режима из 7 возможных на ардупилоте

для этого оставляем для первого полета первую позицию на ручном режиме, а два других выбираем любые.

#define POSITION_1 MANUAL

#define POSITION_2 FLY_BY_WIRE_A

#define POSITION_3 STABILIZE

Проверить попали ли значения тумблера в необходимые режимы возможно установив значение

#define DEBUG_SUBSYSTEM 7

если плата сенсоров уже подключена то ее можно заблокировать нажатием кнопки сброс на все время загрузки прошивки, зажимаем кнопку и не отпуская ее заливаем установленные параметры.

После окончания загрузки можно в окне терминала посмотреть результат переключения тумблера.

Если тумблер у Вас только на два положения и его уровень невозможно смешать с другим тумблером, то будет возможно использовать лишь два режима, третий режим в этом случае возможен если приемник поддерживает программирование Failsafe режима - состояние выхода в случае потери сигнала передатчика, в этом случае следует установить уровень Failsafe на канале режима передатчика соответствующий уровню POSITION_2

это позволит использовать 1 и 3 режимы переключателем а 2 на случай потери сигнала.

на случай если у приемника нет возможности запрограммировать уровень на управляющем канале в случае отключения приемника на средний уровень - можно включить функцию ардупилота которая по значению в канале газа выходящему из типовой кондиции PWM (импульсы с длительностью 1000 - 2000мс следующие с частотой 50гц) определит что приемник отключен и инициирует событие описанное в закладке events.pde

#define THROTTLE_FAILSAFE 1

в версии ardupilot 2.7 есть константа для определения длительности PWM импульса в канале газа которую ардупилот признает как "отключение передатчика". В этом случае необходимо настроить в приемнике уровень сигнала в канале газа для режима "файлсэйф" ниже чем любое возможное значение при включенном приемнике (на аппаратуре "санва 8000" я оттримировал в минимум газ - 1012 мс, по новой сделал бинд - приемник запомнил файлсейф для газа, а затем на две позиции поднял триммер газа-чтобы при включенном приемнике значение газа было около 1060 мс)

соответственно константу ставим на серединку

#define THROTTLE_FS_VALUE 1045

проведенный тест показал, что событие файлсейф происходит, активизируется режим RTL, однако сервомашинки принимают значения приемника и не реагируют на автопилот если перед выключением приемника был установлен ручной режим - это вызвано тем что используемая мною модель приемника не использует фаилсейф на дискретном канале, используемом для управления режимами ардупилота, вместо чего он запоминает последнее значение этого канала и продолжает его выдавать в канал управления, оставляя аппаратный коммутатор подключенным к выходам приемника, при этом все усилия автопилота тщетны... думаю в некотрых передатчиках это не будет проблемой, а мне следует изучить прошивку atmini которая используется для контроля аппаратного переключателя.

В случае установки ручного режима (MANUAL) сервоприводы подключаются через аппаратный коммутатор напрямую к приемнику, минуя процессор пилота, именно поэтому, по крайней мере в первых испытаниях, следует оставлять этот режим на первой позиции и осуществлять на нем взлет до безопасной высоты.

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

Калибровка минимальных и максимальных значений по стабилизируемым каналам может быть определена в тесте "радио" и жестко задана в конфигурации либо может быть выбрана процедура автокалибровки при каждом старте, для чего задайте следующее значение:

#define SET_RADIO_LIMITS 1

при этом потребуется всякий раз при включении питания переводить элероны и руль высоты в максимальные и минимальные позиции.

фрагмент модуля radio.pde

//Remind user every 10 seconds what is going on

Serial.println("Reading radio limits:");

Компановка иму + ардупилот + Rembizi OSD

Соединил таким образом чтобы и культурно и компактно и можно было разместить иму в центре вращения самолета,

пилот рядом с приемником и штекерами сервомашинок, осд - систему рядом с передатчиком

Для подключения к ардупилоту использован свободный в данной конфигурации разъем GPS,

провод D6- D8 заведен на последний контакт ардупилота.

Старый мастер в годы моего юношества, проработавший всю жизнь на "космос", научил меня залуживать мгтф чтобы припой заходил под оболочку и закреплять кабель наплате, с тем чтобы провода не обламывались. В конкретном случае кабель запаян одним концом в иму намертво, а со стороны пилота и осд - разъемные соединения

Подобная компоновка оставляет все разъемы для программирования свободными что облегчает программирование и мониторинг.

Исправление недоработок платы ардупилот

В ходе тестов по подключению платы сенсоров к ардупилоту мне показалось неудобным что если ИМУ подключена к ардупилоту - то для заливки прошивки или маршрута в ардупилот необходимо либо отключать шлейф ведущий к ИМУ либо зажимать на ИМУ сброс на весь период заливки данных. Чтобы этого неудобства избежать я внес исправления в дизайн платы ардупилота:

  • добавлен мультиплексор RX (переключает вход последовательного порта либо с FTDI serial на момент программирования либо со стороны GPS serial в остальное время)

  • разведены каналы газа и руля направления, соединять проводками не требуется

  • сигнал air/ground start для управления иму выведен на свободный пин GPS разъема, это значит что теперь этот компактный разъем можно использовать для соединения с иму без дополнительных переделок.

эта плата представлена в разделе продукция

схема соединений комплекта плат предлагаемых на этом сайте

Питание от FTDI * - соединять если необходимо автоматически запитывать плату автопилота со стороны USB-FTDI адаптера во время программирования маршрута или замены прошивки, в противном случае необходимо подавать отдельное питание с другого источника.

Питание от ESC* - соединять в случае если у вас не предусмотрен отдельный источник питания для автопилота. (Рекомендуется использовать отдельный регулятор напряжения)

Особенности прошивок и их архивы

в разделе Ardupilot