Телеметрия (часть 1)

smalltim

Прошивка:

Картинка инициализации:

Картинка нормальной работы:

Картинка при потере сигнала:

Обработка датчика тока требует натурной проверки, но по программе всё ок - соединяю вход соответствующего канала АЦП с +5В - получаю 100А ток (плата показывает 99.2), и миллиамерчасы правильно бегут.
Натурная проверка датчика тока - завтра.

smalltim

Пора наброском обрисовать, что надо иметь на второй плате.

  • Контроль горизонта - 3 пары пирометров - 3 канала АЦП и 3 дифференциальных ОУ.
  • Данные с GPS и с датчиков скорости/высоты/температуры/напряжения/тока первой платы - через SPI.
  • Своё питание или брать с первой платы? Предусмотреть питание от USB!
  • Интерфейс с USB - встроен в атмегу
  • Небольшая флешка для логгинга параметров - не SD или CompactFlash, а маленькая микруха.
  • Акселерометры по 3 осям - 3 канала АЦП? Цифровой вход?
  • 3 выхода PPM: крен, тангаж, газ.

Что еще предлагаете:

  • Контроль высоты на посадке, на небольших высотах - ультразвуковой датчик - АЦП? Цифровой вход?
  • Магнитный компас - точно надо?
smalltim

Про акселерометры - погорячился. Надо гироскопы. А у гироскопов цена такая, что убиццо. Нафик.

SGordon

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

Dikoy
smalltim:

Пора наброском обрисовать, что надо иметь на второй плате.

  • Контроль горизонта - 3 пары пирометров - 3 канала АЦП и 3 дифференциальных ОУ.
  • Данные с GPS и с датчиков скорости/высоты/температуры/напряжения/тока первой платы - через SPI.
  • Своё питание или брать с первой платы? Предусмотреть питание от USB!
  • Интерфейс с USB - встроен в атмегу
  • Небольшая флешка для логгинга параметров - не SD или CompactFlash, а маленькая микруха.
  • Акселерометры по 3 осям - 3 канала АЦП? Цифровой вход?
  • 3 выхода PPM: крен, тангаж, газ.

Что еще предлагаете:

  • Контроль высоты на посадке, на небольших высотах - ультразвуковой датчик - АЦП? Цифровой вход?
  • Магнитный компас - точно надо?

Зачем 3 пары пирометров?.. Пирометрам АЦП не нужен!!!
Флешку таки проще мини-SD. Могу поделиться файловой системой 😉 Отъест 10 кБ флеша и примерно треть ОЗУ от м1287, но две трети ОЗУ и 118 кБ флеша останутся 😃 Просто это удобней. У меня сейчас самого стоит микросхемка-флешка. Так в случае чего слить с неё данные - целый ритуал… Особенно после аварии, когда половину деталей срезало. Но я не настаиваю.
Аксели нафиг не нужны. Как и гироскопы.
Выходов PPM лучше сделать 6, тем более что м1287 это легко позволяет.

Satelite
smalltim:

Пора наброском обрисовать, что надо иметь на второй плате.

  • Контроль высоты на посадке, на небольших высотах - ультразвуковой датчик - АЦП? Цифровой вход?

если интегрировать УЗ радар в проэкт, то нужно 2 свободных, внешних прерывания
и 1 ножка настроенная на выход

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

Dikoy

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

smalltim

>Зачем 3 пары пирометров?..

3 оси: X, Y, Z

>Пирометрам АЦП не нужен!!!

Серьезно? А что нужно? Прямо к сервам подключать?

>Выходов PPM лучше сделать 6

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

SGordon

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

Brandvik

на счет 6ти машинок не знаю, но минимум 2 на элероны надо, и что бы правильно обрабатывались сигналы включения флапов или тормозов. Тоесть надо еще и два входа на элероны предусмотреть.

smalltim

Ок, разумно.
Итого:

1 канал на РВ
1 канал на газ
2 канала на элероны (по сути один канал, но еще +1 с инверсией)
1 канал на тормоза/флапероны

Artie
smalltim:
  • 3 выхода PPM: крен, тангаж, газ.

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

