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

smalltim
Brandvik:

Так, провел расширенный тест. Новая прошивка вообще глючит по полной. Может быть стоит грешить на мои корявые ручик и сопливую плату, но результат следующий.
Залил версию 227.
Испытания на лифте:
Подъем, 000000000000123456567888888888888888910 11 12 13 14 15 16 17 17 17 17 17 17 17
Спуск тоже самое в обратном порядке.
Скорость. Тестировалось с феном на двух скоростях.
1я скорость - плавание показаний 21-24 ; 2я - 37-39
Заливаем 228
Лифт:
Подъем, 000000000001234567…20 2122 22 22 22 22 22 22 22 22 22 23 24 25 26 27…42 43 44 44 44 44 44 44 😃
Скорость.
1я 31 как вкопанная. 2я 59 тоже стоит на месте. Показания какой версии более верные сказать не могу, нет эталона.
Плюс, при изменениях скорости , показания очень сильно запаздывают. Ориентироваться на них при управлении невозможно.
Вот такие результаты…
Высота врет явно, по скорости не скажу, но впечатления такие что тоже врет.

Ne beite silno.

Ya seichas ne u kompuka, no, pohozhe, znayu v chem delo. Ne vezde pod 32 sempla perepisal.
Blizhe k nochi perepishu pod 16 semplov I pereproveru, na lifte tozhe pokatayus.

smalltim

Так и оказалось. В делении на 32 при усреднении в скользящем окне было оставлено деление на 16 😦
5 утра - не лучшее время для ассемблера

Сейчас исправил. 32 сэмпла - много, медленная реакция и т.д. Сделал 16.
Забирайте прошивку 228b:

Brandvik

Забрали, прошили, потестили. Скорость работает на отлично! А вот с высотой таже беда залипает на 8ке, хотя точность вернулась на место. Думаю вам стоти самому на лифте покататься и посмотреть как у вас обстоят дела.

Psw
Brandvik:

с высотой таже беда залипает на 8ке

Лично мне кажется что объяснение уже давалось:

smalltim

Про шаги по 7…10 метров. Эта вот… ~8 метров - это предел точности MPXA4115 с 10-битным АЦП Атмеги, если опрашивать в лоб.

smalltim:

Для нормальной работы оверсэмплинга на АЦП шумы на уровне 0.5 … 1 LSB (2.5 … 5мВ) должны присутствовать, а если их нет, то надо подмешивать.

Brandvik:

Потыкал осцилографом, никаких шумов не нашел.

Чутьё 5 мВ/деление вроде нередко есть в осц, должон видеть шумы значит.

bfnico

Привет!

Осилил таки девайс, в жизни ничего подобного не делал - ни лут ни smd ни avr. Но могу заметить atmega8 очень устойчива к произволу радиолюбителя.

По поводу питания lm1881 зачем там 4.7к на вход Vcc ?? запустил только коротнув резистор и отключив плохой диод… ( потом нашел кд510)
Какой может быть разброс показаний напряжения питания и из-за чего ?

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

smalltim и ко – респет и уважуха!

Artie
bfnico:

По поводу питания lm1881 зачем там 4.7к на вход Vcc ??

Он там не нужен (даже если он 4.7 Ом 😃).

Какой может быть разброс показаний напряжения питания и из-за чего ?

Если резисторы в делителе правильные, то никакого разброса.

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

Судя по тому, что на фотографии нижнего соска уже нет 😎, то ничего не делать. А вообще он должен был идти на “статический” конец трубки Пито.

2 smalltim: Btw, на Вашей плате мне пришлось поменять местами датчики и еще перевернуть диффернциальный вверх ногами, порезав нафиг дорожки под ним. - Именно потому, что правильный датчик - с двумя сосками - “у кринку нэ лэзе !”

smalltim
bfnico:

Привет!

Осилил таки девайс, в жизни ничего подобного не делал - ни лут ни smd ни avr. Но могу заметить atmega8 очень устойчива к произволу радиолюбителя.

По поводу питания lm1881 зачем там 4.7к на вход Vcc ?? запустил только коротнув резистор и отключив плохой диод… ( потом нашел кд510)
Какой может быть разброс показаний напряжения питания и из-за чего ?

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

smalltim и ко – респет и уважуха!

Там не 4.7кОм, а 4.7Ом. Для снижения помех по питанию.

