Инклинометр

А что мы делаем?
Mr Crowley
Сообщения: 45

Сообщение Mr Crowley » 27 окт 2013, 16:32

Всем привет!
Меня начинает одолевать мой дипломный проект, тема которого - устройство определения БПЛА в пространстве (В книге Пугачева С. - "Разработка приложений для Windows 8 на С#" он называет данное устройство инклинометром).
 "Схема"
Изображение
- Набросок функциональной схемы устройства. Для соблюдения Блочно-модульного принципа конструирования это устройство будет представлено в виде отдельной платы. Это задумано с целью возможности установки в паре с любым летным контроллером, поддерживающим шину I2C или SPI. Для получения информации думаю пользоваться в основном, или даже только MEMS-датчиками.
Вопросы возникающие сейчас, вот какие:
- Возможно ли определение высоты БПЛА каким-либо MEMS-датчиком, с точностью до 15-20 см по модулю?
- как связываются данные с гироскопа и акселерометра, для получения адекватной оценки положения аппарата в пространстве, при произвольном движении (ускорение постоянно меняется во всех плоскостях)
- можно ли с помощью этих датчиков измерять скорость движения БПЛА?
- что мне нужно знать о шинах данных I2C и SPI, их возможностях и ограничениях?
Ну и собственно хотелось бы услышать рекоммендации по подбору элементной базы :)
Заранее спасибо!

Аватара пользователя
piroJ0KE
Сообщения: 130
Откуда: Киёв

Сообщение piroJ0KE » 27 окт 2013, 16:40

Возможно, стоит сначала ознакомиться с разработками самодельщиков в области БПЛА.

http://forum.rcdesign.ru/ расейский форум по моделькам (в частности недавний конкурс).
http://roboforum.ru/forum17/topic11989.html неплохой (вроде бы) расейский форум о роботах

Mr Crowley
Сообщения: 45

Сообщение Mr Crowley » 27 окт 2013, 16:49

piroJ0KE писал(а):Возможно, стоит сначала ознакомиться с разработками самодельщиков в области БПЛА

Если бы я не ознакомился, то и половины слов не знал, из которых произнес)
А так они все хитромудрые, пользуются китайскими самонастраивающимися модулями, редкая птица делает свое устройство с нуля

Qic
Сообщения: 985

Сообщение Qic » 27 окт 2013, 19:28

Элементная база говорите? http://dx.com/ru/p/gy-951-ahrs-9dof-9-a ... ack-204216
МК там в качестве фильтра/усреднителя.
Гироскоп отвечает за повороты в 3х осях, аксель за ускорение в 3х осях.
Высота - барометр+УЗ. Точнее лазером, но от отражения все вытекающие минусы.
Вообще инерционная навигация применяется в мерседеса чтоли, когда машина едет по тонелю или парковке и нет сигнала GPS.
Скорость лучше по GPS.
Что по шинам - спецификации читаем. Прикидываем сколько пропускную способность, получаем частоту обновлений в секунду.
В виде диплома - я бы рекомендовал создавать модуль навигации с максимумом фарша, одноплатный. Будет выглядеть как надо для комиссии.
Сделать упор на фильтрацию и повышение точности данных, на совокупную обработку и дополнение одних датчиков другими.
В движении например GPS заменяет магнитометр, тут можно сделать калибровку магнитометра от GPS для висения на месте.
Также высота -Барометр + УЗ + GPS.

prepodobniy
Сообщения: 70

Сообщение prepodobniy » 27 окт 2013, 19:44

Mr Crowley писал(а):- Возможно ли определение высоты БПЛА каким-либо MEMS-датчиком, с точностью до 15-20 см по модулю?


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

Mr Crowley писал(а):- можно ли с помощью этих датчиков измерять скорость движения БПЛА?


нет, нужно что то другое ... (давление набегающего потока , GPS, какая то оптика..... )

Mr Crowley
Сообщения: 45

Сообщение Mr Crowley » 27 окт 2013, 19:47

