Самодельный гироскоп (реализация)

Vad64

Разработал, собрал и испытал вертолетный гироскоп с функцией удержания хвоста (а-ля Heading Hold, AVCS, Smart Lock и т.д). Внешний вид устройства - на фото. Датчик ADIS16100 (Analog Devices), контроллер ATmega88 (Atmel).

На текущий момент реализован нормальный режим и режим удержания хвоста. Есть поддержка цифровых серв (DS). Режим и чувствительность задаются с канала приемника, как в Футабе. Такие параметры как реверс, DS и расходы серво задаются через установочный режим с передатчика. Продвинутые параметры планирую программировать из PC, как в CSM или КПК (сейчас программно не реализовано).

Первые полетные испытания проводились на вертолете Trex-450SA. Машинка на хвосте Futaba S3154. В целом, по сравнению с GY240 и GY401, девайс ведет себя очень и очень достойно.

Если эта тема кому-то интересна, могу рассказать о проекте поподробнее. Только сразу оговорюсь, прошивку на халяву я раздавать не буду (пожалуйста, без обид). А обсудить и ответить на технические вопросы - пожалуйста.

gosha-z

Не смог понять, что такое третий камень (который в SO8).

Vad64
gosha-z:

Не смог понять, что такое третий камень (который в SO8).

Flash-память 0.5 МБайт для сохранения полетного лога (Atmel AT45DB041B-).

Boriska62

Мне прошивка без надобности, а вот мог бы математикой поделится? Сам хочу что-то подобное сделать, но на PICе, а сложности именно с математической поддержкой (или алгоритмической, так точнее будет).

Vad64
Boriska62:

Мне прошивка без надобности, а вот мог бы математикой поделится?

Все довольно просто. Делайте пропорционально-интегральное управление по угловой скорости. Т.е. по таким формулам:

S = Kp*(W-(rudder-rudder0)) + I
I=I + Ki*(W-(rudder-rudder0)), где

W - угловая скорость

В интегральном контуре I обязательно нужен ограничитель, градусов 30-60, иначе будут проблемы, если ОС разомкнута (например, модель на земле).

Если датчик хороший и если не слажать в расчетах, будет Вам счастье.

Boriska62
Vad64:

Все довольно просто. Делайте пропорционально-интегральное управление по угловой скорости. Т.е. по таким формулам:

S = Kp*(W-(rudder-rudder0)) + I
I=I + Ki*(W-(rudder-rudder0)), где

W - угловая скорость
В интегральном контуре I обязательно нужен ограничитель, градусов 30-60, иначе будут проблемы, если ОС разомкнута (например, модель на земле).

Если датчик хороший и если не слажать в расчетах, будет Вам счастье.

Спасибо за информацию

Psw

Прикольно. Хоть кто-то окончательно родил гиру на достойном уровне.

Vad64:

по сравнению с GY240 и GY401, девайс ведет себя очень и очень достойно.

Достойно - это соизмеримо или гораздо лучше ?
Кстати, текущая версия проги меняет коэффициенты ПИ в полёте ? Ну то есть пытается самостоятельно победить возбуд ?

Vad64:

прошивку на халяву я раздавать не буду

Эх, профессионалы …
Кстати, мне кажется, что в такой реализации надо продавать не только прошивку, а - печатку с процом и датчиком или вообще готовый безкорпусный девайс.
Кстати, скока она весит грамм и денег как на фото ?
Я в своё время хотел поднять проект гиры из-за необходимости встроенного в гиру микшера хвост/основной ротор для реализации БК мотора на хвосте. Потом обошёлся микшерами пульта и перестал парится, хотя если встроить такой микшер в гиру - получше будет.
И ещё прикольно гиру совместить с гувернёром. Потому как добавление газа основного мотора должно сразу компенсироваться шагом/газом хвостового - меньше места для возбуда чем при двух независимых девайсах.
И ещё вопрос - когда будет самодельный трёх датчиковый гирыч для флай бар лесс полётиков ? (Аналог Цик лока/ В Стаба) ?
Одним словом, борт мозг для верта зреет в умах.

Vad64
Psw:

Достойно - это соизмеримо или гораздо лучше ?

Привет, Сергей,
Скорее - соизмеримо. Гораздо лучше не может быть по определению, поскольку алгоритм и коэффициенты были взяты по результатам анализа работы Футабы. Первые полеты гироскоп провел в режиме логгера вместе с Futaba GY240 и GY401. На основе анализа полученных данных и с учетом собственных соображений и был разработан софт. Результаты такие: нормальный режим адекватно работал и с пристрастием не анализировался. В режиме удержания дрейф азимута от времени при висении - около 5-10 градусов в минуту против 15-20 градусов GY240. Виляние хвостом при резком добавлении-сбросе газа в нормале (~2400 об/мин) в режиме обычной сервы - 20-25 градусов, как у самоделки, так и у 240 и 401, но в самоделке наблюдались некоторые колебания при возвращении хвоста. В режиме цифровой сервы (DS) самоделка мне понравилась больше, чем 401 (меньше виляние при набросе и колебания при резком бросании раддера), но, возможно, это субъективно. По-любому, эффективности ХР не хватало, чтобы адекватно компенсировать набросы шага/газа в нормале. В Idle-up (~2900 об/мин) и DS хвост был “как прибитый” и на самоделке и на 401. Не понравилось в самоделке то, что при закритическом повышении чувствительности колебания имели бОльшую амплитуду, чем в Футабе. Возможно, действительно требуется нелинейность или адаптивная подстройка к-тов. Я ее не делал, т.к. результат лично меня уже устраивает.
Вес - около 6г. За датчик я заплатил примерно 1600 руб, остальные компоненты - копейки.
Организовывать продажи у меня нет ни способностей, ни желания. К тому же я не думаю, что это может принести серьезную прибыль, т.к. большинство моделистов предпочтут бренды.
Циклоки-Вистабы уже витают в воздухе. Я после гувернера, может, и займусь. Датчики вот только дороговаты.

