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

ReGet
smalltim:

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

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

smalltim:

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

Не очень понял почему не меняется, в случае с ветром выходит все тоже самое. Стрелка будет показывать, что самолет летит не туда, куда на самом деле и база будет точно также не 30 градусов левее, чем нужно.

smalltim:

Смысл смотреть на обе высоты всё-таки есть. Если GPS приемник сваливается в 2D режим (помехи какие-нибудь, полет над гладью воды - Dikoy говорит, могут быть глюки, перевернутый полет, бочка там, мало ли что…), то высоту всегда можно увидеть по показаниям барометрического датчика.

А в каких случаях высоту нельзя увидеть по барометрическому датчику?

smalltim:

Километр - это очень круто для меня 😃 Я пока дальше чем метров 500 по горизонтали и 600 в высоту не улетал 😃

Значит самолет при этом удалялся от передатчика примерно на 800 метров, не далеко от километра 😃
Ваш видео-линк при этом выдавал помехи, хотя бы иногда?

smalltim

>Не очень понял почему не меняется, в случае с ветром выходит все тоже самое. Стрелка будет показывать, что самолет летит не туда, куда на самом деле и база будет точно также не 30 градусов левее, чем нужно.

Сейчас у Вас позиция базы на миникарте зависит только от расположения самика. Будет зависеть и от расположения и от курса. Это надо?

>А в каких случаях высоту нельзя увидеть по барометрическому датчику?

Ну не знаю, гроза там, резкая смена погоды, ядерная война 😃

>Значит самолет при этом удалялся от передатчика примерно на 800 метров, не далеко от километра 😃
Ваш видео-линк при этом выдавал помехи, хотя бы иногда?

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

>Насчёт капациторов на 0,1 мкФ. Совсем не обязательно привязываться к этому номиналу. Такая традиция пошла со стародавних времён, когда это был максимальный номинал для керамического конденсатора.

В современных доках тоже пишут про 0.1, но при этом в центре “звезды” питания надо ставить танталовые с большей емкостью.

>1. Почему вход AREF без кондёра? Он там должен быть в любому случае, по дш рекомендуют 0,1. Ставить его нужно обязательно при любом источнике опоры.

А что-то я не увидел в доках, куда и какой кондер вешать на Aref, когда используется внутренний референс вольтаж 5В AVCC. Не подскажете?

>2. Резисторы делителя АЦП слишком малы, говорили уже об этом.

Можно поправить. Но, вообще, токи получаются около 1мА, 2 мА и 3мА по трем входам, соответственно. Это много?
И еще,
The ADC is optimized for analog signals with an output impedance of approximately 10 kΩ or
less. If such a source is used, the sampling time will be negligible. If a source with higher impedance
is used, the sampling time will depend on how long time the source needs to charge the
S/H capacitor, with can vary widely. The user is recommended to only use low impedant sources
with slowly varying signals, since this minimizes the required charge transfer to the S/H
capacitor.

>3. Группы кондёров на 0,1 можно заменить на один, но бОльшего номинала.

В Инфинеоновской доке, которой я руководствуюсь (AP24026, EMC Design Guidelines for Microcontroller Board Layout) эффективность подавления ВЧ помех при 3х или 4х по 0.1 мкФ сильно выше (на ~20dBuV), чем у одного на 1, 10 или 22мкФ.

>4. 7805 лучше заменить на LDO стабилизатор. Попробую подобрать аналог вечером (сейчас некогда). Просто 7805 очень много энергии тратит впустую, да и падение на ней 3 вольта минимум… Впрочем, эти потери всё равно несравнимы с током потребления серв и мотора.
Кстати, очень рекомендую пользоваться L7805 от ST. Их исполнение наиболее качественное, что видно по схеме в ДШ и характеристикам.