Qic а это уже фактически вторая часть) я хотел забабахать фильтр Калмана, так как видел какие там шумы на выходе из всяких обзоров) и написать морду на С-подобной дряни, но про это разговор наверное отдельный... Я бы с радостью ставил и ЖПС, но разбираться я с ним буду, чувсвтую, долго... В плане была разработка Платы уже с ним, и прокладкой маршрута для автопилота, но это в будущем) а пока у меня есть отладка STM32L-Discovery, я хотел создать платку, подключить ее к отладке, и просто пофильтровать-повертеть) Заодно навыки работы приобрету первичные. Хотел поставить МК сюда, чтобы он фильтровал всё и сразу выдавал готовые пирожки, но я не представляю например как можно соединить этот со-процессор получается с основным полетным контроллером, это еще одна задача)

Mr Crowley
Сообщения: 45

Сообщение Mr Crowley » 27 окт 2013, 19:53

prepodobniy а если брать скорость как интеграл от ускорения(после фильтрации), при чем делать это на малых промежутках времени, чтобы показание скорости менялось почаще? Барометр еще думаю пригодится для стабилизации высоты, в режиме ожидания например. Сонары, лазерные дальномеры, и прочие модные деревни скорее всего сильно утяжелят конструкцию, да и придется заморачиваться с тем, как их разместить на днище, у них же угол работы относительно перпендикуляра к поверхности небольшой

Аватара пользователя
piroJ0KE
Сообщения: 130
Откуда: Киёв

Сообщение piroJ0KE » 27 окт 2013, 21:40

Отмечу, что победители конкурса "летающих роботв", кажется, выехали исключительно на оптике и распознавании ландшафта.

prepodobniy
Сообщения: 70

Сообщение prepodobniy » 27 окт 2013, 21:51

Mr Crowley писал(а): а если брать скорость как интеграл от ускорения(после фильтрации), при чем делать это на малых промежутках времени, чтобы показание скорости менялось почаще?

Ну в принципе наверно возможно , но погрешность приличная будет, и к томуже как считать скорость на промежутке с 0 (или условно 0) ускорением , темболее будет фильтрация которая "ничтожно малые" ускорения будет откидывать... Ну может к этим показаниям как то прикрутить данные магнитометра , но опять неизвестно что он покажет и как эти данные о изменении магнитных полей сопоставить со скоростью .....
На мой взгляд проще отдельным датчиком воспользоваться ....

Mr Crowley писал(а): Барометр еще думаю пригодится для стабилизации высоты, в режиме ожидания например.

Да он пригодится , но для заявленной точности думаю MEMS не подойдет , надо что то крупнее и точнее ... ну плюс прикрутить сюда же данные акселерометра и гироскопов.
Mr Crowley писал(а):Сонары, лазерные дальномеры, и прочие модные деревни скорее всего сильно утяжелят конструкцию, да и придется заморачиваться с тем, как их разместить на днище, у них же угол работы относительно перпендикуляра к поверхности небольшой

Ну про лазеры точно не скажу (хотя думаю по габаритам и весу особо не отличается), а вот сонар - я сейчас играюсь с HC-SR04 , небольшой модуль весом - пара грамм , ценой в 2$, угол обзора 15градусов , чувствительность 5метров и разрешающая способность 3мм (подробнее ттх можно тут глянуть pdf или в гугле) , ну и если нужны другие параметры то думаю если поискать найдутся и модули и по мощнее в тех же габаритах...
И плюс бонус возможность увидеть какоето препятствие....

Mr Crowley
Сообщения: 45

Сообщение Mr Crowley » 27 окт 2013, 22:53

prepodobniy, piroJ0KE а что делать с шиной данных? я вот читал про них, и было сказано что они имеют ограничения по собственной емкости (я этого не понял момента), этим обусловлено максимальное количество подвешиваемых микросхем к шине

prepodobniy
Сообщения: 70

Сообщение prepodobniy » 27 окт 2013, 23:49

