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

Brandvik

Ну вот, из пустого в порожнее. Я же тоже не отменял GPS. Я его отменил для задач измерения высоты и скорости.

Artie
Brandvik:

Ну вот, из пустого в порожнее. Я же тоже не отменял GPS. Я его отменил для задач измерения высоты и скорости.

Ну, так уж сразу и “в порожнее” ? - В результате наших “переливаний” Вы, например, уже слегка “урезали осетра” - с 5км диапазона и 1м точности до несколько неопределенных слов про “минимально возможную погрешность”… В процессе выяснилось, что “минимально возможная” от gps нас не устраивает; - теперь следует понять, годится ли эта самая минимально возможная от барометра… 😃

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

Вообще, это совершенно традиционный вариант переговоров:

З: Неужели методом X нельзя получить точность YYY ? А каким тогда можно ?
Р: Ну, вообще это делается ZZ, но это очень сложно и дорого, поэтому можно попробовать Z. Это будет стоить NN.
З: Нет, NN - это тоже слишком дорого ! А что можно получить, если все-таки поставить X ?
Р: Ну, YYY точно не получится. Обычно оно дает Y, но если исхитриться, то можно сделать 2Y.
З: 2Y, говорите ? Нда, это звучит не так красиво. Ну, ладно, пусть тогда будет просто Y…
Р: А зачем же вы просили YYY ?
З: Ну, у буржуев всего 4Y, а мы хотели чтобы было лучше. И вообще, двенадцатиразрядный индикатор так красиво вписывался в нашу приборную панель !
😁

Brandvik

Ладно, ладно, я все понимаю. Заказчик обычно не очень сильно понимает чего хочет. Он где-то слышал, где-то видел и начинает фантазировать свои запросы. В данной теме я выступаю в роли виртуального заказчика и я “не сильно в теме” возможностей и тех решений. Отсюда и цифры.
Давайте попробуем сделать по другому.
Я опишу чего бы я хотел на словах, без цифр. А все желающие пускай напишут как это можно реализовать в каких цифрах, погрешностях и размерностях
Для пилотирования ДПЛА мне необходимо знать; Высоту относительно точки старта, скорость воздушную,скорость относительно земли, иметь вектор направления на базу, удаление от базы напряжение силовых батарей, напряжение батарей телеметрии, полетное время.
Ваши предложения?

smalltim

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

Дарю идею, которая лежит на поверхности: на протяжении всего полета, или последней минуты-двух-трех, каждую секунду кладем в копилку (в циклический массив) высоту от GPS и высоту от барометра. Каждую секунду усредняем. Средняя высота от GPS точнее, поскольку усреднена на длинном интервале времени, на нее и опираемся. Вычитаем одно среднее из другого и прибавляем к показаниям барометра, который точнее на коротких интервалах времени.
На экране 50 раз в секунду показываем скорректированные показания барометра.
Вот.

Сам не пробовал, и не хочу пока - не хочу пока связываться с GPS 😃

Artie
Brandvik:

Я опишу чего бы я хотел на словах, без цифр. А все желающие пускай напишут как это можно реализовать в каких цифрах, погрешностях и размерностях
Для пилотирования ДПЛА мне необходимо знать; Высоту относительно точки старта, скорость воздушную,скорость относительно земли, иметь вектор направления на базу, удаление от базы напряжение силовых батарей, напряжение батарей телеметрии, полетное время.
Ваши предложения?

По моим (грубым) оценкам, барометрическая высота на небольшом (скажем, до 30 минут) интервале времени может быть получена с точностью метра в 3-5. Потом (через эти самые полчаса) - перекалибровка на земле.
Воздушную скорость навскидку не оценю (эту цифру, наверное точнее назовет smalltim), но думаю, что 1-2м/с получить вполне можно, а лучше - точно не нужно. Скорость относительно земли - это уже с GPS’а; - будет 0.5-1м/c.
Азимут и дальность - в зависимости от того, насколько в угоду производительности будет упрощена математика - думаю, от 5-10 градусов и 10-20 метров - вполне реально. (На самом деле, угол будет тем точнее, чем больше дистанция. В радиусе же 2КВО он, очевидно, начнет метаться, как потерянный.)
Напряжения и токи - в принципе, сколь угодно точно, но по факту лучше чем 100мВ и 100мА для этих задач явно не нужно. Время - вплоть до 20мс.

Устраивает ? 😃

Artie
smalltim:

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

“Нипалучицца !” 😛

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

smalltim:

На экране 50 раз в секунду показываем скорректированные показания барометра.

А это - еще более бессмысленно. 😉
Цифровую информацию, обновляемую с тактом быстрее 300-500мс, человек вообще воспринять не в состоянии, а ведь нужно на нее еще и как-то отреагировать…
Чаще, чем раз в секунду, обновлять на экране не следует ничего.

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

