Purdue Undergraduate Rocket Propulsion Laboratory

CONTROL
THE FIRE.

A real-time command, instrumentation, and sequencing platform for Maelstrom — a 500-lbf kerosene/LOX rocket engine testbed built to make experimental propulsion controllable.

Rocket engine reference render supplied for the Maelstrom project
TEST ARTICLE500 lbfKEROSENE / LOX
INJECTOR6× BI-SWIRL
CONTROLARMED
01

LabJack T7 links the operator software to valves and instrumentation.

02

PyQt5 overlays live device state directly onto the engine P&ID.

03

CSV-defined autosequences coordinate repeatable hot-fire operations.

01 / MISSION

Propulsion as a controllable system

Turn a hot fire into structured data.

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 / 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
03 / CONTROL

Interactive showcase

Run a simulated hot-fire sequence.

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.

MSTRM_CTRL / DEMO MODE
SAFE / STANDBY
TELEMETRY / SIMULATEDChamber pressure + thrust
Pc Thrust
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