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

lodeworx

Для общего обозрения, заморочился:
“относительный”, усредненный спектральный анализ для 1 результата после переключения на 4 канал, с гироскопом, 31 фрейм, ADC-125khz, переключение между 0 и 4 каналами 16x оверсемплинг:

для 16-го:

Шумит?! Все это понятно, про зарядку, импеданс… И что Atmel не очень- то в аналоговую часть углубляется…
С вариометром я AD7705 использовал- там в datasheet этому вопросу целая страница посвящена- стр.16!
Для общего дела, с наилучшими пожеланиями! 😃

foxfly
lodeworx:

Мне тоже интересно.
А такие вещи,в программе, меня как-то пугают.

Прямо как в старом анекдоте : пришел Пьер и все опошлил 😦
А как все хорошо начиналось : Smaalltim с год назад решил сделать устройство телеметрии.
И сделал!
Очень приличное, недорогое и работающее.
Одно это- достойно большого уважения !
Выложил информацию для всех.
И тут приходит боксер- теоретик, утверждающий, что по его (авторитетному и непререкаемомому) мнению- все это “вторичный продукт” (почитайте В.Войновича- узнаете расшифровку термина 😃 )
Батенька!
А где можно увидеть что то, сделанное Вашими ручками?
Или Вы действуете по театральному принципу: актера из меня не вышло, пойду в критики?

maloii

Народ подскажите как в WinAVR (плагин для студии) в ассэмблерной вставке указать адрес памяти (.org). Не могу таблицу знако генератора расположить по 100 кратному адресу памяти. В доки написано так 😦

Note that .org is available in gas as well, but is a fairly pointless pseudo-op in an assembler environment that uses relocatable object files, as it is the linker that determines the final position of some object in ROM or RAM.

. Решил переписать код с CodeVisionAVR на WinAVR, протестил один и тот же код компилированный в разных средах и WinAVR чутьли не в 2 раза шустрее. Вообще ассемблер в WinAVR странный, .db там нет, как я понял замена ему .byte.

smalltim

Рисую схему и печатную плату автопилота.
Пока остановился на следующем наборе входов и датчиков:

  • Вход с GPS модуля
  • 2 пары пирометров
  • 2-осевой компас

На плате предусматриваю еще, из главного:

  • 4 входа и 4 выхода РРМ
  • 16 мегабит памяти
  • USB интерфейс
  • 2 светодиода состояния
  • Разъем SPI для обновления прошивок платы телеметрии и обмена данными с платой телеметрии.

Из неглавного понадобится:

  • Сдвоенный ОУ для компаса, сдвоенный ОУ для платки пирометров.
  • Линейный стабилизатор 3.3В для питания потрохов

Ну, и мелочевка: кварц, резисторы, конденсаторы, разъемы

Плата автопилота должна уметь работать как автономно, так и в паре с платой телеметрии. Если плат работает автономно, то меню на экран выводить нечем. Все настройки - с компука, через USB.
Если плата автопилота работает в паре с платой телеметрии, то на плату телеметрии сгружается обновленная прошивка с поддержкой меню и появляется возможность
управлять настройками прямо в поле, с экранным меню.

Навигация по меню планируется с пульта:

  • вправо-влево-вверх-вниз - ручкой крен-тангаж.
  • Да-Нет-больше-меньше - ручкой РН

Настройки предполагаются следующие:

  • Установка уровней, при которых соответствующие индикаторы на экране начинают мигать: расстояние до базы, высота, напряжения батареи, и т.д.
  • Установка уровней, при которых включается автопилот: расстояние до базы, высота, напряжения батареи, и т.д.
  • Чувствительность системы стабилизации по крену/тангажу
  • Крейсерская высота на автопилоте
  • Крейсерская воздушная скорость на автопилоте
  • Максимальные допустимые углы крена-тангажа на автопилоте
  • Инверсия каналов и расходы на автопилоте

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

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

Что еще забыл?
А, раз в секунду все параметры со всех датчиков сливаются в память платы автопилота и потом при подключении к компуку по USB могут быть слиты и просмотрены на компуке.
Если плата телеметрии отсутствует, то в память сливаются только те данные, что дают пирометры и GPS.

