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

solderer

Ну прошивка просто так не стирается сама.

serj
pashteton:

Народ, как проверить кварц? Осциллографом по нему прошелся никакой частоты не обнаружил. На ноге таймера меги тоже тишина. Кого менять мегу или кварц?

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

smalltim

Сделал логгинг.
Каждые 0.2/0.5/1/2/5/10 секунд (настраивается с компука) в память сбрасываются следующие параметры:

typedef struct
{
 U32   samplenumber;
 U32   flightnumber;
 U32   gps_UTC_date;
 float gps_UTC_time;
 U8    gps_numsatellites;
 U8    gps_fixmode;
 float gps_startlat;
 float gps_startlon;
 float gps_startalt;
 float gps_curlat;
 float gps_curlon;
 float gps_curalt;
 float gps_curspeed;
 float gps_curheading;
 float compass_curheading;
 float voltage1;
 float voltage2;
 float voltage3;
 float current;
 float mah;
 float temperature;
 float baro_curspeed;
 float baro_curalt;
 float pyro_curroll;
 float pyro_curpitch;
 float pyro_targetroll;
 float pyro_targetpitch;
 float in_ppm_curwidth[5];
 float out_ppm_curwidth[4];
}  dumpsample_type;

Всего в памяти помещается ~15000 таких дампов, этого хватает на
~ 41 час полета при записи дампа 1 раз в 10 секунд
~ 4 часа полета при записи дампа 1 раз в секунду
~ 50 минут полета при записи дампа 5 раз в секунду

При каждом старте/ресете автопилота количество полетов увеличивается на единицу и сохраняется в отдельном месте внешней памяти.

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

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

С компука можно принудительно обнулить счетчик полетов.

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

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

При скачке логов с платы автопилота в компук качается вся память целиком (2.162.688 байт, 4096 страниц по 528 байт), включая и логи, и настройки, и т.д. (это занимает ~20 сек), далее по номеру дампа, номеру полета и UTC времени из общей каши дампов выделяются все, относящиеся к различным полетам, и собираются логи независимых полетов.

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

Выглядит адекватно?

baychi
Сергей_Вертолетов:

Выглядит шикарно! А данные хранятся в сжатом виде или так как есть?

А Вы когда нибудь сжимали float-ы? Тем более независимые переменные? Обычные алгоритмы (LZW, Хафман) - малоэффективны. Можно конечно брать разности по столбцам и кодировать отклонения, но мороки с этим много. Проще писать как есть.

Сергей_Вертолетов

Просто подумалось что например ГПС координаты меняются не кардинально, есть скажем так фиксированная часть 😃 Хотя времени и так предостаточно, 1 Гц логгинга хватит за глаза.

EXT
smalltim:

Каждый последующий полет не затирает данные предыдущего

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

smalltim
EXT:

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

Автоматическую архивацию и очистку я не хочу, с автопилотом у меня идеология такая: никаких действий без ведома пользователя. Захотел - сам скачай логи и обнули память.
А вот не останавливать запись по достижении конца памяти - запросто. Просто перемещаемся в начало памяти и пишем дальше, поверх того, что там лежало. Этакий кольцевой буфер получается. Просто сейчас это делается с компука, нажатием на кнопочку, а будет делаться автоматом в полете. Если надо - сделаю. Надо?

А Вы когда нибудь сжимали float-ы?

Там, если честно, больше половины float’ов (4 байта каждый) можно заменить на 2-байтовые целочисленные, а некоторые вообще на 1-байтовые. Ну кому с точностью float нужно знать угол там тангажа или крена? Или ширину PPM на входе-выходе? Целых градусов и 16, а то и 8 разрядов хватит.
В итоге не в полтора, а в 2 раза точно можно будет дамп утоптать.

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

а так я должен помнить есть место для записи или нет

Не надо помнить, консоль покажет:

SGordon

конечно надо старые стирать, по-моему по такой идеологии работают всякие черные ящики …

smalltim

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

Cделал сохранение логов не в двоичный формат, а в экселе-совместимый формат с разделителем “;”

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

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

Вот немного фоток старой платы автопилота, новой платы автопилота и новых плат пирометров:


