OSD на ATmega1281

msv
Syberian:

По IMU непонятно, куда делся компас?

Пробовал в DCM компас применить (в исходниках закомментировано). Идея такая- вектор компаса и ось Z DCM определяют вертикальную плоскость, на которой лежит векторе курса. Т.о. векторное произведение оси Z DCM и нормализированного вектора компаса даст вектор в горизонтальной плоскости с направлением на восток (при правильном порядке умножения), те. должен соответсвовать оси Y DCM. Соответственно кросс-продукт этого полученного вектора с осью Y DCM даст значение, пропорциональное отклонению между этими векторами, по которой можно корректировать дрейф гироскопа вокруг оси Z (курс) и при желании вокруг оси Y. В принципе на столе это работало, но что-то в летных испытаниях не заладилось, пока не стал разбираться, просто убрал эту часть.
АП в MainBoard использует только GPS-курс. Поэтому летать в ветер со скоростью больше скорости самолета- не рекомендуется…

ubd:

У меня же есть последние, по которым у меня всё работает. Выложить?

Это плата и схема на которой летал в прошлом сезоне. Там немного завалена АЧХ и поэтому немного подъедается поднесущая цвета, но в принципе, конечно, схемы/печатки рабочие… Может есть смысл пока отделить цифровую часть и модулятор? а потом глядишь коллективным разумом родим бескомпромиссный модулятор свободный от всех недостатков в тч. не залазяющий спектром в цветовую поднесущую… Но куча платок, конечно не самый удобный вариант, поэтому решение на ваш выбор…

ubd

А у меня цвета не яркие это из за того что АЧХ завалена, или модуляция слабая?
Я у себя на видеопердатчике нашёл переменник, который за моделяцию отвечает. Нужно, пробовать настраивать. Но нужно с тобой в поле, что бы сравнить с твоими цветами.
Серёга, а ты не мог бы срисовать свои изменения, для архива. А то так и забудется.

Syberian
msv:

ока не стал разбираться, просто убрал эту часть.

да, закоменченная глючит.
Попробуйте ТСС (tilt compensated compass)

float TCC(float bx, float by, float bz, float phi, float theta)
{    float Xh, Yh, angle;
    Xh = bx * cosf(theta) + by * sinf(phi) * sinf(theta) + bz * cosf(phi) * sinf(theta);
    Yh = by * cosf(phi) - bz * sinf(phi);
    angle =atan2f(-Yh, Xh);// + declination);
    return angle;
}

фи - крен, тета - тангаж, все в радианах.
Bxyz - оси компаса

Применять вместо yaw из DCM .

У компаса все оси должны быть выровнены по диапазону и смещениям.

msv

Серега, уровень модуляции лучше настраивай осциллографом. Смотри прямо на приемнике с нагрузкой. По картинке это не просто сделать. Заваленная поднесущая цвета почти не влияет на насыщенность, только на слабом зашумленном сигнале будет раньше и больше заметен цветовой шум и переход в ч/б.
Олег, ну совсем то глючить вроде не должен… Все вроде работало, только при старте мог “задуматься”, когда расхождение углов по курсу было близкое к 180град. У меня дефайнами (на скорую руку, для теста) определены смещения нулей компаса, может в этом проблема?. Или направления осей не соответствуют моим сенсорам?..
Вообще был удивлен насколько компас дает маленькую проекцию на горизонтальную плоскость… Всю жисть, представляя школьный компас, считал что магнитное поле земли практически параллельно горизонту… 😃
В принципе компас больше интересен как еще один канал для коррекции дрифта гироскопов… Но пока решил не заморачиваться…

Syberian
msv:

У меня дефайнами (на скорую руку, для теста) определены смещения нулей компаса

