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

foxfly
Psw:

15 градусов - это ±7 или ±15* ? Ну то есть речь про размах или про модуль ?

Считать гипотенузу на мой взгляд не имеет смысла .

Я ничего “на глаз” не оценивал.
Все описанное проверялось сначала- ездой на машине, затем- плаванием на модели катера, которая дает условия, максимально приближенные к полету (кроме изменения высоты и возможности потери улетевшего аппарата) в том числе и снос от ветра.
Только после всего этого- леталось на самолете…
А умозрительные вычисления при проверке на местности столько “ляпов” дают- лучше и не пробовать 😦

leliksan

По моему, погрешность 15% и 15 градусов совсем не одно и то же.
С уважением.

smalltim

Погрешность в экстремальных случаях может быть до 90 градусов.
Но ничего, с трехосевым магнитометром и пирометрами, думаю, будет полегче.
Проблема пирометров в том, что с ними из разницы в сигналах со смотрящих вправо-влево и вперед-назад пирометров трудно высчитать точные углы крена и тангажа, ибо разница ведет себя хитро. С возрастанием угла разница возрастает, а на нулевых углах она нулевая, так что система стабилизации будет работать на ура.
В то же время разница нифига не прямо пропорциональна углу. Но посчитать углы более-менее точно всё-таки можно. Надо взять и проинтегрировать распределение чувствительности датчика в конусе его поля зрения по, скажем, ста сегментам от 0 до 100 градусов, и составить табличку в формате “разница-угол”, где разница - нормализованный (приведенный к интервалу от -1 до 1) разностный сигнал с пары пирометров, а угол - получаемый угол тангажа-крена.
Но корректно работать это всё будет только если известно, как нормализовать текущую разницу сигналов с пирометров, а для этого надо знать, какой уровень сигнала будет, если один пирометр видит только землю, а второй только небо.
Подозреваю, что и в том числе для этого продвинутые системы на пирометрах имеют третью пару пирометров, где один смотрит вниз, а второй вверх.

Dikoy
foxfly:

2 Smalltim: если ставить компас- то 3х координатный, ибо врет при крене 2х- страшно.

Подтверждаю. У меня сейчас двухосевой - планировалось обмерять его в горизонтальном (по БСО) положении. При таком раскладе работает, но зависимость крена/указуемого_курса значительная и нелинейная.

lodeworx:

А такие вещи,в программе, меня как-то пугают. А использует ли функция delay_us() таймер? Уверен нет- это макро на ассемблере, которое наверняка запрещает прерывания при входе в нее. Замечательно полезно!

А вы хотите, чтобы автоматический генератор занимал таймеры по своему усмотрению? “Замечательно полезно!”
Мы спорим о необходимости задержки между переключением канала и стартом преобразования, так? Граждане утверждают, что за нас всё решили и в любых условиях атмел сам догадается, что делать. Ибо его умные дядьки проектировали. При чём тут таймер?

smalltim:

Но корректно работать это всё будет только если известно, как нормализовать текущую разницу сигналов с пирометров, а для этого надо знать, какой уровень сигнала будет, если один пирометр видит только землю, а второй только небо.
Подозреваю, что и в том числе для этого продвинутые системы на пирометрах имеют третью пару пирометров, где один смотрит вниз, а второй вверх.

Тот, что смотрит вниз, может смотреть на нагретую крышу дома, а вверх - на единственное в небе облако. И всё…
Думаю, это сделано просто для того, чтобы не утруждать юзера калибровками. Включил - оно само отстроилось. И не надо крутить самолёт в руках.
А нелинейность, видимо, вызвана углами преломления фильтра. Галий, как и турмалин, и кварц, имеет явно выраженную кристаллическую решётку и проождение лучей от угла неодинаково. + отсутствие оптической системы в пирометре. Это я в инете начитался 😁

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

smalltim

>А нелинейность, видимо, вызвана углами преломления фильтра

Фильтр там - плоская пластина, углы преломления не роляют.

Всё гораздо проще. Освещенность сенсора пропорциональна косинусу угла между нормалью к поверхности сенсора и линией, по которой падает луч, несущий энергию.
Ну и плюс ограничения, накладываемые взаимным расположением окна и чувствительного элемента датчика.

