[image]

Использование микроэлектромеханических (MEMS) акселерометров в ракетомоделях

 
1 4 5 6 7 8 9 10
+
+2
-
edit
 

Xan

координатор

Измерение момента инерции на крутильных весах.

Ракета горизонтально вкладывается в U-образную пластинку. Центром тяжести в середину.
На верхних концах пластинки пара дырочек и к ним привязана пара ниток.
Ну и верхние концы ниток тоже привязаны к чему-то на потолке (или ещё где-то).
Нитки должны быть параллельны. Но если получилось не очень, то можно взять среднее — померить расстояние между нитками на середине высоты.
Так же надо измерить длину ниток.
И массу ракеты.

В физике все размеры измеряются в метрах.
Не в сантиметрах, как у портных, и не в миллиметрах, как у инженеров.
Лучше лишние нолики написать, чем потом ломать голову "чё не так?".
А углы в радианах, а не в градусах.
Но самые мазохисты могут, конечно, попробовать имперскую систему! :D

Кроме того, так как Калькулятор в Вин-10 "усовершенствован" гнойными манагерами и перестал понимать элементарные вещи, я буду число Пи в формулах изображать как 3,14, а ускорение свободного падения как 9,81.

Ракете придаётся небольшое вращение в горизонтальной плоскости.
И она совершает небольшие колебания. С отклонением на несколько градусов.
При больших градусах будет систематическая ошибка — завышение периода.
Надо измерить период колебаний.

Например:
Вот у меня алюмяха, квадратная труба 50*50 0,5 метра длиной:
Расстояние между нитками 50 мм (x = 0,05)
Длина подвеса 46,2 см (L = 0,462)
Масса "ракеты" 1,0296 фунта (m = 0,467)
Период 8,1 секунды (T = 8,1)

Тогда момент инерции будет:

J = m * 9,81 * T2 * (x/2)2 / L / (2 * 3,14)2

Собрав все константы получаем попроще:

J = 0,0621 * m * (T * x)2 / L =

0,0621 * 0,467 * (8,1 * 0,05)2 / 0,462 = 0,01029619008116883116883116883117

А для тонкого стержня длиной 0,5 метра теоретическая инерция должна быть:

J = 0,467 * 0,52 / 12 = 0,00972916666666666666666666666667

Ну, поскольку труба не тонкая, да ещё я мог ошибиться, считая секунды периода, то разница 6% — вполне удовлетворительна.

Конечно, надо мерить и с несгоревшим движком, и со сгоревшим.
Если топлива много.
А для частично сгоревшего просто линейно интерполировать.

А если топлива мало, то только для сгоревшего — преуменьшение момента инерции не даст катастрофической ошибки.
   99

Xan

координатор

Получение значений эффективности рулей с помощью проги АэроЛаб.

На картинке ракета с шестью перьями рулей. (И шестью перьями стабилизаторов).
Давим Calculate, потом Select, выбираем Lift Curve, и там Wing, остальное гасим (См. рисунок).
И окей.
Получаем график (Cl)alpha = "Cy / единичный угол" (См. рисунок).
То есть, если мы повернём руль на некоторый угол angle, то сила на руле будет такая:

F = (Cl)alpha * angle * rho * Reference_Area * v2 / 2

Сравните с формулой силы сопротивления:

F = Cx * rho * Reference_Area * v2 / 2

Вместо Cx появляется Cy = (Cl)alpha * angle.

Это формула, конечно, работает только для небольших углов, поскольку на дозвуке будет срыв потока,
а на сверхзвуке вместо угла надо подставлять косинус угла.
Но на 0,3 ... 0,5 радиан (20...30 градусов) крутить, наверное, можно.

Если хочется получить значения (Cl)alpha в виде таблицы, то есть кнопка Export (См. рисунок).
Прикреплённые файлы:
Draw.png (скачать) [1906x1142, 23 кБ]
 