И еще. На многих самиках ставить пирометры неудобно - ось перед-зад частично заслоняет фюзеляж, а ось право-лево - крылья.
Нужно предусмотреть возможность установки платы пирометров в повернутом на 45 градусов состоянии. Так обзор пирометрам заслоняется гораздо меньше, а сложение-вычитание сигнала с двух пар датчиков для получения нормальных крена и тангажа делается элементарно.

Поддержка готовых “голов” с пирометрами типа того, что продается на FMA, обязана быть. Только я для удобства и убирания необходимости калибровки на своей “голове” выведу еще и напряжение средней точки (VCC/2), от которой отмеряются выходы. Потому что она нифига не VCC/2 обычно, а “где-то рядом”.

lodeworx
foxfly:

Прямо как в старом анекдоте : пришел Пьер и все опошлил 😦
А как все хорошо начиналось : Smaalltim с год назад решил сделать устройство телеметрии.
И сделал!
Очень приличное, недорогое и работающее.
Одно это- достойно большого уважения !
Выложил информацию для всех.
И тут приходит боксер- теоретик, утверждающий, что по его (авторитетному и непререкаемомому) мнению- все это “вторичный продукт” (почитайте В.Войновича- узнаете расшифровку термина 😃 )
Батенька!
А где можно увидеть что то, сделанное Вашими ручками?
Или Вы действуете по театральному принципу: актера из меня не вышло, пойду в критики?

Как- то не в тему…

  1. Я тему ADC поднял на примере !СВОИХ! ошибок и наблюдений(вариометр, гироскоп для вертолета).
  2. Пусть Smalltim скажет, если я не хвалил OSD…и его самого!
  3. Только литературного кружка не хватает 😵
lodeworx

To:Smalltim. Вполне рабочая конфигурация- ни добавить-ни убавить.

  1. Память на карте или чип?
  2. Из-за чего принято решение на 3.3в перейти?
smalltim

Память - чип.

3.3В - из-за того, что на AT90USBKEY всё питается от 3.3В, и память максимум вроде как 3.6В. А так - непринципиально, 3.3В или 5В.

К гуру есть пока один только вопрос:
Можно ли обойтись 2-осевым магнитным датчиком, допуская погрешность по курсу в не строго стабилизированном состоянии? 3-х осевой правильнее, но для корректного проецирования вектора на север на плоскость нужно точно знать углы крена-тангажа. С пирометрами я никогда не узнаю их точно, несмотря на то, что стабилизировать самик/верт с пирометрами можно очень точно - нули я узнаю всегда 😃

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

leliksan

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

Для возвращения на базу врукопашную вполне достаточно знать примерное направление, большая точность не нужна, всё равно ветром болтать будет. А по мере приближения к базе и гораздо большая погрешность не сыграет роли, главное попасть в район взлета.
С уважением.

foxfly
lodeworx:

Как- то не в тему…

  1. Я тему ADC поднял на примере !СВОИХ! ошибок и наблюдений(вариометр, гироскоп для вертолета).
  2. Пусть Smalltim скажет, если я не хвалил OSD…и его самого!
  3. Только литературного кружка не хватает 😵

То, что Вы анализируете свои ошибки- весьма похвально!
Но вопрос был о другом: есть ли в Вашем творчестве успешные и работающие конструкции?
А ошибок при любом реальном действии- у кого хочешь (в т.ч. и у меня- вагон) 😦
Как раз против превращения реальной темы в пустую болтовню- я и выступаю 😃
Предвидя встречный вопрос к себе- отправляю Вам в личку ссылки на мои конструкции (дабы не быть обвиненным в саморекламе )

foxfly
leliksan:

Для возвращения на базу врукопашную вполне достаточно знать примерное направление, большая точность не нужна, всё равно ветром болтать будет. А по мере приближения к базе и гораздо большая погрешность не сыграет роли, главное попасть в район взлета.
С уважением.