Psw

Кстати. еще про алгоритмы - Футаба насколько я заметил всё-таки интегрирует азимут при удержании балки. Ну то есть если из-за каких-то причин (нехватка эффективности ХР к примеру или проскакивание ремня) балку уводит градусов на 90, то после устранения причины через секунду/другую (сброс шаг/газ ОР) балка возвращается почти на то место, где и была. Если конечно вращалась не слишком быстро. Такого при стандартном ПИ регулировании угловой скорости не будет мне кажется, надо не только ошибку интегрировать, но и азимут тоже. Что-бы при его неконтролируемом изменении иметь возможность отследить изменение азимута/вернуть взад.
Ну и 1600 руб за датчик - енто блин дорого. Ну то есть для автопилота ещё приемлемо, а для замены флай бара - я чего-то у себя снял флай бар и летаю без него и без электроники его заменяющей. Сейчас был первый краш за 4+ часа налёта - высокие мощные колючки спасли всё кроме главной шестерни.

Vad64
Psw:

Кстати. еще про алгоритмы - Футаба насколько я заметил всё-таки интегрирует азимут при удержании балки. Ну то есть если из-за каких-то причин (нехватка эффективности ХР к примеру или проскакивание ремня) балку уводит градусов на 90, то после устранения причины через секунду/другую (сброс шаг/газ ОР) балка возвращается почти на то место, где и была.

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

aromu

Здравствуйте Вадим,
как Вы боритесь с тепловым дрейфом датчика ?
С уважением, Андрей.
aromu.lmsic.com

Vad64
aromu:

как Вы боритесь с тепловым дрейфом датчика ?

Андрей, в ADIS16100 есть встроенный датчик температуры. Параметры датчика и влияние температуры на выход угловой скорости приведены в даташите. Так что компенсировать температурный дрейф нетрудно. Тем более, что зависимость линейная.

aromu
Vad64:

Андрей, в ADIS16100 есть встроенный датчик температуры. Параметры датчика и влияние температуры на выход угловой скорости приведены в даташите. Так что компенсировать температурный дрейф нетрудно. Тем более, что зависимость линейная.

Здравствуйте Вадим,
я вкурсе что там есть встроенный датчик, вопрос в том использовали Вы его или нет,
и какая разница если его использовать и не использовать по реальному удержанию курса ?
Также, читая Ваше описания, я не понял, использовали Вы или нет первую
производную от угловой скорости для подавления колебательности системы ?
(я тоже делал гиру но на Мюратовском датчике с удержанием курса, и там с дрейфом все очень плохо,
но для двухроторной игрушки оказалось достаточно даже без термокомпенсации летает нормально
(мне просто с ней лень было возится а встроенного датчика там нет)).
С уважением, Андрей.
aromu.lmsic.com

Vad64
aromu:

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

Да, я использую данные температурного датчика. Без этого при изменении температуры вертолет начинает разворачивать с постоянной скоростью. Хотя у ADIS16100 влияние температуры небольшое (10 градусов температуры примерно соответствуют 1 град/сек угловой скорости), мне хотелось минимизировать все источники дрейфа. В Мюрате ENC-03, по моим исследованиям, 10 градусов температуры соответствуют примерно 40 град/сек угловой скорости. Так что сделать хороший гироскоп с удержанием на Мюрате, по-моему, не реально даже с внешним датчиком температуры.
Я у себя не использую производную угловой скорости. Она очень шумная, и никакой пользы от нее я не вижу.

aromu
Vad64:

В Мюрате ENC-03, по моим исследованиям, 10 градусов температуры соответствуют примерно 40 град/сек угловой скорости. Так что сделать хороший гироскоп с удержанием на Мюрате, по-моему, не реально даже с внешним датчиком температуры.
Я у себя не использую производную угловой скорости. Она очень шумная, и никакой пользы от нее я не вижу.

Вы правы, у Мюраты кошмарный дрейф, причем по моим наблюдениям он не линейный, и действительно
гироскоп для серьезного вертолета на нем не сделать, но у меня не было и такой задачи.
(он делался для двухроторной игрушки, а для серьезных моделей я предпочитаю Futaba.)
По поводу производной, по моим наблюдениям с ней у меня меньше колебательность процесса.
С уважением, Андрей.
aromu.lmsic.com

aromu
Vad64:

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

Здравствуйте Вадим,
при каком дельта t Вы брали первую производную, что она получилась у Вас очень шумной ?
С уважением, Андрей.
aromu.lmsic.com

Vad64
aromu:

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

С периодом расчета. Т.е 14 мс в режиме обычной сервы и 3.7мс в режиме цифровой сервы

aromu
Vad64:

С периодом расчета. Т.е 14 мс в режиме обычной сервы и 3.7мс в режиме цифровой сервы

Возможно большой шум у Вас был из за малой дельта t, я делал порядка 40 мс и даже доводил до 60,
но оставил кажется (точно не помню) 40. (Вообщето, она весьма должна быть полезна для демфирования системы.)
С уважением, Андрей.
aromu.lmsic.com