"Rockets! I want to build and test rockets!"
That's what my oldest son told me when we began discussing what he wanted to do for his school science fair project this year. During a class launch last year he had noticed that some rockets appeared to launch faster than others and they were all using the same rocket engine so he thought some rockets must be heavier than others or maybe the fins made a difference. For his science fair project this year what he wanted to learn about was acceleration and prove that a heavier rocket would accelerate less quickly than a lighter weight rocket.
In order to prove his hypothesis we needed to build a rocket and launch system where the only variable would be the mass of the rocket. We thought about using traditional solid propellant rocket motors but we had not devised a method of testing the motors to ensure the consistency of motor power output. For this reason we decided to use compressed air as a power source since we could accurately monitor the air pressure in the air launcher. We also liked the idea of air rockets as some solid propellant rockets that can carry a payload can reach very high altitudes and we were concerned with the possibility of losing a rocket and our data.
In order to measure the acceleration during each launch we made a very simple circuit using a three axis accelerometer with a range of +/- 16g. The data from the accelerometer was logged on a micro SD card during launch so we could analyze it later. This way we could launch over and over again during one launch session in order to try and remove weather as a variable.
This is a great project for introducing kids to the scientific process, coding, electronics, soldering and making rockets. The rockets are very inexpensive to make and once the launcher is built they cost nothing to launch and you can launch them over and over again in a very small field.
This project does require the use of a soldering iron and sharp cutting tools so be sure to take the necessary safety precautions when assembling the rocket, launcher and circuit.
Now let's gather our materials and build some rockets!
Step 1: Tools and Materials
In order to build our rocket and launcher we're going to need a few items. Most everything but the electronics and a few tools can be sourced at a big box home improvement store.
X-Acto knife with #11 blade
Small tub or bucket (for thinning glue with water)
1" wide paint brush (for applying glue)
Hacksaw (for cutting PVC pipe)
Materials for the rocket:
24" long 3/4" schedule 40 PVC pipe (used a form for making paper tubes)
3/32" balsa sheet
Balsa wood blocks (for making a nose cone and coupler but these can be purchased pre made)
Materials for the air launcher:
16" long 2" schedule 40 PVC pipe
24" long 3/4" schedule 40 PVC pipe
8ea "AA" batteries
2ea 4 "AA" battery holders
10ft 2 conductor wire
Bicycle tire valve
Bicycle tire pump
4ft 1/4" ID x 1/2" OD high pressure air hose
2ea 1/2" hose clamps
PVC pipe cement
PVC pipe cement primer
Materials for the data logger:
3.3V FTDI adapter (for programming the Pro Mini)
Micro SD card
Heat shrink tubing
Step 2: Rocket Construction
Building the rocket is pretty straightforward as there is no motor mount, parachute, launch lug or shock cord. Gravity is our only recovery system...
Since our rocket is air powered it needs to precisely fit our launch tube and that means making our own wound paper tubes. Thankfully there's an awesome Instructable for that!
The only modification we need when making our tubes is to first cover the launch tube with three layers of paper before wrapping our three final tube layers- do not glue the first three layers as these will be removed later. The reason for these additional layers is when the glue dries the tube will shrink a fair bit. If you don't account for this shrinkage with additional layers first the finished paper tube will be too small to slide easily over the launch tube.
We found the easiest way to cut the paper into accurate width strips is to get a large ruler or wide piece of rigid material to use as a guide with a rotary cutter. By using a 2" wide Aluminum ruler we could cut perfect width strips very quickly. This makes a huge difference in the ease of wrapping the paper tubes since the paper strips were extremely consistent in width. Three layers of wrapped paper makes for a reasonably strong and light weight tube.
Once the finished tube is dry it can be slid off the 3/4" PVC pipe after trimming the ends with a knife. Then you just reach in the end of the tube and pull out the three under layers. The finished tube should be a perfect fit on the launch tube and its inside diameter is just large enough to fit the data logger circuit.
Once the rocket body tube is made it needs to be cut in order to create a payload section. We cut the payload section to a length of 5 1/2" and the main body tube to a length of 7". The length of these sections isn't super critical. The payload section is attached to the main rocket body tube with a 2 1/2" long solid balsa wood coupler/plug. The plug slides into each tube section and is glued to the top of the lower body tube and the bottom of the payload section. This plug is what the high pressure air from the launcher pushes against in order to force the rocket off the launch tube. A solid balsa nose cone is then fitted to the top of the payload section. We made the nose cone a total length of 3" with almost 1" fitting inside the top of the payload section. The nose cone should be a very snug fit.
You can buy all kinds of balsa nose cones and couplers but I turned ours from balsa wood blocks using a lathe. Carving nose cones and couplers from insulation foam would also be an option.
We cut the fins from 3/32" thick balsa sheet and glued them to the main tube using super glue followed by filling any gaps with white glue. We decided to use four fins vs. three in hopes of obtaining more stable launches. The pattern for the fins came from the Juno rocket here. The finished weight of our rocket is 30 grams.
Step 3: Build the Launcher
The compressed air launcher is very similar to a launcher featured in Make Magazine with a couple of small differences. The most important change we made was to add a pressure gauge to read the air pressure in the air chamber. Being able to read the air pressure in the chamber means we can get very consistent launch power.
The main body of the launcher is made from a 16" long section of 2" schedule 40 PVC pipe. A 2" coupler with a plug cap is fitted to each end of the main body. When cementing the PVC pieces together be sure to use a primer to prep the joints before applying PVC cement. One of the plug caps has a short length of schedule 40 3/4" PVC fitted and then a 3/4" Tee is fitted to the 3/4" pipe. Another short length of 3/4" pipe is fitted to the opposite side of the Tee and this is fitted to a 3/4" threaded fitting that attaches to the inline sprinkler valve. The opposite side of the sprinkler valve has a threaded 3/4" slip fitting with a 16" long schedule 40 PVC pipe for the launch tube.
The other 2" PVC plug cap has 3/4" slip x 1/2" female thread fitting attached. A 1/2" x 1/4" threaded adapter is then used to attach a 1/4" threaded hose barb to the 2" plug cap. A 1/4" ID high pressure hose is then secured to the hose barb with a hose clamp and a bicycle tire valve is fit to the other end of the hose with a second hose clamp. I cut the tire valve out of a spare bicycle inner tube I had in my garage.The finished launcher is wrapped with duct tape for protection in case the PVC pipe should ever fail under pressure.
The sprinkler valve is powered using 8 "AA" batteries so when a button is pressed the sprinkler valve is actuated and the air shoots out the launch tube. The battery packs are connected in series to make a 12V power source. The positive wire from the battery pack goes to one wire of the sprinkler valve. The other sprinkler valve wire is connected to the launcher push button switch with a long wire. Another long wire connects the push button switch to the battery pack negative wire so when the launcher push button switch is pressed it completes the circuit. The air launcher is attached to an old telescope tripod I had on hand using large zip ties.
I found an Aluminum project box in a dumpster along with a key switch so I mounted the "AA" battery holders in the box and wired the key switch in series with the launch push button. This way it's harder to trigger a launch by accident and it looks a lot nicer than before.
Overall this is a very simple and reliable launch system that is very quick to build!
Step 4: Building the Data Logger
We need to build a circuit to log accelerometer data.
This is a very simple circuit to build as it has very few parts and just a few connections. Since it's such a simple circuit it's a good first project for learning how to solder. The circuit is based around a 3.3V Arduino Pro Mini, an Adafruit ADXL 326 analog accelerometer and a Sparkfun OpenLog. The Pro Mini reads the output from the accelerometer and the OpenLog records the data on a micro SD card.
In order to keep the circuit as small and light weight as possible the OpenLog and accelerometer were connected directly to the Pro Mini using pin headers and a small two row section of prototyping board. We took the male seven pin header that shipped with the accelerometer board and soldered the prototyping board directly to the analog input pins on the Pro Mini. We began with pin 13 and soldered all seven pins. Next we soldered a seven pin female machine pin header on the next row of holes on the prototyping board. The female machine pin header is oriented so the accelerometer board is situated underneath the Pro Mini.
Now we bridged four pins from the female header to the pins soldered to the Pro Mini- these pins connect the accelerometer X axis to analog in pin 0, Y axis to analog in pin 1, Z axis to analog in pin 2 and the accelerometer 3V pin to VCC on the Pro Mini. The GND pin from the accelerometer is connected to the GND pin on the opposite side of the Pro Mini with a short length of wire.
Next we soldered a six pin female machine pin header to the top of the Pro Mini- this is used to connect the Open Log to the Pro Mini and it's also used as a programming port. We soldered male machine pin headers to the OpenLog and accelerometer board. I really like these machine pin headers as they are very low profile and they have a very solid connection compared to standard headers.
Finally we soldered a battery connector to the Pro Mini. This was made with short lengths of wire and a two pin female machine pin header. These wires were soldered to the pins marked GND and RAW on the Pro Mini. The ends of the wires at the pin header were covered with heat shrink tubing for protection. The JST connector was cut from the LiPo battery leads (don't throw it away!) and a matching male pin header was soldered to the battery leads and they too were covered with heat shrink tubing. I ended up shortening the battery leads quite a bit to save weight and space. Note that when the data logger is placed in the rocket the X axis arrow on the accelerometer needs to point up in order for it to work properly.
To charge the battery a matching two pin female connector was soldered to the cut off JST connector and this is then plugged into the single cell LiPo charging circuit to charge the battery. The finished weight of the data logging circuit and battery came to 12.03 grams.
Now that the circuit is done it's time for programming...
Step 5: Program the Data Logger
Let's load some code!
Programming the Arduino is super easy. If you're not familiar with Arduino I wrote a basic guide to programming here.To program the Arduino you need to unplug the OpenLog board as it shares the same pins as the FTDI board needs during programming. The machine pin headers are a slightly different size than standard headers so I connect the FTDI board using jumper wires.
Once the Arduino is programmed you can plug the OpenLog back into its header, connect the battery and check it out- there a couple of LEDs on the OpenLog that should light up. It should log data to the SD card just like what is shown in the photo- it will be labeled LOG#####.TXT on the SD card. The OpenLog is configured to communicate at 9600 baud rate so it's good to go out of the box. If you have trouble with it open up the SD card and look at the file labeled CONFIG.TXT and make sure the first line at the top says 9600- if the baud rate doesn't match the card won't record data properly.
Every time you disconnect the battery and plug it back in the OpenLog will create a new log file on the SD card.
I've included the data logging code here so you can download it. For our experiment we only needed to read the accelerometer X axis but I went ahead and read all three axis anyway. Once the programming is complete it's time to place the data logger in the rocket and launch it.
On to the launch site!
Step 6: Launch!
3, 2, 1, launch!
For our first launch I suggested we should pump the launcher up to 60 psi. I figured that would give us a solid launch and not shoot the rocket too high. Boy was I wrong! I couldn't believe how high the rocket went and it came screaming down with a loud "thud" when it slammed into the ground. It didn't sound good... The rocket hit the ground so hard the nose cone slammed back into the body like a cork and I had to pry it out.
Upon turning the rocket over I saw there was a large hole torn in the side where the collapsed nose cone had pushed the data logger circuit back and out of the body. We also broke a fin. I was able to retrieve the circuit but the SD card had ejected and was nowhere to be seen- not only was our rocket damaged but we had no data to show for it. Bummer!
I noticed the circuit was no longer functioning so I unplugged the battery and plugged it back in- still no power. We packed everything up, went home and started troubleshooting. The first thing we checked was the battery and it showed 4.17V on the multimeter but when it was plugged back in the circuit wouldn't power up. Next we checked the circuit by plugging it into my laptop and it was getting power. Very strange.
Going back to the battery we discovered it was showing proper voltage but it couldn't provide any current- as soon as it was plugged into the circuit the voltage would immediately drop at the circuit input. Upon examining the battery's built in protection circuit we discovered one of the tiny circuit chips on the protection circuit had been torn off in the crash. We plugged a spare battery into the circuit and now the circuit would power up -but it wouldn't log any data. The data transmission LEDs on the OpenLog weren't lighting up either. Next we connected the board back to the laptop and no data transmission there either. On our first launch we managed to kill both our rocket and our data logger. Double fail!
But we can rebuild it. We have the technology....
Step 7: Repair!
We got lucky.
As it just so happened I had another Arduino Pro Mini board on hand. The only problem was this board was the 5V version. Luckily I had a 5V boost regulator board on hand that would bump our battery voltage to 5V to power it. Since the wonderful Adafruit accelerometer board and OpenLog can both handle both 3.3V and 5V input we were back in business.
We took a bit of prototyping board and quickly assembled a new circuit. Since our OpenLog and accelerometer board survived the previous crash all we had to do was connect the power output from the 5V boost regulator to the VCC pin on the Pro Mini. All of our other connections remained the same but we had to construct it a bit different than our previous circuit due to the necessary boost regulator- all we did was run point to point wires for each of the connections for the accelerometer, power and ground. After uploading our code our circuit was ready to log some data. This circuit was slightly heavier than the first version at 15.28 grams.
I knew that since we were now using a 5V board instead of a 3.3V board to read our accelerometer the numbers logged would be a bit different. Normally if you connect a 5V sensor to a 5V Arduino you would see values that range from a minimum of 0 to a maximum of 1023. When you use a 3.3V sensor with a 5V Arduino the values will range from 0 to 675 because of the voltage/scaling difference. 3.3/5 * 1023 = 675. This is will make sense later when we review the data.
The fin was glued back on the rocket and we taped over the hole in the side of the rocket. The nose cone fit was repaired with some tape and we were good to go!
Back to the launch site!
Step 8: Launch Again!
Let's try that again...
We set up to launch again- but with a bit less power this time! We took the precaution of taping the nose cone to the body to keep it from collapsing into the body tube and this time we pumped up the launcher to 20 psi.
3, 2, 1... successful launch! I still couldn't believe how high the rocket went but it didn't come down nearly as hard this time due to the decreased altitude. After our launch we opened up the rocket and unplugged the battery from the data logger in order to reset it. Next we added our 5 gram weight and then closed the rocket back up and taped the nose cone shut before launching again.The weights were nothing more than a few BB's rolled up in duct tape pouch.
On the second launch everything was kept the same except for the additional 5 grams added- air pressure was kept the same at 20 psi. Once the rocket came back we repeated the process with a 10 gram weight added. On the third launch with the 10 grams added the rocket came back noticeably faster and the nose cone was pushed into the rocket body a bit. We opened up the rocket and retrieved our data logger. The perfboard that we used to build the circuit had fractured during landing but everything was intact and more importantly we had our data this time! I would definitely recommend putting some crumpled paper or cotton balls between the nose cone and data logger to cushion the electronics in a hard landing.
With our data safely tucked away we stayed at the site for a while launching over and over again (this time at 60 psi and higher.) We soon had a small group of kids around us wanting to check out our rocket launcher. It was pretty exciting and the kids had a ton of fun.
Step 9: Analyze the Data
Graphs and numbers time!
When you read the data from the SD card you'll see there are four columns of numbers. The first column is the elapsed time in milliseconds. The next column is the the accelerometer X axis reading, followed by the Y and Z axis. For the purpose of this experiment, what we really care about is the X axis data as that shows the vertical acceleration of the rocket.
The accelerometer has a range of +/- 16g. At 0V we would get a reading of -16g and at 3.3V we would see +16g. The Arduino interprets this reading as a numerical value ranging from 0 to 1023 (this is called 10 bit resolution.) Now remember that I said the value would change when using a 3.3V sensor with a 5V Arduino? When using a 5V Arduino the maximum value interpreted will be 675 instead of 1023. Our logged accelerometer data reflects this.
On our first launch the maximum accelerometer X axis value recorded is 664. With an additional 5 grams the max value is 398 and with 10 grams added the max value is 635. If we convert these numbers to g values (675 = +16g) we get +15.73g for the first launch, +9.43g for the second launch and +15.05g for the third launch.
So why are the the recorded numbers lower for the second launch?
In order to see what is going on let's make a line plot for each launch. First change the name of the .TXT file for each log to .CSV so it can be uploaded to a site like Plot.ly. This allows us to plot a line chart and zoom in and examine the acceleration data during the launch. On the second launch you can see the plot bounces up and down during the launch vs. it being near vertical for the other two launches. This could indicate the data logger possibly shifted around during the launch. The first and last launch plots are more clear- there is a rapid acceleration recorded and clearly the heavier rocket had slower acceleration.
We only recorded these three launches but ideally you would record as many launches as possible in as short a time as possible in order to gather the most accurate data.
Why does the acceleration drop for a heavier rocket?
Because physics! Newton's Second Law of Motion states that the net force on an object is equal to the mass of the object multiplied by the acceleration of the object- or more simply put: force equals mass times acceleration.
This Law is expressed in the formula F=ma. F=force (in our case the 20psi air pressure of our launcher), m=mass (the mass of our rocket) and a=acceleration (the recorded acceleration of our rocket.)
If we change this equation to solve for acceleration (what we measured) we get a=F/m. From looking at this equation and dividing the force by the mass we can see that since our launch force is constant, the higher the rocket mass the lower the acceleration number.
This formula tells us that in the case of our second launch there must have been a problem with the launch or with our data logging and this is shown by the accelerometer graph plot.
Step 10: Going Further
If you look at the logged data you will see the difference in logged sample times in milliseconds. The time difference between readings is on average 20 milliseconds -we're taking a reading every .02 seconds. This means we're logging data at a rate of 50Hz, or 50 samples per second since 1/.02 = 50.
What if we want to log data at a faster rate?
We can change the Arduino code to get more data points. If we change the baud rate we can speed up the data transmission and capture more samples. The default baud rate on the Arduino and OpenLog is 9600 but we can go all the way up to 115200.
To change the baud rate we simply replace 9600 with 115200 in the Arduino code. You also have to change the baud rate for the OpenLog SD card to match, otherwise the card will just log gibberish. To change the OpenLog rate we change the first value in the CONFIG.TXT file on the SD card. Once this is done you'll see that we are now logging data every 4 milliseconds or .004 seconds. That's 250 Hz or 250 samples per second.
In order to really take full advantage of this you need to change the accelerometer board as the Adafruit ADXL 326 board is set to 50Hz. By looking at the manufacturer's data sheet you can see it's possible to increase that bandwidth by swapping out some capacitors. For the purpose of our experiment this really wasn't necessary but it would be interesting to pursue this option later...
Now that we're able to measure acceleration we could alter percentages of weight or launch force and run multiple back to back tests in order to see if our experimental data backs up our math. If it doesn't that means we have variables in our testing procedure that are affecting the outcome. Further testing could include three fins vs. four or various shapes of nose cones or fins and asking: How does aerodynamics affect the acceleration? We can also add an altitude sensor to the rocket can tell us how changes to our rocket affects the launch height.
If you want to build a slimmer rocket use 1/2" schedule 40 PVC pipe for the launch tube and rocket body tube mandrel. A slimmer rocket will have less drag and should be able to obtain higher launches but it will require modifying the data logger circuit in order to get it to fit inside the slimmer rocket body. The sky's the limit with what you can build and test!
This was a great project for my son and I to do together and he had a blast doing it. He learned about the scientific process, how to solder, program an Arduino, overcome failure and build rockets! I hope others can put this instructable to good use and if you have any questions please don't hesitate to ask!
Step 11: Additional Resources
If you don't want to build your own air launcher you can buy one here-
National Association of Rocketry educational resources. This is a great guide for all things educational relating to rocketry-
Make: Rockets- A fantastic book on hobby rocketry. If you have even the slightest interest in hobby rocketry this book is worth every penny!
Runner Up in the