foxfly
Artie:

По моим (грубым) оценкам, барометрическая высота на небольшом (скажем, до 30 минут) интервале времени может быть получена с точностью метра в 3-5. Потом (через эти самые полчаса) - перекалибровка на земле.
Воздушную скорость навскидку не оценю (эту цифру, наверное точнее назовет smalltim), но думаю, что 1-2м/с получить вполне можно, а лучше - точно не нужно. Скорость относительно земли - это уже с GPS’а; - будет 0.5-1м/c.
Азимут и дальность - в зависимости от того, насколько в угоду производительности будет упрощена математика - думаю, от 5-10 градусов и 10-20 метров - вполне реально. (На самом деле, угол будет тем точнее, чем больше дистанция. В радиусе же 2КВО он, очевидно, начнет метаться, как потерянный.)
Напряжения и токи - в принципе, сколь угодно точно, но по факту лучше чем 100мВ и 100мА для этих задач явно не нужно. Время - вплоть до 20мс.

Устраивает ? 😃

Мне кажется, тут должна последовать фраза из анекдота: “Дорогой, а с кем это ты сейчас говорил?”😃
Тем более, не полетавши на ДПЛА выдвигать какие-то ТТХ- занятие довольно бессмысленное, примерно- как бокс по переписке…
А азимут с точностью 10 градусов- это не курс, а направление:)
Прикиньте, где окажется аэроплан , летящий с удаления 5км с точностью 10грд.? Правильно- нэ в нашэм районе.

foxfly
Brandvik:

Вот, наткнулся о GPSах , надеюсь кому нти это будет тоже интересным. www.navigatorgps.ru/content/view/125/7/

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

smalltim
Artie:

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

А Вы подумайте хорошенько 😃
Есть такие слова, как матожидание и дисперсия. Давайте их применим к нашим летающим баранам.
У показаний с ГПС матожидание будет где-нибудь в районе средней высоты полета за последние три минуты. Дисперсия - большая, но на матожидание она принципиально не влияет.
У барометрического датчика матожидание будет то же где-нибудь рядом с матожиданием высоты от ГПСа, но не в точности такое, ибо уползает из-за изменения атм. давления. Дисперсия показаний у барометра на маленьких интервалах времени невелика.

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

Ну так и кто мешает сдвигать показания барометрического датчика _постоянно_, основываясь на показания ГПС, несмотря на то, что средняя высота за последние три минуты не имеет смысла?

Artie
foxfly:

Мне кажется, тут должна последовать фраза из анекдота: “Дорогой, а с кем это ты сейчас говорил?”😃
Тем более, не полетавши на ДПЛА выдвигать какие-то ТТХ- занятие довольно бессмысленное, примерно- как бокс по переписке…

Я готов согласиться, что у меня - “не настоящий ДПЛА”. - Не буду спорить о терминологии. 😉
Но меня полеты на своем пепелаце вполне устраивают, равно как и моя реализация телеметрии. Не говоря уже о том, что оценку точности той или иной технолигии можно давать, вообще ни на чем не летая, - достаточно знать предметную область.

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

foxfly:

А азимут с точностью 10 градусов- это не курс, а направление:)
Прикиньте, где окажется аэроплан , летящий с удаления 5км с точностью 10грд.? Правильно- нэ в нашэм районе.

Ошибка в определении угла в прямоугольном треугольнике определения точностью задания его катетов и точностью вычисления арктангенса. Первое для одночастотного gps-приемника заведомо известно - это порядка 15м КВО, а второе выбирается, исходя из вычислительных ресурсов и решаемой задачи. Если Вы еще не забыли, то обсуждается не самолет-разведчик, отправляемый на территорию сопредельного государства, а чисто хоббийная примочка - just for fun, и исходя из этой задачи я и озвучил ошибку в 10 градусов, которая возможная на удалении порядка сотни-другой метров (ближе самолет уже точно видно глазом, равно как с него видна и ВПП). И тут вполне пригодно даже “направление”.
Если же вдруг предположить, что мы вдруг действительно улетели на 5 километров, и у нас при этом не пропал ни ап- ни даунлинк с моделью, то несложно прикинуть, что на таких удалениях угловая ошибка будет порядка четверти градуса, - то есть, значительно меньше того, что вообще имеет смысл отображать на экране…

Artie
smalltim:

А Вы подумайте хорошенько 😃

В данном случае - не буду спорить.