Selection.png (скачать) [401x378, 7,3 кБ]
 
Alpha.png (скачать) [785x684, 15,6 кБ]
 
Alpha2.png (скачать) [444x633, 31 кБ]
 
 
   99
Это сообщение редактировалось 18.10.2022 в 16:25

Xan

координатор

Чтоб узнать, хватит ли сил у сервы, надо посмотреть, какие моменты будут на оси рулей.
Для этого надо выбрать Centers of Pressures и там Wing (См. рисунок).
Там видно, что на дозвуке центр давления смещён вперёд (относительно геометрического центра руля).
А на сверхзвуке оказывается примерно в центре (67,5 мм).
Если ось вращения руля проходит через геометрический центр, то на сверхзвуке при любом положении момента на оси не будет.
Но на дозвуке будет неустойчивое состояние, поскольку центр давления впереди и сила будет стараться повернуть перо ещё сильнее.
Для совсем устойчивой схемы надо ось руля сдвинуть на 4 мм вперёд. Тогда на дозвуке момента не будет, а на сверхзвуке момент будет стремиться повернуть руль к нулю.
Но тогда на сверхзвуке, возможно, понадобится более сильная/тяжёлая серва. Поэтому "истина где-то между".

Момент_на_руле = сила_на_руле * смещение_центра_давление_от_оси

Момент_на_серве = Момент_на_руле * отношение_плеч_кривошипов_руля_и_сервы

Если руль крутится на 20...30 градусов, а серва на 60, то отношение получается 2...3.
Надо только правильно перевести граммы*сантиметры из паспорта сервы в единицы СИ. :)
При этом серва около крайних 60 градусов может действовать на шатун с силой почти в два раза большей, чем в среднем положении.
Прикреплённые файлы:
Centers.png (скачать) [757x585, 12,5 кБ]
 
 
   99
Это сообщение редактировалось 18.10.2022 в 16:27
RU Брат-2 #19.10.2022 16:18
+
-
edit
 

Брат-2

опытный

Да, Xan, спасибо, однако! :)
У меня было желание построить управляемую ракету, а тобой предлагается мне повеситься! :D
Спасибо, отдельные моменты твоего разъяснения пригодные для моей практики уловил, обязательно использую!
   2222
RU Tayfur #19.10.2022 18:33  @Брат-2#19.10.2022 16:18
+
-
edit
 

Tayfur

втянувшийся
Брат-2> Да, Xan, спасибо, однако! :)
Брат-2> У меня было желание построить управляемую ракету, а тобой предлагается мне повеситься! :D

Вот вопрос. А что если для отработки вопроса в ракету снизу вместо карамельки временно воткнуть электротягу с вертилятором (соосным). И гоняй его вверх-вниз...
   106.0.0.0106.0.0.0
RU Брат-2 #19.10.2022 19:09  @Tayfur#19.10.2022 18:33
+
-
edit
 

Брат-2

опытный

Tayfur> Вот вопрос. А что если для отработки вопроса ....

Такой бы аппарат и без проработки вопроса был бы очень интересен, но, увы! :)
   2222
RU Tayfur #20.10.2022 19:03  @Брат-2#19.10.2022 19:09
+
-
edit
 

Tayfur

втянувшийся
Tayfur>> Вот вопрос. А что если для отработки вопроса ....
Брат-2> Такой бы аппарат и без проработки вопроса был бы очень интересен, но, увы! :)

Как первая ступень? На ютубе кто-то квадрокоптер поднимал до 12км. А там атмосферное разряжение раза в четыре... Только тут встанет вопрос безопасного возвращения второй ступени.
   106.0.0.0106.0.0.0

Xan

координатор

Xan> Ща спою!!!

Ну, повторю ещё раз про проблему регулирования с задержкой.
a — возвращающее ускорение = возвращающая_сила / инерцию
x — отклонение от заданного положения
v — скорость
В случае, если закон регулирования сделать вот таким (простая пружина):

