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

smalltim

Коллеги, на плате автопилота не предполагается делать какое-то меню настроек, кнопки и т.д. Все настройки - с компука, через USB.
Это приемлемо?

Сейчас еще есть время подумать и решить, надо ли настройки кнопками на плате и экранное меню поверх видеосигнала, или не надо.

И еще вопрос: а где лучше хранить собственно пользовательские настройки автопилота, телеметрии и т.д.? В EEPROM Атмеги или во внешней памяти?

BigDaddy

С одной стороны заманчиво подстраивать автопилот пямо в поле кнопками, поглядывая через очки в меню. А с другой стороны, не усложнит ли это конструкцию?
У меня вот другое немного предложение: а не замутить ли простенькую систему автослежения для патч антенки приемника, как пан-титл у камеры? Чтоб антенка сама доворачивалась по максимуму сигнала.

nokpblwkuH
BigDaddy:

С одной стороны заманчиво подстраивать автопилот пямо в поле кнопками, поглядывая через очки в меню. А с другой стороны, не усложнит ли это конструкцию?

Как программист могу сказать точно - написать код, отвечающий за отрисовку и функционал меню (меню сразу должно подразумевать многоуровневость) очень просто.
Т.е. сейчас меню - функция желательная, но не обязательная (а через пол-года год вполне может стать очень и очень нужной).
Если здесь демократия и можно голосовать, 😃 то я “за” меню.

Artie
BigDaddy:

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

Если по максимуму сигнала, то антенна должна непрерывно “мотать головой”, чтобы этот самый максимум искать…
Такую систему делал еще год назад какой-то гаврик на rc-groups (точную ссылку навскидку не дам, но найти несложно). Однако, насколько я помню, для нормальной работы этой системы ему пришлось добавалять детектор корректности принимаемой синхры, потому как “максимум rss” и “лучшая картинка” - это не всегда одно и то же.
Я же собирался делать антенный привод, ориентирующийся по координатам (благо gps все равно летает, а значит есть и стартовая позиция и текущая, и высота), так что, единственное, что нужно сделать - это передать “вниз” текущие координаты в цифре… Нашел открытый проект подходящего радиомодема и даже прикупил под азимутальный привод недорогую “яхтенную” 360-градусную серву, но вот времени на реализацию пока не хватает.

pvp
smalltim:

Коллеги, на плате автопилота не предполагается делать какое-то меню настроек, кнопки и т.д. Все настройки - с компука, через USB.
Это приемлемо?

Да, но тогда необходимо таскать с собой комп обязательно.

Сейчас еще есть время подумать и решить, надо ли настройки кнопками на плате и экранное меню поверх видеосигнала, или не надо.

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

И еще вопрос: а где лучше хранить собственно пользовательские настройки автопилота, телеметрии и т.д.? В EEPROM Атмеги или во внешней памяти?

Если на данный момент памяти достаточно и есть, например, двукратный запас по объёму (“на вырост”), то, имхо, в меге. В противном же случае - во внешней.

Dikoy
smalltim:

И еще вопрос: а где лучше хранить собственно пользовательские настройки автопилота, телеметрии и т.д.? В EEPROM Атмеги или во внешней памяти?

Епрома меги хватит за глаза.

Dikoy
smalltim:

Коллеги, на плате автопилота не предполагается делать какое-то меню настроек, кнопки и т.д. Все настройки - с компука, через USB.
Это приемлемо?

Я за меню через очки. Джойстик на кее есть, купить такой же для будующей платы элементарно.
Просто ноутбук есть не у всех, а памяти в меге просто валом. У меня меню, писаное под 51-й, занимает 2 кб, причём в проге только интерпретатор, а само меню находится во внешней епромке.
Там массив структур. Первые 8 байт - коды сегментов (у меня там дисплей). 9-й байт - способ отображения (сколько сегментов высвечивать тупо, сколько засвечивать преобразоваными числами и т.д., перебирается свитчем). Ну и далее по 2 байта на кнопку. Action и NextItem. То бишь что сделать и куда потом пойти по нажатию этой кнопки. Action аналогично выбирается свитчем из нескольких вариантов (инкрементировать переменную по адрезу Х, декрементировать, сбросить или ничего не делать…).
Очень удобно - один интерпретатор, а туда можно забивать сколько угодно итемов и хранить их где угодно. Это стандарт для МКашного применения, так ещё на Z80 писали, где память внешняя была. Могу скинуть свои и немецкие менюшки для примера, но они под Кейл 51-х.

smalltim

Честно говоря, не хочется кнопки на плате городить.

Как думаете, с RC передатчика удобно будет рулить меню?
Вправо-влево-вверх-вниз - элеронами/РВ, нажать ОК - газом.
Всё руление будет, конечно, до полета. В полете - фигушки. Только включение гиро и автопилота.

Следующая партия печатных плат пришла из Резонита, теперь не 1.6мм, а 1мм толщиной. Недостающие датчики и GPS модули забираю завтра. Обращайтесь 😃

Документация по модулю телеметрии почти готова, скоро выложу.

pvp