На данный момент я сделал прошивочку для мультиплексовских синтезированных приемников, которые на полном автомате раз в секунду (можно чаще, но мне пока не нужно) по последовательному порту выдают мне сейчас следующий набор параметров:

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

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

А дальше - возможности ограничиваются только фантазией:

  • переключение на резервный частотный канал при возникновении помех (на одном приемнике);
  • одновременная работа на двух и более каналах (с соответствующим количеством приемников, конечно);
  • “привязка” к своему передатчику (от помех не спасет, но чужого слушаться не будет),
    и так далее…

Весь интерфейс к приемнику - одна нога (с землей - две 😉).
Если не увеличивать количество каналов, то никаких физических переделок приемника не требуется, - только апдейт софта.

PS: (*) - пока не работает из-за бага в фирменной прошивке.

smalltim

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

У автопилота в моем варианте не предполагается иметь на входе PPM с приемника вообще. Только “работает / не работает”. То есть, потеряли сигнал или выключили передатчик - включился автопилот. Включили передатчик - автопилот отрубился.
Ну, электрически, конечно, нужны входы - надо или пропускать PPM с приемника на сервы без изменения, или выдавать свой PPM. Коммутация - дискретной логикой типа 2И. Но логически автопилоту знать, что там на входах, без надобности. Ошибаюсь?

Artie
smalltim:

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

У автопилота в моем варианте не предполагается иметь на входе PPM с приемника вообще. Только “работает / не работает”. То есть, потеряли сигнал или выключили передатчик - включился автопилот. Включили передатчик - автопилот отрубился.
Ну, электрически, конечно, нужны входы - надо или пропускать PPM с приемника на сервы без изменения, или выдавать свой PPM. Коммутация - дискретной логикой типа 2И. Но логически автопилоту знать, что там на входах, без надобности. Ошибаюсь?

В данном случае я имел в виду именно “электрически”. И “2И” тут не прокатит, - нужны честные мультиплексоры, бо простой приемник не различает состояния “хороший сигнал”/“плохой сигнал”/“вообще нет сигнала - сплошные помехи”, а следовательно мусор на канальных выходах будет пролетать, мешая автопилоту автопилотировать.

С другой стороны, для собственно процесса автопилотирования знать состояние входов действительно не нужно, но управлять-то этим самым автопилотом как-то хочется ? И еще было бы неплохо определить момент, когда нужно начать автопилотирование, а это - не только провал уровня сигнала, а еще и помехи. Значит, как минимум один вход нужно честно обрабатывать…
А мне, например, нравится видеть на экране телеметрии значение канала газа, - значит еще один канал ? А еще мне хочется получить произвольное количество “rc-switches” без дополнительного железа. А еще - полный логгинг всех действий (поглядел и сразу понятно - ветром приложило, или сам зарулился).
А еще будут вечные проблемы при смене передатчиков, при настройках микшеров или расходов, - каждый раз придется тонко перенастраивать автопилот…

Короче, я свою конструкцию никому не навязываю 😃, но лично мне она нравится именно тем, что все - в одном флаконе, не плодится лишних сущностей, и всего интерфейса - один стандартный шнурок. Отключил его - и летаешь на обычном самолете, подключил - получил “всю полноту власти”. И никаких лишних ресурсов на формирование кучи выходов. И нет путанки из кучи проводов от приемника и к сервам, ловящих и генерирующих наводки…

Brandvik

В вашем случаи придется всем купить по мультплексовскому приемнику отчехлив по 2 а то ибольше сотни вечно зеленых. А еще стоит задуматься что есть люди которые летают на 2.4 Ггц. Так что массовости ваш вариант никак не получит.

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

Dikoy

>Зачем 3 пары пирометров?..
>3 оси: X, Y, Z

А подумать?

>Серьезно? А что нужно? Прямо к сервам подключать?

Можно попробовать и прямо к сервам. Что ещё остаётся делать?

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

Уже перечислили. В добавок у людей может быть выпуск шасси, парашюта и прочая хрень. Что так противит использовать два хардверных таймера?

