Главная | Микроэлектроника => Инерциальный датчик
Инерциальный датчик апогея на одноосевом акселерометре
Теоретическое обоснование Выводы Практическое обоснование

Теоретическое обоснование В начало

Недостатки других наиболее известных датчиков апогея, применяемых среди любительских ракет.

1. Оптический или светодиодный датчик апогея.

Во-первых, данный датчик не работает в темное время суток, что очевидно в прямом и переносном смыслах.

Во-вторых, у него есть ограничение по высоте использования. Оптический датчик у поверхности Земли получает больше света сверху, от неба, а на достаточно больших высотах, где-то более 5-10км он уже больше будет получать отраженного света снизу от атмосферы Земли. Т.е. при полёте ракета с таким датчиком на большую высоту получит от него ложное срабатывание ещё на стадии активного возвышения.

В-третьих, не информативный.

2. Барометрический датчик апогея.

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

Во-вторых, эти датчики сами по себе имеют довольно узкие диапазоны измерений давлений, которые при переводе в высоту оказываются критичными, и для высотных ракет, летающих выше 10км, придётся уже использовать минимум 2 таких датчика, что дополнительно осложнит работу микроконтроллера.

В-третьих, для очень больших высот полёта ракет такой датчик вообще не применим, так как в вакууме он, соответственно, работать просто не будет.

3. Магнитный датчик апогея.

Во-первых, основной недостаток в том, что сложно добиться надёжной работы, так как датчик может легко обмануться на случайных помехах возмущающих магнитное поле Земли в разных его частях пространства, например, неизвестное скопление железной руды на месте старта.

Во-вторых, не информативный.

Преимущества датчика на одноосевом акселерометре.

1. Не имеет значения степень освещенности местности, т.е. возможно применять в любую погоду (всепогодный).

2. Нет ограничений по высотам использования, т.е. доступны любые высотные диапазоны для полётов ракет. Соответственно может работать и в вакууме.

3. Даёт исчерпывающую информацию о дальности полёта ракеты. А в случае применения всех трех осей и в связке с трехосевым гироскопом, возможно, получить всю траекторию полёта ракеты в пространстве.

4. Возможно применение на любых возможных скоростных диапазонах полёта ракет.

5. Диапазон измерений легко подстраивается под необходимую мощность двигателя ракет, полностью покрывая при этом весь интервал измеряемой нагрузки.

6. Очень надёжен, так как полностью самодостаточен благодаря тому, что измеряет перемещения собственных подвижных инерциальных элементов, а не параметров окружающей среды, которые не всегда бывают такими, какими надо.

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

Алгоритм работы одноосевого датчика ускорений.

Как и в случае разработки своего варианта бортового компьютера для ракет, где использовался барометричесий датчик давления, я использовал изначально моделирующую систему в виде симулятора и алгоритма работы устройства. Симулятор – это довольно большая программная среда, которая максимально точно воспроизводит условия, в которых окажется тестируемый датчик, по данным которого будет работать другой алгоритм, анализирующий изменения сначала моделируемой среды, а потом и реальной. Это позволяет сократить до минимума возможные опытные доработки по программному коду и исполнения электроники в целом. Так при разработке именно барометрического датчика, полученный из симулятора рабочий вариант алгоритма программы для бортового компьютера не претерпел ни одной доработки в результате десятков наземных испытаний и успешно прошёл все лётные испытания.

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

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

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

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

GLRocket.A := SummABC(GLRocket.A, Sim_G);

В данном случае применена функция суммирования, после которой с учётом знаков из общего ускорения полностью выводится влияние силы гравитации на датчик в пространстве где бы он не находился и как бы он повёрнут не был.

После этого выполняется моделирование сигнала на осях акселерометра, делается это с помощью разложения полученного вектора ускорения A на вектора осей датчика X,Y,Z, которые совпадают с осями тела и пока что датчик находится в ЦМ тела:

Axel_A.X := ProekciaVectorAB(GLRocket.A, GLRocket.Coord.nX) + (Random(200) - 100) * 0.01;

Axel_A.Y := ProekciaVectorAB(GLRocket.A, GLRocket.Coord.nY) + (Random(200) - 100) * 0.01;

Axel_A.Z := ProekciaVectorAB(GLRocket.A, GLRocket.Coord.nZ) + (Random(200) - 100) * 0.01;

При этом в расчёте уже участвует совсем другая переменная Axel_A, а не GLRocket и они нигде не пересекаются и друг на друга не влияют. Плюс сразу же идёт моделирование шума в 200мG на каждую ось + (Random(200) - 100) * 0.01.

