Телеметрия (часть 1)
Все эти извраты с вращающимися антеннами - для определения положения самика в пространстве. С этим GPS справляется, причем, на ура.
Проблема в определении ориентации, то есть, углов крена, тангажа, рыскания. Тут эти антенны ни при чем.
Ну антенну-то разместить вращающуюся, как раз не проблема…
- для определения положения самика в пространстве. С этим GPS справляется, причем, на ура.
А вот случай с моделью тов. Maloii и разбором причин этого в посте №1242 пункт 3 говорит, что
не всё так просто с этой GPS.
Радиомаяк служит для оптеделения направления на точку, а не положения в пространстве. 😒
А вот случай с моделью тов. Maloii и разбором причин этого в посте №1242 пункт 3 говорит, что
не всё так просто с этой GPS.
Радиомаяк служит для оптеделения направления на точку, а не положения в пространстве. 😒
Ага. Ничего, с компасом всё решится 😃
Коллеги, пока суть да дело, я таки решился заказать много штук пирометров по вкусной цене (в 2-3 раза дешевле мелексисов) и сделать аналог FMA-шной головы…
…perkinelmer.com/…/DTS_TPS333R3.pdf
По цене ориентировочно получится в районе FMAшной головы за 43 бакса, только сильно компактнее и сильно легче.
Если хотите отговорить - пока не поздно это сделать 😃
Кто сам летает, знать должен, как держать горизонт по “пионерке”(указатель скорости разворота). Выдерживаешь режим(если с двигателем), вертикальную в ноль, воздушную- постоянной, разворот в ноль. Кто скажет, что это не горизонт? Вы тут со своей математикой скорее очередной симулятор сваяете! А как турбулентность фильтровать, и зачем? Автопилот- вообще самый элементарный регулятор. В чем вообще проблема то? Прописываешь максимальные отклонения рулей, умножаешь ашипку на коэфф. регулирования(Gain) и прибавляешь к исходному положению серво. Чувствительностью от помех избавляешься… А для возврата модели по GPS и компас не нужен- выдерживай высоту и курс по GPS, ну будет, из-за боковой составляющей угол сноса ИК=GPSк=МК+/-МС+/-УС и че? Для Москвы, например самолетик 45км/ч, ветер, северный 000 15 км/ч УСмакс=(U/V)*60=20 градусов, точка на западе 270 5км, (feedback через GPS) УВ=90 путевая составляющая отсутствует- долетим за 6.66666 минут, при этом магн. компас должен будет показывать 270-8+20=282 градуса. Т.е. вполне можно обойтись только GPS. У меня компас для установки гироскопа используется только+ 2 акселя.
Адаптивная или нелинейная фильтрация, средствами контроллера в трех строчках реализуется, блин! Я год назад еще адаптивную систему охлаждения запустил, ниче не зная про Калмана(температура, конечно медленнее меняется) 😛
Если хотите отговорить - пока не поздно это сделать 😃
У меня только один аргумент против - в 2-3 раза дешевле, а гимора больше… Были б они в 20-30 раз дешевле 😦
А так я тока за. Сам хочу с аналогом поиграться, да жаба душит второй заказ делать 😃
Автопилот- вообще самый элементарный регулятор. В чем вообще проблема то?
Раз вы такие умные, что ж вы строем не ходите? (с)
А вот случай с моделью тов. Maloii и разбором причин этого в посте №1242 пункт 3 говорит, что
не всё так просто с этой GPS.
Радиомаяк служит для оптеделения направления на точку, а не положения в пространстве. 😒
Можно и в пространстве- по двум маякам NDB(1mhz max). Около Шереметьево VOR 114.6mhz- он один у нас 😦 . Здесь рамочные антенны не нужны- только штыревая(вращается сам маяк) определяется радиал и дистанция. Поймать можно китайским приемником за 100р(катушку на контуре раздвинуть).
>Кто сам летает, знать должен, как держать горизонт по “пионерке”(указатель скорости разворота). Выдерживаешь режим(если с двигателем), вертикальную в ноль, воздушную- постоянной, разворот в ноль. Кто скажет, что это не горизонт?
Опишите, пожалуйста, как сделать вертикальную в ноль и разворот в ноль. Спасибо.
>Автопилот- вообще самый элементарный регулятор. В чем вообще проблема то? Прописываешь максимальные отклонения рулей, умножаешь ашипку на коэфф. регулирования(Gain) и прибавляешь к исходному положению серво. Чувствительностью от помех избавляешься… А для возврата модели по GPS и компас не нужен- выдерживай высоту и курс по GPS, ну будет, из-за боковой составляющей угол сноса ИК=GPSк=МК+/-МС+/-УС и че? Для Москвы, например самолетик 45км/ч, ветер, северный 000 15 км/ч УСмакс=(U/V)*60=20 градусов, точка на западе 270 5км, (feedback через GPS) УВ=90 путевая составляющая отсутствует- долетим за 6.66666 минут, при этом магн. компас должен будет показывать 270-8+20=282 градуса. Т.е. вполне можно обойтись только GPS. У меня компас для установки гироскопа используется только+ 2 акселя.
Можно фото готового девайса?
>Адаптивная или нелинейная фильтрация, средствами контроллера в трех строчках реализуется, блин! Я год назад еще адаптивную систему охлаждения запустил, ниче не зная про Калмана(температура, конечно медленнее меняется)
И как, хорошо летает адаптивная система охлаждения?
😮 она не летает- охлаждает, сорри. Алгоритм достаточно интересный получился…(оффтоп- оранжерея)
Как вертикалку мерять? Странный вопрос. Практически, в программе у меня каждому новому измерению, клеится timestamp с разрешением 0.001 сек(обсчет в свободное от прерываний время) 2-я производная- тренд вертикальной скорости. При включении автопилота на удержание высоты, запоминаешь значение с барометра, изменения интегрируешь по времени, умножаешь на gain и плюсуешь к текущему положению серво на тангаж. Тренд так- же можно задействовать, для “плавности”. А вот что бывает при перерегулировке: www.youtube.com/watch?v=Ieef0tLrv9c&feature=relate… -система в разнос!
На разворот, я лично, приделал MURATA-GYROSTAR-ENV-05V(пьезо, случайно достался). Ставишь в самоль вертикально. +/- 60гр.сек, при нуле на выходе 2.5 в, оверсемплинг в 12бит. Пожалуйста, бери ошибку и на серво(можно хоть на паре операционников сделать аналоговый). От температурного дрейфа и шума чувствительность спасает- не нужна такая точность!
Фото завтра ночью выложу,если интересно могу схемы, но это сам пациент и его кишки(на 88% готовы). И вообще это не самолет…
>И вообще это не самолет…
А что?
>Как вертикалку мерять? Странный вопрос.
Вопрос был не про то как мерить, а про то, как поставить в 0.
Впрочем, какова у Вас разрешающая способность и стабильность показаний с бародатчика?
>На разворот, я лично, приделал MURATA-GYROSTAR-ENV-05V(пьезо, случайно достался). Ставишь в самоль вертикально.
В общем, понятно. Самолет, то есть, эээ… девайс самостабилизирующийся?
>И вообще это не самолет…
А что?
>Как вертикалку мерять? Странный вопрос.
Вопрос был не про то как мерить, а про то, как поставить в 0.
Впрочем, какова у Вас разрешающая способность и стабильность показаний с бародатчика?>На разворот, я лично, приделал MURATA-GYROSTAR-ENV-05V(пьезо, случайно достался). Ставишь в самоль вертикально.
В общем, понятно. Самолет, то есть, эээ… девайс самостабилизирующийся?
Вертолет, нитро. Самому интересно, как акселерометры себя поведут!?
С 16 битным ацп у НАС около 20 см. по высоте было разрешение, устроит такое? Стабильность сильно зависит от грамотного питания, опорного напряжения(дело в том, что все эти железки делались для реальных парящих полетов, а моделями я только летом занялся- так железку дешевле в небо запулить 😒 ) пришлось схемотехнику упрощать из-за веса и размеров. Почти все пришлось переделывать в сторону упрощения. Почти закончил!
2 недели потратил на систему электропитания. Могу выложить распечатки с датчиков за минуту, как и код для АЦП с 12bit оверсемплингом(без фильтрации 😁 )
Сундук с шестеренками!? Я полагаю, да! 😃
Эээ… собственно, вопрос:
Эта Ваша штука сможет самостоятельно привести вертолет на базу или нет?
У Вас нет всяческих покупных стабилизаторов-копилотов, поставленных дополнительно к автопилоту?
Я не то чтобы выпендриваюсь, я ищу оптимальное решение для народного “автопилота”, возьмем это в кавычки на всякий случай.
И что получается?
С одной стороны имеем полноценные инерциальные системы ориентации с Калманами, термостабилизацией, и т.д. Круто, дорого, но нам надо всего лишь добраться до дома, а не принести термобарический заряд по указанному адресу. Слишком навороченно.
С другой - пионерские автопилоты типа рейнджвидео, где, поставив их на самостабилизирующийся самик, можно управляя лишь рулем направления и высоты домой прилететь. Ну, или понадеяться, что самик прилетит.
Еще сбоку пирометры - вроде как универсально (но надо испытывать), относительно дешево и сердито.
И тут появляется lodeworx и говорит, что сделать автопилот для вертолета можно на одном гироскопе и еше на крепком словце.
У меня критерий надежности автопилота пока такой: при включении автопилота самик должен из любого положения в воздухе, хоть кверху брюхом, вывернуться в горизонталь, занять заранее указанную высоту и на этой высоте, желательно по оптимальной траектории, вернуться на базу. Вернуться на базу - значит следующее: прилететь в позицию над точкой старта и нарезать круги-восьмерки, пока пилот не соизволит включить передатчик и посадить самик.
До полного автопилота для вертолета как-то далековато еще…
заводской приемник и сервы только
- гироскоп
- компас XY
- аксель XY
- высотомер
- 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 и складываешь с текущим значением положения серво на тангаж(в моем случае вообще два режима получается- висение и горизонтальный полет,т.е. еще и шагом нада рулить) Подстраиваешь чувствительность, чтобы сервы в состоянии покоя не шевелились-меньше шума- больше чувствительность- ниче нового не придумано! Завтра доберусь до тушки- выложу листинг с барометра.
>До полного автопилота для вертолета как-то далековато еще
Ээ… тогда я все вопросы снимаю.
>Завтра доберусь до тушки- выложу листинг с барометра
Не, не надо.
Про поддержание вертолета в стабильном состоянии - удачи! Получится простыми методами - бум перенимать опыт, если поделитесь 😃
Одна тут ссылочка мне понравилась. По идее, физически должно быть эквивалентно управлению по одной из степеней свободы верта:
Inverted Pendulum Balancing Robot Montage
БалансирныйРоботГизмо выглядит прикольно, согласен. Но у него высота заведомо неизменна, а вот в вертолёте 2х осевой аксель да и 3х осевой - нервничать должны сильно. Хотя годика 3 назад кто-то на форуме поговаривал о попытках стабилизировать висение комнатного верта 2х осевым акселем, уж не знаю на сколько успешно - видео не выкладывалось.
Документы есть - я с этим переездом никак не могу найти книжку, которую обещал и сканер. Но всё будет.
Комплексирование GPS и инерциалки это то, к чему мы в итоге пришли. Не так всё просто там, но движемся в этом направлении. Пока результатов нет…
Текнол комплексирует бинсу и компас, у них летает…
Само у них летает, но только на самоустойчивом электролете с рулем направления без элеронов 😃
Измерить они могут, а вот управлять- с этим наблюдаются трудности …
Я думаю, вам известно сколько “дозоров” было положено с помощью их автопилота 😦
Вообще, задача измерения и управления- это две разные задачи…
Кстати, тот же Побежимовский “элерон” - замечательный комплекс, простой как 2 копейки, имеет на борту из датчиков только gps и барометр, да еще один гироскоп 😃
Так что- на “бюджетный” вариант- максимум две пары пирометров и в сад 😃
Про компас- на широте Питера 5 градусов наклона по крену могут привести к 15 градусам ошибки курса.
Про гиру модельную по крену- я имел в виде только демпфер…
Я думаю, вам известно сколько “дозоров” было положено с помощью их автопилота 😦
Вообще, задача измерения и управления- это две разные задачи…
Так что- на “бюджетный” вариант- максимум две пары пирометров и в сад 😃
Про компас- на широте Питера 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’)
Да, я знаю. Только не знаю, это с ИХ автопилотом, или доработанным канадским, на котором они и лётают собственно?
Да, +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! наконец пришла зима! 😁 Ура товарищи!
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 на следующий канал сразу после получения результата…Я доооооолго морочился, пытаясь понять че шумит.
AVR-ADC_GLYUK! В мануалах как-то не заостряют внимание на этом- я в свое время напопоролся.
Вообще-то именно для этого в институтах учат схемотехнике 😃 чтоб следствия схемного построения аналоговой части (УВХ после коммутатора) не принимали за глюки … Сорри, не хотел язвить, но не удержался…
В доках достаточно ясно написано об этом, надо только внимательно читать.
Я с самого рождения модуля телеметрии после переключения каналов АЦП первый полученный результат выбрасываю.