URPL / PURDUE UNIVERSITYEXPERIMENTAL PROPULSION · 500 LBF CLASS

MAELSTROM.

Built for the burn.

ROCKET ENGINE CONTROL & INSTRUMENTATION
HOTFIRE / CONCEPT VISUALIZATION
PROPELLANT FEEDCOMBUSTION CHAMBERNOZZLEEXHAUST →
KEROSENE + LIQUID OXYGENIGNITE. MEASURE. ITERATE.

A 500-lbf rocket engine testbed. A real-time command platform. Every valve, every transient, every millisecond of the burn — under control.

Run a hotfire simulation ↗ Explore the test article ↓
01 / MISSION

01 / The test article

The hardware
behind the heat.

Maelstrom is described in the project repository as a 500-lbf kerosene–LOX heatsink engine and a testbed for Purdue's Undergraduate Rocket Propulsion Laboratory to explore experimental propulsion technologies.

Its control software brings pressure transducers, thermocouples, load cells, solenoid valves, sequencing, and data logging into one operator-facing interface — with an emergency shutdown path always in reach.

Maelstrom engine reference render
ENGINE / PROVIDED REFERENCE RENDER

The repository identifies a six-element, fuel-centered bi-swirl coaxial injector manufactured in 17-4 stainless steel.

02 / HOTFIRE

02 / Hotfire simulation

From cold steel
to mainstage.

This web panel is an interactive project visualization, not a connection to the real test stand. It mirrors the repository's control concepts: valve state, pressure channels, autosequencing, data rate, and emergency shutdown.

  1. 01 / T+0.00PurgeClear the lines
  2. 02 / T+1.35IgnitionEstablish the flame
  3. 03 / T+3.10MainstageHold the burn
  4. 04 / T+7.25CutoffClose propellants
  5. 05 / T+7.65Post-purgeReturn to safe
MSTRM_CTRL / DEMO MODE
SAFE / STANDBY
TELEMETRY / SIMULATEDChamber pressure + thrust
Pc Thrust
03 / SYSTEM

Command path

Sense. Decide. Act. Record.

01

Sense

Pressure transducers, thermocouples, and load cells continuously translate test-stand physics into measurable signals.

PT · TC · LOAD
02

Acquire

A LabJack T7 provides the hardware I/O bridge between the physical test system and the Python application.

LABJACK T7
03

Visualize

The PyQt interface places readings and device states directly on a scaled piping & instrumentation diagram.

PYQT5 / P&ID
04

Actuate

Solenoid and pneumatic valve objects expose operator control while preserving defaults for shutdown behavior.

VALVE CONTROL
05

Sequence + Log

CSV-defined sequences automate timed actions while the logger records timestamped sensor and valve state data.

10 ms / 500 ms

Control architecture

Operator → GUI → I/O → hardware.

The application starts from main.py, creates the PyQt main window, initializes device objects, connects to the LabJack, loads an autosequence, and binds logging and shutdown behavior around the P&ID view.

ApplicationPython + PyQt5
Hardware I/OLabJack T7
Fast logging10 ms
Low-rate logging500 ms
01OPERATORPyQt command surface
02MAIN PANELdevice map + sequencer
03LABJACK T7analog + digital I/O
PTPressure
TCThermal
LCThrust
SVValves
04 / INTERFACE

Operator visualization

The P&ID is the control surface.

The production application uses the test-stand P&ID as its background and places pressure readings, valve states, connection status, logging controls, plots, and emergency shutdown behavior around the diagram.

The repository also notes that the visual layer is positioned from a static coordinate system and scaled to fit the available screen geometry.

Maelstrom control application screenshot
APPLICATION / REPOSITORY SCREENSHOT

Valve states and pressure channels are positioned directly over the system schematic while controls remain grouped along the operator panel.

05 / SOFTWARE

Modular Python stack

One interface.
Discrete responsibilities.

The repository separates physical devices, LabJack connectivity, data logging, the sequencer, and the GUI into focused modules so the test stand can evolve without collapsing the control software into one file.

INTERFACEMainPanel.py

Builds the P&ID view, initializes devices, charts, controls, connection status, and shutdown behavior.

HARDWARE I/Olabjack_connection.py

Owns the connection path to the LabJack T7 used by the operator application.

SEQUENCINGsequencer.py

Executes timed device actions loaded from sequence files and coordinates automated operation.

INSTRUMENTSDevices/

Encapsulates valve control, pressure transducers, thermocouples, and load-cell behavior.

main.pyENTRY POINT
# Launch the control application
app = QtWidgets.QApplication(sys.argv)
main_window = MainWindow()
app.setQuitOnLastWindowClosed(True)
main_window.show()

sys.exit(app.exec_())
control conceptTEST FLOW
# Conceptual execution path
connect(LabJack_T7)
initialize(devices)
load(sequence_csv)
start(data_logger)
run(autosequence)

emergency_shutdown()
VIEW THE BUILD

Inspect the full control stack.

OPEN GITHUB ↗