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

smalltim
RK3AMS:

А вот случай с моделью тов. Maloii и разбором причин этого в посте №1242 пункт 3 говорит, что
не всё так просто с этой GPS.
Радиомаяк служит для оптеделения направления на точку, а не положения в пространстве. 😒

Ага. Ничего, с компасом всё решится 😃

Коллеги, пока суть да дело, я таки решился заказать много штук пирометров по вкусной цене (в 2-3 раза дешевле мелексисов) и сделать аналог FMA-шной головы…
…perkinelmer.com/…/DTS_TPS333R3.pdf
По цене ориентировочно получится в районе FMAшной головы за 43 бакса, только сильно компактнее и сильно легче.

Если хотите отговорить - пока не поздно это сделать 😃

lodeworx

Кто сам летает, знать должен, как держать горизонт по “пионерке”(указатель скорости разворота). Выдерживаешь режим(если с двигателем), вертикальную в ноль, воздушную- постоянной, разворот в ноль. Кто скажет, что это не горизонт? Вы тут со своей математикой скорее очередной симулятор сваяете! А как турбулентность фильтровать, и зачем? Автопилот- вообще самый элементарный регулятор. В чем вообще проблема то? Прописываешь максимальные отклонения рулей, умножаешь ашипку на коэфф. регулирования(Gain) и прибавляешь к исходному положению серво. Чувствительностью от помех избавляешься… А для возврата модели по GPS и компас не нужен- выдерживай высоту и курс по GPS, ну будет, из-за боковой составляющей угол сноса ИК=GPSк=МК+/-МС+/-УС и че? Для Москвы, например самолетик 45км/ч, ветер, северный 000 15 км/ч УСмакс=(U/V)*60=20 градусов, точка на западе 270 5км, (feedback через GPS) УВ=90 путевая составляющая отсутствует- долетим за 6.66666 минут, при этом магн. компас должен будет показывать 270-8+20=282 градуса. Т.е. вполне можно обойтись только GPS. У меня компас для установки гироскопа используется только+ 2 акселя.
Адаптивная или нелинейная фильтрация, средствами контроллера в трех строчках реализуется, блин! Я год назад еще адаптивную систему охлаждения запустил, ниче не зная про Калмана(температура, конечно медленнее меняется) 😛

Dikoy
smalltim:

Если хотите отговорить - пока не поздно это сделать 😃

У меня только один аргумент против - в 2-3 раза дешевле, а гимора больше… Были б они в 20-30 раз дешевле 😦
А так я тока за. Сам хочу с аналогом поиграться, да жаба душит второй заказ делать 😃

lodeworx:

Автопилот- вообще самый элементарный регулятор. В чем вообще проблема то?

Раз вы такие умные, что ж вы строем не ходите? (с)

lodeworx
RK3AMS:

А вот случай с моделью тов. Maloii и разбором причин этого в посте №1242 пункт 3 говорит, что
не всё так просто с этой GPS.
Радиомаяк служит для оптеделения направления на точку, а не положения в пространстве. 😒

Можно и в пространстве- по двум маякам NDB(1mhz max). Около Шереметьево VOR 114.6mhz- он один у нас 😦 . Здесь рамочные антенны не нужны- только штыревая(вращается сам маяк) определяется радиал и дистанция. Поймать можно китайским приемником за 100р(катушку на контуре раздвинуть).

smalltim

>Кто сам летает, знать должен, как держать горизонт по “пионерке”(указатель скорости разворота). Выдерживаешь режим(если с двигателем), вертикальную в ноль, воздушную- постоянной, разворот в ноль. Кто скажет, что это не горизонт?

Опишите, пожалуйста, как сделать вертикальную в ноль и разворот в ноль. Спасибо.