a = -k1 * x

То получится незатухающий маятник. Где k1 — жёскость пружины делёная на инерцию.
Круговая частота колебаний будет такая:

w = sqrt(k1)

Чтобы колебания затухали, надо добавить вязкость.

a = -k1 * x + -k2 * v

При этом оптимальный k2 = 2 * k1 — при этом отклонение уменьшается максимально быстро.

Казалось бы, взять k1 побольше, чтоб система быстрее возвращалась в заданное положение, и щястие!
Однако, всё портит задержка:
пока датчики выдадут новые значения, пока процессор посчитает, пока рулевая машинка повернёт руль.
В результате получается, что если задержка превышает 0,74 / w, то колебания вообще не прекращаются.
См. Картинка.
При delay = 0,625 / w (голубая) колебания есть, но, всё-таки, затухают. Это можно взять за предельное значение.
При delay = 0,5 / w (коричневая) колебания быстро затухают, можно применять.
При delay = 0,4 / w (зелёная) уже, практически, без колебаний.
При этом лучший k2 не равен 2 * k1, а равен, примерно, 1,7 * k1.
Это значение в большом диапазоне задержек оказывается оптимальным.

Теперь, с этим знанием, надо добиться, чтоб соблюлось:

delay < 0,4 / w

Так как задержка определяется имеющимся железом и её не поменять, то надо подкручивать w.
A w от k1 зависит вот так:

w = sqrt(k1) = 0.4 / delay

k1 = (0.4 / delay)2 — надёжное значение k1.

k1 = (0.5 / delay)2 — оптимистическое значение k1.

k1_max = (0.625 / delay)2 = 2.44 * k1 — предельное значение, раза в два больше надёжного.

То есть, нельзя k1 брать каким угодно, "с потолка".
А надо, чтоб его значение никогда не превышало некоторую величину.
И эта величина простым образом зависит только от задержки.

И независит от эффективности рулей и прочего.
Но это всё прочее надо правильно посчитать, чтоб не получилось слишком большое ускорение, что эквивалентно слишком большому k1.

Например, при задержке 0,04 секунды (у маленьких и очень шустрых сервов) получается:

k1 = (0.5 / 0.04)2 = 156,25
Прикреплённые файлы:
17.png (скачать) [1703x921, 40 кБ]
 
 
   99
Это сообщение редактировалось 31.12.2022 в 13:22

Xan

координатор

Xan>> Ща спою!!!

С одной стороны хочется, чтоб угловое ускорение было вот таким:

Angular_Acceleration = —(k1 * Angular_Deviation + k2 * Angular_Velocity);

С другой стороны, оно вот так фактически зависит от угла поворота рулей и других величин:

Angular_Acceleration = Force_Moment / Moment_of_Inertia;

Force_Moment = Distance_to_Center_of_Mass * Force

Force = Cl_alpha * Rudder_Deflection_Angle * rho * v2 / 2

Теперь перевернём формулы и найдём угол отклонения руля, который даст нам желаемое угловое ускорение.

Rudder_Deflection_Angle = Force / (Cl_alpha * rho * v2 / 2)

Force = Force_Moment / Distance_to_Center_of_Mass

Force = Angular_Acceleration * Moment_of_Inertia / Distance_to_Center_of_Mass

Rudder_Deflection_Angle = Angular_Acceleration * Moment_of_Inertia / (Distance_to_Center_of_Mass * Cl_alpha * rho * v2 / 2)

И вот уже можно серве командовать повернуть на какой-то угол.

=====

Вот эти величины меняются в полёте, они зависят от количества сгоревшего топлива, сброшенных ступеней, высоты и скорости:

Moment_of_Inertia(t)
Distance_to_Center_of_Mass(t)
rho(h)
Cl_alpha(v)

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

=====

