NASA ASCEND: Building Payload Telemetry Systems for High-Altitude Research
NASA ASCEND gave our team a chance to work on a real high-altitude payload system — hardware that would go up on a balloon and need to perform reliably at altitude, return useful data, and be analyzed in a reproducible way.
This post is about the engineering work: the T-MATS telemetry and analysis pipeline we built, what went wrong, and what we'd do differently.
The System Requirements
A high-altitude balloon payload has constraints that ground-based systems don't:
- Temperature: Stratospheric temperatures drop to -60°C or below. Consumer electronics fail.
- Pressure: Near-vacuum at float altitude. Pressure-sensitive components need sealed housings.
- Power budget: Battery capacity is fixed. Every sensor, radio, and compute element has a power cost that compounds.
- Weight: Every gram matters. Balloon lift capacity is finite.
- Recovery: If the system fails, you're probably not getting the hardware back intact.
The T-MATS Architecture
T-MATS (Telemetry, Measurement, and Analysis System) is what we named the full pipeline from sensor to report.
Sensor Layer
- IMU (9-DOF): Accelerometer + gyroscope + magnetometer for attitude tracking
- Barometric pressure (altitude correlation)
- External temperature (stratosphere profiling)
- GPS (3D position and velocity)
- Custom payload-specific sensors per mission
Telemetry Layer
Data is logged locally to redundant flash storage and transmitted via radio link. We used a 433 MHz LoRa link for continuous telemetry and a separate APRS beacon for position tracking by the amateur radio network.
# Telemetry packet structure
packet = {
'timestamp': unix_ms,
'lat': gps.lat,
'lon': gps.lon,
'alt_gps': gps.altitude_m,
'alt_baro': baro.altitude_m,
'temp_ext': thermistor.celsius,
'accel': [imu.ax, imu.ay, imu.az],
'gyro': [imu.gx, imu.gy, imu.gz],
'payload_data': payload.read()
}
MATLAB Analysis Pipeline
Post-flight analysis runs through MATLAB:
- Data ingestion: Parse binary log files and radio telemetry recordings
- Sensor fusion: Kalman filter combining GPS and barometric altitude
- Attitude reconstruction: Quaternion integration from IMU data
- Payload correlation: Align payload sensor data with position/attitude timeline
- Visualization: Generate plots for symposium presentation and technical report
What We Learned
Ground Testing Is Never Enough
We tested the hardware in a freezer (-20°C). The stratosphere is -60°C. Two components that passed freezer testing failed at altitude: one I2C sensor lost communication below -40°C due to capacitance changes, and a voltage regulator dropped out of spec under cold + low-pressure conditions.
Lesson: thermal margin matters more than you think. Test to -70°C if you can.
Radio Link Budget Miscalculation
Our LoRa link was calculated for ground-level atmospheric conditions. At altitude, the atmosphere is thinner but the geometry changes — the payload is much higher than any nearby obstacle. We actually got better range than predicted, but the calculation was wrong for a lucky reason.
Lesson: use proper free-space path loss calculations accounting for the actual slant range, not just horizontal distance.
Data Recovery Is Part of the Design
We had three data storage layers: onboard flash, SD card, and radio telemetry recording at ground station. All three had partial failures for different reasons. The final dataset came from combining two of them.
Lesson: redundancy isn't just for hardware — it's for data too. Design your recovery pipeline before launch.
Open Source
The T-MATS analysis scripts and Unity visualization are available at github.com/Personfu. The MATLAB code in particular is documented for reuse by other high-altitude research teams.