>А вообще, зачем нам углы крена? При влючённом стабилизаторе крена развернуть самолёт можно рулём направления, блинчиком. То есть автопилот будет держать крен автоматически, что позволит ему же управлять рулём направления не заботясь о завалах

А вот у меня на Изике нет элеронов, я хочу автопилот с виражами 😃

maloii

Есть возможность заказать чип для отрисовки MAX7456 www.maxim-ic.com/quick_view2.cfm/qv_pk/5516 . Стоимость 15 евро. Если есть желающие то пишите в личку, чем быстрее тем лучше завтра утром уже едут заказывать!

smalltim

Гуру, а как лучше организовать опрос магнитометров?

Сет-ресет-меряем?
Или сет-меряем-ресет-меряем и Vout=(Vset-Vreset)/2 ?

С какой частотой достаточно будет делать сет-ресет? 1 Гц? 0.1Гц? Один раз после включения?

foxfly
smalltim:

а как лучше организовать опрос магнитометров?

Ну, там все не так просто: www.nxp.com/acrobat_download/applicationnotes/AN00022_COMPASS.pdf

lodeworx
smalltim:

Гуру, а как лучше организовать опрос магнитометров?

Сет-ресет-меряем?
Или сет-меряем-ресет-меряем и Vout=(Vset-Vreset)/2 ?

С какой частотой достаточно будет делать сет-ресет? 1 Гц? 0.1Гц? Один раз после включения?

Ну эта формула для установочного вычисления offset- значения (OS), повниматочней 😉
сет-меряемVset, 2usec passed, ресет, меряем Vreset
OS=(Vset-Vreset)/2
Vout=Vreset-OS, меряем Vreset,Vout=Vreset-OS, меряем Vreset,Vout=Vreset-OS…
Период обновления OS в минутах. Как вариант один раз после включения. Не столь важно- всегда можно сделать чаще.
Но раз в секунду и меньше точно не нада. Успехов!

lodeworx
smalltim:

Вы готовы мириться с погрешностью вычисления и отображения курса на базу до 10-15 градусов, когда углы крена и тангажа ненулевые? Точный-то курс автопилот всегда при необходимости сможет узнать, приведя крен и тангаж к нулям.

Так и есть. Реальный компас “бычий глаз” в виражах такое исполняет, да и в горизонте от вибрации и толчков может на 360 провернуться… Поэтому в полете используется ГПК(гирополукомпас)- выставляется на земле. Или ГМК- то- же, но с коррекцией от магнитного(XYZamr +angular rate sensor+инклинометр для начальной установки). В больших виражи считаются заранее, при составлении плана полета. При наличии на борту эвм, задача упрощается: горизонт-имеем курс (истинный и магнитный), скорость отн. земли. Имея УВС(указатель возд. скорости) считаем угол ветра и скорость ветра. Делаем небольшой доворот на ЗК (заданный курс) с фиксированным креном, режимом и высотой в течении одной секунды,например->в горизонт->получаем новый курс, а так- же угловую скорость разворота при заданном режиме. Полагаю, дальше все просто и понятно- задаем новое время виража(при параметрах, равных предыдущему) для выхода на ЗК. Никаких синусоид и полукругов. Это из штурманской подготовки…

Dikoy
smalltim:

Фильтр там - плоская пластина, углы преломления не роляют.

А вот у меня на Изике нет элеронов, я хочу автопилот с виражами 😃

Ну, вы, батенька, слишком много кушать 😃 ИМХО сначала просто бы горизонт удержать…

Про фильтр - я непного не о том. fizika.asvu.ru/page.php?id=100
Возьмем две прямоугольные пластинки из турмалина, вырезанные так, что одна из сторон прямоугольника совпадает с направлением оптической оси кристалла, и наложим их так, чтобы их оси совпадали по направлению. Пропустим через сложенную пару пластинок узкий пучок света от фонаря. Начнем поворачивать одну из пластинок вокруг пучка, оставляя другую неподвижной. Мы обнаружим, что след пучка ослабевает, и когда пластинка повернется на 90% он совсем исчезнет. При дальнейшем повороте пластинки проходящий пучок вновь начнет усиливаться и дойдет до прежней интенсивности, когда пластинка повернется на 180°.
Впрочем, одна пластинка такой эффект не даст, то есть нелинейность засветки врдли является следствием прохождения кристаллической решётки.

smalltim:

Гуру, а как лучше организовать опрос магнитометров?