В тестовом режиме полезно вот такую "кинуть перемычку", в обход всего, написанного выше:

Rudder_Deflection_Angle = Angular_Deviation

Тогда дома, при наклоне ракеты руками в разные стороны, рули будут стараться остаться вертикальными.
Что очень показательно в плане "датчики и сервы работают правильно".
А при включенном управлении будет случаться деление на ноль, потому что скорость нулевая. И нифига хорошего не увидеть.
   99
Это сообщение редактировалось 31.12.2022 в 13:26

Xan

координатор

Xan> Force = Cl_alpha * Rudder_Deflection_Angle * rho * v2 / 2

Вот отсюда тянется ошибка, про площадь забыл, должно быть:

Force = Cl_alpha * Reference_Area * Rudder_Deflection_Angle * rho * v2 / 2

Ну дальше:

Rudder_Deflection_Angle = Force / (Cl_alpha * Reference_Area * rho * v2 / 2)

Rudder_Deflection_Angle = Angular_Acceleration * Moment_of_Inertia / (Distance_to_Center_of_Mass * Cl_alpha * Reference_Area * rho * v2 / 2)
   99
+
-
edit
 

apakhom

втянувшийся

В субботу "катал на ракете" микроальтиметры pinko.
В 32 мм головную часть РП-18А без проблем влезли 3 шт с аккумулятором (от вэйпа).
Отличные "штучки" - восхищаюсь умениям pinko!

Полет невысокий (150м) - "стандартный" для этой ракетки. Кино, фото, графики, файлы - тут.
Одним из любопытных моментов запуска была проверка высказываний СашиМакса про "интегрирование(суммирование) показаний акселерометра для определения момента срабатывания ССР".

Саша - прав:


Действительно: просто суммируем (коричневый) "нужную ось" (желтый) и включаем ССР когда пересекает ноль!
   110.0.0.0110.0.0.0
RU SashaMaks #06.03.2023 08:05  @SashaMaks#29.09.2022 22:42
+
-
edit
 

SashaMaks
SashaPro

аксакал

SashaMaks>>>>> Пример 2:
SashaMaks>> SashaMaks>> Пример 3:
SashaMaks> SashaMaks>> Пример №4:
SashaMaks>> Пример №5:
SashaMaks> Пример №6:

