In this instructable we will show you how to build an air pressure rocket launcher system with all the support electronics monitor the cannon air pressure, wind speed and controlling the firing mechanism.
Here's a glimpse of what the instructable is about:
All the project files can be found in our git repository and will be linked when needed
Step 1: Building the Air Cannon
2 x 2" Tube, 15cm length
2 x 2" Cap
1 x 2" T-Junction
1 x 2" to 1" Reducer
1 x 1" to 1/2" Reducer
1 x 1" Nipple
1 x 1" Tube, 50cm length
1x 1/2" Tube, 50cm length
1 x Tire valve
1 x Hose fitting or Naylon screw
1 x Solenoid valve 24v AC 125mA
1 x Hose, 1.6mm I.D, 4.8mm O.D (find it here)
Silicone tube to glue the parts if needed
All the materials you can find in a garden and hardware store.
It's recommended to buy some extra caps in case you ruin it with a bad drilling.
First we need to drill holes in one cap in order to insert the tire valve and the fitting for the hose.
For the valve hole measure the middle diameter and select smaller drill bit, for example if you measure 15mm diameter, drill 12.5mm - 13mm hole so the valve will be tight and prevent air leakage.
The hose that we will use is 1.6mm inner diameter and 4.8mm outer diameter so we can use fitting with 4mm diameter. If you can't find that fitting you can create one with Naylon M4 screw and drill bit of ~1.5mm. Make through hole in the screw to allow air to flow.
In the cap it's recommended to cut threads so we can screw the Naylon screw inside.
We use 3.3mm drill bit and screw tap for M4 thread.
You can see here how to use screw tap: http://www.wikihow.com/Use-a-Tap
Screw the Naylon screw into the thread and apply small amount of silicone around the screw head to seal it and continue screwing it. You will see the silicone squeezed against the cap, just smooth it with your finger and be careful not to clog the hole in the Naylon screw.
Assemble the parts as described in the picture above and cover the threads with Teflon tape in order to make it air tight.
Put little air pressure to the rig with standard air pump and put the rig in a small bucket filled with water and look for air bubbles. If you see them you can add more Teflon tape on the threads or apply silicone on them.
Let the silicone dry for a few hours and repeat the same test.
Step 2: Rig's Frame
To make the frame we used 30mm Bosch profiles because it is easy to mount them accessories.
2 x 50cm length
4 x 40cm length
Screw all the frames together the same as in the picture. You can use M6 screws with T-Nut.
In order to fix the tube to the frame we need to print clamps.
You can find the stl of the model here
Use M4 screws to fix it to the frame with T-Nut or you can print T-Nut and use regular nut.
The next print is used to connect the motor with a wire to the tube in order to move it. We will talk about it in the electronics step but you can print this model now.
Step 3: Anemometer - 3D Print
The anemometer is a device for measuring the wind speed.
We use the wind speed in our calculations to predict where the rockets will hit.
1 x 6mm diameter rod shaft, 22cm length
1 x 686ZZ Bearing*
1 x 696ZZ Bearing*
2 x Clip washer
1 x Hall effect sensor (latch US1881 or switch OH090U)
6 x Round magnets (5mm diameter, 2.7mm - 3mm height)
M3 screws and nuts.
* We had those bearings so we used them, you can use different bearings but you will have to change the models.
We used lathe to make some slots in the rod in order to push the clip washer that prevents from the shaft to move or fall when it's vertical. If lathe is not at hand you can print or glue stopper to the rod before or after bearing.
Here you can find all the STL files you need to print the anemometer.
Assemble the parts as you can see in the pictures above.
When you assemble the magnets holder the magnets orders depends on the hall effect sensor you choose.
If your sensor is latch type you must face the magnets in opposite poles for each pair (N S N S N S) since latch sensor change its state according to the pole he sense.
The sensor role is to provide us interrupts when the magnets passing in front of it, that we can know the wind speed.
The next step is to figure out what is the wind speed from the device interrupts frequency.
To do that we used Afeka's College of Engineering wind tunnel.
For each known wind speed we recorder the number of interrupts per second and from all the data we found a polynomial that if we give him the number of interrupts per second we get good approximation of the wind speed.
For our specific anemometer the polynomial is:
Since each print is unique this polynomial probably won't be accurate for your anemometer but it can be close enough. The wind speed that we can measure is from 0.6 m/s up to 17.5 m/s.
If the friction of your bearings will be lower you can measure even lower wind speed.
Step 4: Flashing Light - 3D Print
Flashing light are always good :)
You can spread them around the ring so it will be noticeable at night or even indicate when the rig is armed and ready to fire so people can keep a safe distance from it.
1 x Standard DC motor
1 x 608ZZ Bearing
1 x M3 Screw
1 x M3 Nut
1 x LED
Some aluminum foil and glue (white glue should be fine)
Print all the files from this link:
Push the small gear (motor-gear.stl) to the motor's shaft. If you can't to it by hand try using clamps.
Next we need make a reflector to reflect some of the light. Cut small piece of aluminum foil to match the inner section of the bering-gear.stl. Apply glue inside the gear and gently push the foil inside.
After the glue dried you can cut the excess foil with an x-acto knife.
Push the gear to the bearing and then to the base.stl
It is recommended to print the bering-gear.stl with an opaque filament so the light won't penetrate to the other side.
The last step is to print the cap with transparent filament. You can put an aluminum foil at the top of the cap.
Step 5: Let's Print Some Rockets!
What the cannon worth without some rockets to shoot right?
Here you can find few rockets that fits to our cannon: https://github.com/romansky/apollo/tree/master/3d-prints
We will focus on the special ones, the LEDs rockets so please print the rocket-led and tracer-bullet
- Epoxy glue
- Electrical wires
- Insulation Shrink
- Coin cell battery
- Small LiPo battery
The print divided to three parts only because our printer can't print tall objects.
Cut enough wire for each LED from the base to the head and leave some excess to make it easy to solder.
Solder the LEDs at the base and pass the wires through the holes to the body part. It may be a little tricky if the holes are not smooth and clean. Try to clean them from excess plastic with hard wire.
At the head solder a connector so you can easily plug and remove the battery.
It's recommended to add small resistor to each LED in order to make the battery last longer.
For blue LEDs and 3.7v LiPo battery you will need 22 ohms resistor.
When you feel ready apply epoxy glue between the base part and the body and then tight them together.
The head is screwed to the body so don't apply glue there.
The tracer bullet is the easy one, it fits inside the 1" barrel and includes only two parts.
In the middle you put the coin cell battery and the LED legs goes to each pole of the battery.
The base and the top parts screws together and that's it.
We took one rocket to the wind tunnel to find out what is the drag coefficient of it to put it on our calculations.
The specific drag coefficient of the rocket we tested is 0.0481. It should be close enough to other similar rockets.
Think about special rockets to print and shred them with us.
Step 6: Rocket Speedometer
One vital piece of information is the rocket's initial velocity.
We can calculate it with known formulas like here but we want to actually measure it, so we built a simple rig for it.
To build the speedometer we used two lasers and two phototransistors. When the rocket exits the barrel it passes between the two lasers and breaks the light for a fraction of a second, enough time to calculate the speed if we know the distance between the two lasers.
2 x Laser diode (< 5 mW )
2 x Phototransistor or photocell
2 x Resistors of 820 ohms
2 x Resistors of 1.2 Kohms
5 x M4 screws & nuts
Print the speedometer parts from here: https://github.com/romansky/apollo/tree/master/3d-prints/speedometer
Use an opaque filament to prevent outside light interfere with the lasers.
You need to drill small holes in the "phototransistor-holder.STL" file for the phototransistor legs.
Assemble the holders parts to the platform with the screws. The platform fits on the 1/2" barrel, use screw & nut to tight it to the barrel.
In the electronics step we will learn how to hook it up to the circuit and see the Arduino code.
Step 7: Hooking Up the Pressure Sensor
The sensor we used is ASDXACX100PAAA5, it has 2.3mm diameter connector.
To connect it to the pressure chamber (the rig) we used hose with 1.6mm I.D and 4.8mm O.D.
Thinner hose wall won't hold above 60-70 psi and tear under that pressure (trust us, we've tried :))
Push the hose to the sensor's connector and the fitting we plugged to the rig cap.
That connection can hold about 30-40 psi until it fly's out.
To secure it we twist few times securing wire around the hose at both ends, be careful not to twist it too much and tear the hose.
Step 8: Adding the Motor
The motor is used to adjust the firing angle of the cannon. We used a simple way to pull the barrel with a stepper motor. The motor we used is NEMA17 42BYGH610. Use this motor or stronger, weaker motor won't be able to pull or hold the barrel and will miss steps.
Print the wire holder part from here: https://github.com/romansky/apollo/blob/master/3d-prints/motor-wire-holder-by-richrap.stl
It was designed by Richard Horn for its 3DR delta printer.
Insert M3 nuts to the holder and tight it to the motor's shaft with short screws.
Hook the wire to the holder and tie it around the solenoid to get more moment and make it easier on the motor.
You can add spring between the frame and the barrel to pull it from the motor when you set a lower angle.
If your motor is not strong enough don't use the spring.
Step 9: The Electronics
To control the whole system we used Teensy 3.1. It's a powerful microcontroller with ARM processor and it's Arduino compatible.
To power all the electronics we used 3 cells LiPo battery. You should use the most powerful battery you can find (and fits to your budget). The more amps you have the more time you get when the system powered on.
The system electronics use 5v for the Teensy and 12v for the solenoid and the motors.
We use voltage regulator to get 5v output and added two 100uF capacitors to the input and output to reduce noise.
Make sure to add heat sink to it because it can get very hot.
The sensor ASDXACX100PAAA5 type is absolute which gives us analog output relative to zero. If we sample it in open environment we should read about 14.7 psi (1 ATM). This is a good way to make sure we connected it correctly and translating the analog output to psi values.
Since the Teensy operates in 3.3v and the sensor is 5v we used two resistors 10K and 20K as voltage divider.
We also added 220nF capacitor to reduce the noise in the reading.
The sensor connected to pin A5 on the teensy.
The anemometer is a simple hall sensor that makes one pulse when a magnet passes near him.
We attach an interrupt to pin 4 for each change in the pin state (falling or raising) and count how many interrupts we got in one second.
The hall sensor needs pull-up resistor so 2.4K resistor is connected between the signal and the 5v.
The solenoid is a simple electric valve that opens when applying power. To open it we connected it to relay directly to the battery. The relay connected to the Teensy board through transistor to avoid overloading the Teensy pin (which not capable to provide too many amps). The relay connected to pin 8.
The motor is connected to off the shelf driver. The driver connected to the Teensy to pin 2 and 3 for direction and steps. More about it in the software step.
The two lasers of the speedometer connected to 12v via 820 ohms each. The phototransistors connected to the Teensy pins 21 and 22 with pull-up resistors (1.2K).
The distance between the phototransistors is 5cm (0.05 meters) to get the speed in meters per second we divide the distance by the time it took the rocket pass this distance. We measure the time in microseconds to get more accurate speed reading.
The communication with the system is wireless serial communication with Bluetooth module or XBee.
We connect the module to the Teensy's RX/TX pins.
Wireless communication is safer, we can launch the rocket from a safe distance.
Step 10: Software
The software source can be found here: https://github.com/romansky/Apollo
- Controller: Teensy code
- Apollo.py: python version
- CSharp/Apollo: C# version
In the config.h file we have all the constants of the project (pin numbers, times, distance, etc.)
To write the Teensy's RX/TX pins we need to use "Serial1" since "Serial" used by the USB serial. Change the constant "HWSERIAL" if you want to debug it.
Another important constant is "PITCH_MOTOR_STEPS_PER_ANGLE", you need to change it according to your motor driver. The current configuration is 400 steps per 90 degrees.
Controller to PC
Axx - Anemometer: interrupts per second (int)
Pxx - Pressure Sensor: pressure in psi (float)
Sxx - Speedometer: speed in m/s (float)
AH - Speedometer first indicator HIGH
AL - Speedometer first indicator LOW
PC to Controller
Rxx - Open the solenoid for xx milliseconds (int)
Cxx - Calibrate the rig pitch to the current degrees (float)
Sxx - Set the rig pitch (float)
The speedometer AH and AL indicator allows you to know if the fins of the rocket breaks the laser to the lower phototransistor or not to allow you reposition the rocket.
The software is currently under development.
We plan to add more functionality such as calculated distance (available in python version) from pressure, angle, wind speed and direction (also build the wind direction hardware).
Selecting target on the map and calculate the needed pressure and angle to hit the target.
Keep follow this instructable and the git repository for updates