А вот это, чесслово, пофигу. Ну какие там токи? 100мА вместе с тем. что жрет GPS модуль? Какие там потери? Ну, упадет на 7805 от 4 до 7.6 вольт в зависимость от заряда батареи, хоть он LDO, хоть он обычный рабоче-крестьянский. Будет на нем в виде тепла 0.4…0.8 ватт выделяться. Да и хрен с ним. Или нет?
Ставить импульсник? И опять по новой бороться с помехами?

>5. Конденсаторы фильтра по входам АЦП надо ставить именно по входам То есть от средней точки делителя на резисторах к земле. Или параллельно “нижнему” резистору, другими словами. Ставить их параллельно батерее безсмысленно. Только устраивать “мостики” для ВЧ помех между батареями

Ок, сейчас поправлю.

Brandvik

Помоему, куда бы не был направлен нос самолета, да хоть задом лети, если смотреть на стрелку которая вращается или кружок которые передвигается, то всеравно направление будет показываться правильно, если самолет движется к базе. так что смотреть надо на стрелку или кружочек и совмещать его с направлением на базу. Я вроде разобрался в принципе вывода. Но все же, если бы стрелка стояла на месте а кружок база двигался вокруг нее было бы нагляднее. А компас как таковой в принципе и не нужен. Кому надо знать в какую часть света он лети? Просто лишний наворот. Так что рамку можно оставить а буквы S,N убрать. Ну а если уж хочется лишний наворот в виде компаса то сделать его сверху в иде полосы как на осд от ранж видео rangevideo.com/docs/OSD.pdf где шаг в цифровом виде будет 1градус.
Ну, это мои такие мысли. Посмотрим что скажут другие.

smalltim

Кстати, свободно еще два канала АЦП. Пока не утрясли схему и я не начал разводить плату, можно набрать пожеланий на эти два канала.
По объему места под код, оставшегося в атмеге, обсчет чего-нибудь типа скорости или высоты уже не потяну, но что-нибудь простенькое с линейной зависимостью физического параметра от входа на АЦП-запросто.

Первое, что приходит в голову - датчик тока на ходовую батарею. Его надо делать, естественно, не на плате телеметрии, а выносным.
Что еще?

ReGet
smalltim:

Сейчас у Вас позиция базы на миникарте зависит только от расположения самика. Будет зависеть и от расположения и от курса. Это надо?

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

Кстати, свободно еще два канала АЦП. Пока не утрясли схему и я не начал разводить плату, можно набрать пожеланий на эти два канала.

Датчик тока ходовой батареии с подсчетом израсходованых мА - было бы очень хорошо.

Кстати, раз переделываете плату, почему заодно не хотите перейти на новый МК, атмега168, например? Раз делается новая плата по уму и на долго, то почему бы не иметь в запасе в 2 раза больше памяти и заодно 20 МГц, кто знает какие идеи родятся через неделю/месяц. Как мне извесно, чипы полностью совместимы 😃

Brandvik

Ага, с новым процем можно будет замахнуться на великого нашего Вильема Автопилота по принципу подруливания как у того же ОСД от ранжа 😉

ReGet

Вот пара скринов со вчерашнего видео

Солнце почти село

Посадка при боковом ветре, реальное направление полета - вдоль линии берега и даже правее (см. курс по GPS)

Ну и заодно конкурс - угадай место 😁

Artie
smalltim:

>Не очень понял почему не меняется, в случае с ветром выходит все тоже самое. Стрелка будет показывать, что самолет летит не туда, куда на самом деле и база будет точно также не 30 градусов левее, чем нужно.

Сейчас у Вас позиция базы на миникарте зависит только от расположения самика. Будет зависеть и от расположения и от курса. Это надо?

Надо, надо.
Без этого приходится изображать из себя не только пилота, но и штурмана, а это - лишний напряг.
… Я ведь сразу советовал так сделать, но благородный дон отказался. 😉