Пример №7:
(Запуски ракет и испытания 2023 [apakhom#05.03.23 10:36])
Прикреплённые файлы:
rp18-54ax.png (скачать) [1474x1060, 136 кБ]
 
 
   109.0.0.0109.0.0.0
RU apakhom #06.03.2023 08:58  @SashaMaks#06.03.2023 08:05
+
-
edit
 

apakhom

втянувшийся

SashaMaks> Пример №7:
SashaMaks> (Запуски ракет и испытания 2023 [apakhom#05.03.23 10:36])

вопрос: как гарантировать ноль зеленый перед стартом.
Если как Mihal рекомендует по прерыванию акселерометра, то "пропустим" начало и пересечение нуля произойдет значительно позднее.
Подключать к этому магнитометр и барометр конечно интересно, но это "из пушки по воробьям" :)
Куда легче копить в буфере FIFO, а потом дополнить поступающие данные недостающими из него.
   110.0110.0
+
+1
-
edit
 

Xan

координатор

apakhom> Если как Mihal рекомендует по прерыванию акселерометра, то

Мне непонятны эти мучения! :D

У меня до старта (не ракеты, другого процесса) из сигнала датчика вычитается значение_нуля.
Получившаяся разность умножается на десятитысячную (или на стотысячную) и прибавляется к значению_нуля.
Таким образом, если значение_нуля не соответствует сигналу датчика, который перед стартом должен быть нулём, значение_нуля в каждом кванте времени медленно подтягивается к фактическому сигналу датчика.

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

=====

Более продвинутая установка нуля:
Есть переменная Максимальная_Разность.
Если разность сигнала и значение_нуля больше неё, то разница ограничивается ею.
Это вместо умножения на стотысячную.
Таким образом случайные большие отклонения сигнала не приведут с большому смещению значения_нуля.
При включении значение Максимальная_Разность большое. И значения_нуля быстро подтягивается к сигналу.
Когда разница начинает часто получаться меньше, чем Максимальная_Разность, то значение Максимальная_Разность уменьшается вдвое.
И так далее.
В результате через некоторое время скорость подстройки значения_нуля становится очень маленькой.
И когда случается старт процесса измерения, оно практически не меняется.

Но если постоянно разность превышает Максимальную_Разность, то её значение удваивается. И через некоторое время (больше, чем процесс измерения) нуль начинает подкручиваться быстрее.
   99

apakhom

втянувшийся

apakhom>> Если как Mihal рекомендует по прерыванию акселерометра, то
Xan> Мне непонятны эти мучения! :D

Тут меня в деревне снегом занесло :)
Работаю на "удаленке".
В паузах рабочего процесса: достал данные этих двух запусков, проверил показания разных акселерометров (с накоплением за все время от включения питания до старта).
Итог такой:
Если ракета стоит вертикально (и одна из осей акселерометра смотрит вверх), то вполне ошибкой можно пренебречь. Например, в 53-ем запуске за две минуты от включения до начала движения "набежала" разница в определении апогея всего 0,15 сек.
А вот когда запускал с наклона (там примерно 15-20 градусов), то "набегает" уже существенно больше - порядка секунды.

Так что просится команда "на старт" за секунду до старта для сброса интегратора. Можно, например, использовать тот же радиосигнал, что пошел на воспламенитель стартовой установки: в ракете ставим приемничек и пусть он формирует сброс :)
   110.0110.0
RU SashaMaks #06.03.2023 13:10  @apakhom#06.03.2023 12:54
+
-
edit
 

SashaMaks
SashaPro

аксакал

Брат-2> Все равно данный детектор апогея весьма сомнительный, даже браться за его реализацию желания нет.
apakhom> Так что просится команда "на старт" за секунду до старта для сброса интегратора.

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

Ещё вопросы:
А зачем считать сумму до момента старта???
А не лучше ли подходит именно акселерометр для определения момента старта?

Но если "браться за его реализацию желания нет", то можно и не отвечать.
   109.0.0.0109.0.0.0
RU apakhom #07.03.2023 10:37  @SashaMaks#06.03.2023 13:10
+
-
edit
 

apakhom

втянувшийся

Брат-2>> Все равно данный детектор апогея весьма сомнительный, даже браться за его реализацию желания нет.
apakhom>> Так что просится команда "на старт" за секунду до старта для сброса интегратора.
SashaMaks> Встречный вопрос:
SashaMaks> А какая разница в детектировании момента старта между датчиком давления и ускорения?

По акселерометру алгоритм детектирования старта еще для себя не сформировал. Пока - накопление данных для размышлений :)
По барометру - буфер FIFO (сейчас на 10 отсчетов, интервал 100 мс). Детектор - последовательное уменьшение давления (5 отсчетов) + общий прирост высоты на 10 м. Обычно в буфере как минимум три первые отсчета "еще стоят на земле".
Видимо с акселерометром надо делать нечто подобное.

SashaMaks> А зачем считать сумму до момента старта???

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

SashaMaks> А не лучше ли подходит именно акселерометр для определения момента старта?

Как раз все потуги для ответа на этот вопрос. Уйти от барометра к акселерометру. Порывы ветра и прочие случайные воздействия после включения, но до движения, думаю, на акселерометр меньше воздействуют, чем на барометр.
   110.0110.0
RU SashaMaks #07.03.2023 11:18  @apakhom#07.03.2023 10:37
+
-
edit
 

SashaMaks
SashaPro

аксакал