Вот что касаемо протоколов, шин данных ... это я не советчик , я пока только это осваиваю на авр, пытаясь что то изобразить в среде ардуино иде (тут я сам чайник) , но судя по всему тот же I2C должен переваривать как минимум 10ок датчиков (это то что я в живую видел).
Я собственно почему тут отписался - просто у меня подобная задача , и я иногда над ней размышляю, есть у меня небольшой парк RC моделей вертолетов (Raptor 50 v2 и Raptor 30v2) и несколько самолетов от 0,6 до 1,8 метров размером, и я хочу их автоматизировать , наработок пока не много у меня пока была реализована только стабилизация.
На сегодня я для себя неплохо представляю структурную схему автопилота , какие датчики должны быть и зачем , уже закуплены некоторые датчики и другие элементы , но когда я это закончу пока не знаю - я не так много времени этому уделяю , и у меня пока нет под руками какого то дешевого вертолета для эксперементов, а на Рапторах я больше эксперементировать не хочу, уж очень дороги на них жесткие посадки и неудачные полеты, а я в данное время безработный и не готов разбить очередную энную сумму долларов о землю. Посему мои эксперементы пока откладываются, и пока могу подсказать только довольно скудной информацией , но уж какая есть.

Mr Crowley
Сообщения: 45

Сообщение Mr Crowley » 29 окт 2013, 08:52

Сдается мне, что нужно начать с выбора элементной базы. Использовать буду устройства с цифровыми выходами, аргументируя наличие шин I2C/SPI, упрощением кода (не надо активировать АЦП, или можно оставить его для других задач) и большей помехоустойчивостью сигнала. Вот не знаю, выбирать отдельно все компоненты, или брать пары акселерометр/гиросокп, акселерометр/барометр, и какой именно тип магнетометра позволит мне определять направление стрелки компаса при движении)

Аватара пользователя
piroJ0KE
Сообщения: 130
Откуда: Киёв

Сообщение piroJ0KE » 29 окт 2013, 11:14

*Флуд*

Послушай, а тебе действительно надо это устройство, или ты его делаешь лишь для диплома? И вообще, будет ли устройство сделано на самом деле, или оно так и останется на бумаге?

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

В общем, мораль такова - если устройство реально собрано не будет, его разработка "значительно упрощается". :ugeek:

Mr Crowley
Сообщения: 45

Сообщение Mr Crowley » 29 окт 2013, 11:32

piroJ0KE я понимаю что в дипломе можно грубо говоря "нассать в уши" всей кафедре) Но я собираюсь работать по специальности, поэтому если не к диплому, то уже в последующем довести это устройство до адекватного состояния, освоить навыки работы с цифровой техникой и контроллерами) ну и платы потренироваться разводить, я только в Diptrace пока умею немного работать(самоучка, 0 прочитанных пособий). Ну и прогать хотел подучиться до нормального уровня на С/++/#, очень полезно было бы. Денег хватит чтобы закупить все детали, и потом уже работать над целым беспилотником

Аватара пользователя
N1X
Сообщения: 321
Откуда: Беларусь, Гомель

Сообщение N1X » 29 окт 2013, 21:16

О, прикольгая и актуальная темка...
Что я могу сказать: Ориентация - 3-осевой магнитометр, 3-осевой акселеромент, 3-осевой ДУС. Только так можно получить вменаемые углы во всем диапазоне. Датчики пох на каком интерфейсе, главное показания микромезаники: дрейф, шум, нелинейность и т.п. С улучшением свойств они дорожают в геометрической прогрессии... Дальше: интегрирование показаний эт как перец Чили - важно, но в очень малых дозах. И если ошибку интегрирования показаний ДУСов фильтр Калмана выправляет, то скорость по ускорению считать нельзя, если нет второго датчика. А так для скорости достаточно показаний ПВД на трубке Пито-Прандтля. Снятие давления с трубки единственное вменяемое и кстати всеми в этом месте применяемое счастье от Freescale - MPXV5004 либо MPXV7002 и их вариации. В тихоходных ЛА вместо трубки Пито-Прандтля иногда юзают отдельно приемник статического давления, а для динамики ставят трубу Вентури, перепад давления на малых скоростях больше, соответственно проще мерять и точнее показания.
По высоте: BMP085 - дешево и сердито (можно MPL115A2, но дороже), пробовал, неплохо, пару метров дает, чтоб цифры не колбасило (можно до метра, но колебалка ощутимее)... Всеравно в полете придется еще грубить, там ветер, потоки с разной температурой и прочие внезапные эманации давления, которые будут колбасить показания... На малых высотах как выше сказали сонар, но он немного капризит при херовой подстилающей поверхности (типа травки). Взрослые БПЛА юзают радиовысотомеры, но это дорого и сложно...

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

