暑假未完工的火箭项目(60mm箭体 RNX燃料 带航电)
暑假只回国40天,花了35天造这火箭,结果还是来不及发射。航电已完工,发动机已定型和测试,就差降落伞和发射架就能上天了。 本来打算用这枚火箭做9月份学校火箭项目的敲门砖的。不过现在看来只能用这未完工的报告去面试了。
(一)火箭设计目的
由于时间很紧迫所以想在一枚火箭上验证尽可能多的事,所以这枚火箭的任务目的特别多,但是由于最后工期不够原定任务计划一直被减少以下会列出原定的和实际使用的
原定
1.    测试和制造RAP燃料,并造PPR,陶瓷喷口发动机上箭
2.    采用冷发射技术(使用加速度和障碍传感器判断出筒和点火),用高压气体作为出筒动力。
3.    航电采集三个轴向的加速度(坐标轴不随芯片方向的改变而变化的)还有 yaw pitch row(也就是偏航 倾角 转了几圈的数据) ,气压, 温度, 高度。并采用电脑输入密码远程遥控点火,姿态判断开伞)
4.    弄明白降落伞的设计过程,和需要计算的公式等。
5.    航拍
6.    用烟雾弹,淘宝上插Sim卡的超迷你定位监听器,蜂鸣器做成的回收辅助系统。(当需要回收时可以在手机上查看目标的方位。误差估计在100m,等到了误差区时遥控点燃烟雾弹,并让蜂鸣器开始响,辅助回收)
7.    用采集到的ypr和 三个轴向的加速度做段重现发射全过程的动画。
实际实行完成
1.    50mm RNX发动机 材质为PPR 喷口为堵漏王螺母
2.    采用热发射技术但是点火模块在箭体内部,并有冷发射时需要的解除安全锁定的红外通讯装置,也就是火箭自己可以完成点火开伞等任务,和外界没有任何有线连接,这点和冷发射所需的是一样的)
3.    航电采集 yaw pitch row 气压 温度 高度 并采用输入密码的远程遥控点火, 姿态判断开伞)
4.    航拍

降落伞和回收辅助系统由于时间不允许还没造,本箭箭体完全完工,发动机完工,航电完工。
全箭已完工部件图
200126

规格图(单位mm)
200127

直观体现下大小
200128

(二)设计和制造过程
明确了目的就开始设计和制造了
1.    航电
由于本人编程只学过matlab属于入门级菜鸟c语言也没学过所以选择了最好入门和现成程序最多的arduino平台。虽然成本高,但是对于我这种工期极度匮乏的人来说以金钱换时间最合适了。 本箭的航电系统由三套系统组成
第一套是淘宝上的CJMCU Arduino Nano-Ahrs 9自由度惯性姿态模块 9轴姿态传感器,它本身就是arduino pro mini,而且程序已经弄好,滤波什么的也都有,可以直接输出高精度的yaw pitch row数据,只需略微修改程序就能和另外一片arduino pro mini实行通讯
中间那块红色竖直的就是这个系统。
200129

这个板子程序改动过的部分就只有easy transefer这个库
程序详见附录1
第二套是姿态判断开伞系统
200130

程序基于彩虹之巅的程序,他的程序经检测非常可靠,我就不在这上传我的程序了。
硬件上的话 是一片arduino pro mini,  MPU6050  micro sd存储模块, 开伞电源和点火电源共用一节七号电池,arduino pro mini的电源都是共用一节9V电池。
我曾经尝试过这种ER14250 一次性锂电池,事实证明这种电池的电流不足以引燃点火头
200131

点火开关用的是IRFZ44N 场效应管, 我买过非常多型号的场效应管,虽然数据表都写着阀值电压4V, 但是在arduino 5V电压输出下能完全导通的只有这个型号。 关于场效应管的接线上张图
200132

第三套是 气压 温度 高度 红外通信点火系统(第一套系统通过单片机直接通信和这部分连着,第一套系统采集的数据由这套系统写入存储卡)
200133

  200134

  200135

  200136

