Cole Purtzer
Published © GPL3+

Hybrid Rocket Engine

This rocket engine was designed with the priority to go to space!!!!

AdvancedWork in progress7,537
Hybrid Rocket Engine

Things used in this project

Hardware components

Teensy 3.1
Teensy 3.1
×1
Resistor 1k ohm
Resistor 1k ohm
×7
Arduino Nano R3
Arduino Nano R3
×1

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)

Story

Read more

Schematics

Schematic

Code

Horizon_Avionics_HDV4_1.0.ino

C/C++
//DeltaSpaceSystems2019//


#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){    
    digitalWrite(relay, HIGH);
 delay(5000);
 digitalWrite(relay, LOW);}
  Serial.print("Fire Pyro");
    Serial.println();
   

  }

Credits

Cole Purtzer

Cole Purtzer

16 projects • 211 followers
Hey I am Cole, the lead engineer at Delta Space Systems! Youtube Channel: https://www.youtube.com/channel/UC7Nhgj_PVCtroPXHMhdku-g

Comments