Система АП на ATMega-х

deltawing

По запросу трудящихся, решил создать тему, дабы было проще выкладывать периодическую инфу и обновления, и разрешать вопросы когда таковые появляются. Кроме того, если кто-то проектирует собственного дрона, некторые моменты будут интересны.
За две инкарнации был создан относительно компактный вариант автопилота с GPS, 3D IMU, OSD на ATmega-х. Собственно целью стояло создание именно как можно более компактного и простого в обращении АП, без излишних “соплей”, и как следствие более высокой надежности, с точки зрения эксплуатации.

Первый вариант автопилота создавался исключительно как модульный вариант, с подключением внешнего GPS (с поддержкой команд GPS Linx и Locosys-совместимых GPS с MTK набором команд).
Вначале был ЛУТ )) (причем для всех плат, и OSD и IMU)

В качестве баросенсора использован пресловутый MPX5004, с последующим усилением ОУ. Термосенсор так же аналоговый TMP36GT9 с последующим усилением на ОУ. Как оказалось, термо-сенсор сильно чувствителен к помехам с видео передатчиков на 1.2 гГц. Под воздействием излучения видео-антенны, начинает выдавать абсолютно неадекватный уровень сигнала.
Как накопитель LOG-ов использован EEPROM от Microchip с протоколом обмена I2C.
Дополнительные модули OSD, IMU подключаются к АП через I2C шину.
OSD - простейший текстовый Overlay на видеосигнал (32х22 символа) на ATMega88, с возможностью задавать оттенок прозрачности фона символов.

IMU включает 3-х осевой гироскоп и акселерометр от ST. Для интеграции матрицы ориентации использован так же ATMega88, при тактовой частоте 8 МГц.

Во втором вариант-е АП были учтены недостатки первого, заменены сенсоры на цифровые (BMP085), GPS и антенна размещены сразу на одной плате с АП, таким образом, стоимость самого GPS модуля в ~3 раза дешевле внешне-купленного, занимает меньше места, отсутствуют лишние провода.

Печатная плата проектировалась сразу для заводской печати. Поэтому удалось еще плотнее сжать элементы. В коробке ~4.5 на ~8.5 см. Без коробки 4x6.
Корпус кстати, печатанный на FDM 3D принтере. Несмотря на казалось бы крупный слой печати 0.2 мм, вполне неплохая коробка вышла, довольно детальная. Термоусадка, как показывает практика, для больших плат не есть лучший вариант.
Трубка пито так же печатанная на принтере. (с аналоговым диф. сенсором MPX5004DP)

Неплохая статья по разработке IMU интегратора: www.starlino.com/dcm_tutorial.html
Процессор IMU ATMega88, работает на частоте 8МГц, частота обновления ~62 Гц (есть возможность повышения до 124 Гц). Работает на FixedPoint арифметике, с точностью 14 бит.
Весь обслуживающий софт самописный, коннект с АП производится через Bluetooth, что в поле более удобно, нежели USB. Хоть и не столь надежно, на расстоянии дальше 10 метров.
В качестве процессора для АП использован ATMega644 на 16 МГц. Для логирования используется FLASH от Atmel на 512 кБ.
Особое внимание пришлось уделить сенсору BMP085. Поскольку на I2C шине висят кроме BMP085 параллельно другие модули, выяснилась неадекватная работа реализации адресации I2C Slave в BMP085. С некоторым адресами параллельных Slave-ов, BMP085 похоже некорректно распознает адрес и при определенных последовательностях байт данных (следующих за адресом) вмешивается в общение Master-a с другим Slave-ом.

Собственно, автономный полет АП

www.youtube.com/watch?v=og2XdWrUQfY

blade
deltawing:

По запросу трудящихся, решил создать тему

Ну то, что устройство не только задумано, но и доведено до изделия-честь и хвала!
Только тем таких тут- штук 5 уже есть :“Полеты по камере, телеметрия”

deltawing:

выяснилась неадекватная работа реализации адресации I2C

А надо РСА9306 ставить - буфер двунаправленный по I2C.
Кстати, ноль гироплатформы в полете- корректируется?

deltawing:

OSD - простейший текстовый Overlay

Если в качестве модулятора видео- обычный резистор, будут проблемы 😦

deltawing
blade:

А надо РСА9306 ставить - буфер двунаправленный по I2C.
Кстати, ноль гироплатформы в полете- корректируется?
Если в качестве модулятора видео- обычный резистор, будут проблемы