С погрешностью “курса на базу” в 15%- точно на нее не попадешь. Достаточно посчитать треугольник с гипотенузой 2км 😦 Даже в поле зрения не прилетишь.
Но и биться скажем, за 0,1*- тоже смысла нет, поскольку раз в сек. приходит коррекция курса с GPS и самолет “доворачивает” в нужном направлении.
2 Smalltim: если ставить компас- то 3х координатный, ибо врет при крене 2х- страшно.
А с пирометрами- боюсь вы все бежите не туда: смысл FMA -два пирометра без усилительных каскадов (т.е. две термобатарейки DEXTER DST 60) включены встречно! А операционник нужен с нулевым дрейфом.(AD8552)
Тем самым они компенсируют температурный уход, и на выходе операционника- всегда (при равной “засветке” пирометров) сидит точно половина питания- 1,65 в.
Точность определения крена- около 3*

serj
foxfly:

С погрешностью “курса на базу” в 15%- точно на нее не попадешь. Достаточно посчитать треугольник с гипотенузой 2км 😦 Даже в поле зрения не прилетишь.
Но и биться скажем, за 0,1*- тоже смысла нет, поскольку раз в сек. приходит коррекция курса с GPS и самолет “доворачивает” в нужном направлении.

Следует учитывать метод наведения.

Например, при простейшем методе “погони” когда курс на базу расчитывается каждый раз с приходом новых данных ( а у нас координаты раз в секунду идут) при ошибке и 20 и30 градусов точно на базу он не попадет, но круги метров 300 описывать будет 😃

правда траектория будет полукругом 😃

Psw
smalltim:

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

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

leliksan:

Для возвращения на базу врукопашную вполне достаточно знать примерное направление,

foxfly:

С погрешностью “курса на базу” в 15%- точно на нее не попадешь. Достаточно посчитать треугольник с гипотенузой 2км

Считать гипотенузу на мой взгляд не имеет смысла - потому как при приближении к базе (а оно будет приближаться при ± 15* ошибке) гипотенуза тоже будет уменьшаться.
Вот лично мне думается что когда в пара прыге на визуальной ориентации (и “автопилот” в голове которая нифига не калькулятор) 2-3 км удаление от базы с высотой 1000-1500 м (у моего купола равновесная вертикаль около 6 и горизонт около 17 м/сек) ошибка 15* - да её (ошибку) ваапще визуально не заметишь - поправка на ветер и болтанка купола значительно выше, да и невозможно постоянно глядеть “на базу”, определяя направление - в воздухе полно доп факторов которые тоже внимание отвлекают, соответственно “поправки” в курс вносятся не очень часто, раз в 5 сек быть могет на высоте. Перед землёй на 100 и менее метрах - естественно всё внимание переключается на “базу” 1х1 метр к примеру ну или коридор 1х50 метров - поправки в курс вносятся чаще - около 2 раз в сек. И не надо забывать что “визуальный курс на базу” (который я определяю в парапрыге) и “курс вектора реального движенияна относительно земли базу” (который определяет ГПС - две большие разницы. А большинство парапрыгеров приходит на базу без ГПС при наличии видимости - и справляются ведь и мотора не имеют ваапще и на второй круг уйти ещё никому не удавалось. Лично я свою глазомерную точность оцениваю ±15 или даже более градусов. Главное идти в направлении базы, хотя бы в квадрант базы (90* или ±45 ошибки), согласен. Увеличение ошибки приведёт только к увеличению пути полёта, но цель всё-равно достигнется. А вообще SmallTim как любитель численного эксперимента мог бы и самостоятельно проверить “условие сходимости ряда” - при какой величине ошибки модель перестанет приходить на базу. Мне кажется что это будет ошибка более ± 90 град - когда мы перестанем приближаться к базе в полёте. А “комплексировать” магнитный и ГПС курсы придётся по разному при достаточно малом и достаточно большом удалении от базы - приоритеты должны поменятся.

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 в минутах. Как вариант один раз после включения. Не столь важно- всегда можно сделать чаще.
Но раз в секунду и меньше точно не нада. Успехов!