OSD на ATmega1281
связка ДУС- пара акселерометров для коррекции ДУСа давно и успешно применяется в коптеростроении, где то тут Сергей aka botvoed толково все это объяснял как работает. Хотя с использованием обработки по Калману
Ну, без калмана там врядли хорошо работает 😉 Мы это ещё лет 5 назад прошли.
А с калманом работает хорошо, но в полёте НЕОБХОДИМЫ прямолинейные участки. Чтобы фильтр выделил направление g. На самолёте это малореально. Пиро тут гораздо симпатичней.
Вот эта рекурсия (первый сигнал корректируем по второму, а второй по первому и в обоих случаях с потерей “постоянной составляющей”) несколько вызывает сомнения в ее жизнеспособности в реале…
А шо таке? Обычный калман, это его сущность давить систематику. Есть, конечно, пара секретов и вектор состояния хитрый, а в целом обычный калман. Классический так сказать.
Может все же кто придумает эргономичное решение, как сделать на пульте с одним трехпозиционным переключателем и двумя двухпозиционных:
- Переключение режимов АП (ручной, стабилизация, АП). (Очевидно трехпозиционником).
- Установка нуля пирогоризонта.
- Установка нуля выходных каналов после триммировании модели.
A - трехпозиционный переключатель, B,C - двухпозиционные
A=0,B=0,C=0 - нет активности (далее обозначаем 000)
000->010 (ручной)->011(нуль пирогоризонт)
________________->110->111(нуль триммер)
000->100->110 (стабилизация)
000->200->210 (АП)
Проблема в том, что для получения n независимых каналов интервалы канала ppm уменьшаются со скоростью 2^n (те. очень быстро…). А малые интервалы требуют тщательной калибровки декодера и увеличивают вероятность ложного срабатывания.
Ну и симбиоз твоего старого и мною предложенного варианта. Сделай на передатчике сколько угодно переключателей, хоть каждый на отдельный режим. А передавай и разбирай - последовательность изменений ппм от максимума- до минимума (посути, что у тебя сейчас и делается). Пусть передатчик сам эти последовательности генерит, а не ты тумблером туда-сюда наяриваешь.
При этом интервалы канала весьма широкие и можно их однозначно трактовать кодеру, ты не путаешься сколько раз тумблер переключал…
интересная тема, особенно с видео.
Может кому будет любопытно, как первый полет с земли выглядел… (пленку наконец проявили… 😃 то бишь диск финализировали…)
Да, триммировать АП хотелось бы иметь возможность именно в полете. Какой микшер сделать с двух дискретных переключалок на один канал, что бы осталась однозначность: 1я переключалка-три режима полета (ручной, стабилизатор, АП), 2-я - триммирование? Что-то вроде рядом мысля, но никак не досоображу…
//–
Про связку ДУС/пироголова. Что то дошло, что такая рекурсивная стабилизация, которую предлагал в предыдущем сообщении, да еще с потерей постоянной составляющей от пироголовы, вероятно потребует нехилого мат.обеспечения для оценки сходимости и устойчивости системы…
Есть предложение, порядок такой - летим, подрехтовали рули, щёлкнули комбинацию, борт запонил текущие значения как нулевые и от них пляшет, вариант?😒
Ну собственно так все и есть… Вопрос был какую бы комбинацию щелкнуть… 😃
Пока не стал особо мудрить- смикшировал трехпозиционный переключатель (режимы АП) 80% с двухпозиционным (команда) 20% на один канал. Получилось шесть равноудаленных вариантов. А логика при декодировании сделал такую: если в режиме стабилизации щелкнуть доп. переключалкой- установка нуля горизонта (делается один раз перед полетом на земле), если в режиме ручного управления- записываются разница текущих значений каналов от калиброванных как триммеры. Еще можно что-то делать в режиме автопилота, пока резерв…
Решил блох маленько половить… Всем хорош датчик горизонта, но… уже давно заметил, что если при включенном видеопередатчике поднести руку к шлейфу от датчика к плате телеметрии (0,+5, два выхода с датчика) (или просто даже подвинуть шлейф на сантиметрик)- горизонт заметно уплывает. Думал что это наводки на входе телеметрии от шлейфа (хотя там конечно емкость стоит). Но оказалось, что это с самого датчика так дрейфует сигнал на выходе. Колечко перед датчиком на шлейфе не помогло… Есть подозрение, что именно на входе операционника датчика какое-нибудь прямое детектирование происходит. Перерисовал схему датчика:
Все- проще не придумаешь… Делитель на выходе- уже мое добавление… Конечно с коэффициетом усиления 1000, можно всяких чудес ожидать, даже обратное влияние синфазной помехи от шлейфа. Пока только в голову приходит попробовать подсадить прямой вход операционника емкостью… Но что-то не очень верится в успех…
Конечно с коэффициетом усиления 1000, можно всяких чудес ожидать
Вот по этому я и перешёл на цифру… Шлейф от сенсоров 30 см, из которых 10 в башне толкающего винта вперемешку с силовыми проводами, и хоть бы хрен.
А если отношение цепи ОС ОУ уменьшить раз так в 10? Поставить 100 ом и 100к.
Если у ОУ на входе полевики, а не биполярники, а всё на то указывает, то снижением сопротивления помехи можно сбить ниже порога шума АЦП.
Кондёр тут мало поможет, ИМХО. Вход и так имеет затворную ёмкость, которая и набирает потенциал от свободной энергии. Добавление ёмкости только ухудшит ИМХО. А детектор там могут образовывать защитные диоды по входу +.
Ещё, в порядке бреда, зашунтировать датчики керамикой. Дабы коротнуть переменку.
Вот по этому я и перешёл на цифру…
У Вас бюджет не ограничен… 😃
Ну с помехами от силовых проводов еще более-менее получается бороться… А вот с 0.5W 1гГц… Уже жаловался, что так и не победил наводки на термодатчик несмотря на глухое экранирование…
А детектор там могут образовывать защитные диоды…
…Дабы коротнуть переменку.
Я и надеялся, что наводки идут на термодатчики, проводники их соединяющие и детектируются защитными диодами, поэтому была робкая надежда конденсатором прямо на ножке операционника ее прибить… Почему может быть хуже не понял, но и лучше не стало… что в общем-то не особо удивило, тк.
Вход и так имеет затворную ёмкость
Тут, дальше в лес… Вдруг обнаружил, что при включении передатчика начинают подзуживать все сервы. Даже в FailSave, когда телеметрия гонит абсолютно неизменные значения! Если бы сходил с ума тайминг меги, это было бы видно на картинке OSD, но там все чисто… Значит опять наводка на шлейф и на вход сервы… Колечки не помогают, вообще мне показалось, что на гГц ферриты не эффективны. Если подносить руку, сервы маленько гуляют, а одна совсем при определенных положениях сходит с ума… Самое забавное (и весьма радует), что передатчик абсолютно не влияет на чутье приемника и GPS…
В общем принял героическое решение полностью менять компоновку и разместить передатчик максимально далеко от всей остальной электроники на конце консоли крыла. Шлейф к нему перед самим передатчиком скрутить в катушку без всякого феррита. Очень большое желание разместить антенну тоже в крыле, дабы не вносить аэродинамическую асимметрию. Может кто знает, как там с диэлектрической проницаемостью у потолочки и скотча?
ЗЫ Не сгорел бы мотор, так бы и летал себе спокойненько не обращая внимания на блох… А тут от скуки, всякой фигней приходится заниматься… 😃
У Вас бюджет не ограничен…
???
search.digikey.com/scripts/DkSearch/dksus.dll?Deta…
от 100 по 8 баксов, это 12 головок всего. В минус ОУ, кучка пассива, кое что из которого должно иметь хотя бы 1% допуск, плата уже односторонняя. Примерно тож на тож.
Посмотрите на второй автопилот от FMA - они тоже цифру поставили и судя по всему эти search.digikey.com/scripts/DkSearch/dksus.dll?Cat=…
поэтому была робкая надежда конденсатором прямо на ножке операционника ее прибить
А шунтирование сенсоров кондёром помогло?
Я бы поставил 0,1 и что-то около 470пФ в параллель.
Перепаять цепочку на ОУ не пробовали? Хотя бы ради эксперимента.
Я и надеялся, что наводки идут на термодатчики,
ИМХО проблема не в наводке, и 1 ГГц прекрасно душится ёмкостью входа ОУ, а проблема в свободной энергии. Той, которой раньше питались детекторные приёмники с детекторами из угля 😃 Она создаёт потенциал на входе. Т.к. природа у неё переменная, то задушить можно капацитором. Только ёмкость надо подобрать, в GPS приёмниках обычно ставят параллельно 33 пФ и 470 пФ, там 1,5 ГГц. Вместе с ёмкостью входа режет наводку на раз.
Колечки не помогают, вообще мне показалось, что на гГц ферриты не эффективны.
Надо просто брать фербиды, настроеные на опр. частоту среза, а не простые колечки. Тем более, что советские достаточно низкочастотны, а китайские ориентированы на домегагерцовые частоты импульсников.
Например, для того же ЖПС есть BLM15HD102SN1, наверняка есть и на другие частоты. Надо порыть у мураты и ей подобных производителей.
Вдруг обнаружил, что при включении передатчика начинают подзуживать все сервы.
А вот тут достатиочно зарубить добротность антенны (провода) включив последовательно с сигналом резистор. Я до 47к вставлял, серва сигнал принимает. Но достатчно 470-510 ом. Разумеется лучше у самой сервы.
Более радикальный метод - 510 впослед и 100к к земле. У самой сервы. Чтобы рассосать потенциал более чем достаточно.
Наконец, если серва управляется АВРкой, можно прям на плате телемерии поставить резюк 510ом (или больше, определить экспериментально пороговое значение) к земле . Чтобы снизить выходное сопротивление.
Но даже тут причина не в частоте передатчика, а в его мощьности. Свободная энергия поднимает порог КМОП входа сервы.
В общем, победимо, надо просто попробовать разные варианты.
Не стал взрывать себе моск в попытках связать термодинамику (свободная энергия вроде-бы оттуда?) с электромагнитной наводками… Убедился что уже на расстоянии 30см передатчика от всего остального оборудования все барабашки пропадают и буду в крыло передатчик монтировать. Фильтр-пробку, как и хотел, сделал простой катушкой, работает хорошо.
Не, это то, что остаётся после детектирования радиосигнала. Ток, который возникает в антенне. Чтобы наловить достаточно энергии для запитки наушников антенна должна быть несколько десятков метров в длину, но т.к. у вас передатчик рядом, то длины проводов хватает.
Вот, по теме:
electroscheme.org/498-radiopriemnik-s-pitaniem-ot-…
freeenergyengines.ru/svobodnaya-energiya-v-sovreme…
Вспомнил, что этой ветке последнее видео так невесело закончилось. Можно подумать, что не этом проект и закончился… Ан- нет! Давно уже летаю, правда далеко и высоко пока не рискую… Вот крайний полет:
До этого регулятор автопилота был только с “П”-ветвью. Выводил на базу довольно точно, но как-то раздражало, что все время недоворачивает на цель. Добавил “И”-ветвь и появилась вполне предсказуемая раскачка. Инерция самолета, запаздывание GPS-данных, время интеграции И-ветви… Что-то не соображу как все это увязать, и демпфировать раскачку.
Люди, а кто как борется с дрожанием камеры? Камера у меня поворачивается только по вертикали прямым приводом от сервы. Во первых у сервы небольшой люфт, и от вибрации двигов камеру потряхивает. Во вторых серва сама в некоторых положениях зудит. Причем если механически пытаться демпфировать для уменьшения дрожания от первого пункта, то растет проявление второго…
Или это лечится только какой-нибудь дорогучей цифровой сервой?
msv
Расскажите, плз, как у Вас устроен видеовывод - в частности те самые “золотые” три инструкции 😃 и сопряжение ассемблера с Си
Кста, схему можно немного удешавить/упростить - видеозахват замечательно работает со встроенным в Мегу компаратором.
Код вывода строки сделан “в лоб” и не отличается особым изяществом:
;
;gNumLine++
MOV R26,gNumLineL
MOV R27,gNumLineH
ADIW R26,1
MOV gNumLineL,R26
MOV gNumLineH,R27
;if(gNumLine>=TOPLINE_SCR && gNumLine<TOPLINE_SCR+VSIZE_SCR)
CPI R26,LOW(TOPLINE_SCR)
LDI R16,HIGH(TOPLINE_SCR)
CPC R27,R16
BRLT _end1
CPI R26,LOW(TOPLINE_SCR+VSIZE_SCR)
LDI R16,HIGH(TOPLINE_SCR+VSIZE_SCR)
CPC R27,R16
BRLT _con1
BRNE _end1
LDI R16,1
MOV f_work,R16
_end1:
RJMP _USART_RX
; pause
_con1:
LDI R16,WAIT_START_OUT
_pause:
DEC R16
BRNE _pause
; out string
MOV R27,gScrBuffPointH
MOV R26,gScrBuffPointL
LDI R16,BYTES_FROM_STRING
LD R18,X+
_out_ch:
MOV R17,R18
OUT V_PORT,R17 ;1
NOP
NOP
LSR R17
OUT V_PORT,R17 ;2
NOP
NOP
LSR R17
OUT V_PORT,R17 ;3
NOP
NOP
LSR R17
OUT V_PORT,R17 ;4
NOP
NOP
LSR R17
OUT V_PORT,R17 ;5
NOP
NOP
LSR R17
OUT V_PORT,R17 ;6
LD R18,X+
LSR R17
OUT V_PORT,R17 ;7
LSR R17
DEC R16
NOP
OUT V_PORT,R17 ;8
brne _out_ch
LDI R17,0
NOP
OUT V_PORT,R17 ;8
SBIW R26, 1
MOV gScrBuffPointL,R26
MOV gScrBuffPointH,R27
Пасиб.
Если здесь:
LDI R16,BYTES_FROM_STRING
LD R18,X+
убрать плюс, то в конце можно будет убрать всю инструкцию:
SBIW R26, 1
Мелочь, а приятно )
Пишу в IAR, и всю голову поломал - как красиво передать ассемблерной части адрес на видеобуфер.
Как у вас это получилось - так и не понял. Или gScrBuffPoint задан вручную? (как и размещение видеобуфера в опертивке)
Сорри, ошибся, не все так просто.
…как красиво передать ассемблерной части адрес на видеобуфер
Не уверен, что это красиво, но у меня так:
register unsigned char* gScrBuffPoint @5;
#asm (".def gScrBuffPointL=R5")
#asm (".def gScrBuffPointH=R6")
Инициализация в прерывании от КСИ:
interrupt [INT0] void ext_int0_isr(void)
{ // КСИ
gNumLine=0;
gScrBuffPoint=gScrBuff;
}
Что-то и топикстартер молчит и окружающие не интересуюццо…
Появилась мысля как увеличить точность измерения тока - ставим в меге источником опорного внутренние 2.56 вольта - и при нулевом токе (через датчик) считываем значение порядка 950.
И работаем на отрицательной ветви токового датчика - т.е. при растущем токе значение с АЦП будет падать до нуля.
Даст повышение точности в два раза.
/*
еще немного мыслей просто из записной книжки:
Ток и напряжение лучше мерить тинькой в режиме ADC noise reduction, с полной обвязкой АЦП и как можно ближе к датчику - результат будет чище и лучше.
Работаем на пониженной частоте АЦП.
Имеет смысл вставить RC фильтр от помех между датчиком и мегой
Датчик чувствителен в магнитному полю - ставим рядом катушку, включаем, измеряем ток, отключаем, измеряем ток, усредняем два измерения - это неопробовано, неизвестно что из этого получится, неоправданно…
*/