Introduction: BalloonSat Stabilization With Compressed CO2

About: Hey I'm Marlin! I love designing and building new things, and I can't wait to share my ideas with you!

Hi! I'm Marlin with Team Airheads, a group of 7 college kids (Marlin, Griffin, Alexa, Alec, Chesney, James, and Quentin) at University of Colorado Boulder. We like space, and we like to build things. Team Airheads’ mission is to design, build, and launch BalloonSat TAFF-E to reach the near-space environment to determine the most efficient method of stabilization for the BalloonSat in the sky. Team airheads will accomplish this mission using compressed carbon dioxide to create torque, thereby stabilizing the BalloonSat and reducing spin around the vertical axis. As a result, this mission will help guide aerospace industries to design more cost, weight, and environmentally efficient methods of stabilization in the future.

We'd also like to give a shout out to COSGC for giving us this amazing opportunity!

Step 1: Wait... What's a BalloonSat? and Why This Mission?


  • A BalloonSat is a small, lightweight package used to carry and perform experiments at near-space altitudes. It's brought up to ~100K ft using a high-altitude weather balloon (in this case, it was filled with hydrogen).
  • Team Airheads wants to create a safe and more cost- and weight-efficient system for aircraft/spacecraft stabilization.
  • Hypothesis: we expect to discover a more efficient stabilization method that is also non-harmful to the environment.


  • Many past BalloonSat projects have been subject to uncontrollable spin during flight.
  • Many current stabilization systems are inefficient in cost and weight.
  • Many stabilization systems are harmful to the environment.

Step 2: Concept of Operations (CONOPS)

The CONOPS diagram provides a general mission overview. Prior to launch, all switches will be turned on and the power to internal components will be confirmed through LED’s on the exterior of the structure. Twenty minutes into flight, the BalloonSat will perform its stabilization cycle for approximately 1 minute. During ascent, the sensors within the structure will collect atmospheric data and the onboard GoPro camera will record the flight for as long as the battery and SD Card permit. The balloon will burst at approximately 100,000 ft. During descent, the BalloonSat will continue to collect atmospheric data and the parachute will be deployed for safe landing. Team Airheads will then track the BalloonSat using an attached GPS. Once the BalloonSat has been retrieved, all switches will be turned off and the SD cards will be retrieved to begin data analysis.

Step 3: Design


  • 140 mm x 140 mm x 190 mm foam core material lined with 9mm thick insulation.
  • BalloonSat secured to the flight-string using a system of bearings and a flight tube. The flight string, attached to the high altitude balloon, goes though the BalloonSat though a tubing system. It is connected to a bearing system, allowing the satellite to rotate independently of the sting for stabilization.


  • 2 Arduino Unos
  • heater
  • 20 g pressure regulator (we aimed to output 600 kPa)
  • threaded 20g CO2 cartridge
  • voltage regulator
  • 3 9V batteries
  • Turnigy Nano-Tech 370 mAh 3s Battery
  • 12V 370 mAh Lithium Polymer battery
  • 2 solenoid valves
  • 9 Degree-of-Freedom sensor
  • GoPro Session 4
  • 1/8th inch NPT tee connector
  • 1/8th inch I.D. hose barb tee connectors
  • 1/4th Inch O.D. tubing
  • insulation
  • accelerometer
  • temperature sensors (internal, external)
  • humidity sensor
  • pressure sensor
  • 2 OpenLogs
  • bearing system (bearing and 3D printed casing designed by us)
  • 3 MicroSD cards
  • foam core

*** Detailed parts list including cost and mass is attached***

Step 4: Arduinos: Control and Data Handling

Both Arduino Unos will collect and record data onto a 2GB MicroSD card interfaced through the OpenLogs. The footage captured by the GoPro Hero4 session will be saved to its own 32GB card. Power for project TAFF-E will be provided by three 9V batteries and one 12V 370 mAh Lithium Polymer battery.

Our complete functional block diagram above shows each Arduino Uno's responsibilities.


  • Responsible for the data collection from the temperature (internal and external), pressure, and humidity sensors.
  • The atmospheric data sensors are attached to our Balloon Shield (powered by a 9V battery), designed specifically for our BalloonSat, and this system is attached to Arduino #1.

ARDUINO #2 (code attached)

  • Responsible for the data collection from the gyroscope, accelerometer, and magnetometer components of the 9 DOF sensor.
  • If the 9-DOF sensor detects an angular velocity value greater than ±10 degrees/s about the z-axis, Arduino #2 will signal to fire a solenoid until the angular velocity is within ±10 degrees/s of 0.
    • Angular velocity values less than -10 degrees/s correspond to counterclockwise motion; when these values are read, Arduino #2 outputs HIGH on pin 3, thus energizing a transistor and allowing current to pass through the clockwise solenoid valve. In turn, motion is slowed.
    • With angular velocity values greater than +10 degrees/s, the BalloonSat is spinning in a clockwise motion. To counter this movement, pin 4 outputs HIGH, thus energizing a transistor corresponding to the counterclockwise solenoid valve.
  • Will write data to the 2GB SD card via the OpenLog. This data will be written as the time stamp, followed by the gyroscope readings in x, y, z order, then by the accelerometer readings in the x, y, z order, followed by pitch, roll and heading. The software will also write out important events, including the start of the stabilization, the start of the default spin, and when each thruster is turned on or off.
  • The electrical power for the solenoid valves will be sourced from the 370 mAh Turnigy 3-Cell Lithium Polymer battery, which will also power Arduino #2. A relay switch, controlled by Arduino #2, will be implemented in order to autonomously provide 12V of power to the designated valve.

