Подключение к ардупилоту и проверка
Итак перед этим проведены тесты показателей аналоговых сенсоров на прошивке 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