Artie
Brandvik:

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

Ну, у нас 7-канальный синезирующий приемник стоит 2400-2500р. Неужто в европах оно в два раза дороже ?

А еще стоит задуматься что есть люди которые летают на 2.4 Ггц. Так что массовости ваш вариант никак не получит.

“Наше дело - предложить, ваше дело - отказаться…” 😃

Я первой же строкой предупредил, что это - шаг от “народности”. Но выгода от упрощения конструкции, повышения надежности, и от всех прочих “перспектив” - достаточно велика (на мой вкус).

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

Вот и получит Тимофей свои 3 (6, или сколько там желают народные массы ?) входов канальных импульсов, которые нужно уметь обрабатывать ! 😛

  • Пусть не в полете, но делать-то этот модуль все равно придется…
smalltim

>Зачем 3 пары пирометров?..
>3 оси: X, Y, Z

А подумать?

>Серьезно? А что нужно? Прямо к сервам подключать?

Можно попробовать и прямо к сервам. Что ещё остаётся делать?

Утомил, чесслово. Ценю помощь, но ребусы и эти вот экивоки достали уже.

В данном случае я имел в виду именно “электрически”. И “2И” тут не прокатит, - нужны честные мультиплексоры, бо простой приемник не различает состояния “хороший сигнал”/“плохой сигнал”/“вообще нет сигнала - сплошные помехи”, а следовательно мусор на канальных выходах будет пролетать, мешая автопилоту автопилотировать.

С другой стороны, для собственно процесса автопилотирования знать состояние входов действительно не нужно, но управлять-то этим самым автопилотом как-то хочется ? И еще было бы неплохо определить момент, когда нужно начать автопилотирование, а это - не только провал уровня сигнала, а еще и помехи. Значит, как минимум один вход нужно честно обрабатывать…
А мне, например, нравится видеть на экране телеметрии значение канала газа, - значит еще один канал ? А еще мне хочется получить произвольное количество “rc-switches” без дополнительного железа. А еще - полный логгинг всех действий (поглядел и сразу понятно - ветром приложило, или сам зарулился).
А еще будут вечные проблемы при смене передатчиков, при настройках микшеров или расходов, - каждый раз придется тонко перенастраивать автопилот…

На базовой плате уже есть обработка одного канала, по его состоянию идет и оценка “есть прием - нет приема”.
Зачем мониторить все остальные каналы?
Зачем настраивать микшеры-расходы-передатчики?
Один канал мониторим, и всё, баста, все остальные - или байпасс с приемника, или рулим ими сами. Мультиплексирование проще всего сделать снаружи атмеги дискретной логикой. От Атмеги потребуется только одну лапку поднимать-опускать.

Зачем произвольное количество “rc-switches” в автопилот с платой телеметрии?
Если нужен RC switch, то он делается на 2 триггерах и 2 деталюшках + полевик за 10 минут, весит долю грамма и работает вечно.
Как это связано с телеметрией и автопилотом?
Хочется выпустить шасси и включить прожектрора на посадке? Ок, договорились, будет не 3 а 6 каналов. Можно добавить логических выходов для управления силовой электроникой.
Но давайте не будем делать универсальную летающую теле-кофеварку с изменяемой геометрией и сушкой белья!

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

Автопилот - это система с регулируемой отрицательной обратной связью, так что тщательно настраивать средние положения и т.д. не надо.
Даже если и встанут рули раком при его включении, изменение ориентации аппарата заставит автопилот тут же выровнять самик и поддерживать нужный курс и ориентацию.
И даже инвертирование какого-либо из каналов - пофигу. Математике всё равно, какая ширина PPM приводит к крену в нужную сторону. Математика подберет PPM так, чтобы крен всегда шел в нужную сторону.
Ошибаюсь?

Brandvik

Нет, я об этом не подумал, но всеже, крайние точки отклонений думаю ему знать необходимо. Иначе может загнать серву в тупик, а если серва мощная то и отломать чего нить.

smalltim

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