>Автопилот- вообще самый элементарный регулятор. В чем вообще проблема то? Прописываешь максимальные отклонения рулей, умножаешь ашипку на коэфф. регулирования(Gain) и прибавляешь к исходному положению серво. Чувствительностью от помех избавляешься… А для возврата модели по GPS и компас не нужен- выдерживай высоту и курс по GPS, ну будет, из-за боковой составляющей угол сноса ИК=GPSк=МК+/-МС+/-УС и че? Для Москвы, например самолетик 45км/ч, ветер, северный 000 15 км/ч УСмакс=(U/V)*60=20 градусов, точка на западе 270 5км, (feedback через GPS) УВ=90 путевая составляющая отсутствует- долетим за 6.66666 минут, при этом магн. компас должен будет показывать 270-8+20=282 градуса. Т.е. вполне можно обойтись только GPS. У меня компас для установки гироскопа используется только+ 2 акселя.

Можно фото готового девайса?

>Адаптивная или нелинейная фильтрация, средствами контроллера в трех строчках реализуется, блин! Я год назад еще адаптивную систему охлаждения запустил, ниче не зная про Калмана(температура, конечно медленнее меняется)

И как, хорошо летает адаптивная система охлаждения?

lodeworx

😮 она не летает- охлаждает, сорри. Алгоритм достаточно интересный получился…(оффтоп- оранжерея)
Как вертикалку мерять? Странный вопрос. Практически, в программе у меня каждому новому измерению, клеится timestamp с разрешением 0.001 сек(обсчет в свободное от прерываний время) 2-я производная- тренд вертикальной скорости. При включении автопилота на удержание высоты, запоминаешь значение с барометра, изменения интегрируешь по времени, умножаешь на gain и плюсуешь к текущему положению серво на тангаж. Тренд так- же можно задействовать, для “плавности”. А вот что бывает при перерегулировке: www.youtube.com/watch?v=Ieef0tLrv9c&feature=relate… -система в разнос!
На разворот, я лично, приделал MURATA-GYROSTAR-ENV-05V(пьезо, случайно достался). Ставишь в самоль вертикально. +/- 60гр.сек, при нуле на выходе 2.5 в, оверсемплинг в 12бит. Пожалуйста, бери ошибку и на серво(можно хоть на паре операционников сделать аналоговый). От температурного дрейфа и шума чувствительность спасает- не нужна такая точность!
Фото завтра ночью выложу,если интересно могу схемы, но это сам пациент и его кишки(на 88% готовы). И вообще это не самолет…

smalltim

>И вообще это не самолет…

А что?

>Как вертикалку мерять? Странный вопрос.

Вопрос был не про то как мерить, а про то, как поставить в 0.
Впрочем, какова у Вас разрешающая способность и стабильность показаний с бародатчика?

>На разворот, я лично, приделал MURATA-GYROSTAR-ENV-05V(пьезо, случайно достался). Ставишь в самоль вертикально.

В общем, понятно. Самолет, то есть, эээ… девайс самостабилизирующийся?

lodeworx
smalltim:

>И вообще это не самолет…

А что?

>Как вертикалку мерять? Странный вопрос.

Вопрос был не про то как мерить, а про то, как поставить в 0.
Впрочем, какова у Вас разрешающая способность и стабильность показаний с бародатчика?

>На разворот, я лично, приделал MURATA-GYROSTAR-ENV-05V(пьезо, случайно достался). Ставишь в самоль вертикально.

В общем, понятно. Самолет, то есть, эээ… девайс самостабилизирующийся?

Вертолет, нитро. Самому интересно, как акселерометры себя поведут!?
С 16 битным ацп у НАС около 20 см. по высоте было разрешение, устроит такое? Стабильность сильно зависит от грамотного питания, опорного напряжения(дело в том, что все эти железки делались для реальных парящих полетов, а моделями я только летом занялся- так железку дешевле в небо запулить 😒 ) пришлось схемотехнику упрощать из-за веса и размеров. Почти все пришлось переделывать в сторону упрощения. Почти закончил!
2 недели потратил на систему электропитания. Могу выложить распечатки с датчиков за минуту, как и код для АЦП с 12bit оверсемплингом(без фильтрации 😁 )
Сундук с шестеренками!? Я полагаю, да! 😃

