Самодельный гироскоп (Eng)
Если вы не знаете, что такое RC гироскопы и для чего они нужны, рекомендую обзорную статью http://www.rcdesign.ru/articles/radio/gyro_stady
Идея сделать самодельный гироскоп с функцией удержания направления (Heading Hold, Smart Lock, AVCS) занимала меня довольно давно. В первую очередь это представлялось мне интересной инженерной задачей. Азарт также подстегивали многочисленные утверждения знатоков, что приблизиться к функциональности фирменных гироскопов типа Futaba или CSM невозможно. Реальных же проблем я видел всего три:
1.
датчик,
2. алгоритмы и
3. тестирование.
К примеру, решать вторую проблему путем третьей, причем в полевых условиях и на ДВС Рапторе мне представлялось не очень хорошей идеей, особенно при нерешенной первой проблеме. :о)
Решаем проблему номер один (датчик)
От использования недорогих датчиков типа Murata ENC-03M
я отказался сразу после исследования их температурных характеристик. Вот примерно так выглядит экспериментально снятая зависимость выходного напряжения датчика от температуры:
Линейная аппроксимация дает коэффициент около 3.4 мВ на градус температуры. При этом чувствительность датчика - около 0.7 мВ на градус в секунду угловой скорости. Таким образом, изменение температуры всего на 1 градус эквивалентно угловой скорости почти 5 градусов в секунду, т.е. интегральная ошибка азимута за минуту составит почти 300 угл. градусов. Я же хотел получить дрейф азимута не хуже 5-10 градусов в минуту. Следовательно, ENC-03M не подходил мне даже при условии термокомпенсации или термостатирования. От мечты сделать гироскоп в 10 раз лучше Футабы и при этом в 10 раз дешевле поневоле пришлось отказаться. В конце концов, первая проблема решилась просто (хотя и не дешево) - я купил датчик ADIS16100 производства Analog Devices. На www.analog.com можно почитать про iMEMS датчики, например, эту статью (кстати, технология впечатляет!) и скачать документацию.
Поскольку датчик имеет встроенный АЦП, схема получилась довольно простой. Схема гироскопа в формате PDF. Кроме очевидных вещей, я добавил в схему 4 Мбит EEPROM, чтобы облегчить себе решение проблем 2 и 3.
А вот как выглядит собранная плата:
Габаритные размеры 38х27х10 мм, масса - 6 граммов.
Сделать корпус я так и не удосужился, плата просто затянута в термоусадку. Так это выглядит на Trex-450:
Решаем проблему номер два (алгоритм работы и закон регулирования)
С
алгоритмом в первом приближении
все выглядело просто: чтобы
получить угол азимута, нужно
интегрировать угловую скорость и
соответственно управлять
хвостовой сервомашинкой, если
азимут меняется без команды руля
направления (РН). Неясными
оставались: закон и параметры
регулирования, а также кое-какие
нюансы типа того, что делать, если
вертолет на земле принудительно
развернули на несколько оборотов и
ошибка азимута составляет сотни
или тысячи градусов.
Для начала я проштудировал
инструкции на продвинутые
гироскопы Futaba и CSM, поскольку состав
их настроек дает некоторое
представление о возможном законе
регулирования. Очевидно
присутствие пропорционального и
интегрального контуров
регулирования, а также системы
демпфирования РН при выходе из
быстрых пируэтов. Затем я установил
свой гироскоп на вертолет вместе с
GY401, причем мой модуль измерял
угловую скорость, значение канала
РН и длительность сервоимпулься от
GY401 и сохранял их в реальном времени
в EEPROM. (Кстати, я внимательно изучил
инструкцию на GY401 и не нашел там
никаких запретов так поступать). В
таком режиме логгера я выполнил
несколько тестовых полетов и
просто различных поворотов с
разной амплитудой и скоростью, с
разными параметрами gain, delay, DS.
Данные из EEPROM перекачивались в РС,
обрабатывались и анализировались.
Выяснилось, что если рассматривать
GY401 как систему стабилизации угла с
обратной связью (ОС), то там
работает
пропорционально-дифференциальное
(ПД) регулирование. Соответственно,
если рассматривать его как
стабилизатор угловой скорости, то
регулирование можно назвать
пропорционально-интегральным (ПИ).
Важно, что интегральный контур
имеет ограничитель в несколько
десятков градусов, и этот
ограничитель препятствует
накоплению слишком больших ошибок
азимута, когда контур ОС разомкнут
(помните нюансы?). После этого не
составило большого труда подобрать
коэффициенты контуров по образу и
подобию Футабы. Вот так, к примеру,
совпали графики реакции на
разворот гироскопа GY401 и моей
компьютерной ПИ модели:
Для желающих повторить упражнение выкладываю небольшой, но вполне достаточный лог. Скачать лог (Кстати, этих логов у меня мегабайты, если нужны - пишите, но, уверяю, ничего более интересного там нет).
Надо честно заметить, что на быстрых пируэтах с разомкнутой ОС дорожки GY401 и моей ПИ модели несколько расходились. Возможно, из-за разных алгоритмов ограничения И контура. Также возможно, что Футаба несколько уменьшает к-ты регулирования при высоких угловых скоростях. В любом случае, я не усмотрел тут особой проблемы для общей функциональности. Что касается дистанционной регулировки чувствительности GY401, она влияет одновременно на коэффициенты обоих контуров (П и И). В режиме DS (digital servo) период сервоимпульсов на выходе GY401 уменьшается с 14 мс до 3.7мс. Регулировка DELAY затягивает быстрые фронты при возвращении ручки РН в нейтраль. Вот, собственно, и все, что удалось вытянуть из GY401.
Далее уже было делом программистской техники претворить добытые сакральные данные в программу для микроконтроллера ATmega88. Объем кода составил около 6 кБайт. На текущий момент реализован нормальный режим и режим удержания направления. Есть поддержка цифровых сервомашинок. Режим и чувствительность задаются с дополнительного канала приемника. Такие параметры как реверс, DS и расходы сервомашинок задаются через установочный режим (quick setup) с передатчика. Ведутся полетные логи в энергонезависимой памяти. Есть канал связи с РС. На текущий момент не реализовано: программирование продвинутых параметров через RS232. Руководство пользователя (пока только меня)
Решаем проблему номер три (тестирование)
Перспектива делать первый взлет с самодельным гироскопом на большом страшном Рапторе мне как-то не очень нравилась. К счастью, к этому времени у меня появился электрический TRex-450SA, а с ним проводить испытания было удобно и не страшно (его при необходимости даже можно было держать в руке). В первых испытаниях участвовала сервомашинка Futaba S3154. Поведение аппарата в полете сравнивалось с GY240 и GY401 субъективно и по логам. Нормальный режим сразу нормально заработал и с пристрастием не анализировался. В режиме удержания: дрейф азимута от времени при висении в нормале (~2400 об/мин) - около 5-10 градусов/мин против 15-20 градусов GY240. Виляние хвостом при резком добавлении-сбросе газа в режиме обычной сервы - 20-25 градусов, как у самоделки, так и в 240 и 401, но в самоделке наблюдались некоторые колебания при возвращении хвоста. В режиме цифровой сервы (DS) самоделка мне понравилась больше, чем 401 (меньше виляние и колебания при резком бросании раддера), но, возможно, это субъективно. По-любому, эффективности ХР не хватало, чтобы адекватно компенсировать набросы шага/газа. В Idle-up (~2900 об/мин) и DS хвост был "как прибитый" как на самоделке, так и на GY401. В общем, первые же полеты показали, что проект можно было признать успешным. Дальше были некоторые доработки и улучшения. В частности, мне удалось уменьшить дрейф азимута до 1-2 градусов в минуту.
Резюме
Сделать хороший самодельный гироскоп можно.
И немного о грустном
Из всего вышесказанного можно сделать вывод, что у меня было все совершенно безоблачно и замечательно. На самом деле были и проблемы. Во-первых, сервомашинка S3154 довольно быстро сдохла, где-то в пятом-шестом полете. (Причем прямо в полете!) И я не могу сказать, кто виноват в ее преждевременной кончине - лично я или известный ее производитель. Конечно, кругом много жалоб на долговечность S3154, но чувство вины и скорби все же не покидает меня. (Теперь на хвосте Трекса стоит обычная аналоговая HS-55 и, кстати, нам с ней летается очень неплохо). Во-вторых, у меня нет возможности провести действительно полноценные испытания: с крутым 3D (не умею), с разнообразными многочисленными вертолетами и сервомашинками (не имею). А это не дает мне права гордо утверждать, что я догнал и перегнал Футабу или Колина Милла.
Обсуждение проекта на rcdesign.ru (впрочем, ничего конструктивного)
© Вадим Кушнир (aka Vad64)