Да, это нужно. Наверное. Впрочем, если я правильно понимаю, если ширина PPM на выходе ограничена от 1 до 2 мсек, то серву не сломать никак. Ну разве что механически что-то там ограничивает ход сервы. Тогда - да. Но те кто такое строят - сами себе злобные буратины.

Хочу еще раз четко написать, чего я хочу. Возможности-то мои невелики, я ж не гуру, и полноценный беспилотник мне не по зубам.
Моя цель - попробовать сделать простой надежно работающий автопилот с банальной целью избежать потери самика при потере сигнала и прочих ЧП.
Заплутал, захотел вернуться, кончаются батарейки или просто потерялся RC сигнал - включай(включается) автопилот: неспешно развернулись, заняли заранее запрограммированную высоту, прилетели на базу, кружим на этой высоте над базой. Дальше будь добр включить передатчик или отключить автопилот и посадить самик ручками.
Посадка при помощи автопилота, с ультразвуковыми датчиками и т.д. и т.п. - это уж как получится. Получится - хорошо, а не выйдет, так и фиг с ним. Нельзя объять необъятное.
Ну, а вкусности типа логгинга данных в память, настройки через компук, слива данных в компук - это нужно, от этого в наше время уже грешно отказываться.

Brandvik

Не, я не про поломку сервы, я про поломку самика (вывороченный с корнем кобанчик, или оторванный элерон 😃 ). Как правило, сегодня мы строим самики не сильно задумываясь о том что ход сервы может быть больше допустимого хода например руля высоты. Это раньше, до компьютерной аппы. нужно было настраивать расходы механически. Сегодня же чаще всего расходы подстраиваются программно, отсюда и возникает необходимость ограничивать расходы у автопилота. Или же придется по старинке настраивать расходы механически. а автопилот не будет вылазить за 1-2мсек.

smalltim

Проверил датчик тока в реальных условиях.
Отклонение выхода датчика от заявленного VCC/2 при нулевом токе и неидеальная точность резисторного делителя на соответствующем входе АЦП
привели к тому, что просто вычитать из показаний АЦП фиксированную величину нельзя - недостаточно точно, особенно на малых токах.
В таком варианте датчик показывает 0.00А при подключении в разрыв питания камеры и видеопередатчика, то есть, где-то 300-600мА оказались съедены ошибкой резисторного делителя и датчика тока.

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

После этого удалось, наконец-то, точно определить, сколько же кушает моя камера с передатчиком: 580 мА. Не так уж много.

Видео и прошивка версии 226 - через 20 минут.

smalltim

Прошивка:

Картинка с видео:

Видео (730кб):

Термодатчик, датчик тока, модуль GPS:

Система в сборе:

Dikoy
smalltim:

Утомил, чесслово. Ценю помощь, но ребусы и эти вот экивоки достали уже.

И когда же я успел утомить высочество?
Не надо огрызаться на попытки помочь, не будет “экивок”. Впорочем, дело твоё. Ставь хоть 10 пирометров и мерий ацп дискретные выходы. Только в уравнении всего 4 элемента, а остальные, как ни крути, сокращаются.

Psw

Кстати датчики бывают не только двунаправленные на ±XX ампер но и одно направленные на +ХХ ампер. У первых выход в покое = Питание /2 а у вторых - ближе к 0 вольт. Другое дело что в продаже их быть могет слегка сложнее найти.

smalltim:

датчик показывает 0.00А при подключении

Мне кажется, что датчик тока на сенсоре Холла так устроен - в момент подачи питания он автокалибруется на 0 (от температуры/внешнего магнитного поля как минимум), а потом уже показывает дэльту от авто калиброванного нуля.
Так что ничего удивительного что съелось 500 мА. Наверняка автокалибровка датчика съест и более.
А вот как с этим бороться кроме отдельного линейного стабилизатора питания датчика тока - не знаю.
Ну или можно к этому авто калиброванному в датчике 0.00А прибавлять заранее известный ток потребления покоя - он не сильно колебается без приёмника/руль машинок.
Ну и если экономить место на экране то вполне можно выводить номер и напряжение только одной самой просевшей банки - тогда и компоновка экрана не будет менятся при изменении количества банок.