Step 5: Structural and Sensor Testing

Our team performed extensive testing on our BalloonSat before launching it to near-space altitudes and temperatures (30 km at -80°C).

  • Whip Test: Ensures the satellite’s structural quality during the balloon burst. The satellite will be subjected to extreme conditions and g-forces immediately after the high-altitude balloon ruptures but must maintain structural integrity. To simulate this situation, we will conduct a whip test in which one team member whips the satellite around in circles above his/her head on a long rope. Successful!
  • Drop Test: Assurance of satellite structure upon impact. At the termination of the mission, upon satellite return, it is expected to hit the ground at around 60 kph. To test satellite structural quality, the satellite will be dropped from a two-story balcony. Successful!
  • Stair Test: After ground impact, the satellite may tumble or be dragged for a significant distance before stopping. To ensure the satellite can withstand this situation, a team member will throw, drop, and kick the satellite down two flights of stairs. Successful!
  • Cold (Dry Ice) Test: During flight, the BalloonSat will reach an altitude of ~30 km, resulting in possible -80°C temperatures. Without proper thermal insulation, the Arduinos, GoPro, and other hardware will cease to function properly. Thus, it is imperative that the satellite be built in such a way to prevent the internal temperature from dropping below -40 degrees Celsius (as that is the minimum temperature for an operable Arduino Uno). To simulate the -80°C temperatures of near-space, the satellite will be placed in an insulated container of 10 lbs of dry ice for 3 hours. Successful!
  • Sensor Testing (Humidity, Internal/External Temp., Pressure, 9 DoF, Accelerometer): Various testing on each sensor was performed to verify that each system functions properly. All were successful!
  • Compressed Air Test: The main purpose of our BalloonSat is to test the practicality of compressed air thrusters in space. Thus, the mission is based entirely on the functionality of the compressed air thruster system. Beforehand, the on-board Arduino will be programmed to determine necessary attitude control and activate the compressed air thrusters based on this data. The goal of the compressed air thrusters is to stabilize the satellite to a minimum rotation (30 rev/min) so the GoPro camera can take more steady pictures. To conduct this test, Airheads will hang the satellite on a string and then spin it. The compressed air thrusters will then stabilize the satellite as stated above so that its rotational velocity decreases. The test is successful if the satellite stabilizes and the accelerometer determines that no more adjustments are necessary (based on our Arduino code). Successful!!
  • Camera Test: This test ensures that the GoPro Camera system functions properly. The GoPro will be used on the mission as a documentation tool, taking pictures of the outside environment. Successful!

Step 6: Ready for Flight!

After a 3 hour mission simulation test, in which our BalloonSat was hung from a pole above a fireplace, we decided we were ready for flight. When the satellite was spun, the compressed air thrusters were successful in stopping the satellite spin during the test. Our Arduino stabilization code was run and the accelerometer data was used by Arduino #2 to turn the solenoids on and off. The compressed air was released to counteract each direction of spin. There were five main points in which the satellite was spinning and the thrusters stabilized the satellite (pictured above). Thus, we decided that the satellite is a GO for launch!

Final Mass: 953g

The graph above shows a successful stabilization test, and we hope to gather similar data during flight.

The video attached shows the stabilization cycle during our mission simulation test.

Step 7: Launch and Recovery

Our team arrived at the launch site in Windsor, CO on 11/11/17 at approximately 6:00 am. The CO2 cartridge was installed by Quinton at 6:30 am and the BalloonSat was sealed at 6:35 am. It was launched at approximately 6:50 am, and James was the payload handler. All team members were involved with the recovery process. The BalloonSat was tracked passed Sterling, CO and landed in Fleming, CO at 9:10 am. It was retrieved at 11:30 am by Griffin, Chesney, Alexa, and James, and the payload returned with minimal damage to the exterior. Arduino #1 was still active upon retrieval. We opened the payload at approximately 7:00 pm, discovering interior physical damage. The tubing disconnected on both solenoid valves and the 3.3V wire from the gyroscope to Arduino #2 disconnected.

Max altitude: 101,100 ft

Launch video is attached.