Если Вам удастся (например, на простейшей мат. модели, состоящей из трех графиков: а) некая “истинная” высота, б) “накладываемая” на нее ошибка gps-приемника и в) монотонно “уплывающая” ошибка барометрического высотомера) продемонстрировать работающий алгоритм, делающий из а+б и а+в “чистое” а (с точностью, лучшей, чем каждая из этих ошибок) - я с удовольствием признаю собственную неправоту в этом вопросе и возьму Ваш метод на вооружение…

smalltim:

Представьте себе две кривые на графике: одна - показания от ГПС, шумная, рваная, но при усредении большого количества отсчетов достаточно точно описывающая высоту.

Для “усреднения на большом количестве отсчетов” нужно, чтобы характерная постоянная времени изменения истинной высоты была много больше периода “плаваний” показания приемника из-за всяко-разных ионосферных, тропосферных, и прочих задержек. А она, к сожалению, или сравнима с последним, или даже меньше его…

smalltim
Artie:

В данном случае - не буду спорить.

Если Вам удастся (например, на простейшей мат. модели, состоящей из трех графиков: а) некая “истинная” высота, б) “накладываемая” на нее ошибка gps-приемника и в) монотонно “уплывающая” ошибка барометрического высотомера) продемонстрировать работающий алгоритм, делающий из а+б и а+в “чистое” а (с точностью, лучшей, чем каждая из этих ошибок) - я с удовольствием признаю собственную неправоту в этом вопросе и возьму Ваш метод на вооружение…

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

Проблемы видятся только в том случае, если истинная высота самолета сильно (сильнее уровня шумов) меняется с частотой выше, чем половина частоты опроса GPS. Ну, это понятно, происки Найквиста-Котельникова. Если самолет не шарахается вверх-вниз чаще чем раз в 2 секунды, всё должно быть хорошо 😃

Degreez

Ну вот, народ начинает вспоминать теорию автомачического регулирования. Время реакции по рассматриваемой оси = Т, соответственно инфу о этой оси нужно получать не реже чем Т/2 (по Найквисту)

serj

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

барометр в спокойную погоду за час обычно уплывает на 5-12м. перед дождем- бывает и 20-30м, но редко.

Далее. ну посмотрите же наконец, на картинки, котрые я выкладывал. 😃
право же, не из пальца содержание, расположение и размер цифр высосаны.

smalltim

Мне еще далеко до такого уровня просветления. Да и не нужно.

Северный

Прочитал всю ветку…
Хочу высказать глубокое уважение к активистам данного вопроса!
Потихоньку изучаю этот вопрос. С pic дружу, тем паче есть хорошие помощники на работе.
Как продвигаются дела у
Artie

Куда деньги нести - признаться, не знаю. Свою версию как нечто коммерческое я не рассматриваю, бо делается оно крайне немудряще; - там не за что брать деньги. Выкладывать свои сорсы в public domain я пока не буду, бо за код стыдно (это, в общем, была поделка уровня “проект выходного дня”), но со временем - по мере причесывания и доведения до ума - вероятно, выложу.

Что посоветуете ‘на попробовать’ для начала?

smalltim
Северный:

Прочитал всю ветку…
Хочу высказать глубокое уважение к активистам данного вопроса!
Потихоньку изучаю этот вопрос. С pic дружу, тем паче есть хорошие помощники на работе.
Как продвигаются дела у
Artie
Что посоветуете ‘на попробовать’ для начала?

Я в скором времени всё выложу. Схему, ASM-код, прошивку, печатную плату в 2 вариантах. Только у меня не PIC, а Mega8. Artie дал добро на выкладывание своего собственного кода отрисовки в состеве моего безобразия, а всёго остального, что у меня понаписано, мне не жалко. Да и нет там каких-то уж особенных откровений.

Brandvik

Здорово! Буду ждать с нетерпением! А пока пенорезку буду заканчивать!

smalltim

Ура!
Сегодня собрал схемку на печатной плате в варианте для SMD, всё заработало, ошибок в разводке не обнаружилось 😃
На плате стоит MPX4115 вместо MPX5010D, завтра надо переписать в коде коэффициенты пересчета давления в высоту.

А начиналось всё очень интересно: только собрал плату, запустил, программирую, так обнаруживаю детеныша, увлеченно водящего жалом тестера по ногам меги8. А мега маленькая, SMDшная, тут ноги и коротнулись. Взгрустнул.
Отправил детеныша спать, впаял новую мегу, прошил - не пашет. Прошиваю заново - вообще не видится. Смотрю fuse-биты - мммааать… Биты поставлены на синхронизацию от внешнего генератора. Взгрустнул пуще прежнего, мега-то последняя, где в час ночи новую достанешь? Подумал. Достал старый вариант телеметрии, быстренько вшил в него простенькую программку, чтоб на видеовыход отсылался меандр, подключил к новой платке - ура, мега определилась. Вшил правильные fuse-биты, прошил - не работает. Прошил меандровую программу - вполне себе меандрит в видео. Сижу, думаю, разглядываю плату. Ага, в цепи ресета LM1881 вместо 680кОм на землю стоит 680Ом. Достал линейку резисторов, проданных в Чипе-Дипе - правда, 680 Ом. Однако!
Поковырялся в заначке, выпаял с какой-то платы 470кОм, впаял - заработала!