Нет, я чистый алгоритм в Х вставил попробовать 😃 Там все датчики уже закалиброваны и выверены. С осями надо было разбираться, по акселю пришлось А[0] инвертировать и первую омегу в коррекции развернуть, иначе компенсация по ЖПС работает с обратным знаком. С компасом та же заморочка, поэтому не стал париться и пропустил через ТСС “снаружи”
У вас как-то совсем просто компенсация сделана, только по Y акселя. В маневрах с креном (когда omega[0] появляется) и при линейных ускорениях компенсации нет.

msv

Вспомнил, а ведь в оригинальном коде arduimu так и сделано… Сначала Tilt compensated, те. получение проекций вектора компаса на горизонтальную плоскость при “известных” крене, тангаже. Эти проекции должны соответствовать соответствующим проекциям в DCM, а по ошибке крутиться Yaw. Честно говоря мне показался такой вариант неоправданно сложным (мягко говоря… 😃 )

Syberian:

совсем просто компенсация сделана, только по Y акселя. В маневрах с креном (когда omega[0] появляется) и при линейных ускорениях компенсации нет.

omega[0] - вращение вдоль продольной оси самолета, центробежных ускорений не вызывает. При повороте блинчиком вращение происходит вокруг оси Z (omega[2]), компенсируется Y-акселя (A[1]). При повороте на ноже- вращение вокруг оси Y (omega[1]), компенсируется Z-акселя (A[2]). При обычном повороте с креном вращение и компенсации раскладываются на соответствующие оси… Линейные ускорения не компенсируются, но как бы для этого нет данных… Одна надежда, что их длительность не может быть большой, и не успеет достаточно заметно увести гироскопы. Тем более, “вес акселя” будет уменьшен, а значит и скорость коррекции.
Для проверки коррекции центробежки можно вбить некоторое значение в gGPS_speed, например 60км/ч, и покрутить самолет с креном. Если все знаки правильные должно быть заметное увеличение крена, при неизменяемом тангаже…
ЗЫ У меня есть отладочное приложение под BCB6 для отладки, визуализации, построение трендов итп. Если надо - выложу…

Syberian
msv:

например 60км/ч, и покрутить самолет с креном. Если все знаки правильные должно быть заметное увеличение крена

Есть увеличение. Если крутить быстрее, эффект уменьшается из-за “веса” акселя.
Линейные в случае самолета можно тоже вычислять: по изменению GPS-скорости при близких к нулю омегах будет чисто линейное ускорение/торможение.

msv
Syberian:

эффект уменьшается из-за “веса” акселя.

Все правильно, в комнате линейную скорость в 60км/ч сложно развить (голова закружится). 😃 Соответственно коррекция с принудительно установленной линейной скоростью будет искажать длину вектора акселя, и ее (коррекцию) можно только качественно оценить. А в реальном полете коррекция, устраняя вклад центробежки в значения акселя, приближает длину вектора к 1-це. Пробовал летать без коррекции- на виражах вес акселя близок к 0…

Syberian:

по изменению GPS-скорости при близких к нулю омегах будет чисто линейное ускорение/торможение.

ИМХО Для самолета значимое линейное ускорение вдоль оси X возникает только на взлете и посадке… В полете значения акселя по всем осям больше искажает тряска от ветра … Но на счастье она имеет знакопеременный характер с относительно высокой частотой и легко отфильтровывается.

ubd

С разрешения Сергея, выкладываю то что у меня сейчас стоит в Скае 1,68м.

OSD_MSV.rar

varvar

Тексас халяву желающим раздает - плату с кортексом за 5 баксов включая доставку estore.ti.com/Stellaris-LaunchPad.aspx
Китайцы нервно курят в сторонке. Для попробовать - дайте две 😃
Кстати, для MSP430 тоже есть платка, еще дешевле. Процессор на ней дохленький - это минус, но эту платку можно использовать как программатор для нормальных процессоров - а вот это огромный плюс. Лишнее можно отпилить и выбросить.

