申请人信息
申请人ID:不毒奶
真实姓名:周盛鹏
申请方式:个人
自我介绍:一名业余火箭爱好者,现在准大一新生
申请人照片:
申请人曾经发表的技术文章:
文号:906952不毒奶发表于:2022/08/16 07:17:50
针对KNSB矢量发动机测试时的爆炸总结
文号:907122不毒奶发表于:2022/08/18 18:14:27
TVC固体矢量发动机研发
文号:900773不毒奶发表于:2022/01/24 13:13:11
自制液体火箭发动机研究方案
项目信息
本次修回,语法错误有较明显的减少,但仍不符合中国人母语习惯。申请人若是外国人学习汉语,请声明。提供虚假身份信息将终结申报并移动至黑名单。 技术层面存在如下明显问题: 1、喷管图纸似乎与项目无关。 2、制作所谓“非矢量推力测试”系统似乎毫无必要,浪费时间和预算。 3、公式存在无法显示的符号。 4、6.2.1为空白。 5、“矢量推力测试”的受力分析缺少量化,代码不能支持矢量力测试。 6、项目目标中的第一方面,其核心是“根据箭体姿态”,“调整推力方向”。申请书中没有针对该目标制定相关研究计划。从箭体姿态到推力方向的过程缺少理论推导。 技术层面的问题并不局限于上述方面。
TVC固体火箭发动机设计
学科分类:喷气推进研究周期:180 天


TVC固体探空火箭发动机设计方案

一、项目背景:

前期,本人进行了TVC固体矢量发动机相关的研工作。然而,由于发动机试车事故导致发动机报废,再加上我高三备考的压力,不得不中断了矢量发动机的研发工作。在之前的事故调查中,发现了火箭发动机设计上存在的一些不足之处,特别是在发动机的密封性方面。因此,我希望通过此次申请,能再次开始矢量火箭发动机的研发工作,并对发动机密封性不足的问题进行优化。

二、项目目的:

针对矢量发动机的研发环节,本人将会围绕以下四个方面进行设计工作:

    第一方面研发出矢量推力控制系统,确保该控制系统能够根据箭体姿态变化不断调整发动机的推力方向

    第二方面对研发的矢量推力控制系统进行代码验证,确保代码的可行性和可靠性。

    第三方面进行矢量发动机的推力测试,评估发动机的推力性能和矢量推力控制能力

    第四方面整合所获得的发动机测试数据,并利用这些数据对后期发动机进行迭代升级,以改进其性能

三、设计范围:

该项目是针对固体矢量火箭发动机进行研发、测试和优化的三个方面的设计工作。

四、火箭发动机对箭体姿态调节原理:

发动机通过舵机驱动拉杆来控制矢量喷口的偏转,从而引起燃气流向的改变,进而导致推力方向的变化。同时,这也可以纠正箭体的偏转角度,使得箭体能够实现竖直飞行,达到对箭体姿态进行调节的目的。

29eb15f634924dd2abf1a6a0d76c1fc2.gif

五、研究计划:

TVC固体探空火箭发动机的制造过程将包括以下个阶段的研发:

第一阶段:搭建矢量推力试车平台。

       第二阶段研发矢量发动机,并进行相关代码的验证,以确保矢量推力控制系统的可行性和稳定性。   

第三阶段:将对研发的矢量发动机进行推力测试,并通过测试数据的分析来评估发动机的优缺点。

        第四阶段:将设计过程与经验分享到KC平台,并对未来的发动机图稿进行迭代设计。

六、实施过程:

1、发动机矢量控制系统机械结构与相应建模和仿真

    火箭矢量发动机的全向偏流矢量控制系统的机械结构由球型底座、球型喷口、矢量控制环、矢量拉杆、舵机臂和舵机组成。舵机臂通过连接舵机和矢量拉杆的方式,实现了矢量控制的动作。矢量拉杆的下端连接着矢量控制环,而矢量控制环与球型喷口和球型底座共同构成了矢量喷口的整体结构。在设计上,矢量控制环的力臂整体向后弯曲,并且与球头的连接点正好与球座中心面共面,以确保与拉杆成正交关系,这样就可以保证X轴和Y轴的控制相互独立,彼此不会产生干扰,整体能够良好配合。在发动机未使用时,舵机臂与拉杆的夹角为90度,这时喷口的偏转角度为零。当启用发动机并且火箭的姿态发生变化时,控制系统会向舵机发送指令,舵机会驱动舵机臂向上或向下转动,角度范围约为030度。若需要改变推力方向,舵机臂会驱动矢量拉杆控制球型喷口的偏转。例如,若需要球型喷口沿X轴偏转30度,舵机A需要将舵机臂转动15度以拉动矢量拉杆A的长度n(该长度为舵机与舵机臂连接处圆心到舵机臂与矢量拉杆连接处圆心)。舵机B的舵机臂和拉杆B保持不变。在两个拉杆的拉力下,矢量控制环会带动球型喷口改变燃气流向,从而实现矢量调节的目的。若需要球型喷口沿Y轴有最大距离,则与X轴调节相反的操作即可。若需要火箭在X轴上达到最大偏转角度,需要舵机A和舵机B同时向下偏转30度。在两个拉杆的牵引下,矢量控制环会带动球型喷口和舵机转动相同角度,从而实现球型喷口沿-Y轴的最大偏移。对于其他方向的调节,只需通过舵机A和舵机B的上下偏转来进行调节即可。

IMG_0331.png IMG_0099.png

喷嘴设计图

7984388f08b91e07b64c3cddb4f36ee0.jpeg 8ffb8ab591b31ba04832937e4360a83b.jpeg 23187f8a0eed65d4e9ad05dd1faea79f.jpeg ae483d2790e5f2b1e2507a4bbbb74159.jpeg

发动机喷嘴静态力学仿真结果(由于设置的室压在2.1MPa有点高导致发动机欠膨胀)

2、发动机矢量控制系统设计

  ①原理:

    

  ②具体设计:

需要将MPU6050Arduino连接起来。连接方式如下:

MPU6050VCC引脚连接到Arduino5V引脚上,以提供电源。

MPU6050GND引脚连接到ArduinoGND引脚上,以建立共地。

MPU6050SCL引脚连接到ArduinoA5引脚上,用于SPI通信。

MPU6050SDA引脚连接到ArduinoA4引脚上,用于SPI通信。

舵机与Arduino的连接方式如下:

将舵机的信号线连接到Arduino2号数字引脚,用于接收PWM信号。

将舵机的VCC引脚连接到Arduino5V引脚,用于电源供应。

将舵机的GND引脚连接到ArduinoGND引脚上,以建立共地。

  ③验证矢量控制可行性:

    通过运行代码,可以验证矢量控制的可行性。连接舵机和矢量控制拉杆后,观察舵机的运动情况。如果方案可行,那么可以进一步测试发动机在不同角度和方向上的变化,观察矢量喷口是否能够随着发动机的变化作出相应的调整。

  ④代码库:

