Ardupilot-imu

IMU board (ArduIMU, IMU Shield) Что это такое.

ArduIMU - плата дополнение к ArduPilot для осуществления пространственного ориентирования (втч стабилизации) работающая на основе алгоритма Bill Premerlani DCM.

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

Аппаратно выполнена в виде отдельной платы и сдержит 3-осевой акселерометр, 3-осевой гироскоп, GPS-порт, два регулятора питания (3,3 В и 5, необходимо для различных моделей плат GPS навигации ).

Сигналы GPS и сенсоров обрабатываются собственным процессором ATmega328 @ 16 МГц, при этом процессор ArduPilot не обрабатывает аналоговые данные сенсоров а получает готовые инструкции необходимые для стабилизации полета. (т.е. фактически вы получаете двухпроцессорную систему управления)

Помимо классического использования совместно с ардупилотом существуют прошивки от энтузиастов позволяющие сделать систему стабилизации квадракоптером или трикоптером на одной плате ArduIMU

Платформа полностью открыта для ваших опытов и фантазий:

  • имеет ардуино-совместимый код,

  • схема,

  • чертежи печатной платы,

  • подробные инструкции по настройке и использованию

Официальный сайт на английском языке: ссылка

Изготовление своими руками

Опыт первый, ломонд для струйной печати

Первый блин как всегда - комом, попробовал изготовить плату по технологии ЛУТ.

У меня уже была ранее куплена бумага ломонд для струйной печати с которой неплохо выходят платы с зазором до 0,2 мм и такой же толщиной дорожек, скачал программу Eagle Layout, выбрал нужные слои и сформировал два векторых файла EPS формата для каждой стороны двухсторонней платы. Полученные файлы размножил в фотошопе чтобы лист напрасно не пропадал в случае если не удастся перевести изображение с первого раза. Совместил слои по реперным отверстиям, перевел утюгом тонер на обе стороны, размочил бумагу, но как оказалось снять глянцевую пленку на этих зазорах механически не представляется возможным, попробовал щелочной состав, затем кислотный - в результате еще кое - где остались остатки глянца а кое-где уже стал отслаиваться тонер. Вывод, щелочные и кислотные составы не годятся для снятия глянца, термоперевод с ломонд для струйной печати не годится для плат такого класса.

Опыт второй ломонд для термоперевода.

Также неудачный - купил бумагу ломонд для термоперевода лазерной печати на твердые поверхности - перевелось идеально, но то ли картридж у меня уже не очень, то ли без спрея для увеличения плотности тонера тут никак - но плата хоть и получилась на первый взгляд идеальная - на просвет оказалась как решето, но эта одна беда, вторая в том что слои все же сместились на долю миллиметра, что было бы простительно для более грубой платы но тут очень маленькие пятачки. беда третья - при сверловке на дримеле со штативом сверлом 0,33 столь маленький пятачек с противоположной стороны платы все равно срывается, при лужении столь тонкие дорожки легко сорвать. Вобщем оставил платку на память, как памятник несовершенству :)))

Опыт третий, заказ на промышленном предприятии

Прошерстил ряд региональных фирм работающих с мелкими клиентами, выбрал из тех кто ближе и с доставкой, им оказалась зеленоградская фирма "резонит". Примерно неделя у меня ушла на понимание порядка цен, особенностей заказа, как правильно сформировать необходимые файлы и какие фичи мне реально нужны, оплатил кредиткой (за что у меня сняли порядка 3% комиссии), сегодня обещали доставить. Мои личные потребности составляют примерно 3 платы, но поскольку стоимость печати одной платы и десятка мало отличаются по цене то решил взять 20шт (может удастся впоследствии реализовать излишки через какой-нибудь интернет магазин и частично покрыть расходы)

Не успел дописать статью как позвонил курьер, привезли платы.

Посмотрите, ну это же чудо ювелирного искусства!

Теперь осталось заказать недостающие детали и разъемы и паять.

Идентификация и поиск деталей:

