OSD на ATmega1281

Dikoy
msv:

Люди, покаюсь… В принципе изначально не было в планах доводить проект до законченной конструкции с полным представлением всех исходников итп. Очень рассчитываю на обмен мнениями, идеями, как по железу, так и по алгоритмам. Много ценных замечаний и идей получаю в личке (чего только стоит шедевральный цикл вывода в строке за 3 такта на пиксель от уважаемого abalex), за что всем авторам большое спасибо.

Можем объединить усилия. Я длительное время занимался разработкой АП для БПЛА. Результат тут: fotki.yandex.ru/users/nm1456t01/album/94385/
Бортовой комплект модульный:

Можно использовать только АП или АП+модуль навигации. Параметры в кратце такие:
6 ППМ входов, 12 ППМ выходов (+6 ППМ выходов на навигационном блоке). Дуплексный цифровой канал с землёй до 4 км, через него можно и рулить.
Слежение антенной наземки за самолётом.
12 аналоговых ключей на навигационном блоке для управления полезной нагрузкой (подключение параллельно кнопкам фотика, например, и управление ими).
Но, у меня нет телеметрии и разработкой оной мне не хочется заниматься. Если объединить усилия, должен получиться неплохой проект.
Изюминка в том, что я сейчас пытаюсь побороть нелюбовь пирометров к ИК помехам и полётам в облаках. По этому на моей голловке помимо 6 пирометров стоит ещё магнитометр и аксель (в следующей версии и ДУС):

Комплексирование с ДУСом позволит вылечить пирометры от этой болензни. Вот так выглядит отработка помехи на 20 градусов обычной головкой. 1 - угол по дусу (зацените уход), 2 - модель сигнала пирометра, 3 - комплексированый сигнал. Шумовая составляющай комплексированого сигнала снижена за счёт ДУС, ухода нет. Это хорошо, это позволит летать при малом градиенте. Но отработка помехи никая…

Другой вариант - фильтр калмана. Штука хорошая, оценивает сигналы за 25 сек, потом давит шумы и систематику ДУСов на ура. Но вот момеху отрабатывает 1000 сек…

А вот после долгих рваний волос на (.) получаем такую картинку отработки:

То есть подавление резких помех почти идеально, уход всей системы на 10 градусов при отключении одного из каналов (ДУС или пиро) порядка 500 сек. То есть градус в 100 сек. ИМХО совсем нефигово, айда летать вдоль домов и в облаках! 😉
С тянучкой разберусь и надо это дело облетать.

cvy7
Dikoy:

Можем объединить усилия.

Dikoy,Я целиком ЗА, +1000

Собираюсь делать для квадрокоптера
в своем блоге здесь- постановку задачи описал
Все промежуточные результаты буду выкладывать

Если чтото из этого получится, то и проект будет открытым!

msv

Можем объединить усилия.

Если имеется в виду совместный проект, звучит заманчиво, но боюсь нереально… 😦 Уж слишком разные изначально задачи у всех. У меня, например, - сделать интегрированное устройство с тем функционалом, который сейчас уже есть (после отладки/доводки, конечно буду добавлять функциональность), с главным критерием- мин. бюджет. Если бы речь шла о коммерческом проекте, можно было бы назначить менеджера проекта и остальным подчиняться его волевым (хоть и обсуждаемым) решения, решая поставленные локальные задачи. А для проектов под себя, конечно никто не захочет делать то, что ему не нужно и/или не интересно и/или не по карману…
А если объединять усилия в смысли подсматривая чужие идеи и учиться на чужих ошибках, без сомнения полезно. Ради этого и тему создавал.
//----
Комбинация ДУС-пироголова безусловно перспективна. Жаль что не нашел подходящих по цене/качеству ДУС. Собственно давить шумы пироголовы ДУСом имхо и не нужно. Просто за основной сигнал брать именно с ДУСа, как менее шумный и более скоростной. А корректировать его долговременную нестабильность проинтегрированным (заодно все шумы срежуться) значением с пироголовы. Единственная сложность ( с ходу не соображу)- необходимо корректировать на малых интервалах времени и значение пироголовы по некоррелированным изменениям относительно ДУС .
//—
Пока жду моторчик есть время причесать код… Ошибок столько- что понимаю, самолет возвращался на базу на автопилоте не потому что, а вопреки… (шютка конечно… 😃) Странно, что авария произошла именно на ручном режиме, где все чисто.
Добавил в режиме стабилизации поддержку планирования - смещение 0-ля тангажа для газа меньше некоторого порогового значения.
Оснавная проблема- не могу сообразить как с пульта включать триммирование борта (установка нуля пироголовы и внутренних нормализированных значений каналов). Сейчас делается кратковременным переводом режима Ручной-Стабилизация-Ручной. (Режимы переключаются трехпозиционным дискретным переключателем) Но анализ видео показал, что несколько раз триммирование включалось ложно (нервничая вполне можно щелкнуть), что конечно чревато… Использовать еще один канал только для этого вроде бы жалко. В общем известное противоречие,- хочется макс. использовать один канал управления АП, при этом сохранить однозначность…