// 导入所需库
#include <Wire.h>
#include <Servo.h>
// 定义MPU6050传感器的地址
const int MPU6050_addr = 0x68;
// 定义舵机引脚
const int servoPin1 = 9;  // 第一个舵机连接到D9引脚
const int servoPin2 = 10; // 第二个舵机连接到D10引脚
// 创建舵机对象
Servo servo1;
Servo servo2;
void setup() {
  // 初始化串口通信
  Serial.begin(9600);
  // 初始化MPU6050传感器
  Wire.begin();
  Wire.beginTransmission(MPU6050_addr);
  Wire.write(0x6B);  // PWR_MGMT_1寄存器地址
  Wire.write(0);     // 将PWR_MGMT_1寄存器设置为0(唤醒传感器)
  Wire.endTransmission(true);
  // 连接舵机引脚
  servo1.attach(servoPin1);
  servo2.attach(servoPin2);
}
void loop() {
  // 读取MPU6050传感器的姿态数据
  int16_t gyroX, gyroY, gyroZ;
  Wire.beginTransmission(MPU6050_addr);
  Wire.write(0x43);  // GYRO_XOUT_H寄存器地址
  Wire.endTransmission(false);
  Wire.requestFrom(MPU6050_addr, 6, true);
  gyroX = Wire.read() << 8 | Wire.read();
  gyroY = Wire.read() << 8 | Wire.read();
  gyroZ = Wire.read() << 8 | Wire.read();
  // 将姿态数据映射到舵机角度范围内(-15到15度)
  int servoAngle1 = map(gyroX, -32768, 32767, -15, 15);
  int servoAngle2 = map(gyroY, -32768, 32767, -15, 15);
  // 控制舵机角度
  servo1.write(servoAngle1 + 90);  // 舵机1角度范围(0到180度)
  servo2.write(servoAngle2 + 90);  // 舵机2角度范围(0到180度)
  delay(100);


3、发动机燃料选择

    正常情况下通用标准配方KN(硝酸钾)65% SB(山梨醇)35%。如果要加入Al或者Fe2O3,则比例需要进行轻微调整:KN 64% Al/Fe2O3 1% SB 35%。在混合加入时,请控制SB的融化温度在约100℃左右。在加入KN时,边加入边搅拌SB,随后充分混合后加入Al/Fe2O3即可。最后,将混合物倒入模具中进行塑形。请注意,浇筑好后的燃料需要进行密封和干燥保存。

该燃料的具体数值如下:

理论比冲:164s

理论特征速度:938m/s

实际特征速度:914m/s

理论燃烧温度:1327摄氏度

实际燃烧温度:1247摄氏度

理论密度:1.841g/cm^3

熔铸密度:1.82g/cm^3

对于采用KNSB燃料的发动机计算公式如下:

F = m˙ * ue注:平均质量流量计算:m˙ = m / t其中m为燃料质量,t为燃烧时间

已知:燃料密度ρ取KNSB的熔铸密度,即ρ=1.82g/cm^3设计中的发动机燃料管内径为50mm,高为250mm,故V = π * r^2 * h,其中π取3.14   

因此V = 490.7cm^3(该结果为估值)

        因此,最终得到m = ρ * V = 893.1g = 0.8931kg(估值),但是在制作过程中,质量肯定会大于该值。

燃烧时间t3s

最终得到m˙ = m / t = 0.2977kg/s

由准备的KNSB数据可得,实际特征速度为914m/s,因此ue = 914m/s

故可得F = m˙ * ue = 272.1N(估值)

        最终推力理论值为272.1N

4 推力测试系列

1)非矢量测试:推力测试平台采用铝合金架构,压力传感器的承受范围为0100Kg,即支持0981N1kg=9.81N)的推力。本项目中的推力测试平台采用水平测试方式,以更好地接近理想情况下发动机的最大推力。在水平测试中,通过水平放置燃料,可以忽略重力的影响,从而在测试过程中仅测量到推力,并且是最大推力。如果需要测试火箭发动机在接近实际状态下的推力,可以采用发动机喷口面向地面的竖直测试。由于发动机产生的推力会受到发动机自身重力和燃料变化的重量影响,因此竖直测试的结果与实际状态下的推力测试结果大致相同。通过竖直测试,可以更好地反映发动机在真实飞行情况下的推力变化。

  试车台结构与测试方法:

压力传感器与隔板通过镶嵌式结构相连,二者通过螺丝固定在试车台的铝合金架中。滑轨与发动机固定架相连。在未启动发动机的情况下,确保喷口的圆心与压力传感器的中心保持在水平线上,然后进行发动机推力测试并绘制图像。

IMG_0405.png IMG_0406.png

压力传感器与隔板镶嵌式连接

①使用SD卡收集数据

首先需要对SD卡进行初始化,然后将推力测试数据以CSV格式存储到SD卡中。在插入SD卡读卡器后,使用csv模块读取数据。最后,可以使用Excel将数据导入并绘制推力测试数据的曲线图。需要注意的是,应变式压力传感器的输出结果单位是kg,需要将其转换为N,可以使用重力加速度9.81 m/s²进行转换(1kg=9.81N)。

Arduino代码:

#include <SPI.h>
#include <SD.h>
File myFile;
// pressure sensor is connected to A0 pin
int sensorPin = A0; 
float pressure;
void setup() {
  Serial.begin(9600);
  if (!SD.begin(4)) {
    Serial.println("Initialization failed!");
    return;
  }
  Serial.println("Initialization done.");
}
void loop() {
  pressure = analogRead(sensorPin) * (5.0 / 1023.0) * 9.81; // Convert the analog reading to pressure in Newton
  myFile = SD.open("data.csv", FILE_WRITE);
  if (myFile) {
    myFile.println(pressure);
    myFile.close();
  }
  else {
    Serial.println("error opening the file");
  }
  delay(1000);
}

Python代码:

import csv
import matplotlib.pyplot as plt
# Read data from a CSV file
with open('data.csv') as csvfile:
    readCSV = csv.reader(csvfile, delimiter=',')
    pressures = []
    for row in readCSV:
        pressure = float(row[0]) # Convert string to float
        pressures.append(pressure)