Кварц трех контактный - три в одном два шунтирующих конденсатора и резонатор 16Mhz. долго искал подходящий типоразмер - сначала решил что это zttcv 16mhz (http://www.quartz1.com/price/find.php?text=ZTTCV) но оказалось что эта сборка чуть больше по габаритам, запаять то можно, но эстетика пострадает (позже выяснил что кварц производства фирмы Murata), пытаюсь идентифицировать шестиногую малышку заменившую в схеме 16 выводную дип микруху, похоже это SN74LVC1G3157 - заказал в терраэлектронике. Пока неразрешимой проблемой остается шестиконтактный разъем GPS навигатора, но его в крайнем случае, можно будет взять с платы ардупилота.

Пайка:

Как оказалось, чипы акселя и гироскопов совсем без ног, даже кончики с боков не торчат, также как в чипах видеокарт - выводы расположены снизу, для их пайки используют либо специальные шары либо специальную пасту трафарет и печь. ничего этого нет, случайно нашел на торрентах видеоматериал как можно на галогеновом прожекторе 150вт паять BGA http://opensharing.org/torrent/43161/ , так и сделал,

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

Получилось так:

Есть небольшие сомнения что пропаялось все идеально, но тестирование покажет

Прошивка bootloader Arduino

Собственно эта процедура и превращает совершенно банальный чип микроконтроллера в Arduino

для прошивки понадобится USB-FTDI Адаптер, роль которого может исполнить обычный ардуино - совместимый контроллер, на котором есть разводка выходов FTDI чипа, это несложное соединение называется bitbang программатор

Пины этого разъёма arduino:

  • 1 (CTS) — MISO

  • 2 (DSR) — SCK

  • 3 (DCD) — MOSI

  • 4 (RI) — RESET

Дополнительно подключаем общий и +5в

Используемые для программирования пины на ardupilot imu

  • GND

  • 5V

  • SCK

  • MISO

  • MOSI

  • RST — RESET

после того как схема собрана распаковываем архив bootloader.rar в папку близкую к корневому каталогу, запускаем консоль, выбираем директорию программатора и запускаем 328p.bat

батник специально настроен на низкую скорость во избежание ошибок, поэтому придется подождать 2-3 минуты

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

Для этого отсодиняем Bitbang, оставляем питание, общий

припаиваем reset, rx, tx чипа IMU к соответствующим выходам платы Arduino используемой в качестве FTDI адаптера

Загруженная прошивка бутлоадера, тип чипа и частота кварца теперь соответствуют arduino pro 5v 16Mhz w atmega328

следующий шаг - проверяю на простом примере, решив что раз не стоят практически никакие резисторы надо задать программно опорное напряжение - в результате сжег акселерометр, в схеме ардуиму упразднен необходимый резистор от aref к питанию 3,3 в результате в цепи 3,3 появилось 5 вольт

Желательные - дополнительные материалы:

Безотмывочный флюс для пайки BGA

Легкоплавкий припой, например ПОС-80

Паста паяльная для трафаретной пайки (флюс с мелкодисперсным порошком припоя)

Как прошел процесс пайки:

Плату разместил на прожекторе и периодически подогревал поддерживая температуру 50-60 гр, зубочисткой (пробовал 10 кубовый шприц с толстой иглой засасывать через нагретую иглу и дозировать - неудобно, слишком густая паста) наносил паяльную пасту на установочные места смд резисторов и конденсаторов, при этом прикасаясь к разогретой плате паста ровно распределялась а не тянулась за зубочисткой, поверх прилепил резисторы и кондеры, на места установки чипов-сенсоров также нанес пасту и поставил чип ADXL (это была ошибка!)

Когда расстановка закончилась стал нагревать в полный накал но не на стекле а приподняв на 5 мм (стекло долго остается горячим а длительный перегрев тут не к месту) резисторы и кондеры припаялись неплохо, некоторые даже выровнялись некоторые размера 0402 оказались приподняты одним выводом к верху (одна капля перетянула на себя). я читал ранее что в условиях ик пайки такие деффекты пытаться исправлять не следует, лучше исправить потом, паяльником, так и сделал

резисторы размера 0603 и прилипали гораздо лучше и пайка получилась идеальная a ADXL собрал каплю на пластину меж выводов и на ней съехал в сторону (увидев такое дело я его снял с платы и лишь потом отключил подогрев). С тем чтобы никакие капли впредь не сбивали чип, решил что следовало покрыть пластину лаком, а в месте с ней и переходные отверстия под чипами гироскопов.

За следующий сеанс залудил в избытке канифоли площадки контактов чипов, так чтобы получились ровные горки, отмыл ацетоном и покрыл тонким слоем безотмывочного флюса для бга. в результате adxl и z-гироскоп припаялись, а x-y гироскоп как оказалось в результате тестирования- не работает.

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

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

В последнюю очередь запаял паяльником детали с элементами пластика - штыри, кнопку и светодиоды (возможно светодиоды и зря, но к моменту пайки я упустил как ориентировать светодиоды, позже нашел снизу метку в виде знака массы, черточка указывает на катод [минус диода])

После промывки получилось такое вот изделие:

самодельный ardupilot imu v2 flat

Наверное обратили внимание что не запаяны штыри, диод, стабилизатор 5 вольт и разъем GPS.

  1. С разъемом все просто, я его заказал, но срок три недели :(, его еще нет. (исправлено позже:три недели прошли:)

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

  3. Регулятор 5вольт в корпусах sot23-5 попались со входным напряжением не более 8 вольт, т.е. однобаночный аккумулятор для него мало, а двухбаночный - много. Почитал спецификацию - у разработчика также 8 вольт, соответственно от 2-3 баночного все равно потребуется нестандартный внешний стабилизатор, а 5 вольт можно взять с приемника.(возможно это какое нибудь резервное питание, но в любом случае допаять будет несложно), кстати если кому попадется стабилизатор sot223-5 cо входом порядка 15 вольт и током от 150ма и подходящим расположением выводов - дайте знать kozin@mail.ru

Тестирование:

Так как бутлоадер там уже есть, сразу залил туда последнюю версию прошивки и решил потестить при помощи

Ardupilot test application (попутно преодолев некоторые проблемы поиска загрузки и регистрации отсутствующих dll, проблема не у всех, поэтому раскрывать не буду, ее решение легко находится на гугле)

дополнительно пришлось установить десятичный разделитель в системных настройках винды с запятой на точку и изменить несколько строк кода в прошивке - включить вывод данных аналоговых сенсоров:

#define PRINT_ANALOGS 1 //Вывод аналоговых данных считанных из аксела и гиро #define PRINT_EULER 1 //вычисляемые значения необходимого поворота и наклона #define PRINT_GPS 1 //вывод данных о захвате GPS и числе спутников #define PRINT_BINARY 0 //0-вывод датчиков для тестирования, 1-работа с арупилотом

После включения вывода значений сенсоров для тестового приложения станет возможным просмотр "сырых данных" гироскопов и акселерометра,

Исправный акселерометр должен показывать в неподвижном состоянии, когда плата лежит на горизонтальной плоскости значение "100" по оси Z , в перевернутом вниз деталями положении -100 по оси Z. Аналогично должны вести себя показания акселорометра по осям X и Y при размещении платы перпендикулярно уровню земной поверхности на переднее или боковое ребра платы.

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

Что дальше?

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

На будущее - подключить компас, дифф. датчик скорости, высотомер - датчик атм. давления, датчик высоты на основе ультразвука или лазерный измеритель.

Схема, плата, документация:

-Eagle files

-Manual

-Schematics PDF

-Board Diagram PDF

-Code

-ADXL335

-LPR530AL

-LY530ALH

Итак, для автономного полета понадобится минимальный комплект

  1. модуль GPS (cо встроенной антенной, стабилизатором напряжения, и желательно батарейкой, поддерживающий стандарт nmea, частота обновления 4-10Гц )

  2. Плата автопилот на чипе atmega328

  3. Плата сенсоров, о которой шла речь в данном обзоре

Где взять плату, детали или готовое устройство "платы сенсоров"

  • Вариант 1: заказать у меня плату с комплектом деталей и спаять самостоятельно, см. раздел Продукция

  • Вариант 2: заказать у меня готовое устройство

  • Вариант 3: печатную плату заказать или попытаться изготовить самостоятельно , а детали подобрать в магазинах (см. магазины радиодеталей на страничке Ссылки)

  • Вариант 4: Искать готовое изделие в китае, например taobao.com с использованием гугль-переводчика, покупать через посредника

Где взять плату автопилота "ardupilot"

  • терраэлектроника

  • электронщик

  • десси

  • спаркфан http://www.sparkfun.com/products/8785

  • у меня в разделе продукция

(см. магазины радиодеталей на страничке Ссылки)

Где взять модуль GPS навигатора

  • десси

  • спаркфан http://www.sparkfun.com/categories/4

  • у меня в разделе продукция

Желаю творческих успехов!

ps:

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

файлы бутлоадера, программа-програматор и bat файлы с примерами вызова в файловом архиве http://files.msdatabase.ru/