smalltim

Эээ… собственно, вопрос:
Эта Ваша штука сможет самостоятельно привести вертолет на базу или нет?
У Вас нет всяческих покупных стабилизаторов-копилотов, поставленных дополнительно к автопилоту?

Я не то чтобы выпендриваюсь, я ищу оптимальное решение для народного “автопилота”, возьмем это в кавычки на всякий случай.
И что получается?

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

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

Еще сбоку пирометры - вроде как универсально (но надо испытывать), относительно дешево и сердито.

И тут появляется lodeworx и говорит, что сделать автопилот для вертолета можно на одном гироскопе и еше на крепком словце.

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

lodeworx

До полного автопилота для вертолета как-то далековато еще…
заводской приемник и сервы только

  1. гироскоп
  2. компас XY
  3. аксель XY
  4. высотомер
  5. GPS
    Ну вот, по быстрому. Движок выключен(я его вообще еще не заводил 😕 ) Это 1hz
    Gyro: 2484.mV
    Gyro: 2483.mV
    Gyro: 2483.mV
    Gyro: 2483.mV
    Gyro: 2483.mV
    Gyro: 2485.mV
    Gyro: 2486.mV
    Gyro: 2484.mV
    Gyro: 2488.mV
    Gyro: 2481.mV
    Gyro: 2483.mV
    Gyro: 2483.mV
    Gyro: 2484.mV
    Gyro: 2483.mV
    Gyro: 2485.mV
    Gyro: 2483.mV
    Gyro: 2483.mV
    Gyro: 2483.mV
    Gyro: 2483.mV
    Gyro: 2483.mV
    Gyro: 2481.mV
    Gyro: 2483.mV
    Gyro: 2484.mV
    Никакой интеграции и фильтров, just raw data… Программно- 1.2287 mv чувствительность.
    еще раз про вертикалку в ноль. Ну совсем просто: запоминаешь, без всякой математики показания с MPX (в попугаях) на нужной высоте, а изменения(+/-) умножаешь на GAIN и складываешь с текущим значением положения серво на тангаж(в моем случае вообще два режима получается- висение и горизонтальный полет,т.е. еще и шагом нада рулить) Подстраиваешь чувствительность, чтобы сервы в состоянии покоя не шевелились-меньше шума- больше чувствительность- ниче нового не придумано! Завтра доберусь до тушки- выложу листинг с барометра.
smalltim

>До полного автопилота для вертолета как-то далековато еще

Ээ… тогда я все вопросы снимаю.

>Завтра доберусь до тушки- выложу листинг с барометра
Не, не надо.

Про поддержание вертолета в стабильном состоянии - удачи! Получится простыми методами - бум перенимать опыт, если поделитесь 😃

Одна тут ссылочка мне понравилась. По идее, физически должно быть эквивалентно управлению по одной из степеней свободы верта:
Inverted Pendulum Balancing Robot Montage

Psw

БалансирныйРоботГизмо выглядит прикольно, согласен. Но у него высота заведомо неизменна, а вот в вертолёте 2х осевой аксель да и 3х осевой - нервничать должны сильно. Хотя годика 3 назад кто-то на форуме поговаривал о попытках стабилизировать висение комнатного верта 2х осевым акселем, уж не знаю на сколько успешно - видео не выкладывалось.

serj
Dikoy:

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

Само у них летает, но только на самоустойчивом электролете с рулем направления без элеронов 😃
Измерить они могут, а вот управлять- с этим наблюдаются трудности …
Я думаю, вам известно сколько “дозоров” было положено с помощью их автопилота 😦

Вообще, задача измерения и управления- это две разные задачи…

Кстати, тот же Побежимовский “элерон” - замечательный комплекс, простой как 2 копейки, имеет на борту из датчиков только gps и барометр, да еще один гироскоп 😃

Так что- на “бюджетный” вариант- максимум две пары пирометров и в сад 😃