Правда, насчет доставки в Россию не могу 100% утверждать, что будет халява (народ утверждает, что даже бесплатных образцов не шлют), но при желании попытаться можно.
Сергей, это ничего, что я Вашу тему время от времени засоряю? 😃

ubd

Тексас халяву желающим раздает - плату с кортексом за 5 баксов включая доставку estore.ti.com/Stellaris-LaunchPad.aspx

Я не понял, зачем?
Что эта плата делает?

Syberian

У техаса в плане контроллеров есть 2 замечательные вещи: “коде компостер” и “рф студио” и есть один недостаток: даташиты на процы пишут еще кривее, чем СТ.

varvar
Syberian:

У техаса в плане контроллеров есть 2 замечательные вещи: “коде компостер” и “рф студио” и есть один недостаток: даташиты на процы пишут еще кривее, чем СТ.

Они замечательны, пока ими не пытаешься пользоваться 😃 После чего компостер летит в топку и используется старый добрый IAR.
А кривая документация - это новое веяние, раньше (лет 10 тому назад), документация была отличная. Да, впрочем, по MSP430 документация по-прежнему хорошая. Кстати, и сайт был намного информативнее - легко можно было найти примеры и что угодно. Попробуйте сейчас это сделать - ради килобайта текста придется скачать десятки-сотни мегабайт всякой чешуи, предварительно зарегистрировавшись и подписавшись под кучей соглашений, которые читать в лом.
Но на вкус и цвет…

Вахтанг
varvar:

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

Регулярно получаю от TI бесплатные образцы. Срок доставки 3-5 дней!

Syberian:

даташиты на процы пишут еще кривее, чем СТ.

Не замечал, вроде всё понятно и привычно. Меня наоборот, даташити других производителей больше раздражает.

varvar:

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

Тоже не замечал. Специально не регистрировалься, нужную мне информацию нахожу быстро. В отличии от сайтов других производителей. Может я к нему привык?

Вахтанг

Сергей
Не совсем понятно каким образом получаете 12В из 9В. И не понятно полярность включения VD3.

msv

Это обычный step-up DC/DC для получения 12V от 3S-липо. При полностью заряженном акке преобразователь затыкается и напруга чуть больше 12 (за счет падения на D3). По мере разряда, преобразователь запускается и выдает стабильные 12В. Несколько упрощенно, конечно грамотнее сделать какой-нибудь SEPIC, но что-то сходу у меня с ним не сложилось, не стал пока заморачиваться…
ЗЫ Аа… понял недоумение… Сергей вход с выходом на схеме перепутал… 😃

ubd

Сергей вход с выходом на схеме перепутал…

Опа… Мой косяк. Ну кто собирать будет, допрёт. В крайнем случае нам вопрос задаст. Я не думаю, что полный ламер будет пытаться спаять этот девайс.

13 days later
msv

Немного не по теме…
Погода нелетная, от скуки слепил прогу захвата видео. Кроме VirtualDub проги либо слишком тяжелые для моего ноута, либо денег просят. Собственно даб устраивал, но захотелось упростить жизнь. Те сверхзадача была максимально сократить необходимые действия в поле, для старта записи. Получилось вроде- проще некуда…
Одна кнопка- превью, другая кнопка- запись. Даже имя файла генерируется автоматом, по дате/времени. Конечно всех, достаточно сложных и серьезных наворотов от даба нет, да и весь код просто ^C+^V из msdn, но вроде работает.
Вообщем кому интересно поиграться - FPVcap. Версия по сути альфа…

avisenja

Сергей, как всегда - на высоте!!!😒
Спасибо!!! Супер!!!

Vlado

Версия по сути альфа…

а она под XP? попробывал под Win7-64 чего то не того не пишет а так молодец! я в этом не разбираюсь к сожалению:(
PS папочку организовал вроде заработала

Syberian
msv:

слепил прогу захвата видео

То, что надо. Ни плюх, ни свистулек. Четко и просто. Спасибо!!!