Разброс напряжений питания из-за разброса сопротивлений резисторов в делителях на входе. Лучше ставить 1-процентные.

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

>Btw, на Вашей плате мне пришлось поменять местами датчики и еще перевернуть диффернциальный вверх ногами, порезав нафиг дорожки под ним. - Именно потому, что правильный датчик - с двумя сосками - “в кринку нэ лэзе !”

Да, если надо 2 соска, то проблема есть. Но решаемая на счет “раз”. С двумя сосками нормально лезет, если отогнуть немного выводы датчика, поставив его “на цыпочки”. Он станет на примерно на 2 мм выше.

SGordon

Вопрос про разброс напряжений - никто не пользовался 'грифельмодом " ( рисование по резистору мягким карандашом) для подстройки показаний Делителя. На мамке рисовал на ура, но на сколько там изменилось сопротивление - не представляю …

lodeworx
smalltim:

На видео от Maloii такое же прослеживается: last fly my easy star

Бум разбираться.

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

Dikoy
smalltim:

Вернул взад все коррекции высоты. Сейчас увеличу буфер “скользящего среднего” заодно с 8 до 16 отсчетов. При этом время, за которое “скользящим средним” усредняются показания скорости-высоты, будет не 1.28, а 2.56 секунды.

А как вы делаете ФСС?.. Вообще, увеличение размерности буфера не должно увеличивать время получения параметра (если не обращать внимание на само время вычисления процессором, которое относительно мало).
Сейчас в рабочих проектах активно пользую такую конструкцию: в ОЗУ три буфера по 8 байт. Первый забивается выборками с АЦП. Его средним забивается второй. Его средним - третий. 24 байта в ОЗУ эквиваленты обычному ФСС на 1024 выборки (по сути, это трёхкаскадный фильтр). Время вычисления на древнем 51 ядре (12 тиков на операцию, кварц 11 мег) около 1 мс. На АВР, думаю, уложится в 100 мкС. Но пока не переносил.
Ещё один плюс такого подхода: вычисления проводятся в пределах 16 бит, что для АВР есть хорошо, учитывая его 16 битные регистры. Аналогичный вариант с буфером на 1024 выборки потребовал бы переходить в 32 битные переменные.

ПС. Вчера, наконец, смог поднять свою куту!!! 😁 Она у меня гидроплан. С воды взлетать сейчас стрёмно, а вот со снега - самое то. Записал пирометры в полёте, подсчёт углов. Получил ошибку примерно 0,25 градуса в первых 5 градусах крена. Потом до 3 градусов плоть до 45 гразусов. Потом чистый гон 😃
В требуемых ±15 градусах крена ошибка не превышает градус - сравнивал показания с БСО. От высоты не зависит 😃
На неделе попробую пришить к автопилоту вместо БСО, посмотрю, как будет держать крен.

smalltim

А как вы делаете ФСС?.. Вообще, увеличение размерности буфера не должно увеличивать время получения параметра (если не обращать внимание на само время вычисления процессором, которое относительно мало).

В каждом кадре камеры (1/50 сек) во время между отрисовкой верхних строк и нижних строк опрашивается один канал АЦП - делаются и суммируются 64 выборки.
В следующем кадре - следующий канал АЦП.
Итого 8 каналов опрашиваются в течение 8 кадров.
Т.е. время между обновлениями данных по одному каналу АЦП составляет 8*(1/50) сек, или 0.16 сек.
В ФСС (сделаны как кольцевой буфер, таких несколько, свой для каждого из различных физ параметров) новая инфа капает каждые 0.16 сек. Ширина ФСС - 16 значений. Значит, самый “давний” сэмпл, лежащий в буфере ФСС, соответствует времени 0.16*16=2.56 секунды назад. Если сделать буфер ФСС шириной 32 сэмпла, то будет 5.12 секунды назад. Это слишком инерционно. Поэтому сделано 16 сэмплов.
Всё.
Каскадные ФСС делать не могу - ресурсов не хватит. Каскадные ФСС имеют смысл при непрерывном опросе АЦП, без отвлечения на математику и отрисовку и т.д., тогда задержек по времени таких больших не будет. У меня же на всё про всё одна Атмега - и парсинг ГПС, и математика, и отрисовка, и АЦП, и ICP, и еще общение с автопилотом по SPI добавляется.

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

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