Могу поделиться готовым кодом (asm) отрисовки 36 (sic !) пеленгов на “картушке” 3х3. Требует 13 символов знакогенератора на каждый значок (у меня их два - “база” и “север”. В случае совпадения, первый, как более значимый, перекрывает второй; - может и не так красиво, зато более функционально).

А вот это, чесслово, пофигу. Ну какие там токи? 100мА вместе с тем. что жрет GPS модуль? Какие там потери? Ну, упадет на 7805 от 4 до 7.6 вольт в зависимость от заряда батареи, хоть он LDO, хоть он обычный рабоче-крестьянский. Будет на нем в виде тепла 0.4…0.8 ватт выделяться. Да и хрен с ним. Или нет?

“Или нет”. 😎
Здесь дело не столько в потерях, идущих в тепло (бо они будут одинаковыми), сколько в минимальном напряжении на входе, при котором стабилизатор еще будет чего-то стабилизировать.
У меня, например, аппарат летает от двухбаночной полимерки, так что под конец полета напряжение на ней падает существенно ниже 7В. Соответственно, “обычный” 7805 при этом просаживал и выходное напряжение, а LDO (Low DropOut) регулятор кормит “мозги” до отсечки двигателя…

Brandvik

А почему база сзади? вы ее перелетели на посадке? Я так понимаю при направлении на базу кружок должен быть перед стрелкой?

ReGet
Brandvik:

А почему база сзади? вы ее перелетели на посадке? Я так понимаю при направлении на базу кружок должен быть перед стрелкой?

Перелетел, причем почти на пол километра, а аккумулятора на второй заход уже не было

smalltim

Reget, а что с показаниями скорости по барометрическому датчику, почеу нули?
И где расстояние до базы? Оно должно выводиться справа от миникарты.
Широта и долгота не выводятся - Вы тестовую прошивку взяли?

Про атмега 168 - сейчас вот изучаю. Отличий на самом деле много, названия регистров, разводка как минимум. Не хочется в отлаженный код заново лезть.
Потом, руления сервами в этом чипе абсолютно точно не будет, просто попытка уложить в один кристалл все эти увязанные на время процессы - PPM, вывод на экран, GPS, опрос АЦП - уже потребовало поизвращаться, а если еще и сервами рулить в каком-то фоновом относительно вывода на экран режиме - это будет мегаизвращение.
Будет отдельная плата со своим кодом, своими датчиками горизонта, рулением сервами, и т.д. Связанная с первой платой и с GPS. Ну, если у меня еще терпения хватит этим заниматься.

Про карту - ну, если все подряд хотят направление на базу стрелкой относительно текущего курса, тогда ок, убедили. Лично для себя я оставлю текущий вариант 😃
Всего-то надо взять DX, DY по земле, высчитать, что больше, высчитать, в каком октанте находимся, и прогнать через таблицу арктангенсов.
Получить азимут на базу. Вычесть из направления текущего курса.
Скорее всего, даже меньше кода, чем сейчас получится.
24 положений стрелки, как сейчас, хватит?
Блин, а если у вас вертолет? Или самик во встречном ветре завис над землей и скорость относительно земли нулевая, а значит, с GPS вместо направления курса приходит хаотический песец? Как будете определять, куда лететь и где ваще самик относительно базы? Да, согласен, сейчас не очень привычно, но информативнее и надежнее!

Про LDO - убедили. Про две банки в батарее я как-то даже и не подумал, сам летаю на 3 банках всегда. Если есть LDO с цоколевкой как у 7805, я и менять собственно ничего не буду. Хотите - ставьте LDO 😃

Про датчики тока и миллиампер-часы - вывел входы ADC6 и ADC7 наружу, там посмотрим, что можно будет к ним прилепить. Ну и заодно подправил схему в соответствии с комментами:

Brandvik