С BMP085 разобрался. адреса на других Slave-ов выбрал не конфликтные с BMP. Про буфер думал, но усложнять не стал. И без того есть с чем работать 😉
Ноль (точнее нули) корректируется, естественно. Без этого никак. Оно бы и не полетело как в записи. И вообще бы не пролетело более минуты. ))
Проблемы? Какого характера? Выход за сигнальный DC-диапазон в кадре? Что касается вывода OSD то тестировал на разных источниках видеосигнала и разных приемниках видеосигнала. Пока проблем не наблюдалось. Вообще, по-хорошему нужно делать DC-Restoration для видео-сигнала, и уже с этим работать. Но тогда проще воспользоваться MAX-овской микросхемой видеоналожения и не парить мозг. Но дороже в 2 раза выходит…

Neobius

Тем то может и много но доведенных до ума нет, не считая дорогих закрытых проектов! Эта система испытывается мною уже давно и у меня только лестные комментарии!

www.youtube.com/watch?v=99bqx5lXfD8

вот мой полет в условиях сильного ветра!

blade
deltawing:

Какого характера

Да самого разнообразного: от искажения цветов (из-за ухода баланса белого),до вылезания надписей за границы кадра.
Лечится всё это только применением МАХ либо-установкой модулятора на дискретных транзисторах.
ЗЫ: На Вашем видео-искажение цветов- в полный рост стоит 😦

Neobius:

но доведенных до ума нет

Арду пилот- отлично летает и вполне доведен.
К тому же- всё открыто, можно править под свои нужды 😃

deltawing
blade:

ЗЫ: На Вашем видео-искажение цветов- в полный рост стоит

Вообще уход баланса белого будет только в случае если приемник видео сигнала, осуществляет этот самый баланс. Но уход баланса в этом случае будет всегда, не зависимо от того как сделан OSD, поскольку содержимое кадра модифицируется от исходного, это принимает приемник сигнала и корректирует баланс/гамму под новое заполнение кадра. Ведь баланс белого это коррекция содержимого всего кадра, а не пикселей OSD. А камера обратной связи с PAL или NTSC не имеет. У нее баланс выставляет контроллер на основе того что выдает матрица, а не того что после выхода с сигналом происходит.
Интересно где вы там разглядели искажение цветов? Сдвиг CrCb компонент? На том разрешении 300х200 что в углу кадра вообще текст еле разобрать можно. Может качество не HD вас не устраивает? Камера с которой велась OSD запись весит 1 грамм, вообще чудо что она может выдавать цвета, хоть и в узком динамическом диапазоне, поэтому кстати контраст через чур сильный, и это не зависит от того есть OSD или нет.
Что вы понимаете под искажением цветов и каких именно?

www.youtube.com/watch?v=G7hzr38FbsQ

blade:

Арду пилот- отлично летает и вполне доведен.

А есть еще много неплохих коммерческих систем… И более компактных чем ArduPilot… Никто и не агитирует за смену религий 😉

blade
deltawing:

Вообще уход баланса белого

Просто я занимаюсь вопросами ДПЛА и автопилотов- довольно давно и всех положенных собак в этом деле- съел 😃
А кроме того, основное моё занятие- системы видеонаблюдения (кормиться чем то надо?), где тоже существуют проблемы с согласованием видеоустройств.
Доказывать ничего не буду- если вы считаете, что подмешивание ОСД к видео на одном (в Вашем случае: двух- надо же фон чем то формировать 😃 ) диодах и двух резисторах- правильно, я не возражаю.
И уж тем более- не “агитирую за смену религий”(С)

deltawing
blade:

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

Ну скажем там все-таки есть транзистор, с малой паразитной емкостью )) Иначе бы не было символов “из под” фона видно ))
Кстати первое исполнение OSD было с двумя транзисторами, и работало за счет аппаратного сдвигового регистра TX UART. Очень заманчивое исполнение, но особенности работы UART на AVR не позволили получить полностью чистый кадр. С SPI сдвиговым регистром тоже интересный вариант железного исполнения, но пустой 9 пиксел уменьшает разрешение по горизонтали…
В итоге было решено растеризацию полностью в софте делать.
Если вам интересно что я считаю правильным - то вместо недорого простого решения на ATMega сразу делать графический Overlay на ARM, с восстановлением постоянной составляющей, использованием ColorBurst сигнала для цветного Overlay. Это в идеале ))

Neobius

Сегодня испытал новую прошивочку! Возврат работает именно так как я и хотел - тоесть не снижается пока не приблизится. Русифицированный интерфейс воспринимается нормально - все отлично! Единственное что я пока не могу побороть- не влезает осд полностью в изображение… летаю на вот таком телевизоре bigson.ru/…/15.4-zhk-televizor-dvd-usb-sd.html?fly… (ни разочки не рекламочка) и у меня напряжение крайняя цифра видна пополам - почти не понятно сколько там осталось… Хотя на телевизоре маленьком с низким разрешением все нормально… А так… Доволен как паровоз! Теперь надо менять носитель… Кстати, только сейчас понял что он расстояние до базы пишет по точке а не считает туда высоту - соответственно мой видеопередатчик на штатных антеннах пробивает аж полтора километра! Вообщем вот так вот… Да, и жалко что не могу выложить видео полета - почему то накопитель не хочет принимать входящий видеосигнал… Обидно…