Про компас- на широте Питера 5 градусов наклона по крену могут привести к 15 градусам ошибки курса.

Про гиру модельную по крену- я имел в виде только демпфер…

Dikoy
serj:

Я думаю, вам известно сколько “дозоров” было положено с помощью их автопилота 😦

Вообще, задача измерения и управления- это две разные задачи…

Так что- на “бюджетный” вариант- максимум две пары пирометров и в сад 😃

Про компас- на широте Питера 5 градусов наклона по крену могут привести к 15 градусам ошибки курса.

Да, я знаю. Только не знаю, это с ИХ автопилотом, или доработанным канадским, на котором они и лётают собственно?

Да, +1. Измерение и управление задачи разные. Причём управление - сильно проще.

К пирометрам желателен аксель. Во-1 он позволит использовать только 4 пирометра, при этом знать направление на землю. Во-2 его можно использовать совместно с 3-х осевым компасом, делая его невосприимчивым к кренам ( www.magneticsensors.com/datasheets/hmc1055.pdf , стр.9, HEADING COMPUTATION). +GPS. Вот это, ИМХО, и есть опримальная концепция:
GPS, возд. скорость, компас, пирометры, аксель. Альтиметр - как опция. И всё.

Вся математика компаса укладывается в 3 строчки:
X’ = X * cos(φ) + Y * sin(θ) * sin(φ) – Z * cos(θ) * sin(φ)
Y’ = Y * cos(θ) + Z * sin(θ)
Azimuth (Heading) = arctan (Y’ / X’)

lodeworx
Dikoy:

Да, я знаю. Только не знаю, это с ИХ автопилотом, или доработанным канадским, на котором они и лётают собственно?

Да, +1. Измерение и управление задачи разные. Причём управление - сильно проще.

К пирометрам желателен аксель. Во-1 он позволит использовать только 4 пирометра, при этом знать направление на землю. Во-2 его можно использовать совместно с 3-х осевым компасом, делая его невосприимчивым к кренам ( www.magneticsensors.com/datasheets/hmc1055.pdf , стр.9, HEADING COMPUTATION). +GPS. Вот это, ИМХО, и есть опримальная концепция:
GPS, возд. скорость, компас, пирометры, аксель. Альтиметр - как опция. И всё.

Вся математика компаса укладывается в 3 строчки:
X’ = X * cos(φ) + Y * sin(θ) * sin(φ) – Z * cos(θ) * sin(φ)
Y’ = Y * cos(θ) + Z * sin(θ)
Azimuth (Heading) = arctan (Y’ / X’)

+5! наконец пришла зима! 😁 Ура товарищи!

lodeworx

AVR-ADC_GLYUK! В мануалах как-то не заостряют внимание на этом- я в свое время напопоролся. Если у вас ADC использует …на… Я лучше код выложу с комментариями!
[codebox]
#define SELMUXADC 0b11111000—>Маска для ADMUX
#define OVERSAMPLERCHANNELS 1 ->каналов на оверсемплинг
#define OVERSAMPLExX 16-> 16х
#define NoP asm volatile (“nop”)
typedef struct {
uint16_t D_Container;
uint16_t Result;
uint8_t chnmask;
} Oversampler_SET;
Oversampler_SET Oversampler_CHNL[OVERSAMPLERCHANNELS];

