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

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А прибавлять заранее известный ток потребления покоя - он не сильно колебается без приёмника/руль машинок.
Ну и если экономить место на экране то вполне можно выводить номер и напряжение только одной самой просевшей банки - тогда и компоновка экрана не будет менятся при изменении количества банок.

Vad64
smalltim:

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

Я бы все-таки задавал крайние точки, центр и направление рулящих каналов в автопилоте. Крайние точки - чтобы не сломать что-нибудь. Центр - чтобы можно было использовать уже оттриммированный аппарат с простейшим пропорциональным регулированием. Ну и направление, чтобы не подбирать его на лету. Математика - великая штука, но неоправданно усложнять себе жизнь я бы не стал.

Что касается пирометров, как я понимаю, в данном случае достаточно иметь 2 пары датчиков и 2 канала АЦП, как в FMA Co-pilot.

smalltim - успехов!

smalltim

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

Мы, наверное, всё-таки о разных вещах говорим. Я - о вот таких пирометрах: www.platan.ru/shop/www_17.html
Стоят не 30 баксов + доставка из-за бугра, как датчики от Melexis, а 59 российских рублей, имеют аналоговый выход и требуют ОУ и АЦП.
По 2 датчика включаются мостом на один ОУ, дальше - на вход АЦП.

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

Про попытки помочь - ценю, без оговорок. На днях закупаю USB key и окунаюсь с головой.

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

Не, этот датчик тока ратиометрический, так что если питать его от того же, чем питается АЦП, при нулевом токе у него будет строго VCC/2 (ну, плюс/минус заявленная производителем погрешность) на выходе. Засада в том, что на плате распаян резисторный делитель 1кОм:2кОм, так что просто вычитать из показаний АЦП VCC/(2*3) не катит - резисторы имеют погрешность. На другом экземпляре платы, например, будет другое соотношение сопротивлений, и плата всегда будет добавлять 0.5А.
Поэтому я запоминаю, что присутствует на входе АЦП при старте телеметрии (в этот момент лучше не шевелить сервами и не грутить мотор), и потом просто вычитаю это из текущих показаний. Работает на ура 😃.

Artie
smalltim:

Но давайте не будем делать универсальную летающую теле-кофеварку с изменяемой геометрией и сушкой белья!

Дык, я ведь никого не уговариваю. Я предложил очередное свое уже [почти] готовое решение, на мой взгляд красивое (архитектурно) и с изрядным потенциалом по наращиванию функциональности. Если оная функциональность и красота никому не нужны, - так это дело хозяйское… - Буду есть сам, “в одну харю”. 😛

PS: А максимум расходов автопилоту знать все-таки нужно. Потому как они обычно ограничиваются не способностью РМ воспринимать канальные импульсы, а механикой рычагов, тяг, кабанчиков и собственно управляющих плоскостей.
Brandvik это хорошо определил: “чтобы не сломать самолет”.

Vad64
smalltim:

Мы, наверное, всё-таки о разных вещах говорим. Я - о вот таких пирометрах: www.platan.ru/shop/www_17.html

Я полагаю, эти датчики не подойдут. Они предназначены для охранных систем и нормально работают только с переменной составляющей сигнала. CO-pilot использует не пирометры, а термопары (thermopile). Вот они выдают постоянную составляющую и их можно включить встречно-последовательно до ОУ для идеальной балансировки. В пирометрах же встроены истоковые повторители и такое включение не получится. Ну и, конечно, главное - эти пьзопирометры не выдают постоянную составляющую (чувствительность обычно нормируется на 1 Гц переменном сигнале). Так что надо или быстро качать крыльями или ставить перед датчиками механические обтюраторы.

Dikoy
smalltim:

Мы, наверное, всё-таки о разных вещах говорим. Я - о вот таких пирометрах: www.platan.ru/shop/www_17.html
Стоят не 30 баксов + доставка из-за бугра, как датчики от Melexis, а 59 российских рублей, имеют аналоговый выход и требуют ОУ и АЦП.
По 2 датчика включаются мостом на один ОУ, дальше - на вход АЦП.

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

Датчик за 59р, это IRA-E710ST0? Что-то аналогового выхода я у него не нашёл…
Зато нашёл тестовый стенд: search.murata.co.jp/…/CatalogshowpageAction.do?sDi…
Как видно, на датчик дают импульсный сигнал, ибо постоянку он мерить не умеет. Что подтверждает вот эта схема на нём: www.masterkit.ru/main/scheme.php?num=723 Видно, что собран пороговый детектор. Постоянки там быть не может хотя-бы из-за наличия С2.
Иными словами, Ваша схема будет показывать изменение температуры. Но как только она выровняется, неважно на каком значении, датчик покажет ноль.
Буду рад, если окажусь не прав.
Пути обхода этого я представляю, но на практике ещё не применял.
Чтобы датчики работали мостом, надо выдержать равность их характеристик. Или вводить крутилки для выставления смещения в ноль в идеальных условиях. Калибровка цифрой не прокатит, т.к. в нормальной работе датчики в разные стороны и не в одинаковых условиях.

Мои мелексисы стОят 500р в москве и выдают температуру в цифре. Вот только купить их частнику проблема 😦 Если есть знакомое ЮЛ, которое переведёт безнал, - проблем нет, от 2 штук продают.
Кроме того, никто не мешает, обкатав алгоритм на заведомо рабочих пирометрах мелексис, пробовать удешевлять установкой обычных датчиков. Это логично. Но сразу с обычными датчиками можно погрязнуть в проблемах, источник которых совершенно не ясен.
Я покупал через контору, так что цена доставки пофиг.

Про 3 пары. Допустим, самолёт стоит и нижний датчик смотрит на тень. Взлетел - тени уже нет. И всё калибровка идёт лесом 😃
Пирогоризонт работает на принципе равности сигналов всех 4 датчиков. В идеале, ему вообще калибровка не нужна, но я пока этого не добился… Появится время, буду пробовать.
Сейчас калибруюсь повернув самолёт боком.

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

Vad64:

Я полагаю, эти датчики не подойдут. Они предназначены для охранных систем и нормально работают только с переменной составляющей сигнала. CO-pilot использует не пирометры, а термопары (thermopile). Вот они выдают постоянную составляющую и их можно включить встречно-последовательно до ОУ для идеальной балансировки. В пирометрах же встроены истоковые повторители и такое включение не получится. Ну и, конечно, главное - эти пьзопирометры не выдают постоянную составляющую (чувствительность обычно нормируется на 1 Гц переменном сигнале). Так что надо или быстро качать крыльями или ставить перед датчиками механические обтюраторы.

Вот и я о том же!
Можно коммутировать питание датчиков. По идее, сняв питание и замкнув выводы питания и выход, мы разрядим внутренний капацитор. Далее, подаём питание и считаем dU/dt. По сути равнозначно механическому чопперу.
Но это пока домыслы 😃