Instruments for High-Altitude Balloons

For many of us, an important motivation of launching balloons high in the atmosphere is to put instruments up there. Of course, the fact that instruments are heavier than air means they resist attempts to get them in the atmosphere and are prone to falling out of it. So, airborne sensors need to be light enough to be lifted by an affordable balloon and cheap enough to make risk of crash acceptable. I spent a big chunk of the last couple years designing and building a custom instrument with these characteristics in mind; this post describes how I did it.

My particular field is infrasound, sound waves whose pitch is too low for humans to hear. Infrasound waves normally come from very large sources like lightning, volcanoes, nuclear bomb tests, windmills, and even large animals like tigers or elephants. Unlike audible sound, infrasound waves can propagate long distances without dissipating as heat, which makes them useful for monitoring nuclear and volcanic blasts. Putting microphones high in the air could help improve geographic coverage in our otherwise land-based monitoring networks.

Solar balloons offer an affordable and flexible means of putting cheap, lightweight sensors in the sky. However, commercial infrasound instrumentation falls short in those aspects. To be sure, we do have a few high-quality data loggers and sensors to choose from, but none is lightweight or cheap enough to fly on solar balloons. The closest is the Omnirecs DATACUBE-3 (below, right). Including batteries and sensor, it weighs more than 1 kg and can cost a few thousand USD (depending on quantity and options chosen).

My normal research is on volcano acoustics. I’m not normally worrying about flying microphones on balloons, but I faced similar instrument limitations in volcano fieldwork. For example, my most recent project involved a hike with 2000 m of elevation gain to install 17 instruments near the vent of Tungurahua volcano. On a hike like that, the last thing I need is to be weighed down with heavy instruments, or even heavy batteries for the instruments. Plus, the instruments near the vent are definitely in harm’s way, and I don’t want to accidentally blow up an expensive sensor.

jfa-tungurahua

The upper slopes of Tungurahua: loose, rocky, steep, and prone to ballistic fall during eruptions.

The answer was that I needed to design my own instrument. This process had two parts: firmware (programming the microcontroller) and hardware (finding the right components and connecting them together). Fortunately for me, I began this project around 2012-2013 when a revival in hobbyist electronics was in full swing, and had access to components that are powerful but still novice-friendly.

jfa-logos

The various companies and online forums I used to design the instrument. Most of these cater to hobbyists and beginners.

The Arduino system makes firmware way easier than it used to be. Arduino is a combination of a microcontroller (very, very basic computer), user-friendly circuit board, and programming interface that makes it easy for hobbyists to program the microcontroller and connect peripherals to it. It’s perfect for a beginner. In my case, the firmware’s job was to read data from several inputs, do a little processing, and write output data to a micro SD card. Inputs included an analog-digital converter listening to the infrasound microphone, a GPS (for precise timing and location), a temperature sensor, and a battery voltage tracker.

jfa-arduinoide

The Arduino IDE speeds up the process of writing and testing code.

Without the Arduino system to simplify this process, it wouldn’t really be accessible to someone like me. I’m a geophysicist, not an electrical engineer! But it still wasn’t easy, and it took me a couple years of off-and-on work before I really got it working well.

The hardware part of this project began with a bunch of user-friendly breakout boards wired to the Arduino. A breakout board is a little circuit board that includes some principal component (say, a micro-SD socket, or a GPS) and all the various minor components needed to make it work. The user simply then has to make a few connections (i.e., power, ground, and communication wires) between the microcontroller and breakout board to make it work. Breakout boards are important because a bunch of little things–for example, bypass capacitors and level shifters–have to be added for the principal components to work properly. These little things are often obvious to electrical engineers but can be overwhelming to beginners. Platforms like Arduino and Raspberry Pi might be the foundation of hobbyist electronics these days, but breakout boards make it possible to do cool things with those platforms.

One bit of advice to the DIY instrument designer: if you base your design on the Arduino, don’t use an actual Arduino in the final product. Use a bare-bones variant instead. Real Arduinos have a lot of nice features that unfortunately burn a lot of power, and you can reduce power draw by up to a factor of 30 by using a bare-bones knockoff. I used the Diavolino from EvilMadScientist at first, but am now designing my own board with a built-in efficient power supply instead.

jfa-gps        jfa-adc

jfa-arduino

Top left: GPS breakout board. Top right: analog-digital converter breakout board. Bottom: Arduino Uno, the most common Arduino version.

After getting the breakout boards to play nicely with the Arduino, it was time to design a printed circuit board (PCB) to house them. This might have been the most daunting part of this process. Two circuit design programs are common among hobbyists: KiCAD (free and open-source), and the light version of Eagle (free, not open-source, restricted to non-commerical use, but popular). Like a lot of scientific software, these programs take a while to learn.

In each program, the first step is to draw a schematic showing conceptually how components connect to each other. So, for example, if your circuit included a resistor and capacitor, your schematic would include the resistor symbol connected to a capacitor symbol, but no information about the size, shape, or position of the components.

jfa-kicad_schematic