deltawing
Neobius:

почему то накопитель не хочет принимать входящий видеосигнал… Обидно…

Что за накопитель?? Есть недорогие видеорегистраторы, и для борта и для наземки.

Neobius

www.sony.ru/product/dcc-dvdirect/vrd-mc6 (Ни разоньки не рекламулька) Вот такой вот аппарат - все отлично работал а это прям как отбило не хочет сигнал видео видеть и все тут… Обидно… Буду разбираться…

2 months later
deltawing

Ок, продолжаются работы по разработке комплекса АП.
На очереди трекер.
После нескольких попыток изготовления прототипа платы по ЛУТ технологии, было решено перейти на фоторезист. Поскольку ЛУТ не дает повторяемости результата, и в среднем качество плат ЛУТ (сведения двух слоев платы, закрашенных полигонов в частности) сильно зависит от наличия свободного времени. Сводить слои двусторонних плат с ЛУТ очень непростая задача, тратящая много времени и растворителя. Со своим принтером не удалось добится нормальной толщины тонера, для качественного переноса и более-менее уверенного травления чуть больших по размеру плат, чем предыдущие.
Через неделю экспеременотов с фоторезистом был получен способ экспозиции и проявления. Качество несравнимо лучше (с учетом дорожек до 0.15 и просветов 0.2), и времени тратится так же несравнимо меньше, для получения сразу двух очень неплохо выравненных сторон платы.
После долгих раздумий было решено в качестве привода трекера исопльзовать готовые моторедукторы с энкодером, вместо распространенных серв на 360 град, несмотря на более сложную реализацию.
Для передачи данных по видеоканалу используются начальные строки кадра, незадействованные в области вывода камеры. 10 Байт на кадр передается вполне уверенно (по 5 байт на поле). Причем устойчивость к помехам оказалась выше ожиданий при таком способе передачи данных… Калибровка чувствительности к уровню сигнала в кадре производится цифровым способом (на основе ЦАП), так что крутить резюки и лезть в корпус не будет необходимости

Алогоритм калибровки магнитометра реализован на основе аналитического подхода сопоставления повернутого эллипсоида методом градиентного спуска.

Прототип корпуса трекера

Neobius

Липецк как всегда ждет! 😃 Когда примерно выпуск на тест?

deltawing
Neobius:

Когда примерно выпуск на тест?

Конкретную дату назвать пока сложно… скорее всего в январе.

Уточненный прототип корпуса

PS. Буду признателен за ответ на вопрос, где можно найти (купить) мечики для нарезки дюймовой резьбы… В частности для гайки фото штатива…

SGordon

в околоводопроводных магазиах или на E-Bay ( резьба G 1/4 " если ни чего не путаю)

deltawing
SGordon:

в околоводопроводных магазиах или на E-Bay ( резьба G 1/4 " если ни чего не путаю)

Ок, спасибо, надо будет озаботиться…

Распечатанный собранный прототип корпуса, с доделанным энкодером

torex777

Когда протоип будет проверен в полевых испытаниях??? И когда можно будет заказать весь комплекс??

deltawing
torex777:

Когда протоип будет проверен в полевых испытаниях??? И когда можно будет заказать весь комплекс??

Следилка проверяться будет в поле в январе, после января по идее, если не проявятся подводные камни. По отдельным модулям все работает нормально. При какой минусовой температуре следилка будет уверенно работать тоже вопрос, как в прочем и хрупкость замерзшего ABS пластика. Автопилот проверялся до -15 градусов.

torex777

Ну мы как-бы к лету готовимся. посему работу при температурах ниже -5 не рассматриваем))) Как раз к канцу января закончим с ЛК. Будем ждать))

Neobius
torex777:

Как раз к канцу января закончим с ЛК

Ага! Парные полеты! Кстати надо будет придумать вафельку по соединению 2-х самолетов и стрелочку до него по экрану! 😃 А следилку действительно ждем! У нас получается 2 следилки и еще 1 автопилот нужен будет… Кстати что там с вопросом борьбы с ветром?

А то как то заыли про эту тему… А ведь актуально…

Кстати об ЛК - пора бы бустер на управление покупать… Все бы ничего да видео получится намного дальше бьет чем управление…