ПЫСЫ: это теория. На практике крутил только кусочки системы, до полного проекта пока не добрался...

Mr Crowley
Сообщения: 45

Сообщение Mr Crowley » 29 окт 2013, 23:46

N1X А где можно найти математический алгоритм, который увяжет в одну систему показания всех датчиков? или это чисто экспериментально? плату мне все равно делать, что туда лучше еще из конкретных устройств добавить?

Аватара пользователя
N1X
Сообщения: 321
Откуда: Беларусь, Гомель

Сообщение N1X » 30 окт 2013, 10:25

А вот с алгоритмами сложнее. Я до алгоритмов так и не дошел. Есть исходники от CHR-6d, еще разные куски в инете попадаются, но понять по ним что-то сложно... В смысле заставить работать можно, а вот четко разобраться с принципом непросто... Математика там явно не начальной школы )))
По устройствам - перечисленного в общем-то достаточно для определения углов крена/тангажа/рыскания, перегрузок, скорости, высоты и скороподъемности. Есть еще угол атаки и скольжения, но для них нужны свои измерители, да и я не встречал чтоб в модельках эти параметры использовали. Хотя скольжение будет критично если планер - летающее крыло без киля допустим...

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

Mr Crowley
Сообщения: 45

Сообщение Mr Crowley » 30 окт 2013, 11:07

N1X я бы тогда уже начал лепить приниципиалку) Просто контроллер на плату не буду ставить, а коннектиться к отладке. Вот интересно, а я смогу посмотреть на работу одного устройства, когда они все подключены к общей шине? То есть работать по началу только с акселерометром или компасом, остальные будут в режиме простоя. Отладил кусок программы для акселерометра - работаю со следующим устройством, и так далее) И надо ведь еще морду писать, которая позволит отладке работать с компьютером, и передавать данные, а компьютер будет все это в графическом виде представлять

Qic
Сообщения: 985

Сообщение Qic » 30 окт 2013, 12:27

I2C - адресная шина. У SPI есть SS - Slave select, для "тупых" железок важно, если пачка МК то есть шинные протоколы которые реагируют если их "зовут".
Для вывода на компьютер на первых порах есть какая-то софтина, кажется stm studio , позволяет выводить в нужном виде переменные в ОЗУ ну и чета там еще.
Т.е. пишите работу с шиной, инициализацию устройства (если надо), обработку данных, ну и смотрите через отладчик что там происходит.
Можете сразу сделать что всё будет собираться в пачку и отправляться по UART (или чем там надо и куда надо), парсер на приемной стороне всегда успеется.

Mr Crowley
Сообщения: 45

Сообщение Mr Crowley » 30 окт 2013, 12:36

Qic а зачем вообще нужен UART, есть какие-то статьи?) я прочитал про него немного, но никакой уникальности не заметил...

Парсер - это программа, которая будет разгребать поток входных данных по полкам?

Qic
Сообщения: 985

Сообщение Qic » 30 окт 2013, 12:58

Мозг инклиномера будет кудато отдавать данные? Или хранить у себя и радоваться жизни?
УАРТ самый распространённый так скажем "базис" связи. Нужен - для передачи каких либо данных в последовательном виде. В тех или иных софтовых/железных доработках это CAN/RS485/RS232 с ворохом протоколов поверх.
Парсер - да, конечный потребитель данных. Можете верить не верить, любить не любить - просто сделайте по прерыванию по таймеру (несколько раз в секунду) отсыл пачки конечных значений переменных через UART, просто и эффективно. Для отладки стм-студио хватит, а потом будет потом. Когда придется подключить к чем там надо (к автопилоту например) либо перепишите вывод пакета в понятном виде автопилоту, либо научите автопилот вас понимать.

