Design of a 100 Bar Large-Bore Optical Dual-Chamber Combustor for Turbulent Jet Ignition Diagnostics

Led the mechanical design, assembly, installation, and commissioning of a 100-bar optically accessible dual-chamber combustion facility to investigate turbulent jet ignition under engine-relevant conditions. The system integrated a modular optical prechamber with a large-bore, constant-volume main chamber, enabling simultaneous high-speed visualization of prechamber flame propagation and main-chamber jet ignition. Key capabilities included interchangeable nozzle geometries, precise control of equivalence ratio, integrated pressure and temperature instrumentation, and synchronized nanosecond spark triggering. Advanced optical diagnostics such as Z-type schlieren imaging, OH*/CH* chemiluminescence imaging, and high-speed photography were incorporated to resolve transient combustion phenomena. The platform demonstrated reliable high-pressure operation, minimal leakage, and controlled turbulence generation, providing a scalable research tool for advanced ignition strategies in large-bore engines.
Home
Questions?
hero-image

Daipayan Sen

Project Timeline

Sep 2022 - Jun-2024

HighlightS

  • Enabled simultaneous optical access to both prechamber and main chamber combustion zones, increasing diagnostic visibility compared to conventional single-chamber optical setups.
  • Integrated high-speed schlieren imaging (10,000 fps) and direct jet visualization (4,000 fps) into a synchronized diagnostic framework for resolving transient turbulent jet ignition phenomena.
  • Developed a modular prechamber architecture allowing rapid interchangeability of nozzle geometries and internal volumes, accelerating experimental turnaround and parametric studies.
  • Combined high-voltage nanosecond pulse ignition, precision fuel/air delivery, PID-controlled heating, and LabVIEW-based DAQ into a unified experimental control system.
  • Demonstrated stable turbulent jet ignition across lean equivalence ratios (ϕ = 0.6–0.8), validating the facility for advanced ignition strategy research.

SKILLS

SolidWorks
FEA
LabVIEW
NI-cDAQ
PID
High-Pressure Systems
Schlieren Imaging
MATLAB
Sensor Integration

External Links

Problem Statement

Conventional combustion research platforms lack simultaneous optical access to both the prechamber and main combustion chamber, limiting the ability to directly observe and correlate turbulent jet ignition dynamics across coupled volumes. Most existing setups either provide pressure data alone or restrict optical diagnostics to the main chamber, leaving the complex flame development and jet formation processes inside the prechamber experimentally unresolved. Additionally, many facilities are not designed for high-pressure, engine-relevant conditions or lack modularity to investigate varying nozzle geometries and chamber configurations. These limitations hinder the fundamental understanding of turbulent jet ignition mechanisms, lean combustion stability, and ignition scalability for large-bore engines. Therefore, there is a critical need for a high-pressure, optically accessible, and modular dual-chamber combustion platform capable of resolving transient reacting flow phenomena with synchronized diagnostics under controlled and repeatable conditions.

Bill of Materials (BOM)

The following table lists the components used in the prototype, including part numbers, quantities, materials, estimated costs, and potential suppliers.

Item

Component

Part Number

Qty

Material

Cost ($)

Supplier

Notes

1

Heat Sink

637-20ABPE

1

Aluminum

25.00

McMaster-Carr

100x100x50 mm, extruded aluminum

2

Cooling Fan (12V, 40 mm)

AFB0412SHB

1

Plastic/Metal

10.00

DigiKey

Low-noise, 35 dB max, 12V DC

3

Device Housing

Custom (3D-printed)

1

PLA

15.00

University 3D Print Lab

FDM-printed, 200x150x100 mm

4

Thermal Insulation Foam

851-074

0.5 m²

Polyurethane Foam

8.00

Amazon

Cut to fit optics compartment

5

Temperature Sensor

DS18B20

1

N/A

12.00

Adafruit

±0.5°C accuracy, digital output

6

Arduino Uno

A000066

1

N/A

25.00

Arduino Store

Runs Python PID via serial interface

7

Fan Muffler

Custom (3D-printed)

1

PLA

5.00

University 3D Print Lab

Reduces fan noise

8

Fasteners (Screws, M3)

91292A112

10

Stainless Steel

3.00

McMaster-Carr

M3x10 mm, for securing components

9

Thermal Paste

AS5-3.5G

1

Silicone-based

5.00

Amazon

Improves heat transfer to sink

Motor Review

Please accept cookies to access this content

Basic PID Controller Script

PYTHON
import time class PIDController: """A PID controller for precise control in robotic systems. Attributes: kp (float): Proportional gain. ki (float): Integral gain. kd (float): Derivative gain. setpoint (float): Desired target value. prev_error (float): Previous error for derivative calculation. integral (float): Accumulated integral term. dt (float): Time step in seconds. """ def __init__(self, kp: float, ki: float, kd: float, setpoint: float = 0.0): """Initialize PID controller with gains and setpoint. Args: kp: Proportional gain for error response. ki: Integral gain for accumulated error. kd: Derivative gain for error rate of change. setpoint: Desired target value (default: 0.0). """ self.kp = kp self.ki = ki self.kd = kd self.setpoint = setpoint self.prev_error = 0.0 self.integral = 0.0 self.dt = 0.01 def compute(self, current_value: float) -> float: """Compute PID output based on current system value. Args: current_value: Current measured value of the system. Returns: float: Control signal to adjust the system. """ # Calculate error error = self.setpoint - current_value # Proportional term p_term = self.kp * error # Integral term self.integral += error * self.dt i_term = self.ki * self.integral # Derivative term derivative = (error - self.prev_error) / self.dt d_term = self.kd * derivative # Calculate total output output = p_term + i_term + d_term # Update previous error self.prev_error = error return output if __name__ == "__main__": # Initialize PID controller pid = PIDController(kp=1.0, ki=0.1, kd=0.05, setpoint=10.0) # Simulate mode (e.g., motor position) current_value = 0.0 for _ in range(100): control_signal = pid.compute(current_value) # Simulate system response: position updates based on control signal current_value += control_signal * 0.1 print(f"Current Value: {current_value:.2f}, " f"Control Signal: {control_signal:.2f}") time.sleep(pid.dt)