apakhom> По барометру - Детектор - последовательное уменьшение давления (5 отсчетов) + общий прирост высоты на 10 м.
С акселерометром 10м не надо, там буквально сантиметры решают:
(Высотные ракеты SashaMaks II [SashaMaks#25.09.21 18:39])

apakhom> Хотелось: чтоб попроще - включил и забыл.
Детектирование старта так и работает: (Высотные ракеты SashaMaks II [SashaMaks#25.09.21 18:39]

apakhom> Чтоб не определять момент начала движения.
Мне не понятны такие ожидания.
Если ничего не делать, то ничего и не будет.
Это вообще вопрос программирования, а не "включил и забыл" для датчика.

apakhom> думаю, на акселерометр меньше воздействуют, чем на барометр.
Меньше, тут всё проще и надёжней получается.
   109.0.0.0109.0.0.0
+
+1
-
edit
 

apakhom

втянувшийся

На новой РП-37 в первом старте ССР - системы спасения ракеты [apakhom#20.03.23 14:50] "прокатил" два микроальтиметра от pinko (1.5 и 3.5)
 


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

   111.0.0.0111.0.0.0
RU Полтора акробата M&D #17.05.2023 12:09
+
-
edit
 

Полтора акробата M&D
mihail66

аксакал

Намедне мне попалась интерсная видюшка про запуск ракетки с телеметрией -

Чертовски интересно на каких датчиках реализована система определения ориентации ракеты в пространстве?
   113.0.0.0113.0.0.0
RU Брат-2 #17.05.2023 21:45  @Полтора акробата M&D#17.05.2023 12:09
+
-
edit
 

Брат-2

опытный

П.а.M.> Чертовски интересно на каких датчиках реализована система определения ориентации ракеты в пространстве?

Михаил, предполагаю, что на обычном MPU6050. Ракета без управления, то есть летела ровненько без рысканья, по этой причине ошибка интегрирования не накапливалась, ну, а если ошибка и была, то кто знает да и скажет правду! :)
   2323
RU Полтора акробата M&D #18.05.2023 09:39  @Брат-2#17.05.2023 21:45
+
+1
-
edit
 

Полтора акробата M&D
mihail66

аксакал

Брат-2> Михаил, предполагаю, что на обычном MPU6050. Ракета без управления, то есть летела ровненько без рысканья, по этой причине ошибка интегрирования не накапливалась ....

Да откуда, нах? А перед апогеем по твоему что происходит? Да там все что можно себе представить, и тангаж и рыскание в одном флаконе. Но главный посыл в твоем ответе это -

Брат-2> ...а если ошибка и была, то кто знает да и скажет правду! :)
   113.0.0.0113.0.0.0
RU SashaMaks #18.05.2023 10:39  @Полтора акробата M&D#18.05.2023 09:39
+
-
edit
 

SashaMaks
SashaPro

аксакал

П.а.M.> Да откуда, нах?

Акселерометр + гироскоп(ДУС) + знания Тереза и высшей математики.

П.а.М.> А перед апогеем по твоему что происходит?

Не важно, указанных выше составляющих достаточно для полного определения положения тела в пространстве.
   112.0.0.0112.0.0.0
RU Полтора акробата M&D #18.05.2023 12:58  @SashaMaks#18.05.2023 10:39
+
-
edit
 

Полтора акробата M&D
mihail66

аксакал

SashaMaks> .....знания Тереза и высшей математики.

А это что за датчики?
   113.0.0.0113.0.0.0
AD Реклама Google — средство выживания форумов :)
RU SashaMaks #18.05.2023 13:31  @Полтора акробата M&D#18.05.2023 12:58
+
-
edit
 

SashaMaks
SashaPro

аксакал

SashaMaks>> .....знания Тереза и высшей математики.
П.а.M.> А это что за датчики?

Термеха - это Т9 в телефоне глючит...
   112.0.0.0112.0.0.0
1 4 5 6 7 8 9 10

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru