OSD на ATmega1281
Проблема в том, что для получения 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 фильтр от помех между датчиком и мегой
Датчик чувствителен в магнитному полю - ставим рядом катушку, включаем, измеряем ток, отключаем, измеряем ток, усредняем два измерения - это неопробовано, неизвестно что из этого получится, неоправданно…
*/
Да, народ не слишком активен… Может по результатам сезона выложу hex (от НАСA похоже не дождусь предложения на приобретение проекта 😃). Может активность увеличится… Хотя финальной печатки нет (то что у меня, уже можно считать макеткой+кучка платок апгрейда, слишком много поменялось, от начальной идеи), поэтому на повальный интерес по повторению не рассчитываю…
Сейчас играюсь с управляющими алгоритмами автопилота. Правда пока чем мудренее алгоритм, тем обычно хуже все в реале, хотя в модели на ПК, все отрабатывается идеально. Видать слишком “хороша” модель, но сделать ее более правдоподобной, задачка посложнее чем саму управляющую программу… 😃
Добавил режим, похожий на настоящий АП- если в режиме стабилизации щелкнуть доп. тумблер- АП начинает удерживать текущий курс и высоту (такого вроде бы нет у “конкурентов”). При выключении этого режима, устанавливаются нули сенсоров горизонта (для этого, автокалибровки, чес. говоря этот режим и задумывался).
Еще не испытал…
внутренние 2.56 вольта - и при нулевом токе (через датчик) считываем значение порядка 950.
И работаем на отрицательной ветви токового датчика
Именно так у меня и сделано. Правда не столько ради увеличения разрешения, а больше ради упрощения схемы (не нужен свой источник напряжения, и даже ставить делитель напряженияне надо).
Имеет смысл вставить RC фильтр от помех между датчиком и мегой
Практика показала, что это обязательно. Датчик слишком быстродействующий и выдает все пульсации на силовом проводе.
Остальное, по вкусу… 😃 Надо считать какую точность хотите получить, достаточно ли мала погрешность самого датчика, дабы ее обеспечить, ну и нужна ли она…
Да, народ не слишком активен…
Лето, жара, отпуска, ДАЧА!!😛
поэтому на повальный интерес по повторению не рассчитываю…
…
IMHO, большинству из тех, кто следит за этой темой интереснее направление по развитию, чем простой повтор конструкции. Поэтому куски исходников( раз уж нет желания выложить полный проект), наверное, будут более интересны, чем HEX…