Далее, как я уже писал, просто идёт обработка данных с датчика отдельным алгоритмом и конкретно для 1D акселерометра, где я просто вычитаю g из исходных данных:

Axel_A.Y := Axel_A.Y - FGravitySI;

Таким образом мы устраняем недостаток g в показаниях с датчика.

После этого идёт простое суммирование прямо в полученных попугаях:

Axel := Axel + Axel_A.Y;

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

И наконец сам алгоритм выброса парашюта:

If (GL_Time > 1.0) and (Axel < 0.0) then GL_PAR := True;

Проще некуда.

Условие (Axel < 0.0) – главное для определения момента выброса парашюта.

Условие (GL_Time > 1.0) – дополнительное и в данном случае сильно упрощенное и вообще временное, так как тут определяется фаза старта ракеты и даётся добро на запуск алгоритма суммирования ускорений. В данном примере это усложнение ни к чему, а сам алгоритм для МК уже есть и отработан уже на примере работы барометрического датчика.

После того, как сумма ускорений уйдёт в ноль, переменная GL_PAR активизирует алгоритм моделирования системы спасения в симуляторе. При этом всё, что происходит – это изменяется Cx и Sx для тела в виде парашюта и больше ничего. Всё остальное, что получается (резко тормозится тело ракеты и начинает падать вертикально в низ), происходит в результате работы матмодели.

Ракета 1:

Масса = 5,45кг;

УИ = 120с;

Тяга = 1000Н (тяговооруженность 18,7);

Время тяги = 1с;

Cx = 0,4;

Sx = 0,00385м2;

Углы старта: 20°, 40°, 60°, 70°;

3D модель ракеты по размерам условна.

Ракета 2:

Масса = 5,0968399кг;

УИ = 120с;

Тяга = 150Н (тяговооруженность 3);

Время тяги = 1с;

Cx = 0,4;

Sx = 0,00385м2;

Углы старта: 0°, 10°, 20°, 30°, 35°, 40°, 45°, 50°;

3D модель ракеты по размерам условна.

Предварительные выводы В начало

1. У датчика обнаруживается некоторые минимально-допустимый предел работы по углам старта, который определяется тяговооруженностью ракеты и углом её отклонения полёта от заданной вертикали.

2. Полученный анализ наглядно показал, что этот предел оказывается примерно в 2-3 раза меньше, чем для того же барометрического датчика, где минимум начала его работы определятся защитой от ветрового возмущения, неизбежно повышающего минимальную высоту работы где-то до 50-150м, что зависит от погоды на старте.

3. Допустимые углы старта при этом быстро расширяются уже при тяговооруженности ракеты более 3. Тут стоит учесть, что для достаточно стабильного полёта подавляющего большинства ракет необходима тяговооруженность более 5.

4. Данный датчик будет успешно работать при углах старта ракет не более 30° от вертикали на любых ракетах и на любых высотах.

5. Для углов старта от 30° до 45° (аварийные режимы полётов) данный датчик может применяться на всех ракетах с тяговооруженностью более 3.

6. Для углов старта более 45° применение данного датчика возможно, но не целесообразно, так как для большинства ракет выброс парашюта в данном случае закончится для них аварией, что справедливо будет и для барометрического датчика. Этот режим полётов ракет вообще не допустим для любителей!

Не допускается запуск ракет под углом к горизонту менее 60° - это может причинить непоправимый вред окружающим людям или их имуществу, находящихся на значительном удалении от места старта ракеты!.

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

Практическое обоснование В начало

Для практического подтверждения использовал пока простую отладочную плату STM32F3DISCOVERY, в составе которой имеется акселерометр LSM303DLHC с диапазонами измерений ускорений в пределах ±2g/±4g/±8g/±16g. Для того, чтобы провести простой тест алгоритма, взял самый минимальный диапазон ±2g, обеспечивающий наибольшую чувствительность датчика на малых перегрузках и дистанциях полёта. Благодаря этому удалось проверить работу алгоритма в реальных условиях буквально не выходя из-за рабочего стола. Уже на дистанции движения всего лишь 300-500мм можно было видеть совершенно чёткую работу всего алгоритма.

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

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

И тут я заметил ещё один очень важный плюс такого датчика, который будет очень актуален для водоракетных любителей. В их случае, такой датчик не будет съедать полезную высоту из-за применения алгоритмов защиты от порывов ветра, как на барометрическом датчике, что позволит получить возможность надёжной работы системы спасения при полётах на малых высотах порядка 50-100м, где весь диапазон полётов обычно не превышает 200-300м.

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

SashaMaks © 15.12.2015
Любительские высотно-скоростные ракеты 1996-2015