Я вот не пойму в чем спор о картах и базах? Я предлагаю зафиксировать стрелку и перемещать базу(кружочек) вокруг нее. Нагладно видно с какой стороны база и куда поворачивать. Вы ведь в кабине, вам негогда отвлекаться, глянул быстро, ага база справа от курса, поворот вправо, пока курс не укажет на базу. Неужели так не проще? + сэкономите пару строк кода избавившись от лишних манипуляций по вращению стрелки. В случае ветра доворачиваете на базу по курсору и все. Зачем вращать стрелку компаса и плюс вокруг нее базу? Что бы вы не вращали получите приведение к ветру если предположить что вы не видите земли (тоесть нет ориентиров ктоме как ОСД) траектория полета будет следующей извиняйте за халтуру 😃
О пока писал уже ответ дали.

Блин, а если у вас вертолет? Или самик во встречном ветре завис над землей и скорость относительно земли нулевая, а значит, с GPS вместо направления курса приходит хаотический песец? Как будете определять, куда лететь и где ваще самик относительно базы? Да, согласен, сейчас не очень привычно, но информативнее и надежнее!

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

Artie

Кстати, Тимофею на заметку:

Это - один из вариантов платы нашего “основоположника” - товарища Шеререра.
Предлагаю взять на вооружение его вариант размещения разъемов: Г-образных, в два ряда, а если места нехватает - то и в две стороны… Ну и вся прочая компоновка у него тоже ничего.

… А вот дублирование групп контактов для программирования я рекомендую не повторять (если Вы таки послушаетесь стариков 😒 и заложите место под второй кристалл). Лучше вывести общую шину SPI с “разорванным” SCK: через один разъем можно будет шить оба кристалла (программатором имени Саши Редчука - прямо сразу, а всеми прочими - через хвостик-переходничок с одним переключателем). - Так и место экономится, и отладка ускоряется.

smalltim

Честное слово, мне пофигу, что изображать. Хотите относительно текущего курса - пожалуйста. Сделаем, куда деваться.

>Без этого приходится изображать из себя не только пилота, но и штурмана, а это - лишний напряг.
>… Я ведь сразу советовал так сделать, но благородный дон отказался.

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

>Неужели так не проще? + сэкономите пару строк кода избавившись от лишних манипуляций по вращению стрелки.

Вы будете смеяться, но нет, так не проще 😃

>Кстати, Тимофею на заметку

Конечно, я это изучил и облизнулся.
Пока к разводке не приступил, но в целом всё будет близко к тому, что делает Шеререр. Только кристалл будет на плате таки один. Второй кристалл - на второй плате.

Artie
smalltim:

Ну и заодно подправил схему в соответствии с комментами:

Тогда уж дорисуйте сразу делители на оставшиеся входы АЦП (строго такие же, как от батареи).
Номиналы резисторов сейчас неважны (множно написать “0” и “DNP”), но какие-то ставить все равно придется, - так пусть для них будет место на плате…

smalltim

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

>Тогда уж дорисуйте сразу делители на оставшиеся входы АЦП (строго такие же, как от батареи).
Ок.

Artie
smalltim:

>Без этого приходится изображать из себя не только пилота, но и штурмана, а это - лишний напряг.
>… Я ведь сразу советовал так сделать, но благородный дон отказался.

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

Прошу пардону, не хотел обидеть…
Просто я начал именно с “компаса”, но обнаружил, что это неудобно. - Как выясняется, не один я такой урод. 😁

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

Ну, у него секретный самолет, оптовые партии, и вообще все очень серьезно… 😉
А мы - так, в игрушки играемся.

Конечно, я это изучил и облизнулся.
Пока к разводке не приступил, но в целом всё будет близко к тому, что делает Шеререр. Только кристалл будет на плате таки один. Второй кристалл - на второй плате.