Schematic editor in KiCAD

After drawing the schematic, the user decides how to lay out the circuit in physical space–specifically, where the components and electrical connections are located on the top and bottoms surfaces of the circuit board. The first step is choosing a physical footprint for each component. Then, a PCB editor window helps the user place component footprints on physical locations on the board and draw wires connecting them. The files created in this process can be sent to a manufacturer (I use Advanced Circuits, based in Aurora, Colorado, USA).

jfa-kicad_pcb

PCB Editor in KiCAD

The final product is called the Gem infrasound logger (named for the “Gem State” Idaho, where it was developed). Parts for it cost about $250 and it takes a few hours to assemble. This is about an order of magnitude cheaper than the cheapest commercial alternative. On the other hand, I put an uncountable number of hours (hundreds, at least) into designing and revising the Gem. On the other other hand, I learned some valuable skills in the process, and my next electronics project (a power-efficient Arduino board) was much easier as a result.

And of course, it’s turned out to be useful in applications beyond volcanoes. Danny Bowman (of Sandia National Labs, and this blog) has launched them on balloons. Tim Ronan (grad student at UNC-Chapel Hill) used them in his research studying river rapids. (Turns out that being lightweight is important when microphones have to be installed by kayak through class-IV whitewater!) Danny and Tim both helped me a lot by testing Gem versions that were still in development, for which I am grateful.

Was it worth it? As a grad student, my time is cheap and half my job is to learn new skills, so spending a lot of it learning how to do this was a good investment. If I was a professional scientist whose labor was more expensive, it might not be such a good decision: better to pay an engineer to do it, even if the product costs more to develop.

In any case, the final product justifies the effort, regardless of who did it. I now have a cheap logger that I can put high on volcanoes and on balloons. It’s been used in several projects around the world now, and it will remain a key part of my infrasound research.

jfa-solarballoon

A solar balloon carrying a Gem lifting off in Albuquerque, NM, USA. Photo by Danny Bowman.

jfa-sites

A subset of the many sites where the Gem has been tested.

rNOMADS 2.0.2 released

I uploaded the newest version of rNOMADS to CRAN yesterday. This one has a new plotting function for wind altitude azimuth, and magnitude (see below for plot and source code). I also added a function for reading GRIB inventories, fixed a few typos, and tweaked a few functions. In other news, the rNOMADS subversion repository has migrated to R-Forge: http://rnomads.r-forge.r-project.org/.

I’ve also set up an rNOMADS mailing list; subscribe here if you need to ask for help or want to hear about new releases.

Wind profiles at each infrasound station in the Transportable Array (currently on the US East Coast). Ground surface is at the center of the plot, the top of the stratosphere is at the outer radius. Wind magnitudes are denoted by color, and azimuth by position around the circle.

Wind profiles at each infrasound station in the Transportable Array (currently on the US East Coast). Ground surface is at the center of the plot, the top of the stratosphere is at the outer radius. Wind magnitudes are denoted by color, and azimuth by position around the circle.


library(rNOMADS)

download.file("http://www.unc.edu/~haksaeng/rNOMADS/myTA.RDATA",
   destfile = "myTA.RDATA")
load("myTA.RDATA")
#Find the latest Global Forecast System model run
model.urls <- GetDODSDates("gfs_0p50")
latest.model <- tail(model.urls$url, 1)
model.runs <- GetDODSModelRuns(latest.model)
latest.model.run <- tail(model.runs$model.run, 1)

#Get model nodes

lons <- seq(0, 359.5, by = 0.5)
lats <- seq(-90, 90, by = 0.5)
lon.ind <- which(lons <= (max(myTA$lon + 360) + 1) & lons >= (min(myTA$lon + 360) - 1))
lat.ind <- which(lats <= (max(myTA$lat) + 1) & lats >= (min(myTA$lat) - 1))
levels <- c(0, 46)
time <- c(0, 0)

#Get data 
variables <- c("hgtprs", "ugrdprs", "vgrdprs")
model.data <- DODSGrab(latest.model, latest.model.run,
   variables, time, c(min(lon.ind), max(lon.ind)),
   c(min(lat.ind), max(lat.ind)), levels)

#Build profiles
profile <- BuildProfile(model.data, myTA$lon, myTA$lat,
    spatial.average = FALSE)

#Build profiles
zonal.wind      <- NULL
meridional.wind <- NULL
height          <- NULL

for(k in 1:length(profile)) {
   hgt  <- profile[[k]]$profile.data[, which(profile[[k]]$variables == "hgtprs"),]
   ugrd <- profile[[k]]$profile.data[, which(profile[[k]]$variables == "ugrdprs"),]
   vgrd <- profile[[k]]$profile.data[, which(profile[[k]]$variables == "vgrdprs"),]

   synth.hgt <- seq(min(hgt),
       max(hgt), length.out = 1000)
   ugrd.spline <- splinefun(hgt, ugrd, method = "natural")
   vgrd.spline <- splinefun(hgt, vgrd, method = "natural")
   zonal.wind[[k]] <- ugrd.spline(synth.hgt)
   meridional.wind[[k]] <- vgrd.spline(synth.hgt)
   height[[k]] <- synth.hgt
}

