Телеметрия (часть 1)
Мне тоже интересно.
А такие вещи,в программе, меня как-то пугают.
Прямо как в старом анекдоте : пришел Пьер и все опошлил 😦
А как все хорошо начиналось : Smaalltim с год назад решил сделать устройство телеметрии.
И сделал!
Очень приличное, недорогое и работающее.
Одно это- достойно большого уважения !
Выложил информацию для всех.
И тут приходит боксер- теоретик, утверждающий, что по его (авторитетному и непререкаемомому) мнению- все это “вторичный продукт” (почитайте В.Войновича- узнаете расшифровку термина 😃 )
Батенька!
А где можно увидеть что то, сделанное Вашими ручками?
Или Вы действуете по театральному принципу: актера из меня не вышло, пойду в критики?
Народ подскажите как в 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.
Рисую схему и печатную плату автопилота.
Пока остановился на следующем наборе входов и датчиков:
- Вход с GPS модуля
- 2 пары пирометров
- 2-осевой компас
На плате предусматриваю еще, из главного:
- 4 входа и 4 выхода РРМ
- 16 мегабит памяти
- USB интерфейс
- 2 светодиода состояния
- Разъем SPI для обновления прошивок платы телеметрии и обмена данными с платой телеметрии.
Из неглавного понадобится:
- Сдвоенный ОУ для компаса, сдвоенный ОУ для платки пирометров.
- Линейный стабилизатор 3.3В для питания потрохов
Ну, и мелочевка: кварц, резисторы, конденсаторы, разъемы
Плата автопилота должна уметь работать как автономно, так и в паре с платой телеметрии. Если плат работает автономно, то меню на экран выводить нечем. Все настройки - с компука, через USB.
Если плата автопилота работает в паре с платой телеметрии, то на плату телеметрии сгружается обновленная прошивка с поддержкой меню и появляется возможность
управлять настройками прямо в поле, с экранным меню.
Навигация по меню планируется с пульта:
- вправо-влево-вверх-вниз - ручкой крен-тангаж.
- Да-Нет-больше-меньше - ручкой РН
Настройки предполагаются следующие:
- Установка уровней, при которых соответствующие индикаторы на экране начинают мигать: расстояние до базы, высота, напряжения батареи, и т.д.
- Установка уровней, при которых включается автопилот: расстояние до базы, высота, напряжения батареи, и т.д.
- Чувствительность системы стабилизации по крену/тангажу
- Крейсерская высота на автопилоте
- Крейсерская воздушная скорость на автопилоте
- Максимальные допустимые углы крена-тангажа на автопилоте
- Инверсия каналов и расходы на автопилоте
Если платы телеметрии нет, то плата автопилота должна стабилизировать высоту не по бародатчику, а по GPS, и вместо заранее заданной воздушной скорости поддерживать заранее заданный уровень газа.
Помимо собственно автопилота, поскольку самик собирается возить пирометры, надо сделать возможность задействовать стабилизацию по крену-тангажу без включения автопилота. Включение-выключение - с пульта.
Что еще забыл?
А, раз в секунду все параметры со всех датчиков сливаются в память платы автопилота и потом при подключении к компуку по USB могут быть слиты и просмотрены на компуке.
Если плата телеметрии отсутствует, то в память сливаются только те данные, что дают пирометры и GPS.
И еще. На многих самиках ставить пирометры неудобно - ось перед-зад частично заслоняет фюзеляж, а ось право-лево - крылья.
Нужно предусмотреть возможность установки платы пирометров в повернутом на 45 градусов состоянии. Так обзор пирометрам заслоняется гораздо меньше, а сложение-вычитание сигнала с двух пар датчиков для получения нормальных крена и тангажа делается элементарно.
Поддержка готовых “голов” с пирометрами типа того, что продается на FMA, обязана быть. Только я для удобства и убирания необходимости калибровки на своей “голове” выведу еще и напряжение средней точки (VCC/2), от которой отмеряются выходы. Потому что она нифига не VCC/2 обычно, а “где-то рядом”.
Прямо как в старом анекдоте : пришел Пьер и все опошлил 😦
А как все хорошо начиналось : Smaalltim с год назад решил сделать устройство телеметрии.
И сделал!
Очень приличное, недорогое и работающее.
Одно это- достойно большого уважения !
Выложил информацию для всех.
И тут приходит боксер- теоретик, утверждающий, что по его (авторитетному и непререкаемомому) мнению- все это “вторичный продукт” (почитайте В.Войновича- узнаете расшифровку термина 😃 )
Батенька!
А где можно увидеть что то, сделанное Вашими ручками?
Или Вы действуете по театральному принципу: актера из меня не вышло, пойду в критики?
Как- то не в тему…
- Я тему ADC поднял на примере !СВОИХ! ошибок и наблюдений(вариометр, гироскоп для вертолета).
- Пусть Smalltim скажет, если я не хвалил OSD…и его самого!
- Только литературного кружка не хватает 😵
To:Smalltim. Вполне рабочая конфигурация- ни добавить-ни убавить.
- Память на карте или чип?
- Из-за чего принято решение на 3.3в перейти?
Память - чип.
3.3В - из-за того, что на AT90USBKEY всё питается от 3.3В, и память максимум вроде как 3.6В. А так - непринципиально, 3.3В или 5В.
К гуру есть пока один только вопрос:
Можно ли обойтись 2-осевым магнитным датчиком, допуская погрешность по курсу в не строго стабилизированном состоянии? 3-х осевой правильнее, но для корректного проецирования вектора на север на плоскость нужно точно знать углы крена-тангажа. С пирометрами я никогда не узнаю их точно, несмотря на то, что стабилизировать самик/верт с пирометрами можно очень точно - нули я узнаю всегда 😃
Вы готовы мириться с погрешностью вычисления и отображения курса на базу до 10-15 градусов, когда углы крена и тангажа ненулевые? Точный-то курс автопилот всегда при необходимости сможет узнать, приведя крен и тангаж к нулям.
Вы готовы мириться с погрешностью вычисления и отображения курса на базу до 10-15 градусов, когда углы крена и тангажа ненулевые? Точный-то курс автопилот всегда при необходимости сможет узнать, приведя крен и тангаж к нулям.
Для возвращения на базу врукопашную вполне достаточно знать примерное направление, большая точность не нужна, всё равно ветром болтать будет. А по мере приближения к базе и гораздо большая погрешность не сыграет роли, главное попасть в район взлета.
С уважением.
Как- то не в тему…
- Я тему ADC поднял на примере !СВОИХ! ошибок и наблюдений(вариометр, гироскоп для вертолета).
- Пусть Smalltim скажет, если я не хвалил OSD…и его самого!
- Только литературного кружка не хватает 😵
То, что Вы анализируете свои ошибки- весьма похвально!
Но вопрос был о другом: есть ли в Вашем творчестве успешные и работающие конструкции?
А ошибок при любом реальном действии- у кого хочешь (в т.ч. и у меня- вагон) 😦
Как раз против превращения реальной темы в пустую болтовню- я и выступаю 😃
Предвидя встречный вопрос к себе- отправляю Вам в личку ссылки на мои конструкции (дабы не быть обвиненным в саморекламе )
Для возвращения на базу врукопашную вполне достаточно знать примерное направление, большая точность не нужна, всё равно ветром болтать будет. А по мере приближения к базе и гораздо большая погрешность не сыграет роли, главное попасть в район взлета.
С уважением.
С погрешностью “курса на базу” в 15%- точно на нее не попадешь. Достаточно посчитать треугольник с гипотенузой 2км 😦 Даже в поле зрения не прилетишь.
Но и биться скажем, за 0,1*- тоже смысла нет, поскольку раз в сек. приходит коррекция курса с GPS и самолет “доворачивает” в нужном направлении.
2 Smalltim: если ставить компас- то 3х координатный, ибо врет при крене 2х- страшно.
А с пирометрами- боюсь вы все бежите не туда: смысл FMA -два пирометра без усилительных каскадов (т.е. две термобатарейки DEXTER DST 60) включены встречно! А операционник нужен с нулевым дрейфом.(AD8552)
Тем самым они компенсируют температурный уход, и на выходе операционника- всегда (при равной “засветке” пирометров) сидит точно половина питания- 1,65 в.
Точность определения крена- около 3*
С погрешностью “курса на базу” в 15%- точно на нее не попадешь. Достаточно посчитать треугольник с гипотенузой 2км 😦 Даже в поле зрения не прилетишь.
Но и биться скажем, за 0,1*- тоже смысла нет, поскольку раз в сек. приходит коррекция курса с GPS и самолет “доворачивает” в нужном направлении.
Следует учитывать метод наведения.
Например, при простейшем методе “погони” когда курс на базу расчитывается каждый раз с приходом новых данных ( а у нас координаты раз в секунду идут) при ошибке и 20 и30 градусов точно на базу он не попадет, но круги метров 300 описывать будет 😃
правда траектория будет полукругом 😃
Вы готовы мириться с погрешностью вычисления и отображения курса на базу до 10-15 градусов
15 градусов - это ±7 или ±15* ? Ну то есть речь про размах или про модуль ?
Для возвращения на базу врукопашную вполне достаточно знать примерное направление,
С погрешностью “курса на базу” в 15%- точно на нее не попадешь. Достаточно посчитать треугольник с гипотенузой 2км
Считать гипотенузу на мой взгляд не имеет смысла - потому как при приближении к базе (а оно будет приближаться при ± 15* ошибке) гипотенуза тоже будет уменьшаться.
Вот лично мне думается что когда в пара прыге на визуальной ориентации (и “автопилот” в голове которая нифига не калькулятор) 2-3 км удаление от базы с высотой 1000-1500 м (у моего купола равновесная вертикаль около 6 и горизонт около 17 м/сек) ошибка 15* - да её (ошибку) ваапще визуально не заметишь - поправка на ветер и болтанка купола значительно выше, да и невозможно постоянно глядеть “на базу”, определяя направление - в воздухе полно доп факторов которые тоже внимание отвлекают, соответственно “поправки” в курс вносятся не очень часто, раз в 5 сек быть могет на высоте. Перед землёй на 100 и менее метрах - естественно всё внимание переключается на “базу” 1х1 метр к примеру ну или коридор 1х50 метров - поправки в курс вносятся чаще - около 2 раз в сек. И не надо забывать что “визуальный курс на базу” (который я определяю в парапрыге) и “курс вектора реального движенияна относительно земли базу” (который определяет ГПС - две большие разницы. А большинство парапрыгеров приходит на базу без ГПС при наличии видимости - и справляются ведь и мотора не имеют ваапще и на второй круг уйти ещё никому не удавалось. Лично я свою глазомерную точность оцениваю ±15 или даже более градусов. Главное идти в направлении базы, хотя бы в квадрант базы (90* или ±45 ошибки), согласен. Увеличение ошибки приведёт только к увеличению пути полёта, но цель всё-равно достигнется. А вообще SmallTim как любитель численного эксперимента мог бы и самостоятельно проверить “условие сходимости ряда” - при какой величине ошибки модель перестанет приходить на базу. Мне кажется что это будет ошибка более ± 90 град - когда мы перестанем приближаться к базе в полёте. А “комплексировать” магнитный и ГПС курсы придётся по разному при достаточно малом и достаточно большом удалении от базы - приоритеты должны поменятся.
15 градусов - это ±7 или ±15* ? Ну то есть речь про размах или про модуль ?
Считать гипотенузу на мой взгляд не имеет смысла .
Я ничего “на глаз” не оценивал.
Все описанное проверялось сначала- ездой на машине, затем- плаванием на модели катера, которая дает условия, максимально приближенные к полету (кроме изменения высоты и возможности потери улетевшего аппарата) в том числе и снос от ветра.
Только после всего этого- леталось на самолете…
А умозрительные вычисления при проверке на местности столько “ляпов” дают- лучше и не пробовать 😦
По моему, погрешность 15% и 15 градусов совсем не одно и то же.
С уважением.
Погрешность в экстремальных случаях может быть до 90 градусов.
Но ничего, с трехосевым магнитометром и пирометрами, думаю, будет полегче.
Проблема пирометров в том, что с ними из разницы в сигналах со смотрящих вправо-влево и вперед-назад пирометров трудно высчитать точные углы крена и тангажа, ибо разница ведет себя хитро. С возрастанием угла разница возрастает, а на нулевых углах она нулевая, так что система стабилизации будет работать на ура.
В то же время разница нифига не прямо пропорциональна углу. Но посчитать углы более-менее точно всё-таки можно. Надо взять и проинтегрировать распределение чувствительности датчика в конусе его поля зрения по, скажем, ста сегментам от 0 до 100 градусов, и составить табличку в формате “разница-угол”, где разница - нормализованный (приведенный к интервалу от -1 до 1) разностный сигнал с пары пирометров, а угол - получаемый угол тангажа-крена.
Но корректно работать это всё будет только если известно, как нормализовать текущую разницу сигналов с пирометров, а для этого надо знать, какой уровень сигнала будет, если один пирометр видит только землю, а второй только небо.
Подозреваю, что и в том числе для этого продвинутые системы на пирометрах имеют третью пару пирометров, где один смотрит вниз, а второй вверх.
2 Smalltim: если ставить компас- то 3х координатный, ибо врет при крене 2х- страшно.
Подтверждаю. У меня сейчас двухосевой - планировалось обмерять его в горизонтальном (по БСО) положении. При таком раскладе работает, но зависимость крена/указуемого_курса значительная и нелинейная.
А такие вещи,в программе, меня как-то пугают. А использует ли функция delay_us() таймер? Уверен нет- это макро на ассемблере, которое наверняка запрещает прерывания при входе в нее. Замечательно полезно!
А вы хотите, чтобы автоматический генератор занимал таймеры по своему усмотрению? “Замечательно полезно!”
Мы спорим о необходимости задержки между переключением канала и стартом преобразования, так? Граждане утверждают, что за нас всё решили и в любых условиях атмел сам догадается, что делать. Ибо его умные дядьки проектировали. При чём тут таймер?
Но корректно работать это всё будет только если известно, как нормализовать текущую разницу сигналов с пирометров, а для этого надо знать, какой уровень сигнала будет, если один пирометр видит только землю, а второй только небо.
Подозреваю, что и в том числе для этого продвинутые системы на пирометрах имеют третью пару пирометров, где один смотрит вниз, а второй вверх.
Тот, что смотрит вниз, может смотреть на нагретую крышу дома, а вверх - на единственное в небе облако. И всё…
Думаю, это сделано просто для того, чтобы не утруждать юзера калибровками. Включил - оно само отстроилось. И не надо крутить самолёт в руках.
А нелинейность, видимо, вызвана углами преломления фильтра. Галий, как и турмалин, и кварц, имеет явно выраженную кристаллическую решётку и проождение лучей от угла неодинаково. + отсутствие оптической системы в пирометре. Это я в инете начитался 😁
А вообще, зачем нам углы крена? При влючённом стабилизаторе крена развернуть самолёт можно рулём направления, блинчиком. То есть автопилот будет держать крен автоматически, что позволит ему же управлять рулём направления не заботясь о завалах. Автопилот такого типа проще в разы, чем автопилот, обеспечивающий виражи. Насколько знаю, автопилоты некоторых учасников так и работают.
>А нелинейность, видимо, вызвана углами преломления фильтра
Фильтр там - плоская пластина, углы преломления не роляют.
Всё гораздо проще. Освещенность сенсора пропорциональна косинусу угла между нормалью к поверхности сенсора и линией, по которой падает луч, несущий энергию.
Ну и плюс ограничения, накладываемые взаимным расположением окна и чувствительного элемента датчика.
>А вообще, зачем нам углы крена? При влючённом стабилизаторе крена развернуть самолёт можно рулём направления, блинчиком. То есть автопилот будет держать крен автоматически, что позволит ему же управлять рулём направления не заботясь о завалах
А вот у меня на Изике нет элеронов, я хочу автопилот с виражами 😃
Есть возможность заказать чип для отрисовки MAX7456 www.maxim-ic.com/quick_view2.cfm/qv_pk/5516 . Стоимость 15 евро. Если есть желающие то пишите в личку, чем быстрее тем лучше завтра утром уже едут заказывать!
Гуру, а как лучше организовать опрос магнитометров?
Сет-ресет-меряем?
Или сет-меряем-ресет-меряем и Vout=(Vset-Vreset)/2 ?
С какой частотой достаточно будет делать сет-ресет? 1 Гц? 0.1Гц? Один раз после включения?
а как лучше организовать опрос магнитометров?
Ну, там все не так просто: www.nxp.com/acrobat_download/applicationnotes/AN00022_COMPASS.pdf
Гуру, а как лучше организовать опрос магнитометров?
Сет-ресет-меряем?
Или сет-меряем-ресет-меряем и 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 в минутах. Как вариант один раз после включения. Не столь важно- всегда можно сделать чаще.
Но раз в секунду и меньше точно не нада. Успехов!
Вы готовы мириться с погрешностью вычисления и отображения курса на базу до 10-15 градусов, когда углы крена и тангажа ненулевые? Точный-то курс автопилот всегда при необходимости сможет узнать, приведя крен и тангаж к нулям.
Так и есть. Реальный компас “бычий глаз” в виражах такое исполняет, да и в горизонте от вибрации и толчков может на 360 провернуться… Поэтому в полете используется ГПК(гирополукомпас)- выставляется на земле. Или ГМК- то- же, но с коррекцией от магнитного(XYZamr +angular rate sensor+инклинометр для начальной установки). В больших виражи считаются заранее, при составлении плана полета. При наличии на борту эвм, задача упрощается: горизонт-имеем курс (истинный и магнитный), скорость отн. земли. Имея УВС(указатель возд. скорости) считаем угол ветра и скорость ветра. Делаем небольшой доворот на ЗК (заданный курс) с фиксированным креном, режимом и высотой в течении одной секунды,например->в горизонт->получаем новый курс, а так- же угловую скорость разворота при заданном режиме. Полагаю, дальше все просто и понятно- задаем новое время виража(при параметрах, равных предыдущему) для выхода на ЗК. Никаких синусоид и полукругов. Это из штурманской подготовки…