Ok.
Тогда могу порекомендовать вывести SPI (он же - сразу и для программирования) на такой же разъем на краю платы, как и все прочие, вкупе с землей и питанием…
Захотим - собственно гребенку паять не будем, прицепим к площадкам пять проводков, зашъем через них кристалл и отпаяем.
Захотим - поставим Г-образные пины и прицепим к ним вторую плату через шлейфик.
Захотим - пины ставим прямые, и “автопилотную” плату ставим вторым этажом. (Для такого варианта, кстати, хорошо бы сделать два отверстия под штырьки по углам на прямо противоположном краю платы; через них может даже ничего не идти (хотя можно там пустить дополнительную землю и/или питание), но главное их назначение - механическое крепление второго этажа).

PS: Уже увидев следующее сообщение:
По-моему, там все хорошо раскладывается на два слоя, так что четырехслойка не нужна.
Разводить лучше сразу под нормальную ДПП с металлизацией трюхольных и переходных отверстий (стараясь, впрочем, елико возможно, минимизировать количество VIA.) В таком варианте можно будет заказать и нормальную плату (причем, стоит ее изготовление будет не очень дорого), ну а те, у кого доступа к производству не будет, смогут легко воспроизвести все это на ЛУТ…

ReGet
smalltim:

Reget, а что с показаниями скорости по барометрическому датчику, почеу нули?
И где расстояние до базы? Оно должно выводиться справа от миникарты.
Широта и долгота не выводятся - Вы тестовую прошивку взяли?

Чудеса фотошопа 😒

Кстати, про плату - хорошая тема. Какую плату разводить-то?

Я бы предпочел сделать плату самостоятельно. Делаю фоторезистом, заморочек меньше, чем с ЛУТ и платы после 2-3 раз получаются отличного качества. В чип-дипе покупается текстолит с нанесенным фоторезистом, там же хлорное железо, в хоз. маге покупается “крот” для прочистки труб и УФ-лампа, прозрачная пленка для принтера в любом комп. маге. Вся процедура изотовления платы занимает 40 минут, при этом 35 - ожидание

dmk

To smalltim:
Я вижу Вы используете датчик абсолютного давления для измерения высоты. Не смотрел еще Ваш код, не знаю как Вы получаете с него шаг в 1 метр, только оверсемплингом или еще чем. Не хотите ли в новой плате вычесть лишнее напряжение(до давления уровня моря например) операционником? Если не ошибаюсь, где то в начале темы это уже обсуждалось.

smalltim

> Не смотрел еще Ваш код, не знаю как Вы получаете с него шаг в 1 метр, только оверсемплингом или еще чем.

Оверсэмплинг, по 64 выборки с АЦП суммируются, получается красивое полное 2-байтное число. И плюс “плавающее окно” с усреднением результата по 8 таким пачкам по 64 выборки.
Так делается для барометрических датчиков. Для температуры и вольтажа делается только оверсэмплинг - 64 выборки.

>Не хотите ли в новой плате вычесть лишнее напряжение(до давления уровня моря например) операционником?
А зачем усложнять то, что и так прекрасно работает? Уровень давления на нулевой высоте запоминается в памяти в момент старта телеметрии и впоследствии просто вычитается из текущих показаний.

3apw
smalltim:

Про LDO - убедили. Про две банки в батарее я как-то даже и не подумал, сам летаю на 3 банках всегда. Если есть LDO с цоколевкой как у 7805, я и менять собственно ничего не буду. Хотите - ставьте LDO 😃

Про датчики тока и миллиампер-часы - вывел входы ADC6 и ADC7 наружу, там посмотрим, что можно будет к ним прилепить. Ну и заодно подправил схему в соответствии с комментами:

IMHO, можно сделать следующие дополнения по принципиальной схеме OSD:

  • для защиты от переполюсовки на вход питания блока поставить диод
  • для защиты от ВЧ по входу цепи питания блока поставить П-образный LC фильтр или что-то типа BLM21
  • питание IC2 сделать через отдельный LDO стабилизатор или хотя бы через RC фильтр
  • на входы IC1 (контакты 15-17, 30) поставить блокировочные конденсаторы на 100 пФ