文号
918019
阅读
11543
回复
3
收藏
7
一枚火箭的理论高度计算
2023/03/13
原创
IP:美国

火箭初始质量100kg

火箭发动机的恒定推力是1960N

每秒喷出0.667kg燃料

最终消耗完燃料的火箭质量是10kg

燃料占火箭质量的90% 干质比为10

火箭从海拔为0的地面从静止开始发射

空气阻力为F= (1/2)CρSV^2,取Cd=0.2,S=0.0314m2

如果火箭的初始质量为m0,最终质量为m1,喷射物相对于火箭的速度为vex,那么火箭的速度变化为:

Δv = vex * ln(m0 / m1)

将数据代入,得到(液氧煤油喷气速度3000m/s):

Δv = 3000* ln(100 / 10) = 6907.76m/s

这是燃料耗尽后火箭的速度。要计算火箭的最大高度,还需要考虑重力和空气阻力的影响。重力加速度恒定为9.8 m/s2,空气阻力与空气密度和火箭速度的平方成正比。空气密度随高度的变化可以用下面的经验公式近似表示:

ρ = ρ0 * exp(-h / H)

其中ρ0是海平面处的空气密度,约为1.225 kg/m3,H是大气厚度,约为8000 m。因此,空气阻力可以写成:

F = (1/2) * Cd * S * ρ0 * exp(-h / H) * v2

其中Cd是阻力系数,S是横截面积,v是速度。

将重力和空气阻力合成一个合外力Ft,那么火箭运动满足以下微分方程:

m * dv / dt = Ft - mg

m * dh / dt = v

其中m是火箭的质量,h是高度。

这是一个非线性微分方程组,没有解析解,需要用数值方法求解。

我们可以使用Python编写一个简单的程序来模拟火箭运动

# 导入必要的库
import numpy as np
import matplotlib.pyplot as plt
 
# 定义常数
g = 9.8 # 重力加速度
rho0 = 1.225 # 海平面处的空气密度
H = 8000 # 大气厚度
Cd = 0.2 # 阻力系数
S = 0.0314 # 横截面积
vex = 3000 # 喷射物相对于火箭的速度
m0 = 100 # 初始质量
m1 = 10 # 最终质量
dm = 0.667 # 每秒喷出的燃料质量
 
# 定义初始条件
h0 = 0 # 初始高度
v0 = 0 # 初始速度
t0 = 0 # 初始时间
dt = 0.01 # 时间步长
 
# 定义变量列表,用于存储每一步的数据
h_list = [h0] # 高度列表
v_list = [v0] # 速度列表
t_list = [t0] # 时间列表
 
# 定义一个变量,用于记录最大高度
h_max = h0 # 最大高度
 
# 定义一个布尔变量,用于判断火箭是否还有燃料
fuel = True # 燃料标志
 
# 开始模拟循环,直到火箭落回地面或超过10000秒为止
while h_list[-1] >= 0 and t_list[-1] <= 10000:
    # 计算当前的火箭质量,如果小于最终质量,就取最终质量,并将燃料标志设为False
    m = m0 - dm * t_list[-1] # 当前质量
    if m < m1:
        m = m1
        fuel = False
    
    # 计算当前的空气密度,如果高度小于零,就取零
    rho = rho0 * np.exp(-h_list[-1] / H) # 当前空气密度
    if h_list[-1] < 0:
        rho = 0
    
    # 计算当前的空气阻力,如果速度小于零,就取零
    Fd = (1/2) * Cd * S * rho * v_list[-1]**2 # 当前空气阻力
    if v_list[-1] < 0:
        Fd = 0
    
    # 计算当前的合外力,如果火箭还有燃料,就加上推力,否则只有重力和空气阻力
    if fuel:
        Ft = vex * dm - m * g - Fd # 当前合外力(有燃料)
    else:
        Ft = - m * g - Fd # 当前合外力(无燃料)
    
    # 计算下一步的速度和高度,使用欧拉法近似求解微分方程组
    v_next = v_list[-1] + Ft / m * dt # 下一步的速度
    h_next = h_list[-1] + v_list[-1] * dt # 下一步的高度
    
    # 将下一步的速度和高度添加到列表中
    v_list.append(v_next)
    h_list.append(h_next)
    
    # 计算下一步的时间,并添加到列表中
    t_next = t_list[-1] + dt # 下一步的时间
    t_list.append(t_next)
    
    # 比较当前的高度和最大高度,如果更大就更新最大高度
    if h_list[-1] > h_max:
        h_max = h_list[-1]
 
# 结束模拟


运行这段代码,得到以下结果:

火箭的最大高度约为136.8km,超过了卡门线的高度(约为100 km)。


当然,只是粗略估计,感谢WernerPleischner提出的建议,Cd(阻力系数)和姿态关系很大,进一步计算还是需要仿真


以下是一些基本液机设计

氧化剂采用液氧,燃料采用煤油

雾化喷嘴喷注

取比冲300,设计推力2000N,

采用电泵膨胀循环,再生冷却

氧燃比 2.2 设计室压10mpa 燃烧室温度取3579K,特征长度取2.5,径收敛比取5

代入计算器得到结果,氧化剂流量459.2.6/s,燃料流量208.72g/s 总667g/s

喉口直径12.4mm,出口直径41.84mm,扩张比11.37

燃烧室内径62.04mm,长度93.94mm

飞控尾翼稳定

02A7C43A-F126-4445-91E1-CA1D16E370D8.png

[ 修改于3年8个月前 - 2023/03/15 07:26:48 ]
3年8个月前修改于 3年8个月前IP:广东
918025
1楼

火箭这种形状的东西Cd和姿态关系很大,还是得6DoF仿真……

引用
评论
2
Z聚变作者
3年8个月前修改于 3年8个月前IP:北京
918029
2楼
引用WernerPleischner发表于1楼的内容
火箭这种形状的东西Cd和姿态关系很大,还是得6DoF仿真……

请多指教

引用
评论
3年8个月前修改于 3年8个月前IP:广东
918111
3楼
引用WernerPleischner发表于1楼的内容
火箭这种形状的东西Cd和姿态关系很大,还是得6DoF仿真……

可以假定控制系统一直正常工作,攻角约等于零度。

6DOF仿真一般是用于设计和评估控制系统性能的,算基本的参数例如射程、最大速度、最大加速度,只需要1DOF就行了。

楼主取的参数基本是现有技术条件的极限值。电泵为了节约电池质量,不会选择较高的燃烧室压力,比冲会较涡轮泵方案偏低。一般来说液氧煤油做到海平面280s比冲几乎是极限了。而且楼主忽略了燃料箱增压气体和电泵电池的质量。

为了尽量增加射高,可以通过适当压低速度减少空气阻力带来的速度损失。楼主可以试着设计个优化算法。

引用
评论(7)
3
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的