ADMUX =_BV(REFS0);
ADCSRA =0b111 |_BV(ADEN) |_BV(ADIE) |_BV(ADSC);
//------------------------------------------------------
ISR (ADC_vect) {
Oversampler_SET *wrkwith;
wrkwith=&Oversampler_CHNL[OvSmpl];
if (wrkwith->Stat_Cntr++) { здесь уже нет “ашипки”
//if (wrkwith->Stat_Cntr++<OVERSAMPLExX) { а здесь так не надо делать

wrkwith->D_Container+=ADC; <- здесь НЕЛЬЗЯ использовать первый результат НЕ ТОЛЬКО при первом старте ADC, но и после переключения MUX!!!-ОН(осчет ADC) КРИВОЙ-шумит т.е.! Хитрые атмельщики- утаили!

}else if (wrkwith->Stat_Cntr>OVERSAMPLExX) { был “равно” стал “больше” т.е. делаем не 16, а 17 семплов
wrkwith->Result=(wrkwith->D_Container&0b11111111111100)>>2; >12 bit результат
wrkwith->Stat_Cntr=0;
wrkwith->D_Container=0;
if (OvSmpl++==OVERSAMPLERCHANNELS) OvSmpl=0;
wrkwith=&Oversampler_CHNL[OvSmpl];
ADMUX =(ADMUX&SELMUXADC) |wrkwith->chnmask; < ТРАГИЧЕСКИЙ момент 😃
NoP; < ждем такт, пока не обновится
}
ADCSRA|=_BV(ADSC); < стартуем
}
[/codebox]
Наглядненько
Наверняка ни я один попался, т.к. первое, что приходит в голову, при нескольких каналах ADC- это обновлять ADMUX на следующий канал сразу после получения результата…Я доооооолго морочился, пытаясь понять че шумит.

serj
lodeworx:

AVR-ADC_GLYUK! В мануалах как-то не заостряют внимание на этом- я в свое время напопоролся.

Вообще-то именно для этого в институтах учат схемотехнике 😃 чтоб следствия схемного построения аналоговой части (УВХ после коммутатора) не принимали за глюки … Сорри, не хотел язвить, но не удержался…

smalltim

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

Dikoy
serj:

Вообще-то именно для этого в институтах учат схемотехнике 😃 чтоб следствия схемного построения аналоговой части (УВХ после коммутатора) не принимали за глюки … Сорри, не хотел язвить, но не удержался…

Называется “первое пустое преобразование” у всех АЦП последовательного приближения 😃 У СД просто возрастает время накопления. Раза в 2-3.

Psw
lodeworx:

я лично, приделал MURATA-GYROSTAR-ENV-05V (пьезо, случайно достался)<> вообще это не самолет

lodeworx:

Вертолет, нитро.

Порылся в своей коллекции убитых девайсов, содеял фотку:

двух убитых датчиков Мурата ENV-03 на фоне исправного ENV-05. Убились на верте при крашах на кухне. В одном 03 датчике даже краешек кристалла обломился, хотя корпус был целым естественно - обломился чисто от “ускорения несовместимого с жизнью”. Что-то мне подсказывает, что в ENV-05 кристалл ещё жирнее и убъётся при краше ещё легче. Про вибрации ДВС уж ваапще молчу - как он их там “переварит” без наводок.

serj:

в институтах учат схемотехнике

А я вот сам грызу гранит схемотехники потихоньку. Но то что после переключения MUX надо подождать для зарядки конденсатора УВХ перед началом АЦП - вроде и в даташитах написано и само по себе понятно.

smalltim:

после переключения каналов АЦП первый полученный результат выбрасываю

Ну да, это тоже способ “подождать”, только не самый быстрый.
Речь была об алгоритме получения каждого АЦП результата Переключил-Подождал зарядки УВХ -Запустил АЦП/Отключение конденсатора УВХ. Либо можно - при отсутствии регулируемой аппаратной задержки для УВХ как в 18 пиках, можно было делать в прерывании от готовности АЦП результата - Начало Обработчика Прерывания АЦП - пауза реакции на флаг прерывания и на сохранение регистров достаточна для зарядки УВХ - Запуск нового АЦП/Отключение УВХ - переключение MUX - быстрое копирование/накопление результата АЦП пока новый результат не готов - выход из прерывания.
И при этом не надо ничего выбрасывать и АЦП работает достаточно шустро без особых пустых программных задержек. Делал так в 16 пике.

smalltim

>Ну да, это тоже способ “подождать”, только не самый быстрый.

У меня каждый канал после переключения опрашивается 64 раза в режиме free run, потеря 65-го измерения - не слишком существенная потеря времени 😃