Здесь www.fourwalledcubicle.com/MyUSB.php USB-библиотека для AVRок. С кучей реально работающих примеров (для USBKEY’я в том числе) в качестве host’a и device’a. И писано всё под avr-gcc.

Dikoy

Бугага! Я завёл MLX90614!!! 😃
Жутко нестандпртная скотина, но красная армия всех победит.
На неделе хочу записать показания датчиков на землю и небо, суток за пять. Станет многое понятно.
Сейчас бегаю с ним по комнате и всё измеряю 😲 Похоже на правду. Тока паяльник упорно кажет как 90 градусов… Видимо, надо прям в сенсор жало тыкнуть 😃
В общем, если кому интересно, пишите в мыло, поделюсь кодами для кея (используется аппаратный TWI).

smalltim

Поздравляю 😃

А я, наконец-то, добил документацию к модулю телеметрии:

Dikoy

Запись небосвода за ночь. Видно, что облака надуло к 5 утра.
Жёлтый, это ИК, остальные - воздух.

leliksan
smalltim:

Поздравляю 😃

А я, наконец-то, добил документацию к модулю телеметрии:

Ух ты, круто! С картинками! Спасибки, пойду букварь штудировать , букофки вспоминать.
С уважением.

smalltim

Коллеги, только что я имел разговор с героическим коллегой maloii по поводу телеметрии.
Надеюсь, он сам расскажет и покажет на видео, что случилось, но я лучше еще раз напишу то, что написано в документации:
Датчик тока калибруется в момент старта телеметрии (15 секунд после подачи питания), поэтому то, что потребляется от батареи в эти 15 секунд, будет принято за нулевой ток. И в последующем, в полете, модуль телеметрии будет показывать заниженный ток и заниженный расход заряда батареи.
Не стоит считать, что видеосистема потребляет мало, и вроде как бы можно пустить ее мимо датчика тока и не принимать во внимание то, что она съедает от батареи.

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

Всё это можно сделать подтыканием датчика тока в цепь только после инициализации телеметрии (тогда нулевой ток действительно будет нулевым), или, еще проще, без перетыканий - 15 секунд после подачи питания держать токовые контакты датчика тока замкнутыми любой кнопкой, переключателем, или, на худой конец, отверткой.
В таком случае на старте телеметрии первые 15 секунд на датчике тока будет действительно нулевой ток, а после отжимания кнопки - убирания ответртки весь ток пойдет через датчик.
Я сейчас в документации сделаю соответствующие правки, чтоб даже героям было понятно, что делать с датчиком тока 😃

Maloii, даешь видео и историю из первых рук!!!

Artie
smalltim:

Датчик тока калибруется в момент старта телеметрии (15 секунд после подачи питания), поэтому то, что потребляется от батареи в эти 15 секунд, будет принято за нулевой ток.

Тимофей, ну не пожалейте одной ноги однокристаллки, - сделайте кнопку “preset” !

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

smalltim

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

Отключит-подключит нагрузку к датчику тока?
Так проще такую кнопку как раз к датчику тока и прилепить.

Artie
smalltim:

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

А вот и не надо, чтобы оно “само”… - Ни разу еще не видел, чтобы искуственный интеллект работал лучше естественного ! 😃

Нехай владелец, перед тем, как ставить плату на борт, подключит батарею с нужным количеством банок, обеспечит нулевой ток через датчик, сделает что-то еще (не знаю, что именно), чтобы выставить все прочие _постоянные_ калибровочные константы, а потом - нажмет кнопку и удерживает ее в течение NN секунд. Установки при этом записываются в nvram.

А перед полетом он ту же кноповку жмет один раз и коротко, и при этом запоминается нулевая высота, координаты старта, сбрасывается таймер, обнуляется счетчик вытекшего электричества, и прочая, прочая, прочая…

  • Это просто, удобно, не требует помнить что там плата в какой момент и в течение какого времени меряет, и соображать: а правильно ли она это что-то намеряла ?

Отключит-подключит нагрузку к датчику тока?
Так проще такую кнопку как раз к датчику тока и прилепить.

Imho, такой подход идеологически неверен.
Калибровка [того, что вообще можно откалибровать] должна быть процессом одноразовым и осознанным.

leliksan

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

Artie
leliksan:

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

На самом деле, ЭТО можно сделать добрым десятком способов, и все будут работать. Вопрос только в удобстве, и в исключении возможных ошибок.

Imho, тут проблема не столько техническая, сколько идеологическая. Лично я твердо уверен, что _все_ калибровки датчиков, которые вообще физически могут быть выполнены одноразово, должны производиться при изготовлении прибора. И в своем модуле я именно так и делаю, для одних параметров забивая все константы прямо в код, а для других - подстраивая их потенциометрами. Но я строю приборы только для себя, и могу это себе позволить.
У Тимофея же задача сделать “народную” телеметрию, поэтому он пытается по максимуму освободить “юзера поганого” от всех настроек, от каких только можно, делая вообще все автоматически…
Однако, как мне кажется, и в этом случае следует разделять (во времени и пространстве) процессы настройки, так сказать, производственные, делающиеся один раз после сборки девайса, и процессы предстартовой подготовки.