cvy7

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

cvy7


msv, триммирование борта в полете надо делать?
у нас в квадрокоптерах для этого используются особые положения стиков (в полете не используемые)
но это на земле,
если в полете, то наверное в канал то в один можно втолкать, только тумблера, все равно надо 2, и тот, который триммер, короткий! Это все уже психо-физиология а не электроника, так просто ее не перепрограммируешь 😃

msv

Да, триммировать АП хотелось бы иметь возможность именно в полете. Какой микшер сделать с двух дискретных переключалок на один канал, что бы осталась однозначность: 1я переключалка-три режима полета (ручной, стабилизатор, АП), 2-я - триммирование? Что-то вроде рядом мысля, но никак не досоображу…
//–
Про связку ДУС/пироголова. Что то дошло, что такая рекурсивная стабилизация, которую предлагал в предыдущем сообщении, да еще с потерей постоянной составляющей от пироголовы, вероятно потребует нехилого мат.обеспечения для оценки сходимости и устойчивости системы…

cvy7

msv, связка ДУС- пара акселерометров для коррекции ДУСа давно и успешно применяется в коптеростроении, где то тут Сергей aka botvoed толково все это объяснял как работает. Хотя с использованием обработки по Калману будет получше, но это надо АРМ, у авра ни числогрызности ни ОЗУ не хватит. С коррекцией по пироголове imho мало чем отличается, тоже зашумленный и медленный сигнал, по которому корректируются интегралы ДУСов, более достоверные, но содежащие в себе дрейфовую составляющую.

Настраиваем мы правда это все методом научного тыка.

По клювам их ведь хоть сколько можно сделать. Один допустим прибавляет- вычитает 128 единиц, другой 64, итд

А на борту с разбирать с большего (так наверное), я так задумывал у себя, хотя еще это не реализовал в коде

Aleksey_Gorelikov
msv:

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

Сергей, у тебя ж такой передатчик, что позволяет делать что угодно 😁
Замени пару строк в коде, разбей один аналоговый канал на (пусть будет) 16 дискретных. И никаких проблем! Всеравно ж в телеметрии ППМ разбираешь.

msv

С коррекцией по пироголове imho мало чем отличается, тоже зашумленный и медленный сигнал, по которому корректируются интегралы ДУСов

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

разбей один аналоговый канал на (пусть будет) 16 дискретных. И никаких проблем!

Проблема в том, что для получения n независимых каналов интервалы канала ppm уменьшаются со скоростью 2^n (те. очень быстро…). А малые интервалы требуют тщательной калибровки декодера и увеличивают вероятность ложного срабатывания. Ну тут уж ничего не поделаешь, чудес похоже не бывает…
Может все же кто придумает эргономичное решение, как сделать на пульте с одним трехпозиционным переключателем и двумя двухпозиционных:

  1. Переключение режимов АП (ручной, стабилизация, АП). (Очевидно трехпозиционником).
  2. Установка нуля пирогоризонта.
  3. Установка нуля выходных каналов после триммировании модели.
    Желательно задействовать мин переключалок и каналов…
    Повторюсь, пока у меня 2 и 3 объединены (хотя это не всегда удобно) и включаются кратковременным переключением ручной-стаб-ручной…
Dikoy

связка ДУС- пара акселерометров для коррекции ДУСа давно и успешно применяется в коптеростроении, где то тут Сергей aka botvoed толково все это объяснял как работает. Хотя с использованием обработки по Калману
Ну, без калмана там врядли хорошо работает 😉 Мы это ещё лет 5 назад прошли.

А с калманом работает хорошо, но в полёте НЕОБХОДИМЫ прямолинейные участки. Чтобы фильтр выделил направление g. На самолёте это малореально. Пиро тут гораздо симпатичней.