Step 8: Results and Analysis: Atmospheric Data (Arduino #1)

All of our atmospheric data went exactly as expected! Graphs from each sensor can be found above. Team Airheads was able to achieve 270 minutes of data from Arduino #1, including the entirety of the flight as well as the 140 minutes when the payload was on the ground.

  • Pressure: The pressure decreased consistently with altitude until burst at approximately 90 minutes into flight. The pressure was constant for a short time before launch, decreased until burst, began to steadily increase until landing, and then was constant until rescue.
  • Temperature: The external temperature readings contain a sharp decrease after launch. At the tropopause, the temperature begins to increase through the stratosphere. It begins to slow down when it reaches the stratopause. After burst, the external temperature readings begin to decrease and then increase again until landing. The lowest recorded external temperature was roughly -30℉. The internal temperature data collected also went as expected. The heater was effective in that it did not let the internal temperature dip below 30℉ for the entirety of the mission. The internal readings were subject to similar fluctuations in temperature as the external, but the insulation and heater lessened the severity of these fluctuations.
  • Humidity: After launch, humidity decreases with altitude and pressure decreases. There is a slight increase in humidity when the BalloonSat enters the stratosphere until burst. Immediately after burst, the humidity sharply decreases, which may be caused by excess condensation inside of the BalloonSat being blown away by the increased velocity downward after burst. Humidity begins to increase as the vessel descends until landing. After landing, more excess condensation may have evaporated, causing the decrease in humidity on the graph.

Step 9: Results and Analysis: Stabilization Data (Arduino #2)

On the other hand, we had a few issues with our gyroscopic data. Due to the tubing disconnection from the solenoid, our stabilization system did not perform correctly. Our code ran normally; however, the CO2 could not be used to stabilize the BalloonSat. Fortunately, we were able to get our system back up and running!


  • Accelerometer: The accelerometer data is noticeably erratic in the X and Y dimensions at launch due to the sudden change of acceleration when the payload slightly jerked from the payload handler. Due to its swinging and spinning motion, the BalloonSat experienced varying acceleration, which is shown on the graph experiencing between (-½)g and (½)g. At burst, there is a spike in acceleration due to the sudden change from the burst itself. After burst, there are sporadic changes in the x and z direction due to effects of post burst, but it returns to almost pre-burst patterns after the parachute deploys.
  • Gyroscope: We expected to find a decrease in rotational velocity at a constant rate when the thrusters fired, and any rotational velocity should have been countered with the thrusters, keeping the rotational velocity close to zero. The data recorded from flight indicates that no counterforce was applied to diminish spin. The data collected during the BalloonSat’s stabilization cycle is chaotic and does not show a decreased rotational velocity, due to the failed stabilization system. The craft continued to spin erratically during the cycle.


  • We decided to focus our investigation on leakage and discharge of CO2 prior to the stabilization cycle.
  • After completing a full pressure mission simulation test, in which a CO2 canister was inserted into the pressure regulator for 30 minutes, this test resulted in the immediate disconnection of a tube leading into one of the solenoids. This caused a rapid discharge of CO2 and ultimately, pressure system failure. We determined that the pressure contained by the tubing system was too high for connections to hold.
  • Between pre-flight testing and flight, the regulator’s output pressure may have been inadvertently increased so that the tubing could not sustain the buildup of pressure exiting the regulator during flight. This theory aligns with our observation of the tubing being disconnected upon retrieval.
  • With this theory in mind, our team decreased the output pressure of the regulator before our next test. With the lowered output pressure, the tubing withstood the pressure of the CO2.

SUCCESS (Arduino code attached)

  • After determining the cause of the pressure system failure, Team Airheads set out to test the viability and consistency of the flight algorithm and solenoid valve system.
  • Using an external air compressor at 30 psi, we were able to conduct extensive testing on the satellite.
  • The second graph depicts one of the tests ran. The blue dashed lines in the figure represent the moments when external rotational force was applied to the BalloonSat. The figure clearly shows that after the initial spin, the stabilization algorithm consistently works to reduce spin to values well within ∓50 degrees per second of 0, and maintain this range while fighting accumulated tension from the wound flight string. This system takes only roughly 3 seconds to effectively eliminate spin. Success!!!

The video attached shows a successful stabilization test.

Step 10: Conclusion

Team Airheads was successful in creating a system to counteract BalloonSat spin effectively in a controlled environment, however, we were unsuccessful in our attempt to stabilize the BalloonSat during flight. We found although optimal with its reduced mass and powerful torque, the stabilization system falters due to its lack of fuel, unreliable seals, and sensitivity to pressure. This form of stabilization could be effective on a craft that uses the stabilization cycle within the first 10 minutes of flight for a short duration of time or one that is able to compress gas on its own continuously. After the testing and configuration of a stabilization system controlled by compressed CO2, Team Airheads was able to conclude that our attempt to stabilize the BalloonSat using compressed gas was not the most efficient way to control spin, yet it was effective for a short time. Overall, we can conclude that stabilization by compressed gas is effective for short duration but is difficult to implement on the scale of a BalloonSat.

In the future, we plan to relaunch our BalloonSat with our fixed stabilization system!

Epilog Challenge 9

Participated in the
Epilog Challenge 9

Arduino Contest 2017

Participated in the
Arduino Contest 2017