采集后数据存储的文件截图
200141

这里要重点介绍下BMP085用来判断高度的程序
大家知道BMP085只能得到温度和压强数据,高度数据是根据那两个推算的。
这在很多情况下会造成误差非常大。但我找到的这个程序里有修补的语句,你只要修改海平面的大气压数据就能得到比较精确的高度数据

200137

这是原始网址
http://learn.adafruit.com/bmp085/using-the-bmp085-api-v2
如何找到你附近的海平面大气压数据呢,ios系统上有个应用叫做航空气象
200138

在里面找到离你最近的机场
200139

左下角那个修正海压就是你所需要的数据
200140

这个数据每天都不太一样,所以做好的选择是在使用发射指令器和箭载航电红外通讯时把当天的数据直接输入,但我由于时间限制没有写这部分的程序。
程序见附录2
系统组成由 arduino pro mini, CJMCU Arduino Nano-Ahrs , BMP085, IR Transmitter, IR receiver, micro sd存储。
点火一样是IRFZ44N。 由于是冷发射技术测试所以点火也弄成是火箭自行解决的。下面是这种杜邦线公头用来连接点火头,这种既不会太紧也不会太松, 可以在点火后很容易的自行抛射出去。
200142

未完待续
+1  学术分    拔刀斋   2013-08-26   相当系统和高水平的作品,预祝成功
+50  科创币    20!Dopaminor   2013-08-26   高质量发帖
+50  科创币    badboy-fly   2013-08-26   
+500  科创币    焓熵`   2013-08-26   独立的系统设计制造,思路清晰,具有推广意义
+50  科创币    qwe   2013-08-26   
+100  科创币    神の左手   2013-08-26   高质量发帖
+200  科创币    qharryq   2013-08-26   赞一个!
+50  科创币    q81919119   2013-08-27   
+5  科创币    div   2013-08-27   覆盖面很广 很详细
+100  科创币    wesker   2013-08-27   -
+549  科创币    ms1175555   2013-08-28   今天的全给你了,不能不加  预祝成功
+200  科创币    ngc1976   2013-11-17   再接再励
+200  科创币    猎鹰   2013-12-04   快播~~~~~~~~~~
来自 喷气推进
 
2013-8-26 14:06:44
极度深寒(作者)
1楼
接下去介绍下发射指令传输器
程序见附录三
我运用的是APC220模块(APC220是无线数据传输用的数据写着可以传1km,但是传输速度真的不咋地所以就没用来上箭)在电脑上通过串口传送发送密码到 发射指令传输器
发射指令传输器由arduino UNO, IR transmitter, IR receiver,APC220组成
具体工作流程图如下(我的程序并不是很完美有时会发生点火信号已到达,回传的反馈信号确实错误的情况,这种情况稍微改动下程序就可以避免)
1.    发射指令器电源接通
2.    电脑串口收到信息,输入发射密码
3.    在电脑串口上输入发射密码
4.    发射指令器收到密码,并判断,判断密码正确的话发送红外信号(为了防止丢包多发送几遍)密码判断错误的话发送“错误”到串口监视器
5.    箭载航电收到红外信号,进行编码匹配,如果匹配正确延时10s点火,并在2s后发送一个红外信号到发射指令器。匹配失败发送另一组红外信号到发射指令器。
6.    发射指令器收到传回的红外信号并进行匹配。如果是已发射就向串口发送 在10s后发射的信息,如果是错误的话,就在串口显示错误。

以下是发射指令传输器 和箭载航电 进行点火测试的图片
200143

这是演示这套系统的视频
点击此处查看视频
至此航电系统介绍完毕,此航电系统总共用了5层直径6cm的洞洞板
2.    航拍
使用的是Y3000 迷你DV 这种新型号的已经可以拍得清字了,清晰度相当高。
给个链接清晰度里面有写。如果有广告嫌疑的话我马上把链接删了。
http://item.taobao.com/item.htm?spm=a230r.1.0.0.iUdX9H&id=17516829209&initiative_new=1
这里重点介绍我设计制造的这种抽拉式平台。 航电系统是装在箭体内部的,这就使得要发射时要按航拍摄像机的开关和航电系统的开关,还有降落伞点火头的接线都很麻烦,于是我就设计了这种和抽屉原理类似的部件,需要按开关时可以把整个摄像机和开关和接线柱一块拉出箭体外,处理完后再塞回去。然后盖上箭体上的盖子,这样可以省去很多麻烦事也提高安全系数。
200144

  200145

  200146

3.3.    箭体
详细尺寸图(单位mm)
200147

头锥外壳由纸做成加502固化,内部由锥形泡沫加强强度。下面接根内径5mm壁厚3mm的纸管加上胶带增厚做头锥套管。
200148

箭体由内经6cm 壁厚3mm的纸管组成。
200149

发动机套管由直径51mm壁厚3mm的纸管做成,并用502强化固定在箭体内
200150

  200151

尾翼的设计图,尾翼用502和AB胶固定在箭体上。
B/C=2.3
200152

很直
200153

降落伞虽然没空造。但还是发一下我一直造降落伞的方法
图(多啦A梦第26册) 从小学3年级以来一直是这么造的
200154

顺带看留言终结者时关于降落伞材质的选择上图一张
200155
+10  科创币    機   2013-08-26   
+90  科创币    猎鹰   2013-08-26   本来100,马赛克-10
+10  科创币    光谱   2013-08-27   本来20,有码-10
折叠评论
加载评论中,请稍候...
折叠评论
极度深寒(作者)
2楼
4 发动机及燃料
这里先谈一下造RNX燃料的心得,首先RNX燃料真的是太安全了,而且失败率远远低于KNSU。 前段时间有人谈及损耗率特别高的事,除去混环氧树脂时粘在手套上的损耗外基本就没什么损耗了。 有些人损耗率特别高得原因估计是因为直接把硝酸钾和铁红混合后加水重结晶。如果是这么做的话损耗率很高的。如图
200156

  200157

但是如果是先煮硝水,把硝水煮的差不多的时候再加铁红,那损耗率就特别小
200158

200159

  还有点要提下。E44真的不是一般的粘稠, 树脂不是一般的讨厌请一定要带手套,工作平台一定要铺上层东西。压药的话可以用锤子锤擀面杖,或者木工夹。反正我两个都用了。
这是我用来测试发动机的三截药柱,由于是第一次做,脱模时变型了。总重160g,我原来打算直接开放点燃的,后来抱着失败就失败了的想法装进测试发动机了。 这些药柱的内孔都是歪的。只能用来测试,不能上箭。
200160

  200161

发动机材质是50mm PPR热水管 耐压2.0MPA 喷口材质原来打算用陶瓷的。结果家里喷枪坏了,工期又来不及只能换用堵漏王配螺母。
我已经捏好了陶瓷伪拉喷的模具了
200162

  200163

  200164

这是设计图,实际使用时只有扩张段。
200165

堵头和喷口都有各用两根钉子固定
折叠评论
加载评论中,请稍候...
折叠评论
极度深寒(作者)
3楼
这是发动机测试的截图
推力在开始一瞬间突破了20kg 导致弹簧秤爆表了。直接导致了视频后期的数据的不准确
200166

200167

200168

200169

200170

   视频 gopro近距离
点击此处查看视频
以上就是我目前所有完工的部分了。介于要到明年12份才有概率回国,这枚火箭的发射还有很长的时间要等了。 只能希望9月份面试通过,蹭学校的设备造枚火箭把我的航电送上天去检测一回吧。
折叠评论
加载评论中,请稍候...
折叠评论
极度深寒(作者)
4楼
附录(都没包含库文件,因为我的程序都不怎么完美,大家看下参考下就好,接线我会把我自己焊接时的草图贴出,由于程序达不到教程的标准就不出详细介绍了,以后改进后再出,坛里有编程好的也可以帮忙优化下)
(如果需要库文件的留言很多的话我也是可以贴出来的)
200171

附录1(此部分程序只有easy transfer的部分是我改的,其他的都是厂家的源码)
由于代码太长了我直接打包上传了

附录2
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085.h>
#include "SD.h"
#include <EasyTransfer.h>
#include <IRremote.h>
EasyTransfer ET;
IRsend irsend;  
int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
long back=0;
unsigned long time;
int launch=8;
struct RECEIVE_DATA_STRUCTURE{
  //put your variable definitions here for the data you want to receive
  //THIS MUST BE EXACTLY THE SAME ON THE OTHER ARDUINO
  float yawDEG;
  float pitchDEG;
  float rollDEG;
};
RECEIVE_DATA_STRUCTURE mydata;

Adafruit_BMP085 bmp = Adafruit_BMP085(10085);
float seaLevelPressure = 1009;
float temperature;
const int chipSelect = 4;
void setup(void)
{
  pinMode(launch,OUTPUT);
  pinMode(3, OUTPUT);
  Serial.begin(57600);
  SD.begin(chipSelect);
  ET.begin(details(mydata), &Serial);
  bmp.begin();
  irrecv.enableIRIn(); // 初始化红外接收器
  File dataFile = SD.open("data.txt",FILE_WRITE);
  if (dataFile){
    dataFile.print("[s:9]ressure(hpa):    ");
    dataFile.print("\\t");
    dataFile.print("Temperature(C):   ");
    dataFile.print("\\t");
    dataFile.print("Altitude(m):    ");
    dataFile.print("\\t");
    dataFile.print("YPR:    ");
    dataFile.print("\\t");
    dataFile.println("time(ms)");
    dataFile.close();
  }
}

void loop(void) {
  time = millis();
  ET.receiveData();
  sensors_event_t event;
  bmp.getEvent(&event);
  bmp.getTemperature(&temperature);
  File dataFile = SD.open("data.txt",FILE_WRITE);
  if (dataFile){


    dataFile.print(event.pressure);
    dataFile.print("\\t");
    dataFile.print(temperature);
    dataFile.print("\\t");
    dataFile.print(bmp.pressureToAltitude(seaLevelPressure,
    event.pressure,temperature));
    dataFile.print("\\t");
    dataFile.print(mydata.yawDEG);
    dataFile.print("\\t");
    dataFile.print(mydata.pitchDEG);
    dataFile.print("\\t");
    dataFile.print(mydata.rollDEG);
    dataFile.println(time);
    dataFile.close();  
    delay(1);  
  }
  if (irrecv.decode(&results)){
    back=results.value;
    if (back==2155813097){
       if (dataFile)
      {
        dataFile.println("launched");  
        dataFile.close();
      }
      delay(2000);
      irsend.sendSony(0xa90, 12);
      irsend.sendSony(0xa90, 12);
      irsend.sendSony(0xa90, 12);
      irsend.sendSony(0xa90, 12);
      irsend.sendSony(0xa90, 12);
      irsend.sendSony(0xa90, 12);
  
      delay(10010);
      digitalWrite(launch,HIGH);
    
      delay(2000);
      digitalWrite(launch,LOW);
      irrecv.resume();
    }
    else
    {
      irrecv.resume();
    }
  }
}


附录3
#include <IRremote.h>                  
IRsend irsend;  int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
int val=0;
int back=0;
int pan=0;
void result()
{
  if (irrecv.decode(&results)){
    back=results.value;
    irrecv.resume();
    if (back==21677){
      Serial.println(F("launch_in_10seconds"));
    }
    else{
      Serial.println(F("Error"));
      }
    }
  }

  void setup()
  {
    Serial.begin(9600);
    Serial.println(F("Enter_launch_password"));
    irrecv.enableIRIn(); // 初始化红外接收器
    pinMode(3, OUTPUT);

  }

void loop(){
  result();
  if (Serial.available() > 0) {
    val=Serial.read();
    if (val==49){

      irsend.sendNEC(0x807F18E9, 32);
      irsend.sendNEC(0x807F18E9, 32);
      irsend.sendNEC(0x807F18E9, 32);
      irsend.sendNEC(0x807F18E9, 32);
      irsend.sendNEC(0x807F18E9, 32);
      irrecv.enableIRIn();

    }
  }
}
折叠评论
加载评论中,请稍候...
折叠评论
5楼
预祝楼主成功!!!
折叠评论
加载评论中,请稍候...
折叠评论
6楼
相当系统和高水平的作品,可以作为同级别火箭的模范教材,预祝成功
折叠评论
加载评论中,请稍候...
折叠评论
7楼
我说哪怎么推力这么低原来是报表了[s:275][s:275]
折叠评论
加载评论中,请稍候...
折叠评论
8楼
哇哇哇,菜鸟我学习了
折叠评论
加载评论中,请稍候...
折叠评论
9楼
航电电源有没有试过用Cr123a之类的?你这个型号的电池没见过几次。。ps第一张图头锥有些歪了[s:178]
折叠评论
加载评论中,请稍候...
折叠评论
10楼
楼主可以试试用KNSU的粉末来瓷化喷管, 迅龙同志写过一篇关于用KNSU瓷化喷管的帖子
折叠评论
加载评论中,请稍候...
折叠评论
11楼
回 1楼(极度深寒) 的帖子
流言终结者!!!!!!! [s:274]
折叠评论
加载评论中,请稍候...
折叠评论
2013-8-27 10:39:44
12楼
楼主的帖子指导性很强,参考性也很强~
折叠评论
加载评论中,请稍候...
折叠评论
13楼
覆盖面很广 很详细
折叠评论
加载评论中,请稍候...
折叠评论
2013-8-28 00:38:52
14楼
相当系统和高水平的作品,可以作为同级别火箭的模范教材,预祝成功..........
折叠评论
加载评论中,请稍候...
折叠评论
2013-8-29 14:42:48
2013-8-29 14:42:48
15楼
楼主整套设备和设计都代表了当前的主流水平,对楼主的毅力和精神表示赞扬。唯有那该死的弹簧秤。。。非常之二。

目前推力测量的主流是应变片+采集装置,目前航天局已经推出USB推力计套件(附上位机软件),提供高精度大量程的推力采样:
https://www.kechuang.org/t/58561

您可以联系本人订购,不带应变片全套65,已售出3套。另外也可以用arduino+HX711模块(淘宝价12元左右)采集。
折叠评论
加载评论中,请稍候...
折叠评论
2013-8-31 02:37:44
2013-8-31 02:37:44
极度深寒(作者)
16楼
回 15楼(novakon) 的帖子
本来就是打算找你订的。。后来时间来不及只能搞个弹簧秤凑合了。。
折叠评论
加载评论中,请稍候...
折叠评论
2013-11-11 14:11:15
2013-11-11 14:11:15
17楼
楼主  你做的这个项目 我一直都在研究 希望你能留个联系方式  交流一下
折叠评论
加载评论中,请稍候...
折叠评论
2013-11-16 13:33:03
2013-11-16 13:33:03
18楼
额,原来用纸筒也可以制作大火箭发动机啊。[s:14]
折叠评论
加载评论中,请稍候...
折叠评论
2013-11-17 15:12:36
2013-11-17 15:12:36
19楼
....马克 留下来学习 发射一枚自制火箭 几乎是我的梦想啊...
折叠评论
加载评论中,请稍候...
折叠评论
极度深寒(作者)
20楼
1996615xp 发表于 2013-11-16 13:33
额,原来用纸筒也可以制作大火箭发动机啊。


纸筒是箭体。。。
折叠评论
加载评论中,请稍候...
折叠评论

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

ID:{{user.uid}}
{{user.username}}
{{user.info.certsName}}
{{user.description}}
{{format("YYYY/MM/DD", user.toc)}}注册,{{fromNow(user.tlv)}}活动
{{submitted?"":"投诉"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png