For my first project at BURPG, I was tasked with designing a nozzle design and creating a test computer for a hybrid rocket using GOX as an oxidizer and paraffin wax as fuel, optimized at 45,000 feet above sea level. This project served as a gateway for me to learn the fundamentals of rocketry, nozzle design, data acquisition systems, and test operations.
At the start of the project, I aimed to calculate the nozzle parameters, draft a schematic for my test computer circuit, and create a block diagram to outline the process flow. This approach gave me a solid foundation before designing it on SolidWorks, soldering the components for the circuit, and coding the microcontroller.
In order to calculate the nozzle geometry and specifications, I was provided with the following parameters.
Given Parameters
From here, I studied the first few chapters of Rocket Propulsion Elements (RPE) by George Paul Sutton and Oscar Biblarz to understand the various types of nozzle configurations, the role of each parameter, and the derivations of key equations. This prepared me to begin the CAD modeling process since I was able to calculate the necessary dimensions of the nozzle.
Nozzle Equations Found From RPE
Hand Calculated Nozzle Parameters
This is an circuit schematic that I developed to control the components necessary to fire the nozzle using an Arduino Nano.
To control the firing process and collect data efficiently, I chose each component with specific functionality in mind:
Arduino Nano: Selected as the microcontroller due to its compact size and my familiarity with coding in C.
Solenoid Valve: Controls the flow of the oxidizer before it enters the engine.
E-match: Ignites the oxidizer to initiate the reaction.
MOSFET: Used instead of a relay due to its faster switching speeds, allowing for efficient control of both the solenoid and e-match.
Load Cell: Convert the mechanical force (thrust) into electrical output signal.
HX711: Amplifies the signal that comes from the load cell, so the Arduino can accurately read the changes in resistance.
SD Card Module: Connects the SD card with the Arduino to save data collected.
If I were to recreate this schematic now, I would use a professional program like Microsoft Visio instead of hand drawing it to make it clearer and more streamlined.
Arduino Microcontroller
This is a hand drawn block diagram that I made to show the process flow for firing the engine with my nozzle while collecting data using the electronic components I selected for the schematic.
Originally, I planned to have the solenoid stay open until I press the button again, However, due to budget constraints and safety concerns, I was limited to a 3-second firing window. A shorter burn time helps conserve fuel while still providing helpful data. Additionally, in the case the button fails during firing, there would be no safe way to shut down the nozzle. So, I added a hard-coded timer as a safety measure. During the test day, we added an additional safety feature during testing, but we still wanted to keep the hard coded timer as an extra layer of safety.
Like the circuit schematic, I would use a software like Microsoft Visio to create a more professional diagram.
Box Diagram/Process Flow Chart
I designed a conical nozzle with a 15-degree half-angle using the dimensions I calculated. I chose this type of nozzle for its cost-effectiveness and ease of manufacturing. Additionally, I read that the efficiency difference is minimal in smaller nozzles. The 15-degree half-angle was selected because it's an unofficial standard referenced in RPE and falls within the optimal range of 12 to 18 degrees for conical nozzles.
In my initial nozzle design, I had many sharp angles, but I later added a curve at the throat to reduce stress concentrations and to create smoother flow.
Note: Unfortunately I do not have my first nozzle design files, so I cannot provide better pictures.
Nozzle-Chamber Assembly
Bell Nozzle versus Conical Nozzle:
With the experience I have now, I would opt for a bell nozzle for a few reasons. Firstly, although the increase in efficiency would still be minor for a subscale nozzle, the resulting exhaust would look more impressive as bell nozzles have lower flow separation. Secondly, designing a more complex nozzle would also have been a valuable learning opportunity. Furthermore, as I ultimately 3D resin printed the nozzle, manufacturing complexity did not become an issue in the end.
Nozzle Design:
Although I incorporated a curve at the throat of the nozzle, I would now include curves at the converging end as well. While the overall length and angle of the converging end of the nozzle don't impact efficiency, it would allow for smoother flow as the fluid moves from the chamber to the throat of the nozzle.
The test computer and data acquisition board was coded using an Arduino Nano that would control timings and receive and save data.
Since the load cell that was used during the nozzle fire was different from the one that I was testing my code with, I needed to find an easy way to find the variance between the load cell. As a result, I wrote the code below that uses a real test weight to find the calibration factor of a specific load cell. This code first asks the user what the test weight is in lbs, then reads 100 load cell values and averages them out. Afterwards, the average gets divided by the test weight to find the calibration factor.
Setup
Finds Load-Cell Calibration Factor
After the load cell calibration is found, a new script is loaded onto the microcontroller.
The code first initializes all of the libraries and variables (including the calibration factor and timings for the EMatch and solenoid). Afterwards, a boolean function call is used to make sure that there is an SD card in the SD card reader. If an SD card is unavailable, the rest of the code will not run. Lastly, the code waits for a button to be press. The firing will only happen once and upon a button press. As the EMatch is firing and the solenoid valve opens/closes, the force of the thrust and the time saved throughout the entire test.
Initiallizes Variables and Timings
Initializes SD Card Reader
Setup
Firing Code
During this phase, I wanted to verify my calculations using SolidWork's finite element analysis tools. But before proceeding, I needed to select a material for 3D printing. Initially, I chose to use Formlabs High Temp resin as it has high heat deflection temperatures, but due to budget constraints, I switched to Elegoo-Abs-like resin since we had it in the lab. For each resin, I simulated the force with a factor of safety of 2 for yield and 3 for ultimate per NASA-STD-5005D.
A bill of materials wasn't necessary since I was limited to materials available in my lab, I still wanted to create a chart that listed the parts/materials I was using alongside my rationale for each.
Prior to soldering my circuit together, I tested my code on an Arduino UNO and used LEDs to act as the EMatch and solenoid. This allowed me to test the timings and ensure that my MOSFET connections were correct.
Unsoldered Circuit (EMatch/Solenoid Replaced With LEDs During Testing)
After testing my code, I used a protoboard to solder all the components together. Additionally, I left open wires at the end to connect a 12V power supply using alligator clips. Since this was my first time soldering with closely spaced joints, there are some things I would change. For example, I would use smaller jumper wires so that it is easier to troubleshoot the circuit.
Completed Soldered Circuit
The nozzle fired successfully, though there was a problem with the circuit when I hooked up the button to the circuit. After some investigation, there was a loose pull down resistor that needed resoldering. Aside from that, I am really pleased with the results of our firing.
The exhaust came out at an angle because the combustion blasted off some of the parrafin wax that was inside the chamber. Although the flow did not come out straight, it did produce an cool sound.