Вот эта рекурсия (первый сигнал корректируем по второму, а второй по первому и в обоих случаях с потерей “постоянной составляющей”) несколько вызывает сомнения в ее жизнеспособности в реале…
А шо таке? Обычный калман, это его сущность давить систематику. Есть, конечно, пара секретов и вектор состояния хитрый, а в целом обычный калман. Классический так сказать.

mandigit
msv:

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

  1. Переключение режимов АП (ручной, стабилизация, АП). (Очевидно трехпозиционником).
  2. Установка нуля пирогоризонта.
  3. Установка нуля выходных каналов после триммировании модели.

A - трехпозиционный переключатель, B,C - двухпозиционные
A=0,B=0,C=0 - нет активности (далее обозначаем 000)

000->010 (ручной)->011(нуль пирогоризонт)
________________->110->111(нуль триммер)
000->100->110 (стабилизация)
000->200->210 (АП)

Aleksey_Gorelikov
msv:

Проблема в том, что для получения n независимых каналов интервалы канала ppm уменьшаются со скоростью 2^n (те. очень быстро…). А малые интервалы требуют тщательной калибровки декодера и увеличивают вероятность ложного срабатывания.

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

8 days later
msv

Может кому будет любопытно, как первый полет с земли выглядел… (пленку наконец проявили… 😃 то бишь диск финализировали…)

Иван
msv:

Да, триммировать АП хотелось бы иметь возможность именно в полете. Какой микшер сделать с двух дискретных переключалок на один канал, что бы осталась однозначность: 1я переключалка-три режима полета (ручной, стабилизатор, АП), 2-я - триммирование? Что-то вроде рядом мысля, но никак не досоображу…
//–
Про связку ДУС/пироголова. Что то дошло, что такая рекурсивная стабилизация, которую предлагал в предыдущем сообщении, да еще с потерей постоянной составляющей от пироголовы, вероятно потребует нехилого мат.обеспечения для оценки сходимости и устойчивости системы…

Есть предложение, порядок такой - летим, подрехтовали рули, щёлкнули комбинацию, борт запонил текущие значения как нулевые и от них пляшет, вариант?😒

msv

Ну собственно так все и есть… Вопрос был какую бы комбинацию щелкнуть… 😃
Пока не стал особо мудрить- смикшировал трехпозиционный переключатель (режимы АП) 80% с двухпозиционным (команда) 20% на один канал. Получилось шесть равноудаленных вариантов. А логика при декодировании сделал такую: если в режиме стабилизации щелкнуть доп. переключалкой- установка нуля горизонта (делается один раз перед полетом на земле), если в режиме ручного управления- записываются разница текущих значений каналов от калиброванных как триммеры. Еще можно что-то делать в режиме автопилота, пока резерв…

msv

Решил блох маленько половить… Всем хорош датчик горизонта, но… уже давно заметил, что если при включенном видеопередатчике поднести руку к шлейфу от датчика к плате телеметрии (0,+5, два выхода с датчика) (или просто даже подвинуть шлейф на сантиметрик)- горизонт заметно уплывает. Думал что это наводки на входе телеметрии от шлейфа (хотя там конечно емкость стоит). Но оказалось, что это с самого датчика так дрейфует сигнал на выходе. Колечко перед датчиком на шлейфе не помогло… Есть подозрение, что именно на входе операционника датчика какое-нибудь прямое детектирование происходит. Перерисовал схему датчика:

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

Dikoy
msv:

Конечно с коэффициетом усиления 1000, можно всяких чудес ожидать

Вот по этому я и перешёл на цифру… Шлейф от сенсоров 30 см, из которых 10 в башне толкающего винта вперемешку с силовыми проводами, и хоть бы хрен.
А если отношение цепи ОС ОУ уменьшить раз так в 10? Поставить 100 ом и 100к.
Если у ОУ на входе полевики, а не биполярники, а всё на то указывает, то снижением сопротивления помехи можно сбить ниже порога шума АЦП.
Кондёр тут мало поможет, ИМХО. Вход и так имеет затворную ёмкость, которая и набирает потенциал от свободной энергии. Добавление ёмкости только ухудшит ИМХО. А детектор там могут образовывать защитные диоды по входу +.
Ещё, в порядке бреда, зашунтировать датчики керамикой. Дабы коротнуть переменку.

msv

Вот по этому я и перешёл на цифру…

