Tanks, Heatsink Engine

I purchased two more 5 gallon aluminum tanks from KMW Performance and proof tested them to 400 psi (27.6 bar). I’m presently looking for somebody to clean one for LOX service; the local welding supply stores could not recommend a vendor for cleaning parts for LOX service. These tanks are going on a test stand, but I plan to use the same ones on my vehicle.

I also started machining the 100 lbf heatsink engine. I decided drilling the chamber and converging portion of the nozzle would be easier than working it with a boring bar, though the surface finish on the chamber ID is a little rough. I bought a 2 1/8” drill bit from eBay, a local machine shop sharpened it for $35, and the sharpened bit made quick work of drilling the chamber. Huzel/Huang say the convergent half angle ranges from 20 degrees to 45 degrees – my drill bit gave me a 60 degree half angle. The next step is to step drill a conical diverging section (15 degree half angle) and clean up the profile with a boring bar. Richard Nakka’s website has a handy calculator for forming nozzles.


Drilling the chamber and converging section. Stock is 4″ OD 1018 carbon steel. 


Looking into the chamber and through the throat. 

IMG_1503I bought this tiny trailer from Harbor Freight and I’m going to turn it into a portable test stand. Every Harbor Freight purchase is hit or miss: the 3/16″ steel plate I bought for the top cost more than the trailer kit and the wheel bearings get disconcertingly hot after short trips. 

Posted in Uncategorized | Leave a comment

Another aluminum tank burst test

This week, I burst this 5 gallon aluminum air tank. I like this tank because it comes with five NPT ports and two brackets welded to it.

It failed at 46.5 bar (674 psi) in the heat affected zone of the longitudinal weld, basically the same location as the aluminum Harbor Freight tank.


I bought a 1000 psi (69 bar) pressure transducer on eBay for $35. I recorded the pressure with an Arduino Uno and SD card shield. pressureplot5galburst

Dry mass = 3.2 kg (7.0 lbs).

OD = 8.196” (20.819 cm)

t = 0.098” (2.489 mm)

UTS = 27,512 psi (189.69 MPa)

According to the manufacturer, the tank material is 5086 – H116. From what I’ve read, the strength of the welded material is no less than the –O condition, but my UTS is less than all of the published 5086 UTS I’ve seen. I think the difference can be attributed to local thinning at the burst location.

I want to mount the tank using the brackets that come welded to it. I ran a quick analysis to see if one bracket is strong enough to hold a tank full of LOX (they appear sturdy). The weight of the tank and 5 gallons of LOX is 243 N (54.7 lbf). fea1 fea2Based on the UTS I calculated from the burst test, I have a factor of safety of 22.9 at the bracket/tank weld.

Posted in Uncategorized | Leave a comment

Aluminum air tank burst test

I bought this hydrostatic pressure tester from Amazon and used it to burst a 7 gallon (26.5 L) aluminum air tank I bought on sale from Harbor Freight. I thought the aluminum air tank might make a good LOX and fuel tank.

I selected this hydrostatic tester because of the price and it has its own reservoir (I don’t always have access to a hose spigot). My only complaint is that it came with a flimsy and suspect pressure gage; I replaced the stock gage with a nice, liquid-filled one and I haven’t had any other issues. I used flexible aluminum tubing to connect the tester and vessel because it is rated to high pressure, it can be coiled for storage, and is *much* cheaper than hydraulic hose.

The tank burst at 580 psi (40 bar) in the HAZ of the longitudinal weld. I was careful about getting all of the air out of the line and tank; the actual “burst” was rather anticlimactic. The tank diameter is 10.05” (25.53 cm) and the thickness is 0.095” (2.42 mm); this gives an ultimate strength of 30,679 psi (211.5 MPa). IMG_0117 IMG_0118

Amazon has a few 3, 5, and 7 gallon aluminum air tanks with NPT ports welded to them and the vendor advertises a 600 psi burst pressure.

The hydrostatic pressure tester is also handy for calibrating pressure transducers. Here it is calibrating a 250 psi transducer I bought on eBay:IMG_0122

Posted in Uncategorized | Leave a comment

100 lbf LOX/alcohol heat sink engine

I designed a 100 lbf (445 N) LOX/ethanol engine, similar to Robert Watzlavick’s heat sink kerolox engine.

The analysis is nothing more than the 1D isentropic compressible flow equations and thermodynamic data from RPA: 100 lbf engine

Propellants: 70%ethanol and liquid oxygen
Thrust: 445 N (100 lbf)
Mixture Ratio (O/F): 1.1
Specific Impulse: 221 s
Chamber Pressure: 1.379 MPa (200 psi)
Exit Diameter: 3.03 cm (1.192 inches)
Throat Diameter: 1.76 cm (0.691 inches)
L*: 119 cm (46.9 inches)
Oxidizer Orifice Diameter: 0.762 mm (0.030 inches)
Fuel Orifice Diameter: 0.787 mm (0.031 inches)

I used the free version of Rocket Propulsion Analysis to get the thermodynamic properties of the LOX/ethanol combustion products (temperature, specific heat ratio, and density) as functions of mixture ratio, chamber pressure, and alcohol concentration. RPA has a very intuitive user interface and the free version is surprisingly versatile and powerful. Version 2 includes film and regenerative cooling analysis. The student version is $200, but there’s a 15 day free trial.


Posted in Uncategorized | Leave a comment

LatLong to XY