Mr Crowley
Сообщения: 45

Сообщение Mr Crowley » 30 окт 2013, 13:27

Qic я щас начну путать горячее с зеленым) А для реализации UART будет использоваться USB-интерфейс?

Qic
Сообщения: 985

Сообщение Qic » 30 окт 2013, 14:10

С стороны МК УАРТ это две ноги Tx и Rx (в стм есть управление потоком, но это пока вам не надо), суровнем сигнала 0-5В (или 0-3.3В в случае стм).
С стороны ПК это:
1) Старый добрый COM (RS-232) с уровнями -15/+15В, для подключения к которому нужен преобразователь уровня например max232.
2) USB-UART преобразователь, например cp2101 (cp210x), ft232, ft2232 итд.
Для софта на ПК это выглядит прозрачно и работаем как с COM портом (искать "работа с COM портом").
(Также можно подключить какой-нибудь HS-05 BlueTooth модуль, всё также будет прозрачно и для ПК, разумеется модуль надо сконфигурировать).
Но всё это для ПК, и вполне вероятно сейчас Вам не нужно как таковое.

Как я понимаю, информация будет всёже передаваться мозгом инклиномера на полётный контроллер.
Я рекомендую один из УАРТов stm32vldiscovery предусмотреть для связи, почитать например http://easyelectronics.ru/arm-uchebnyj-kurs-usart.html , почитать про прерывания и таймеры, и сделать так чтобы МК выдавал строку в порт. Потом это все-равно потребуется, и УАРТ, и работа с прерываниями и с таймерами.

Потом на прерываниях сделаете опрос датчиков и ПИД или какая там у Вас будет математика..

Mr Crowley
Сообщения: 45

Сообщение Mr Crowley » 30 окт 2013, 14:56

Qic я натыкался на библиотеку, которая позволяла передавать данные от stm сразу в комп по USB, можно ей заменить будет пляску с COM?

Qic
Сообщения: 985

Сообщение Qic » 30 окт 2013, 15:15

Это сложнее, программно и технически. Даже если в микроконтроллере есть модуль USB, то это сложнее на стороне ПК.
К томуже - для ПК я всёже советую заниматься отладкой через стмстудию.

Я попытаюсь объяснить:
Для УАРТ Вам нужно отправить байт в регистр (грубо говоря как присвоить значение переменной), если на том конце МК, то в его приемном регистре окажется этот байт, как в переменной, о чем модуль УАРТ и отрапортует вызвав прерывание. При этом тратится минимум ресурсов обоих сторон.
Если там ПК, то "открыть порт" это не сложно, более того, нет никаких сложных моментов по протоколу.
(В протоколе USB я не разбирался, возможно меня сейчас закидают чемнибудь)
Для USB требуется как минимум соответствовать протоколу, времени реакции на пакет, скажет так, геморроя больше. Причем USB не всегда оправдан в таких системах. Да, данных можно передать больше и быстрее, но это сложнее.
UART и USB сложно сравнивать, они различаются как минимум в скорости и сложности, а пока озвученная задача с запасом укладывается в возможности УАРТа, да еще и с выгодой по общей эффективности.

ЗЫ Если бы Вы наткнулись на готовый комплект например юсб осциллографа на stm с софтом под пк, драйверами, да и еще с исходниками - была бы уже тема.
А пока на этот биплан газотурбинный двигатель не нужен. ;)

Если есть свободное время и возможности, попробуйте сначала решить задачу следующего плана: с ПК отправить байт на МК и вернуть обратно на ПК. Для начала возьмите на ПК HyperTerminal, преобразователь USB-UART или RS-232-UART (у стм есть "толерантные к 5В" выводы, вроде, подойдут преобразователи с уровнем 0-5В), напишите программу чтения байта и передачи для стм (или соприте), отправьте и получите. И оцените трудоемкость вышеприведенного.
А потом повторите для USB. (С первым я помогу если надо ;) )

Вернуться в «Наши проекты»



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 28 гостей