Dikoy
smalltim:

А как вы делаете ФСС?.. Вообще, увеличение размерности буфера не должно увеличивать время получения параметра (если не обращать внимание на само время вычисления процессором, которое относительно мало).

В каждом кадре камеры (1/50 сек) во время между отрисовкой верхних строк и нижних строк опрашивается один канал АЦП - делаются и суммируются 64 выборки.
В следующем кадре - следующий канал АЦП.

Каскадные ФСС делать не могу - ресурсов не хватит. Каскадные ФСС имеют смысл при непрерывном опросе АЦП, без отвлечения на математику и отрисовку и т.д., тогда задержек по времени таких больших не будет. У меня же на всё про всё одна Атмега - и парсинг ГПС, и математика, и отрисовка, и АЦП, и ICP, и еще общение с автопилотом по SPI добавляется.

А, понял, от частоты кадров зависит…
По идее, ФСС тем эффективнее, чем быстрее делаются выборки. Таймеры все заняты?

Каскадные ФСС как раз экономичнее. Позволяют получать степень усреднения на n порядков больше, чем линейные, при тех же затратах. А вот надо ли оно - вопрос второй. У меня на борту 24 бита АЦП, я просто обрезаю результат до 20 бит (по каналам датчиков) и этого хватает.

smalltim

А ко мне, наконец-то, пирометры от Perkin Elmer на автопилот приехали, ура! 😃

Сфоткано на фоне пирометров на голове от FMA Direct 😜
Впрочем, можно не баяца, автопилот будет поддерживать готовые головы от FMA 😃

Dikoy
smalltim:

А ко мне, наконец-то, пирометры от Perkin Elmer на автопилот приехали, ура! 😃

А где и как покупались? 😃

smalltim

Увидел, особенно вот здесь: IMU Test 6
Офигенно корректно работает. Ошибка в 30 градусов крена на протяжении 10 секунд, в течение которых самик разворачивается на 180 градусов - чота многовата.
Я лучше с пирометрами, GPS и компасом как-нибудь перебьюсь.

А авиагоризонта искусственного у меня на экране не будет. Вообще мало что изменится на экране с появлением автопилота. А если в комплекте нет платы телеметрии, так вообще ничего на экране не будет. Будет на самике просто система стабилизации по типу Co-Pilot, автопилот и логгер 😃

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

maloii

Вопрос к Гуру. К своей самоделке решил прикрутить звуковое оповещение, но не уверен что правильно это сделал, посмотрите, покритикуйте.
ityes.ru:8001/wiki/schematics
Звук вывел с PB1 через резюк 10к (R15) к транзистору (T1) и на аудио выход.

Dikoy
maloii:

Вопрос к Гуру. К своей самоделке решил прикрутить звуковое оповещение, но не уверен что правильно это сделал, посмотрите, покритикуйте.
ityes.ru:8001/wiki/schematics
Звук вывел с PB1 через резюк 10к (R15) к транзистору (T1) и на аудио выход.

Неправильное включение транзистора. npn транзистор должен эмиттером быть соединён с землёй напрямую, а нагрузка включается между плюсом и коллектором.
Если важно, чтобы транзистор был по питанию, поставьте аналогичный pnp. Эмиттером к плюсу, коллектор на нагрузку. Нагрузка между коллектором и землёй.
Соответственно, нпн открывается единицей, а пнп нулём 😉

А зачем такое? В магазинах рублей за 15 продаются бизеры со встроенным генератором. Их потребление позволяет цеплять прямо к ноге АВР. Подал единичку (или нолик), бизер запищал. Причём весьма громко.
Просто обычный бизер при тех же массогабаритах стоит на 10 рублей дешевле, так что экономии не вижу 😉

Например, вот в этой самоделке я применял такой бизер: dikoy44.narod.ru/projects/BK_VAZ.htm

maloii

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

smalltim

Боюсь напутать, но вообще-то размах 250мВ - стандартный уровень для линейных звуковых входов. Т е. резисторный делитель должен проканать.

Brandvik

Да я в общем то понимаю что с пирометрами проще, но мне как раз хотелось бы иметь искусственный горизонт на экране, который позволил бы пробить слой облачности и выскочить над сплошным покрывалом… Пирометры такого как я понимаю не позволят + в горах тоже не работают 😦