У Вас бюджет не ограничен… 😃
Ну с помехами от силовых проводов еще более-менее получается бороться… А вот с 0.5W 1гГц… Уже жаловался, что так и не победил наводки на термодатчик несмотря на глухое экранирование…

А детектор там могут образовывать защитные диоды…
…Дабы коротнуть переменку.

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

Вход и так имеет затворную ёмкость

Тут, дальше в лес… Вдруг обнаружил, что при включении передатчика начинают подзуживать все сервы. Даже в FailSave, когда телеметрия гонит абсолютно неизменные значения! Если бы сходил с ума тайминг меги, это было бы видно на картинке OSD, но там все чисто… Значит опять наводка на шлейф и на вход сервы… Колечки не помогают, вообще мне показалось, что на гГц ферриты не эффективны. Если подносить руку, сервы маленько гуляют, а одна совсем при определенных положениях сходит с ума… Самое забавное (и весьма радует), что передатчик абсолютно не влияет на чутье приемника и GPS…
В общем принял героическое решение полностью менять компоновку и разместить передатчик максимально далеко от всей остальной электроники на конце консоли крыла. Шлейф к нему перед самим передатчиком скрутить в катушку без всякого феррита. Очень большое желание разместить антенну тоже в крыле, дабы не вносить аэродинамическую асимметрию. Может кто знает, как там с диэлектрической проницаемостью у потолочки и скотча?
ЗЫ Не сгорел бы мотор, так бы и летал себе спокойненько не обращая внимания на блох… А тут от скуки, всякой фигней приходится заниматься… 😃

Dikoy
msv:

У Вас бюджет не ограничен…

???
search.digikey.com/scripts/DkSearch/dksus.dll?Deta…
от 100 по 8 баксов, это 12 головок всего. В минус ОУ, кучка пассива, кое что из которого должно иметь хотя бы 1% допуск, плата уже односторонняя. Примерно тож на тож.
Посмотрите на второй автопилот от FMA - они тоже цифру поставили и судя по всему эти search.digikey.com/scripts/DkSearch/dksus.dll?Cat=…

msv:

поэтому была робкая надежда конденсатором прямо на ножке операционника ее прибить

А шунтирование сенсоров кондёром помогло?
Я бы поставил 0,1 и что-то около 470пФ в параллель.

Перепаять цепочку на ОУ не пробовали? Хотя бы ради эксперимента.

msv:

Я и надеялся, что наводки идут на термодатчики,

ИМХО проблема не в наводке, и 1 ГГц прекрасно душится ёмкостью входа ОУ, а проблема в свободной энергии. Той, которой раньше питались детекторные приёмники с детекторами из угля 😃 Она создаёт потенциал на входе. Т.к. природа у неё переменная, то задушить можно капацитором. Только ёмкость надо подобрать, в GPS приёмниках обычно ставят параллельно 33 пФ и 470 пФ, там 1,5 ГГц. Вместе с ёмкостью входа режет наводку на раз.

msv:

Колечки не помогают, вообще мне показалось, что на гГц ферриты не эффективны.

Надо просто брать фербиды, настроеные на опр. частоту среза, а не простые колечки. Тем более, что советские достаточно низкочастотны, а китайские ориентированы на домегагерцовые частоты импульсников.
Например, для того же ЖПС есть BLM15HD102SN1, наверняка есть и на другие частоты. Надо порыть у мураты и ей подобных производителей.

msv:

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

А вот тут достатиочно зарубить добротность антенны (провода) включив последовательно с сигналом резистор. Я до 47к вставлял, серва сигнал принимает. Но достатчно 470-510 ом. Разумеется лучше у самой сервы.
Более радикальный метод - 510 впослед и 100к к земле. У самой сервы. Чтобы рассосать потенциал более чем достаточно.
Наконец, если серва управляется АВРкой, можно прям на плате телемерии поставить резюк 510ом (или больше, определить экспериментально пороговое значение) к земле . Чтобы снизить выходное сопротивление.
Но даже тут причина не в частоте передатчика, а в его мощьности. Свободная энергия поднимает порог КМОП входа сервы.
В общем, победимо, надо просто попробовать разные варианты.

msv

Не стал взрывать себе моск в попытках связать термодинамику (свободная энергия вроде-бы оттуда?) с электромагнитной наводками… Убедился что уже на расстоянии 30см передатчика от всего остального оборудования все барабашки пропадают и буду в крыло передатчик монтировать. Фильтр-пробку, как и хотел, сделал простой катушкой, работает хорошо.