smalltim

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

blade
smalltim:

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

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

smalltim

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

Естественно, я всё опробую на своем старом автопилоте, если окажется лажа - буду искать полиуретановый, это стопудово сработает. Таким лаком панели солнечных батарей покрывают.

Спаял провода, хотел всё в подоконничных условиях проверить по-быстрому, но модуль, зараза, 3 спутника на окне находит, не больше. А для автопилота я ввел обязательное условие - минимум 4, чтоб 3D фикс был.
Днем собираюсь полетать.

=Женек=

Тимофей, что-то нет на вашем сайте полной схемы и прошивок.

foxtrot

Давно хотел спросить, а как правильно фиксировать фишки проводов на плате, чтобы не болтались и не спадали? Кто-нить может показать фотку нормального решения?

У меня частенько появляются полосы в местах подмеса данных телеметрии (на фото). Подозреваю расхлябанность фишек на штырьках. Ни у кого такого не наблюдается?

Вахтанг
smalltim:

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

не забудь, только, пирометры защитить при покрытии 😉
Какие тебе нужны удлинители серв? могу подкинуть, не теряй время на это!

Photon

smalltim, надо бы в плате автопилота все свободное место в BOT слое залить полигоном земли, подсоединив его в одной точке. Это улучшит защиту чувствительных цепей от наводок, которых там в избытке.

sergee
smalltim:

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

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

Вот нашел про него gamma-resurs.ru/files/istoricheskaya_spravka.doc

Brandvik

Тимофей приветствую, я тут последнее время выступаю не часто. Но вот наболело. В телеметрии есть на мой взгляд “косячок” который портит жизнь. Она не запоминает состояние экрана на момент выключения. Отсюда вылазит проблемка. Не все пользователи могут иметь переключалку режимов в полете. Банально не хватает каналов.
У меня например 6 каналов и все задействованы, и вешать переключалку например на флапы не удобно (точнее она у меня сейчас там висит, но используется только для мониторинга качества сигнала, поскольку что бы работала как переключалка не хватает амплитуды изменения сигнала при работе с флапами (серва затримлена), но даже если бы хватало пользоваться в полете было бы не очень удобно ) А так же приходится каждый раз переключаться между баро и GPS.
Если с этим можно что то сделать было бы просто изюмительно!

smalltim

Полетал вчера с автопилотом. Правильно заработало всё только где-то наполовину, но главное - есть логи, по ним уже 2 или 3 косяка исправил и еще парочку надо будет поправить. Все посадки штатные, самик живой, всё в норме.
Для первого вылета, самого вообще-вообще первого вылета с автопилотом - неплохо.
Подробнее всё через пару часов распишу 😃

Brandvik:

Тимофей приветствую, я тут последнее время выступаю не часто. Но вот наболело. В телеметрии есть на мой взгляд “косячок” который портит жизнь. Она не запоминает состояние экрана на момент выключения. Отсюда вылазит проблемка. Не все пользователи могут иметь переключалку режимов в полете. Банально не хватает каналов.
У меня например 6 каналов и все задействованы, и вешать переключалку например на флапы не удобно (точнее она у меня сейчас там висит, но используется только для мониторинга качества сигнала, поскольку что бы работала как переключалка не хватает амплитуды изменения сигнала при работе с флапами (серва затримлена), но даже если бы хватало пользоваться в полете было бы не очень удобно ) А так же приходится каждый раз переключаться между баро и GPS.
Если с этим можно что то сделать было бы просто изюмительно!

Могу запоминать последние настройки в EEPROMе. Если место под это в коде найду

>У нас на работе для влогозащиты используют поливоск (вроде так называется).

Спасибо за наводку, буду пробовать разные варианты. Главная цель - сделать платы пирометров без корпуса, но устойчивые к влаге. Хочется, чтоб покрытие было механически устойчивым, чтоб на двухсторонний скотч или там клей или кто как захочет мог бы закрепить платы. Для этого платы пирометов с нижней стороны “лысые”, без единой детальки.

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

=Женек=

Тимофей, а Вы не думали вместо пирометров поставить магнитометр?