# Plot the data
plt.plot(pressures)
plt.xlabel('Time (s)')
plt.ylabel('Thrust (N)')
plt.show()

②实时传输数据

     首先需要对SD卡进行初始化,然后将推力测试数据以CSV格式存储到SD卡中。在插入SD卡读卡器后,使用csv模块读取数据。最后,可以使用Excel将数据导入并绘制推力测试数据的曲线图。需要注意的是,应变式压力传感器的输出结果单位是kg,需要将其转换为N,可以使用重力加速度9.81 m/s²进行转换(1kg=9.81N)。

2矢量测试:

  ①X/Y方向推力验证:矢量发动机与普通非矢量发动机的测试不同,因为矢量发动机需要改变喷口的方向,这会导致推力方向的变化。根据牛顿第三定律,作用力与反作用力大小相等、方向相反且作用在同一直线上。因此,在水平测试中,非矢量状态下的推力始终作用在与压力传感器中心水平线上,对普通非矢量发动机的测试结果几乎没有影响。但对于矢量发动机而言,喷口方向发生改变,因此测量到的推力是实际推力的分力。在这种情况下,如果喷口中心轴线相对于水平线有偏转角度θ,测量到的径向力为Fa,则实际推力为Fb。据此,可以推导出理论计算公式Fb=Fa/cosθ,因此在测试台上对矢量发动机进行测试时X/Y方向存在推力且不能忽略。

  ②测试矢量推力方案设计:

    常规的压力传感器无法测量X/Y方向上的推力大小。为了测量X/Y方向上的推力大小,需要使用昂贵的三维压力传感器,它可以同时测量X轴、Y轴和Z轴的力。通过分析三个方向的输出值,可以测试推力的大小和方向。例如,如果X轴和Y轴的输出值都为正,而Z轴的输出值为负,可以推断出力的方向指向X轴和Y轴的正方向,与Z轴相反。考虑到成本因素,我们决定使用3个压力传感器,并将它们安装在不同的位置上。通过比较每个传感器的输出值,并绘制推力图像,可以判断推力的大小和方向。

  ③判断原理:

    如果一个传感器的输出值较大,而其他传感器的输出值较小,可以推断出力的方向是指向那个输出值较大的传感器的方向

  ④具体设计:

    首先,将压力传感器分别安装在不同的位置上(采用等边三角形形式,三个传感器均匀分布)。然后,将每个压力传感器的信号线、电源线和接地线分别连接到Arduino控制主板相应的引脚上。将串联的压力传感器的信号引脚分别连接到Arduino主板的A0A1A2模拟输入引脚上。所有压力传感器的电源引脚连接到Arduino的电源引脚上,地线引脚连接到Arduino主板的GND引脚上。通过USB接口将Arduino主板连接到电脑端。在电脑端使用Python对数据进行矢量计算,然后使用Matplotlib绘制推力-时间图像,以判断推力的大小和方向。

⑤相应代码:

Arduino代码:

void setup() {
  Serial.begin(9600);
}
void loop() {
  int pressure1 = analogRead(A0); // read from sensor 1
  int pressure2 = analogRead(A1); // read from sensor 2
  int pressure3 = analogRead(A2); // read from sensor 3
  // Convert to Newton
  float pressure1_N = pressure1 * (5.0 / 1023.0) * 9.81;
  float pressure2_N = pressure2 * (5.0 / 1023.0) * 9.81;
  float pressure3_N = pressure3 * (5.0 / 1023.0) * 9.81;
  // Construct a string to send to computer
  String toSend = String(pressure1_N) + "," + String(pressure2_N) + "," + String(pressure3_N);
  Serial.println(toSend);
  delay(1000);
}

Python代码:

import serial
import time
import numpy as np
import matplotlib.pyplot as plt
# set up the serial line
ser = serial.Serial('COM3', 9600)
time.sleep(2)
# Create placeholders for data
times = []
pressures1, pressures2, pressures3 = [], [], []
total_force = []
start_time = time.time()
# Loop to continually read from Arduino 
while True:
    try:
        data_line = ser.readline().strip().decode()
        pressure1_N, pressure2_N, pressure3_N = map(float, data_line.split(","))
        pressures1.append(pressure1_N)
        pressures2.append(pressure2_N)
        pressures3.append(pressure3_N)
        
        # Compute vector sum of forces (assuming equal angles between the sensors)
        total_force.append(np.sqrt(3)*(pressure1_N + pressure2_N+ pressure3_N)/2)
        times.append(time.time() - start_time)
        # Real-time plot of thrust over time
        plt.figure(1)
        plt.clf()
        plt.plot(times, pressures1, label='Sensor 1')
        plt.plot(times, pressures2, label='Sensor 2')
        plt.plot(times, pressures3, label='Sensor 3')
        plt.plot(times, total_force, label='Total force')
        plt.legend()
        plt.pause(0.01)
    except Exception as e:
        print(e) # for debugging purposes 
        break

    