I have been using the UTM code from WHOI on an Uno to convert GPS latitude/longitude to UTM easting/northing. On an Uno, double and float are the same, so the easting and northing values are slightly different from the website. On a Due, double is 64 bits and the Arduino and website values are the same. latlon2xy is the doc with the Arduino code. Since I last looked at GPS, Mikal Hart has an updated GPS library that computes distanceBetween() and courseTo(). It might be worth pursuing.

Posted in Uncategorized | Leave a comment

Modest helicopter control progress

I bought an Arduino Due to use as the flight computer and a LIDAR-Lite from PulsedLight 3D to use as an altimeter.  Preliminary experiments with the LIDAR look promising; it’s certainly much better than the barometer/accelerometer complementary filter, but it’s a little pricey (for a hobbyist sensor) at $90.

Converting latitude and longitude to Cartesian coordinates is not trivial and I’ve been giving myself a crash course in geodesy and the Universal Transverse Mercator coordinate system. My controller uses Cartesian coordinates (makes sense since the NGLLC profile is up 50 m, over 100 m, and down 50 m), so I’ll use the UTM transformation to take latitude and longitude measurements from my GPS and turn them into (x,y).

Also, I’ve been (slowly) porting TJ Bordelon’s FreeSpace IMU algorithm into an Arduino library.

TODO (this week):

  1. Finish porting the FreeSpace IMU to Arduino.
  2. 3D print replacement landing gear for helicopter.
  3. 3D print special landing gear with mount for the Due, GPS, IMU, and LIDAR.

TODO (next week):

Helicopter system ID: Need to relate ESC command signal to thrust and servo command signal to “gimbal” angle.

Posted in Uncategorized | Leave a comment

Helicopter, IMUs & State Estimation


A 4 channel, fixed-pitch, RC helicopter is a good analogy for my VTVL rocket. Both vehicles control altitude by changing the magnitude of the thrust vector and both vehicles control attitude by changing the direction of the thrust vector. On the rocket, the magnitude of the thrust vector is controlled by opening and closing the main propellant valves. On a fixed-pitch helicopter, an ESC controls how fast the main rotor spins. On the rocket, the direction of the thrust vector is controlled by gimbaling the motor via linear actuators. On the helicopter, servos connected to the swashplate cyclically pitch the main rotor blades. Paul Breed used a T-Rex 600 to test his GNC software and extensively documented the process on his blog.

I purchased a Blade 200 SR X, extra blades, extra battery, and a simulator; my plan is to create control hardware and software for the helicopter that can be ported to the rocket. Most of the past week has just been learning to fly the simulator, but I did put some effort into hardware. A nice thing about the Blade 200 SR X is it uses conventional hobby servos and ESCs (many of the small helis have dedicated boards which serve as receiver, ESC, and servo) so it’s easy to control with a microcontroller. However, I didn’t know that ESCs have to be armed before you can send them a PWM control signal. On my helicopter, firmware in the receiver sends the ESC the arm command a few seconds after it powers on. This is what the receiver sends the ESC to arm:


The frequency is 344 Hz and the duty cycle is 34.4%. I created this pulse train using an Uno and the digitalWrite() and delayMicroseconds() functions and successfully armed the ESC.

IMUs and State Observer

The VTVL rocket has 12 states (6DOFs plus the time derivative of each DOF) and I need an estimate or reliable measurement of each state in order to control the rocket. Plan A is to obtain yaw, pitch, and roll from an IMU, position and altitude from GPS, and the rest of the states from a state observer. Masten and Armadillo flew KVH and Crossbow IMUs built around fiber optic gyroscopes. These units retail for more than $10,000 and are prohibitively expensive. Several companies (VectorNav, Xsens, LORD MicroStrain) sell IMUs based on MEMS sensors, which fuse magnetometer, accelerometer, and gyroscope readings together via a Kalman filter to produce reliable estimates of yaw, pitch, and roll. These units retail for at least $1,000, which is still a little expensive for my tastes.

Last winter I started experimenting with Fabio Varesano’s FreeIMU. I built a few of them (my first time with SMD components) and they worked pretty well, but I couldn’t get rid of the yaw drift. The FreeIMU has good hardware, so I’m going to try to write my own sensor fusion code based on TJ Bordelon’s FreeSpace algorithm.




TJ uses a three-axis accelerometer, a three-axis magnetometer, and a three-axis gyroscope, and fuses them together in three steps.

  1. Integrate the gyro output to obtain a quaternion which rotates you from the body-fixed frame to the earth-fixed frame. This quaternion is incorrect because of the gyroscope bias. The calculated attitude will drift over time.
  2. Measure the acceleration in the body-fixed frame and rotate it to the world-fixed frame using the quaternion from Step 1. The answer should be [0 0 1] g. Use the difference between [0 0 1] and the calculated world-fixed acceleration to correct your quaternion. This step compensates for errors in pitch and roll.
  3. Measure magnetic field in the body-fixed frame and rotate it to the world-fixed frame using the quaternion from Step 2. The compass should be pointing North, [1 0 0]. Use the difference between [1 0 0] and the the calculated world-fixed magnetic field to correct the quaternion. This step compensates for error in yaw (or heading).

The amount of money Masten and Armadillo spent on their IMUs speaks to their importance. But my goal is a 30 second flight, not a 180 second NGLLC Level 2 flight, and I’m cautiously optimistic that 30 seconds is short enough to make my homemade MEMS solution viable. If hobby-grade sensors don’t work, Plan B is the VectorNav VN-100 Rugged DevKit for $1000.

Posted in Uncategorized | Leave a comment