#Plot them all
PlotWindProfile(zonal.wind, meridional.wind, height, lines = TRUE,
    points = FALSE, elev.circles = c(0, 25000, 50000), elev.labels = c(0, 25, 50),
    radial.lines = seq(45, 360, by = 45), colorbar = TRUE, invert = FALSE,
    point.cex = 2, pch = 19, lty = 1, lwd = 1,
    height.range = c(0, 50000), colorbar.label = "Wind Speed (m/s)")


A flight aboard the NASA High Altitude Student Platform (HASP)

The NASA High Altitude Student Payload (HASP) project provides a spot on a high altitude balloon payload for undergraduate and graduate students. When I heard about this last year, I gathered a team together, we applied and were accepted into the program. Our project: launch infrasound microphones into the stratosphere. Infrasound (sound at frequencies below audio range) is usually measured at the Earth’s surface, but we know it propagates hundreds of kilometers upward into the atmosphere. Our goal is to measure these sound waves as they cross the stratosphere.

The HASP project was definitely a commitment. As the team leader, I was required to write a monthly status report letting the HASP project leaders know what I was up to. I had to build my payload box under strict power draw, weight, and size limits. I also had to learn electronics from the ground up. Thankfully, another member of our team had lots of experience in electronics, so it wasn’t so bad.

Our Omnirecs DataCube logger installed in the payload box.

Our Omnirecs DataCube logger installed in the payload box.

A few weeks ago, I traveled to Palestine, Texas to bring my payload to the Columbia Scientific Balloon Facility (CSBF). There, our payload was subjected to extreme temperatures (ranging from -50 to 50 Celsius) and pressures (sea level to stratospheric).  We passed the test, recording the 8 Hz signal from the vacuum pump clearly even when the pressure was around 5% of sea level.  This was an important milestone: not only did it clear us for flight, but it also showed that our differential pressure microphones (constructed by Dr. Jeff Johnson at Boise State University) would operate in a near vacuum, something they were not designed to do.

Our payload about to face the thermal/vacuum test.

Our payload (the white box with the UNC logo) about to face the thermal/vacuum test.

From Texas, I traveled to New Mexico to launch our payload into the stratosphere.  I ended up staying in my home town, about 2.5 hours from the launch site at (a CSBF facility in Ft. Sumner, NM).  Needless to say, I spent a lot of time on the road!  I had to drive there and back three times: once to put my microphones on the flight ladder (see below), another time to make sure everything worked during the “hang test” (a dry run for launch), and finally for the big day itself – the flight.

CSBF staff mounting the infrasound microphones on the flight ladder.

CSBF staff mounting the infrasound microphones on the flight ladder.

Like any balloon flight, this one depended on the weather.  This time, the news was not good.  One group was ahead of HASP, and they had dibs on each launch window.  They tried twice, and were not able to fly both times.  I had to fly home on Saturday, so I showed CSBF and HASP personnel how to set up my payload, and I resigned myself to not seeing the balloon fly.

But as luck would have it, the previous team decided to wait, and a launch window opened Saturday morning, the day I was scheduled to fly home.  Since the flight was early in the morning and my plane ticket was for early afternoon, I decided I was going to go see the launch.  I drove out, arrived in Ft. Sumner at about 10 PM, slept in the back of the car for a few hours, then got up at 2:45 AM Saturday morning to start getting ready.

It's about 3:45 AM, and CSBF staff secure the microphones after I powered them up about 15 minutes before.  The wheel on "Big Bill" (the launch vehicle), is taller than I am.

It’s about 3:45 AM, and CSBF staff secure the microphones after I power them up. The wheel on “Big Bill” (the payload vehicle), is taller than I am.

The launch was touch and go the whole time – we had to wait for the winds to all blow in the same direction for the first 1000 ft in order to start the inflation process.  As luck would have it, they did straighten out, and the call was given to roll out and start inflating the balloon.

The balloon reaches full inflation about a half hour after sunrise.

The balloon reaches full inflation about a half hour after sunrise.

The launch was spectacular.  The balloon was released and drifted into the air.  Big Bill started driving in the direction that the balloon was going, and just when it was overhead, the payload was released.  The entire structure (800 ft high!) was now in free flight.  It seemed to climb slowly, but that was an illusion – when the balloon was 12,000 ft above the ground it still seemed close enough to touch.

The radio crackles and says "it's your balloon."  With that, the 3 million cubic ft envelope is released and begins climbing into the air.

The radio crackles and says “it’s your balloon.” With that, the 3 million cubic ft envelope is released and begins climbing into the air.

Here we go!

Here we go!

 

The balloon flew for about 8 hours, and was terminated over northeast Arizona.  Once the recovery team picks it up and ships us our data logger, we can find out what we heard up there.

A big thanks to the Louisiana State team for running HASP, and all the great people at CSBF who made it all happen!