七、总结:

    以上就是设计的内容,对于后面设计的过程以及记录将会通过KC论坛、短视频拍摄的方式进行展示,此外需要进行强调的是TVC探空固体火箭的设计有两方面火箭发动机本身设计和推力平台搭建两个方面

 

 

 

 


资金预算
项目方案存在较大问题,预算暂不审核。
用途 规格型号 单价(元) 数量 单位 合计(元)
矢量发动机金属打印部分 不锈钢316L 92 5 460
DS2115舵机 25kg 63 2 126
碳纤维管 外径50mm内径45mm高250mm 104 1 104
环氧树脂管 内径40mm外径44mm高250mm 14 6 84
拉杆 2号M3 4.5 4 18
Arduino UNO R3 64 2 128
MPU-6050六轴传感器模块 18.2 1 18.2
应变式压力传感器 100kg 173 3 519
铝合金框架 4040LZ 43.6 2 m 87.2
普通3D打印 PLA 32 7 224
降压模块 UBEC-15 15 2 30
航模锂电池 3C 2200mAh 25C 11.1V 42 1 42
螺丝杆 M3*100 4.55 3 13.65
长杆螺丝 M6*300 5.37 4 21.48
内6角螺丝钉 M3 21.5 1 21.5
碳纤维定制挡板 48 2 96
申请金额 1993.03 元
项目状态
提交申请
专家审核
管理员复核
结题
申请人已放弃申报
最新进展
来自:航空航天 / 喷气推进自助服务区 / 科创基金
7
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
不毒奶 作者
1年5个月前 IP:陕西
922987


验证X/Y存在推力的时候缺少一个图表示

mmexport1689910614968.jpg

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
不毒奶作者
1年5个月前 IP:陕西
923021

膜片式压力传感器它的弹性敏感元件为周边固定圆形金属平膜片。膜片受压力变形时,中心处径向应变和切向应变均达到正的最大值,而边缘处径向应变达到负的最大值,切向应变为零

力传感器是一种能够直接测量物体所受力的传感器。它可以通过测量物体所受力的大小和方向来确定径向力。力传感器通常具有较高的精度和灵敏度,适用于精确的径向力测量。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
WernerPleischner
1年5个月前 修改于 1年5个月前 IP:广东
923022

为什么每句话包括代码都像GPT分开生成的,连起来牛头不对马嘴

试车台的型材组装还可以“穿模配合”

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
不毒奶作者
1年5个月前 IP:陕西
923024

你没用过shapr3d 嘛,演示过程而已,当你写好代码再使用后ChatGPT会给代码做出修改注解意思


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
荷城工业_Nitload_Industry
1年5个月前 IP:安徽
923036
引用不毒奶发表于4楼的内容
你没用过shapr3d 嘛,演示过程而已,当你写好代码再使用后ChatGPT会给代码做出修改注解意思

代码注释不都是自己即时编写或后期自己补充吗?

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
不毒奶作者
1年5个月前 IP:陕西
923037
引用荷城工业_Nitload_Industry发表于5楼的内容
代码注释不都是自己即时编写或后期自己补充吗?

是的

引用
评论(2)
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
不毒奶作者
1年5个月前 IP:陕西
923467

这里少加了一个对矢量推力系统的原理介绍

内容大致如下:

该设计中,发动机矢量控制系统的原理是利用Arduino主板控制舵机和MPU6050传感器,实现对箭体空中姿态的控制。MPU6050传感器用于读取箭体的姿态数据,然后将输出值传入Arduino主板进行处理。在Arduino主板的算法支持下,输出值将被映射成PWM波,并驱动舵机对矢量喷口进行偏转控制。


引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

不毒奶
机友
文章
6
回复
65
学术分
0
2021/08/23注册,25天1时前活动

SPAL极创工作室创始人,热爱科技制作,创意永无止境

主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:陕西
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}