2. Device Production
2.1. Electronics
The electronics package design was primarily driven by desire to use a digital
pressure sensor, particularly the MS5607-02BA03 Barometric Pressure Sensor, shown
in Figure 1.
This sensor is a surface mount and therefore requires either a commercial breakout
board or custom printed circuit board. The sensor supports both SPI and I2C
communication protocols and has the resolution and range necessary to make the
measurement. The MS5607 is produced by MEAS Switzerland. Data output by this
sensor is discussed in Section 2.3 and the connection of this sensor to the circuit board
is discussed later within this section.
This breakout only uses the SPI protocol. For this reason, SPI protocol is used for
electronic wiring and programming. More details on SPI can be found in Section 4.
For this project, an Arduino Due was chosen as the programming board. This was
chosen because the pressure sensors operate at 3V which is the output voltage of the
Due. A picture of the board used is shown in Figure 3.
Pin assignments for wiring the pressure sensor are shown in Table 1 and Figure 5. In
order to use the SPI protocol, pin 2 must be connected to GND, all other pins are
connected to the Arduino Due as labeled in Table 1. The location of each pin is shown in
Figure 5.
The team elected to manufacture the entire electronic subsystem so a custom printed
circuit board (PCB) was chosen over a commercially available sensor breakout board.
DesignSpark was used to design the printed circuit board shown in Figure 6, because it
is free and easy to use. In addition to the pads for the MS5607, accommodations were
made for an LED, Thermistor (Thrm), the microSD breakout, and necessary resistor
(RES) and capacitor (100). In order to fit within the neck of the balloon, the board was
made to be round, with a 1 inch diameter.
In the payload, there are two boards; one measures the internal pressure of the
balloon, and the other measures the atmospheric conditions for altitude determination
and stores data from both boards to the microSD card. To avoid crowding the data storage
board and risk accidentally shorting the circuit, the nodes connecting all 3 sets of SPI pins,
MISO, MOSI, voltage input (VCC), and ground, are formed by clusters of soldered wires
which can be easily disconnected for troubleshooting. Chip select pins for both pressure
sensors and the SD reader are each individually wired to the Arduino board. Additionally,
the LED mounted to the board was only used during testing; in order to make the LED
visible outside the payload, it was wired directly to the Arduino Due. The layout of the
entire circuit is shown in Figure 8.
In addition to the wiring of the PCBs and LED, three Surefire 123A batteries within
battery casings are wired in series to a switch. The mechanical switch is then wired to the
power plug for the Arduino Due. When the switch is closed, the wiring is connected and
the board receives 3V of power.
2.2. Mechanical
a. Acrylic Tube
In order to house the batteries and internal pressure sensor, an acrylic tube is used.
First, the capsule is made. The final capsule tube is shown in Figure 9. Where a long side
is bored out to house the batteries, and a shallow side is bored out to house the internal
sensor board. These two sections of the tube are separated by un-bored acrylic.
Beginning with at least 12 inches of solid 2 inch diameter acrylic rod, a portion is cut
to 7 and 7/8 of an inch in length using a band saw. Then, approximately 1/16 inch is
removed from both sides in order to remove the teeth marks left by the band saw, thus
leaving a 7 3/4 long workpiece. Next, one end is bored 7/8 inch deep using a 1 1/2 inch
diameter forstner bit as shown in Figure 10.
The shallow end must be bored first to prevent clamping the hollowed out long side of
the tube and potentially causing damage to the casing. The solid long end is then clamped
into the lathe.
An 1/8 inch hole is then bored in the center of the turned down portion. Then, 1/2 inch
of the turned down portion is cut off with the band saw. Any tooth marks are removed with
a belt sander working up to 800 grit paper and are finished off with clean, denim shop
rags for a clear finish. The 1/2 inch plug is then placed into the short bored out portion of
the capsule where it fits snugly.
With the end plug placed inside, the bored end is clamped into the chuck. A 1 1/2 inch
forstner bit and a 5 inch extension are used to keep the chuck from hitting the part. The
solid end is then bored 6 inches deep, leaving slightly less than 1/8 inch of solid acrylic.
This is shown in Figure 12.
Next, a wooden dowel and 80 grit stepping up to 800 grit sandpaper are used to
remove the roughness inside the bored portions and ends. The tube is finished off with
clean denim shop rags. Xylene and acetone are also used in order to speed up the
polishing process.
A notch approximately 1/16 inch wide by 1/16 inch deep is cut 3/4 of an inch up the
long hollowed out end of the tube. The edges are smoothed with 400 grit sandpaper so
that an O-ring can fit snugly half way down in this notch.
On the plug with the 2 inch diameter bottom section, a line is marked straight across
the center of the 1 1/2 inch part. A straight line across the base of the 6 inch long bored
out section of the capsule is also marked. Measuring 1/4 inch in from the edge of the
capsule and 1/4 inch in from the small part of the plug, both sides of the capsule wall are
drilled through using a number 33 drill bit. Its drilled 3/4 of the way through the wall with
an 1/8 inch bit. This process is then repeated for the opposite side. The plug is then
clamped into the drill press and approximately 1/2 inch into one side is drilled using a
number 36 drill bit. A 6-32 tap is then used to thread the hole in the plug. The plug is
placed into the end of the capsule and a 6-32 bolt is placed into the threaded side to hold
it in place. The opposite side of the plug is drilled through the pre-drilled hole with a
number 36 drill bit in order to ensure it will line up. A 6-32 tap is again used to thread the
new hole in the plug. Next, the switch profile is traced onto the small side of the plug, with
the lever side oriented where one of the bolts will be able to compress the switch when
inserted into the hole. The traced figure is milled out with a 1/4nch mill so that the switch
is centered in height with the bolt hole. Then 3 separate 1/4 inch holes are drilled in the
solid portion next to the milled out switch hole, avoiding the bolts and milled hole. Finally,
the section between two of the holes is milled to allow for wires to be passed through to
the Arduino. The completed step plug is shown in Figure 14 below.
Gorilla glue and water are then used to glue the step plug with the 2 inch diameter
side pressed snugly into the 1 7/8 hole in the foam. The plug will be snug and resist pulling
out of the hole. Testing the fit of the 2 inch rod is shown in Figure 16 below.
After the glue has dried, any excess glue is cleaned out by drilling through the wire
holes in the plug and all the way through the foam block. Next, the 2 inch thick foam block
is flipped over and a mark is made 1/2 inch in from all the sides of the block. The inside
of this marking is then milled out to 1 inch deep. The 4 inch thick block is then clamped in
the mill and 1/2 inch in from the sides is marked. 2 passes are used to mill the foam out
3 inches deep while staying inside the marked lines. A chisel is used to clean out any
leftover burrs inside the foam box. Finally, a file grater is used to round the edges and
corners of the foam box.
c. Payload Clamp
To make the secondary payload clamp, a 6 inch by 7 inch rectangle of 1/16 inch thick
tread plate aluminum is used. A section 3 inch wide by 7 inch long is marked and sheared.
The constant integers represent the specific pin numbers each individual device is
connected to while the 16 bit integers are the factory calibrated 16 bit PROM coefficients
included in the memory of the MS5607 digital pressure sensors. First, the PROM
coefficients need to be read in order for the code to read the pressure and temperature
values given by the sensors. Also, a file is defined in order to print to the SD card.
Following the Arduino format, the next section of the code is included in the setup
function. This is a void function that only runs once and therefore includes the parts of the
The rest of the code included in the setup function is based on what is outlined in the
datasheet for an MS5607 sensor [1]. First the two sensors need to transfer the 16 reset
bits followed by the 6 PROM factory coefficients needed to correct the raw temperature
and pressure found by the sensor later on in the code. Figure 21 below shows the section
of code written to reset the external pressure sensor before reading the 6 coefficients.
Setting the external pressure pin to LOW selects the pin, then a transfer of reset bytes
occurs, and finally, the outside pressure pin is deselected by setting the pin to HIGH. A
delay of 500 milliseconds is set before the program could move on to allow the sensor to
process the commands.
Next, the 6 factory calibrated PROM coefficients are read in order to correct the raw
external pressure and temperature found later on. Just like with the reset, the outside
pressure slave pin needs to be set to LOW in order to select it. Then a transfer of the
PROM coefficient byte as indicated by three bits located in the command byte. Where
0b10100010 is C1 and 0b10101100 is C6. The purpose of this code is to transfer the
This same code is repeated the for the inside pressure sensor. The setup function is
then closed after the last coefficient.
Next in the Arduino format is the loop function, which will loop continuously until the
circuit has been disconnected or a break appears to end it. In this code, the loop function
will continuously loop until an outside switch disconnects from the circuit from voltage
input by the batteries. As seen in Figure 24 below, the loop function begins by setting the
LED pin to HIGH in order to turn it on. This allows the team to physically see whether the
program is running or not. Next, a counter is set up in order to keep track of time. The
program has been coded to run every second.
Next, the code asks for the outside raw pressure and then reads its value. As seen in
Figure 25 below, first the raw temperature and pressure are defined as a 32-bit variable
since the datasheet calls for the variables to be 24 bits [1]. Then the outside pressure pin
is selected and the command byte of the OSR 4096 D1 variable, which is the pressure,
and the OSR 4096 D2, which is the temperature variable, are transferred. The pin is
deselected and there is a delay of certain time given in the datasheet [1]. The variable is
then read by selecting the pin, transferring some filler bytes, shifting over some bytes,
and finally comparing them until raw pressure is equal to the digital number given off by
the sensor. At the end, the pin is deselected.
Next, raw temperature is found, by the same process used for finding the raw pressure.
The temperature is asked for and then read.
To finish the code for the outside MS5607 sensor, the code uses a series of equations
given in the datasheet as shown in Table 2 and 3 below [1]. These equations use the
factory calibrated PROM coefficients found in the setup function in order to correct the
values found by the sensor so that the pressure is received in Pascals and the
temperature is received in degrees Celsius times 100.
Since different sized variables are defined in the program, one must change the sizes
of the variables so that they are all the same size or the pressure value will be incorrect.
The values at the end will have pressure in Pascals and temperature in degrees Celsius.
The code for the external pressure sensor is then repeated for the internal pressure
sensor.
Finally, after finding the pressure and temperature readings using both MS5607
sensors, the results need to be printed on the micro SD card. The SD library is used and
the file name is defined. As seen in Figure 27 below, the file titled myFile is opened and
the settings are established to write to a text file entitled TEST. Then, the counter,
outside temperature and pressure, and then the inside temperature and pressure are
printed. The file is closed and there is a delay of 960 milliseconds so that each loop is
one second long. Finally, the loop function is ended.
The Arduino sketch in its entirety is provided in the Appendix of this report.
This output file is analyzed using the MATLAB file MAE311.m. In order for the script
to run properly, TEST.txt and MAE311.m must be saved within the same folder.
The first step of code in the script extracts the data from the text file using MATLABs
csvread command. The extracted data is saved as matrix M with the total number of
rows equal to n. Integer n is found using MATLABs length command.
The data must then be separated into individual matrices containing each variables
data. This is done using a for loop as shown in Figure 29.
First, the desired variable is established as an empty matrix. Then, integer i is set to
an initial value of zero and integer s is set to an initial value of 1, this ensures that the first
recorded value is read from the top, or beginning, of the text file. The for loop is then
1
0 5.257
= (( ) 1) (1)
0.0065
In this analysis, the starting pressure is equal to the first pressure reading recorded by
the external pressure. Due to this, Equation 1 outputs the change in altitude from the
location of the first reading that is taken by the device.
In order to better visualize the data, four plots and one table are created using the
MATLAB plot function and the MATLAB table function within the script. The plots are
internal and external pressure (Pa) versus altitude (m), internal and external pressure
(Pa) versus time (s), external temperature (C) versus time (s), and altitude (m) versus
time (s). The table displays altitude (m), internal pressure (Pa), and external pressure
(Pa).
The MATLAB script in its entirety is provided in the Appendix of this report.
To access the Arduino board, remove one side strips of tape. Insert the micro SD card
into the reader as shown in Figure 31.
If the LED is lit brightly, the device is on and currently taking readings.
3.2. Attaching the Balloon
In order to attach the balloon, slide the O-ring from the top of the tube down to the
bottom of the tube. Place the filled and clamped balloon neck over the tube. Slide the O-
ring back up to the top, over the balloon neck. Place the payload clamp around middle of
tube to clamp the balloon to the tube, and screw in clamp screws tightly. Place duct tape
around the balloon neck for extra security if necessary. A properly attached balloon is
shown in Figure 33.
Payload lines may then be attached to the flanges of the payload clamp.
Once the proper board is selected, the program can be uploaded to the board by
clicking the right arrow in the top left corner of the screen.
4. Theory of Operation
4.1. Sensor
The sensor used in this project is the MS5607-02BA03, which is a digital pressure and
temperature sensor. The MS5607 uses a piezo-resistive sensor and an IC sensor
interface. A piezo-resistive sensor changes the electrical resistivity of one or more of its
components when strain is applied to the device. Voltage that is output by a piezo-
resistive sensor therefore changes based on changes in mechanical strain. This
mechanical strain is caused by a difference in the ambient pressure and the pressure of
air stored inside the sensor. The MS5607 operates by converting the analog voltage
output from the piezo-resistive sensor into two 24-bit digital values, one for temperature
and one for pressure, that are then processed by the Arduino Due. This sensor can use
both SPI and I2C interface but for the purposes of this project the SPI interface was used.
The SPI interface for the MS5607 uses command bytes for the separate steps that need
to be read in order to find the pressure and temperature. There are three sequences the
code must take the sensor through before using equations to find the final pressure and
In this table, the D1 and D2 variable of the type OSR=4096 as used in the actual
programming of the project. Also for the PROM command bytes, the three bits indicated
in the table change based on what number of coefficient was used. If it was coefficient 1
then the command byte is 0b10100010 and for coefficient 2 the command byte will be
0b10100100 and so on. [1]
The datasheet states that the sensor reads each coefficient with a bit size of 16 with
its minimum value to be 0 and its maximum value at 65535, as seen in Table 5 below.
Additionally, the datasheet states that the D1 and D2 variables are both at 24 bits with
the min value at 0 and the maximum value at 16777216, as seen in Table 6 below.
More details on Arduino processing of sensor data can be found below and in Section
2.3 of this report. Further details on the sensor itself can be found in Reference 1:
MS5607-02BA03 Barometric Pressure Sensor, with stainless steel cap.
In order to code the SD card, the Arduino SD library was used. Physically, the library
uses the same pins as the SPI library and thus the two were set in parallel with each other.
For the code, the SD card library has an SD begin that writes to an 8.3 size named file.
Further details on Wiring and electrical set up can be found in Section 2.1 and 2.3.
From left to right, team members shown above are Shaun Greising, Kaitlin Russell,
Taylor Gilbert (top), Ashley Scharfenberg, and Davis Hunter.
b. Taylor Gilbert
Taylor was responsible for the Arduino coding and testing of the Arduino code for the
device. In this report, she wrote Section 2.3, 4.1, and 4.2.
d. Davis Hunter
Davis acted as team lead of the group. He coordinated with the Space Hardware Club
in order to determine the feasibility of device design and to determine balloon launch
process. Davis was responsible for the electrical design and implementation of the circuit
and Printed Circuit Board. In this report, he wrote Section 2.1.
e. Kaitlin Russell
Kaitlin was also responsible for the electrical design and implementation of the circuit
and PCBs. She also assisted other team members with tasks associated with coding and
code testing. In addition, Kaitlin was responsible for the unification of the project proposal
report. In this report, she wrote Section 3 and 5.
f. Ashley Scharfenberg
Ashley was responsible for the MATLAB coding and MATLAB code testing. She also
performed the analysis of the calibration data. In addition, Ashley was responsible for the
unification of the final report. In this report, she wrote Section 1, 2.4, 4.3, and 6.
Printed Circuit Board (x3) OSH Park 10.00 (per sq. in) 10.20
In this final version, the block schematic and wiring diagram from the proposal has
been removed. This is because a basic list of electrical parts needed was envisioned
during the design meetings to put into the proposal. The actual wiring schematic was
created during the beginning of the electrical work section. Parts acquisition started with
researching sites and comparing shipping costs for different parts. While this was in
progress, a block diagram was created. Parts orders were adjusted to accommodate the
changed parts needs from the block diagram. Before placing the orders, the team
searched the Space Hardware Club lab for parts that the club agreed to donate. Most of
the parts for this project could be found in the lab or procured for free by other means, so
very few things needed to be ordered. Electrical and mechanical work continued as soon
as parts were found, and so began before the ordered parts arrived. Mechanical work
started before parts order with material research and selection. Programming work also
In Figure 38, the regions of constant pressure can be seen as the flat horizontal lines
on the graph. The data produced within these sections is then extracted and the average
readings for each constant pressure are found. These average values are plotted against
the Worker Bee pressures in Figure 39 below, where WB is Worker Bee pressure, Pi is
the internal MS5607 sensor, and Pe is the external MS5607 sensor.
100000.0
80000.0
Pressure (Pa)
60000.0 WB
Pe
40000.0 Pi
20000.0
0.0
99325.2 6412.8 117.7 6452.8 29864.2 99325.2
Worker Bee Pressure (Pa)
From Figure 39, it can be seen that the external pressure readings are near the Worker
Bee readings while there is a constant difference between the Pi and Pe. To correct for
this difference, the average difference between the internal and external pressure
readings is calculated. This correction factor is found to be equal to 5371 Pa. The
correction factor is subtracted from all Pi values in the averaged calibration pressure data
in order to produce corrected Pi values. The average data can then be re-plotted as
shown in Figure 40.
120000.0
100000.0
80000.0
Pressure
60000.0 WB
Pe
40000.0 Pi Corrected
20000.0
0.0
99325.2 6412.8 117.7 6452.8 29864.2 99325.2
Worker Bee Pressure (Pa)
Figure 41 shows that that the correction factor is indeed valid for all pressure
measurements.
To better compare the MS5607 data to the Worker Bee data, the differences between
the two values at each constant pressure are found. The differences are graphed with
respect to Worker Bee pressure in Figure 42 below.
800.0
400.0
200.0 WB-Pe
WB-Pi
0.0
99325.2 6412.8 117.7 6452.8 29864.2 99325.2
-200.0
-400.0
-600.0
Worker Bee Pressure (Pa)
The differences clearly vary with pressure. However, too few measurements were
taken to determine whether the error is random or bias. It is also unclear whether or not
the error is produced by the Worker Bee or the MS5607, but it is most likely a sum of
errors from both sensors. Since both the Worker Bee and MS5607 sensor are
manufacturer calibrated and based on the output shown in Figure 40, it can be determined
that the pressure differences contain acceptable error. Therefore, the differences fall into
the uncertainty of the device meaning no further correction factor will be incorporated into
the code.
Given the error of each device detailed on their respective datasheets, the average
error of each reading may be found. These errors in addition to averaged pressure
readings and differences are shown in Table 9 below.
Based on the above data, it can also be seen that the MS5607 measures show
minimal to no hysteresis. This means that the measurement accuracy does not
significantly vary based on whether pressure is increasing or decreasing. Further
discussion on device uncertainty is contained in Section 6.2 below.
b. Temperature Calibration
In order to calibrate the temperature readings of the MS5607, the sensor readings
were compared to the readings of a calibrated Thermometer. Two readings were taken,
one at ambient air temperature and on at cold temperature. The tip of the thermometer
was placed as close as possible to the temperature sensor as shown in Figure 43.
The setup was again left still and as far from airflow as possible for an hour. During
this time, the freezer remained unopened. Again, at the end of that time, the thermometer
reading was recorded without opening the freezer, and the last 10 minutes of device
temperature readings were averaged together. The recorded values are shown below in
Table 10.
6.2. Uncertainty
a. Sensor Uncertainty
Total MS5607 sensor uncertainty is given as +/- 350 Pa for pressure and +/- 4.0 C
for temperature [1]. All sensor uncertainties apply to both pressure sensors at 3V input.
The range for the sensor is -40 C to 85 C for temperature and 1,000 Pa to 120,000 Pa
for pressure, however, full accuracy is only guaranteed for 30,000 Pa to 110,000 Pa [1].
Readings taken beyond these ranges will contain error as the sensor is not designed to
take readings under such conditions. The sensor has a resolution error equal to +/- .5 Pa
and +/- .5 C due to the fact that its output reading is to the nearest Pascal for pressure
and the nearest degree Celsius for temperature. Another source of uncertainty is the
sensor sensitivity. If a change in either pressure or temperature is less than the devices
minimum detectable value error can occur as the device will not record a change in the
readout value. The sensor also has some random error that can be seen in Section 6.1.a.
Additionally, there is random error associated with the noise detected by the sensor, again
shown in Section 6.1.a. Noise is defined as readings picked up by the sensor that are not
precise measurements but instead contain error caused by random sensor error or by
external forces such as wind. Noise can be corrected for by averaging reading values
together. The sensors also have uncertainty associated with the calibration as detailed in
Section 6.1.a. However, it is useful to note that the sensor readings do not contain any
notable hysteresis. Further details on the pressure sensor specifications can be found in
Reference 1: MS5607-02BA03 Barometric Pressure Sensor, with stainless steel cap.
b. Variability of Measurement
For the variability of the actual quantity being measured, the external temperature and
pressure readings contains some uncertainty. The device is kept inside a foam casing in
order to protect the Arduino from low temperatures. However, the outside temperature
must be measured by the external sensor, so a hole was cut within the casing that allows
the sensor to be exposed to the outside air. Due to the casing around the sensor, it may
not be reading the exact external temperature at any given time because of the insulating
properties of the foam. In addition, the pressure contains some uncertainty since it is
exposed to the airflow around the payload. This airflow can lead to dynamic pressure
readings of the air instead of absolute pressure readings. The internal pressure sensor
may also pick up dynamic pressure readings from air movement within the balloon itself.
1 0 2 1 2 2
, : = ( ) + ( ) +( ) (4)
5.257 0 5.257
1
0 5.257 1 0 2 1 2 2
: = ( ) ( ) + ( ) +( ) (5)
5.257 0 5.257
2, : = (6)
0.0065 0.0065
2 2
: = ( ) + ( ) (7)
0.0065 0.0065
e. Total Uncertainty
The component that dominates system uncertainty is the uncertainty associated with
the sensor since it is propagated through the Arduino and through the MATLAB
processing code. Temperature presents a larger percent of uncertainty with respect to its
measured values. Therefore, temperature uncertainty contributes most to altitude
uncertainty. However, since the goal of this device is to measure pressure, the total
uncertainty may be reduced by simply analyzing pressure readings over time, thus
eliminating the need to output temperature data. With this simplification of output, the
uncertainty of the pressure sensor is the most significant cause of error in the outcome of
the project since it is the primary output value and is propagated through the Arduino and
MATLAB analysis.
7. Lessons Learned
7.1. General
As with most projects, the area in most need of improvement is time management.
Nearly every step of the design and implementation process took longer than expected.
Most notable was the testing and debugging of the code. The programming for the device
was finished long before the electronics and the team incorrectly assumed that the code
would work when uploaded and did not account for adequate debugging time. In the
future, programming and circuitry should be completed at the same time to allow for more
debug time. In general, more buffer should have been incorporated into all steps of the
project schedule.
When designing a PCB, it is vital to ensure that it is being created in the latest version
of the software. If this is done, when the file is transferred to another computer, the work
done so far will be safe and will properly load on the new computer instead of being
corrupted due to version differences.
When testing, one should be sure to remove any obstructions from the sensor, such
as tape, or else the sensors may not read properly. One of the teams sensors had the
protective tape left over it during testing and thus did not record data, so the test had to
be repeated after tape removal.
After this, the team elected to use an Arduino Due instead of an Uno since the Due
outputs 3V signals instead of 5V. On the upside, the Arduino boards include a voltage
regulator and extra pins for the LED, so it was not necessary to include the regulator or
MOSFET on the circuit, saving valuable space on the small printed circuit boards.
In the final design of the board, the team decided to remove the thermistor for
simplicity. The MS5607 sensors include temperature readings that must be taken within
the code in order for the device to function properly. To accommodate the MS5607 sensor,
instead of a thermistor, which can be on the end of a wire outside the payload, the board
measuring atmospheric pressure had to be better exposed. This was done by simply
Having to use that long of a boring bar caused chatter that would go unnoticed if the
working material was opaque such as aluminum. When polishing the inside of the tube
with acetone, the liquid ran into the chatter cracks and due to the natural magnifying
characteristics of acrylic. the finished product looked unprofessional. The first capsule
with the chatter is shown in Figure 47.
In order to correct for this problem, the PCB was downsized to one inch diameter and
eliminated the need to use a boring bar.
8. Acknowledgements
The Airman Trout Team would like to thank the following people who helped make
this project possible. Daniel Corey and Sarah Dangelo helped members understand how
SPI works within a code and how best to troubleshoot the Arduino sketch. Elena Pradhan
soldered the pressure sensors to the PCBs. Amit Patel and Dr. Gabe Xu aided team
members in using the Propulsion Research Center vacuum chamber. The Space
Hardware Club and Dr. Wessling donated materials and tools for the project. The UAH
World of Wings Employees allowed the team to use their freezer to calibrate temperature.
Finally, Dr. Daniel Armentrout taught the team all about uncertainty and measurement
and the reason for this project.