Project in progress
Rocket Auto Abort System!

Rocket Auto Abort System! © GPL3+

This system can do a number of things for your rocket!

  • 2,406 views
  • 0 comments
  • 12 respects

Components and supplies

Necessary tools and machines

09507 01
Soldering iron (generic)

Apps and online services

About this project

The project began when Delta Space Systems was founded and started creating rockets. We soon developed a system capable of sending high voltage anywhere on the rocket. Now it sends power anywhere on the rocket when it tilts over to a certain degree. These videos explain how it works.

The new rocket!

Channel Trailer for all of the videos!!!

Parachute Test 2

Avionics 1.0

Parachute Test 1

Code

Horizon_Avionics_HDV4_1.0.inoC/C++
//DeltaSpaceSystems2019//

#include <elapsedMillis.h>
#include "Wire.h" // This library allows you to communicate with I2C devices.
int led = 3;
int relay = 2;
int a;
int ax;
int ay;
int az;
int i;
const int MPU_ADDR = 0x68; // I2C address of the MPU-6050. If AD0 pin is set to HIGH, the I2C address will be 0x69.
int16_t accelerometer_x, accelerometer_y, accelerometer_z; // variables for accelerometer raw data
int16_t gyro_x, gyro_y, gyro_z; // variables for gyro raw data
int16_t temperature; // variables for temperature data
char tmp_str[7]; // temporary variable used in convert function
char* convert_int16_to_str(int16_t i) { // converts int16 to string. Moreover, resulting strings will have the same length in the debug monitor.
  sprintf(tmp_str, "%6d", i);
  return tmp_str;
 
}
void setup() {
  Serial.begin(9600);
  pinMode(relay, OUTPUT);
  digitalWrite(relay, LOW);
   pinMode(led, OUTPUT);
  digitalWrite(led, LOW);
  Wire.begin();
  Wire.beginTransmission(MPU_ADDR); // Begins a transmission to the I2C slave (GY-521 board)
  Wire.write(0x6B); // PWR_MGMT_1 register
  Wire.write(0); // set to zero (wakes up the MPU-6050)
  Wire.endTransmission(true);
}
void loop() {
  Wire.beginTransmission(MPU_ADDR);
  Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H) [MPU-6000 and MPU-6050 Register Map and Descriptions Revision 4.2, p.40]
  Wire.endTransmission(false); // the parameter indicates that the Arduino will send a restart. As a result, the connection is kept active.
  Wire.requestFrom(MPU_ADDR, 7*2, true); // request a total of 7*2=14 registers
  
  // "Wire.read()<<8 | Wire.read();" means two registers are read and stored in the same variable
  accelerometer_x = Wire.read()<<8 | Wire.read(); // reading registers: 0x3B (ACCEL_XOUT_H) and 0x3C (ACCEL_XOUT_L)
  accelerometer_y = Wire.read()<<8 | Wire.read(); // reading registers: 0x3D (ACCEL_YOUT_H) and 0x3E (ACCEL_YOUT_L)
  accelerometer_z = Wire.read()<<8 | Wire.read(); // reading registers: 0x3F (ACCEL_ZOUT_H) and 0x40 (ACCEL_ZOUT_L)
  temperature = Wire.read()<<8 | Wire.read(); // reading registers: 0x41 (TEMP_OUT_H) and 0x42 (TEMP_OUT_L)
  gyro_x = Wire.read()<<8 | Wire.read(); // reading registers: 0x43 (GYRO_XOUT_H) and 0x44 (GYRO_XOUT_L)
  gyro_y = Wire.read()<<8 | Wire.read(); // reading registers: 0x45 (GYRO_YOUT_H) and 0x46 (GYRO_YOUT_L)
  gyro_z = Wire.read()<<8 | Wire.read(); // reading registers: 0x47 (GYRO_ZOUT_H) and 0x48 (GYRO_ZOUT_L)
  
  // print out data
  Serial.print("aX,"); Serial.print(convert_int16_to_str(accelerometer_x));
  Serial.print(",aY,"); Serial.print(convert_int16_to_str(accelerometer_y));
  Serial.print(",aZ,"); Serial.print(convert_int16_to_str(accelerometer_z));
  // the following equation was taken from the documentation [MPU-6000/MPU-6050 Register Map and Description, p.30]
  Serial.print(",tmp,"); Serial.print(temperature/340.00+36.53);
  Serial.print(",gX,"); Serial.print(convert_int16_to_str(gyro_x));
  Serial.print(",gY,"); Serial.print(convert_int16_to_str(gyro_y));
  Serial.print(",gZ,"); Serial.print(convert_int16_to_str(gyro_z));
ax=accelerometer_x/100;
ay=accelerometer_y/100;
az=accelerometer_z/100;

  a=(sq(ax)+sq(ay));    //gets tilt calc
  Serial.print(",Calculation,"); Serial.print(a);
  Serial.println();

  if (a>8000){    // this detects launch acceleration
    digitalWrite(relay, HIGH);
 delay(5000);
 digitalWrite(relay, LOW);}
  Serial.print("Fire Pyro");
    Serial.println();
    digitalWrite(led, HIGH);
  delay(100);
 digitalWrite(led, LOW);

  }

Schematics

Auto Abort System
Screen shot 2019 04 14 at 6 m26752wctk

Comments

Similar projects you might like

Delta Thrust Vector Control Rocket Guidance System

Project in progress by UniverseRobotics

  • 1,992 views
  • 3 comments
  • 13 respects

Advanced Rocket Launch Pad

Project in progress by UniverseRobotics

  • 2,807 views
  • 2 comments
  • 14 respects

Android App-Based Home Automation System Using IOT

Project tutorial by Team Autoshack

  • 43,118 views
  • 21 comments
  • 121 respects

Plant watering alarm system with arduino

Project tutorial by Giannis Arvanitakis

  • 6,119 views
  • 1 comment
  • 10 respects

Modified Aquariumatic Management System (AMS IoT App)

Project in progress by Basem

  • 4,206 views
  • 0 comments
  • 6 respects

Heart Rate Monitoring System

Project tutorial by HRMS

  • 21,673 views
  • 9 comments
  • 37 respects
Add projectSign up / Login