Все остальное завтра, а сейчас - отдыхаю 😃

foxfly
smalltim:

Ура!
Сегодня собрал схемку на печатной плате в варианте для SMD, всё заработало, ошибок в разводке не обнаружилось 😃
На плате стоит MPX4115 вместо MPX5010D, завтра надо переписать в коде коэффициенты пересчета давления в высоту.

А начиналось всё очень интересно: только собрал плату, запустил, программирую, так обнаруживаю детеныша, увлеченно водящего жалом тестера по ногам меги8. А мега маленькая, SMDшная, тут ноги и коротнулись. Взгрустнул.
Отправил детеныша спать, впаял новую мегу, прошил - не пашет. Прошиваю заново - вообще не видится. Смотрю fuse-биты - мммааать… Биты поставлены на синхронизацию от внешнего генератора. Взгрустнул пуще прежнего, мега-то последняя, где в час ночи новую достанешь? Подумал. Достал старый вариант телеметрии, быстренько вшил в него простенькую программку, чтоб на видеовыход отсылался меандр, подключил к новой платке - ура, мега определилась. Вшил правильные fuse-биты, прошил - не работает. Прошил меандровую программу - вполне себе меандрит в видео. Сижу, думаю, разглядываю плату. Ага, в цепи ресета LM1881 вместо 680кОм на землю стоит 680Ом. Достал линейку резисторов, проданных в Чипе-Дипе - правда, 680 Ом. Однако!
Поковырялся в заначке, выпаял с какой-то платы 470кОм, впаял - заработала!

Все остальное завтра, а сейчас - отдыхаю 😃

Ночью- надо спать!
А по поводу SMD процессоров Минздрав предупреждал: при отработке программы они крайне неудобны! Ну а в общем- поздравляю.
Только от детеныша паяльник прячь- хорошо, что он водил жалом (300 градусов!) не по своим или твоим ногам, а по “мегиным” 😃
А то у моего знакомого всей пятерней хватанул- тут уж стало не до пайки 😦

smalltim

Итак, на высоте 9-го этажа платка выдала ровно 24 метра. Потом в течение 5 минут MPX4115 медленно плыл, нагреваясь, и высота “подросла” до 26 метров. Учитывая разницу в 15-20 градусов между уличной температурой и температурой в квартире - неплохо. В полете такой разницы, конечно, не будет.
При неизменной температуре, т.е., в комнате, за 5 минут гуляние показаний датчика с моей обработкой оказалось 0.8 метра, т.е., меньше чем шаг альтиметра. В сэмплах это уплывание оказалось суммарно 6 сэмплов при усреднении 16 накоплений по 64 измерения родным 10-битным атмеговским ЦАПом.
Касание датчика пальцами, дышание на него и прочие пляски с бубном дают ± 2 сэмпла.
В общем, всё прекрасно, я даже удивлен 😃

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

smalltim

Так, начинаем раздачу.
Видео старта телеметрии: первые 15 секунд - “разогрев датчиков”: инициализация нуля высоты и скорости в момент времени 5, 10 и 15 секунд.

ASM-код и прошивка телеметрии:

Схема и разводка печатной платы в Eagle:

Eagle доступен в бесплатной версии, проблем быть не должно

Фото вариантов печатных плат:

Фото телеметрии в сборе. Серый шлейф идет к разъему программирования, он будет отпаян. Плата после промывки перестанет пугать внешним видом:

ASM - код кое-где имеет комментарии, “чтоб сам не забыл”, так что проблем с пониманием как что работает, быть не должно.

Железка питается от 3S LiPo (соответственно, код заточен на показ трех напряжений), на плате стоит линейный стабилизатор 5В 0.5А, питающий атмегу и всё остальное. Есть диодная защита от переполюсовки по питанию.

Меряет:
Температура: -40…+85 градусов с шагом 1 градус
Высота: 0…999м с шагом 1 м
Скорость 0…350кмч с шагом 1 кмч
Напряжение: 3х 0…9.99В с шагом 0.01В. Из напряжений на банках 2 и 3 вычитаются напряжения банок 1 и 2, чтоб получить индивидуальные побаночные напряжения. Соответственно, независимо три напряжения не померять без изменения кода.

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

Да, самое главное:
Спасибо Artie, Foxfly, Serj за советы и поддержку 😃