Xan>> Интегратор ускорения на вязкой жидкости, у которого смещение грузика пропорционально скорости.
Стеклянная трубка, расположена вертикально, вдоль оси ракеты.
Запоненна вязкой жидкостью. Полностью.
В ней грузик. Вроде поршня с большим зазором (зазор надо как-то стабилизировать).
Грузик снизу подпёрт пружинкой.
Над грузиком оптический датчик, несколько выше грузика, это расстояние должно регулироваться.
В исходном состоянии пружинка частично сжата весом грузика.
При разгоне грузик движется вниз против силы пружины и силы вязкости.
После выключения двигателя сила пружины и сила за счёт аэродинамического торможения двигают грузик вверх.
Так как в районе апогея невесомость, то грузик под действием пружины проезжает своё начальное (на старте) положение и двигается дальше. Тут-то и срабатывает оптический датчик.
У датчика есть два определяющих параметра:
1. смещение под действием силы тяжести (определяется массой грузика и жёсткостью пружины);
2. Постоянная времени (определяется вязкостью и жёсткостью пружины).
Первый параметр легко определить, измерив положения грузика в положении "вверх ногами" и в положении "вниз ногами" и поделив разницу пополам.
Второй надо определять с секундомером, измерив время, за которое грузик пройдёт половину расстояния при перевороте из "вверх ногами" в "вниз ногами". И умножить это время на 1.44.
Симуляторская прога на Бейсике:
a0 = 100 rem ускорение при работе двигателя (F/m)
t0 = 3 rem время работы двигателя
c = 0.001 rem коэффициент аэродинамического сопротивления
tau = 20 rem постоянная времени датчика
rem
dt = 1/1024
open "hydro.txt" for output as 2
x = 9.81 rem начальное положение грузика
rem
LL:
t = t + dt
if t < t0 then a = a0 else a = 0 rem работа двигателя
a = a - c * v*v
v = v + (a - 9.81) * dt
h = h + v * dt
d = (x - a) / tau
x = x - d * dt
if x > xx then xx = x
rem
if v < 0 then EE
if t < tt then LL
tt = tt + 1.0 rem шаг печати
print using "t =###.# a =###.# v =###.# h =##### x =###.#"; t, a, v, h, x
goto LL
EE:
print using "x_max =###.# x_min =###.#"; xx - 9.81, x - 9.81
end
В проге принято, что первый параметра датчика такой, что грузик под действием тяжести смещён на x = 9.81 единиц (например, миллиметров)
Второй параметр - tau.
Результат работы проги:
t = 0.0 a =100.0 v = 0.1 h = 0 x = 9.8
t = 1.0 a = 92.3 v = 87.6 h = 44 x = 18.1
t = 2.0 a = 74.0 v =161.4 h = 171 x = 24.4
t = 3.0 a =-46.3 v =215.2 h = 361 x = 28.1
t = 4.0 a =-28.5 v =168.9 h = 551 x = 21.9
t = 5.0 a =-18.5 v =136.0 h = 703 x = 17.7
t = 6.0 a =-12.3 v =111.0 h = 826 x = 14.5
t = 7.0 a = -8.3 v = 91.0 h = 926 x = 12.2
t = 8.0 a = -5.5 v = 74.4 h = 1009 x = 10.4
t = 9.0 a = -3.6 v = 60.1 h = 1076 x = 9.0
t = 10.0 a = -2.2 v = 47.4 h = 1129 x = 7.8
t = 11.0 a = -1.3 v = 35.8 h = 1171 x = 6.9
t = 12.0 a = -0.6 v = 25.1 h = 1201 x = 6.2
t = 13.0 a = -0.2 v = 14.9 h = 1221 x = 5.6
t = 14.0 a = -0.0 v = 4.9 h = 1231 x = 5.0
x_max = 18.3 x_min = -5.0
Последняя колонка - смещение грузика датчика.
Последняя строчка - крайние положения грузика от начального (на старте) положения.
Похоже, надо перед стартом на проге считать смещение оптического датчика, чтоб получать срабатывание где надо.
Ну и надо ещё разбираться, что будет, если ракета полетит криво.
У меня на это мозговые силы кончились!!!
Проще датчик давления и МК.