Сет-ресет-меряем?
Или сет-меряем-ресет-меряем и Vout=(Vset-Vreset)/2 ?

С какой частотой достаточно будет делать сет-ресет? 1 Гц? 0.1Гц? Один раз после включения?

Отправил исходник.
Правильно “Или сет-меряем-ресет-меряем и Vout=(Vset-Vreset)/2”, причём на один канал, причём постоянно.

Опрашивать можно как угодно часто, главное чтобы магнитометр не перегрелся - токи SET/reset там нехилые… У меня стоит 4 раза в секунду. Когда автопилот пеглючило, было около 100 раз в секунду. Жужжал как шмель, но выжил 😃
Вообще, он забавно тикает при разряде.

Можно конечно SET/RESET делать раз в секунду, а мерить чаще, но ничего кроме некой экономии электричества не получим…

foxfly:

Ну, там все не так просто: www.nxp.com/acrobat_download/applicationnotes/AN00022_COMPASS.pdf

Это KMZ, я от них отказался - магнит срывало 😃
А у Тимофея HMC, насколько я знаю…

smalltim

HMC у меня, HMC…
Только это, господа, натуральное *лядство. Рисую схему, развожу плату. Интересуюсь корпусами датчиков. И что?

Все чипы в паябельных корпусах стоят раза в 2-3 дороже, чем какой-нибудь *лядский LCC16 размером 3х3мм. И как это прикажете паять?

Склоняюсь к варианту 3 отдельных датчиков в SIP8 корпусах. Пусть будет дороже, но зато хотя бы осуществимо.

BigDaddy

Тим, ты ссылочку дай на дешевые, но мелкие датчики, а мы поглядим.
Может нараз и запаяем. 😁

smalltim

Вот вся линейка:
www.ssec.honeywell.com/magnetic/products.html

Вот документ по серии 105x - она в России самая дешевая:
www.ssec.honeywell.com/magnetic/…/HMC105X.pdf

У двухосевого 1052 сравните корпус 10-pin MSOP и 16-pin LCC на странице 5.
И посмотрите 1-осевой 1051Z в корпусе 8-pin SIP на странице 4, который я собираюсь использовать, ибо 10-pin MSOP нигде на складах нет (cм efind.ru), а 16-pin LCC - кошмар.

BigDaddy

Тим! Если у корпусов 16LCC сбоку есть хоть небольшая площадка от вывода который на брюхе, то припаять можно. Если нет, то тогда только феном.

smalltim

Пока вот что получается:

Стабилизатор питания +5В еще не прикручен, память еще не прикручена, питание памяти +3.3В тоже не прикручено.
Еще надо 2 кнопочки, 2 светодиодика. Ну и еще вход GPS да разъем SPI для общения с платой телеметрии.

smalltim

Сделал схему немного более читаемой:

Ой, в цепи ресета фигня нарисована, не обращайте внимания. Отосплюсь - поправлю, будет как положено и еще плюс кнопочка 😃

smalltim

По поводу того, как привязан PPM, входы с пирометровых голов и с магнитометров - поругайте, если не лень 😃

А мне надо очень хорошо подумать, как строить программу чтобы корректно выходной PPM формировать, без задержек и прочая, а то сервы будут дрожать. Раньше я почему-то об этом не подумал.
А у Атмег прерывания реентерабельные? Т.е. что будет, если стукнет прерывание пока я обрабатываю другое прерывание? Подозреваю, что ничего страшного не произойдет, но все тайминги на моей совести 😦

Dikoy
smalltim:

У двухосевого 1052 сравните корпус 10-pin MSOP и 16-pin LCC на странице 5.
И посмотрите 1-осевой 1051Z в корпусе 8-pin SIP на странице 4, который я собираюсь использовать, ибо 10-pin MSOP нигде на складах нет (cм efind.ru), а 16-pin LCC - кошмар.

Я паял MSOP, тоже не подарок. А у LCC есть выводы сбоку.

smalltim:

По поводу того, как привязан PPM, входы с пирометровых голов и с магнитометров - поругайте, если не лень 😃

А мне надо очень хорошо подумать, как строить программу чтобы корректно выходной PPM формировать, без задержек и прочая, а то сервы будут дрожать. Раньше я почему-то об этом не подумал.
А у Атмег прерывания реентерабельные? Т.е. что будет, если стукнет прерывание пока я обрабатываю другое прерывание? Подозреваю, что ничего страшного не произойдет, но все тайминги на моей совести 😦

Я вот одного не пойму - ну если всё равно городить внешний ОУ, почему сразу не поставить нормальный АЦП? 😃 Тот же корпус, но нет кучи пассива с пол процентными допусками, который ещё и отстраивать надо. Нету кучи математики для вычисления курса из того г-на, которое получится после усиления ОУ и оцифровкой меговским АЦП. Ну нафига себе проблемы то создавать? 😃
Видимо, тяга к аналогу, это как свинка. Надо один раз переболеть, чтобы потом на всю жизнь иммунитет…
Кстати, купить АЦП ничуть не сложнее, чем этот ОУ.

Прерывания в меге встают в очередь, по приоритетам. Внутри прерывания ничего не происходит, но после выхода из прерывания чип выполнит 1 команду и снова уйдёт в прерывание. Самое приоритетное в очереди.
Таблица приоритетов есть в ДШ.

Проблем с генерацией не будет - регистры таймеров с двойной буферезацией. То есть пока генерится один период ШИм, обновлять регистр можно как хош часто. В качестве нового значения будет принято то, которое было в регистре в момент окончания периода генерации.

Чёта я схему не пойму. А ШИМы там что, не аппаратные? 😃

Dikoy

Вот, фото моих пирометров 😃 Фото головы в сборе и графики чуть позжа.

dmk
smalltim:

А у Атмег прерывания реентерабельные? Т.е. что будет, если стукнет прерывание пока я обрабатываю другое прерывание? Подозреваю, что ничего страшного не произойдет, но все тайминги на моей совести 😦

Для нестинга (если Вы это имеете ввиду) у Атмег достаточно после входа в процедуру обработки прерывания установить флаг глобального прерывания (тем самым подтвердить прерывание). В следующем командном цикле может быть принято и обработано следующее прерывание (внутри текущего прерывания).

lodeworx

а, черт!..Полностью согласен! Про нормальный АЦП и по прерываниям. Походу PWM программный-дрожать будет в зависимости от сложности остального софта(подключал в свое время аналоговый стрелочный вариометр к 8051 без PWM- все вылизал, а стрелка дрожит, как осиновый листок). Не связывайся- много бестолкового секса будет 😃 . В приемнике можно- там ниче нет больше. А про выбор процессора, я лучше помолчу…(LPC21… 6 асинхронных каналов, например)…молчу 😵

smalltim

PWM аппаратный будет, это я протупил просто. Схемку перерисую.
Насчет нормального ацп - мне меговского хватает.

smalltim

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

Раз набрался смелости, вот еще вопрос: а не сможет ли кто-нибудь за разумные деньги в несколько дней сделать пару печатных плат?
Заказывать на заводе - долго и дорого, да и надо-то пока только дорожки с одной стороны и никаких отверстий. Паять всё соплями к at90usbkey - неохота. И без этого есть что на нем поотлаживать 😃

lodeworx

Ну вот, грабли! Вилы! 😮 Ну вот, будем протокол придумывать! SPI- сдвиговый рег. обычный. В данной апп. OSD- мастер, вывод делать в кадровом прерывании, например, дополнительное прерывание вводить нельзя- будут строки выпадать, или сдвигаться, из- за очереди прерываний, а так, все ручками… Хотите ARINC-4xx освоить в “свободное” время 😛 ?? Для прошивки Мег, использую мегалоад- ниче удобнее не пробовал- автоопределение, по сбросу. Можно переписать на любой физ. интерфейс, а основную делать прозрачной, во время прошивки. Но, ARM7 имеют на борту заводской лоадер и оригинальные процедуры входа… SAM7S- USBloader, и всего 48 пинов! О чем еще мечтать?! вот под что плату нада делать, а не возиться с протоколом и читать всякую ересь 😉 !

Atmel’s AT91SAM7S is a series of low pincount Flash microcontrollers based on the 32-bit ARM
RISC processor. It features a high-speed Flash and an SRAM, a large set of peripherals, including
a USB 2.0 device (except for the AT91SAM7S32 and AT91SAM7S16), and a complete set
of system functions minimizing the number of external components. The device is an ideal
migration path for 8-bit microcontroller users looking for additional performance and extended
memory.