Building an Off-Grid HHO System
A complete guide to building an HHO (oxyhydrogen) system for off-grid use — heating supplementation, generator fuel savings, or torch applications. From component selection through Lateralus-powered monitoring.
◉ What We're Building
An HHO system with these specifications:
- Output: 500-2000 L/hr (adjustable)
- Power: 12V or 24V DC (solar/battery compatible)
- Monitoring: RP2040-based with Lateralus firmware
- Safety: Flame arrestor, pressure relief, auto-shutoff
Total cost: $150-300 depending on size and components.
◉ Safety First
HHO is flammable. The hydrogen-oxygen mixture is more reactive than either gas alone. Essential safety measures:
- Flame arrestor: Sintered bronze (50μm or finer) between generator and output
- Bubbler: Gas passes through water to prevent flashback
- Pressure relief: 5 PSI max, vents to outside
- Ventilation: Never run in enclosed spaces
- No sparks: Keep away from electrical connections
- Kill switch: Emergency power cutoff accessible
Take this seriously. A flashback can destroy the cell and injure you.
◉ Components
Electrolyzer Cell
The heart of the system. Two designs:
| Type | Pros | Cons |
|---|---|---|
| Dry Cell | Higher efficiency, cooler operation | More complex to build |
| Wet Cell | Simpler, cheaper | Lower efficiency, more heat |
We recommend dry cells for off-grid use — efficiency matters when you're on solar.
Materials for 7-plate Dry Cell
- 7× 316L stainless steel plates, 6"×6"×1/16"
- 6× EPDM gaskets, 6"×6"×1/8"
- 8× M8 stainless bolts, nuts, washers
- 2× Acrylic endplates, 1/4" thick
- Hose barb fittings (gas outlet, water fill)
Reservoir
- 1-gallon HDPE container (food-grade)
- Float switch (water level sensor)
- Fill port with cap
- Return line from cell
Bubbler
- Quart-size jar with two-hole lid
- Input tube to bottom
- Output from top (above water level)
- Fill with water — gas bubbles through
Controller
- PWM board (30A minimum)
- RP2040 microcontroller
- Current sensor (ACS712 30A)
- Temperature sensors (DS18B20 × 2)
- Pressure sensor (MPX5010DP)
- Display (optional, 0.96" OLED)
◉ Assembly
Step 1: Plate Preparation
# Sand plates for better electrolysis
# Cross-hatch pattern at 45 degrees
# Use 120-grit sandpaper on both sides
# Clean with isopropyl alcohol
# Wear gloves — no oils on plates
Step 2: Cell Stack
- Cut gaskets with proper holes (plate opening + 2 bolt holes)
- Alternate: Plate → Gasket → Plate → Gasket...
- End plates: Acrylic with bolt holes
- Torque bolts evenly in star pattern
- Test for leaks with water before first use
Step 3: Wiring
For 12V system (7 plates = 6 cells in series):
Configuration: +N-N-N-N-N-N-
+ = Positive terminal plate
N = Neutral plates (no connection)
- = Negative terminal plate
Cell voltage: 12V / 6 = 2.0V per cell (optimal)
Step 4: Plumbing
Water Reservoir
|
v
[Electrolyzer Cell]
|
v
Flame Arrestor
|
v
Bubbler (water trap)
|
v
Output (to torch/appliance)
◉ Electrolyte
KOH (potassium hydroxide) is preferred:
- Concentration: 3-5% by weight
- Water: Distilled only — tap water contains minerals
- Handling: KOH is caustic — wear goggles and gloves
# Mixing (for 1 gallon):
# 3% = 115g KOH per gallon
# 4% = 150g KOH per gallon
# Start with 3%, increase if efficiency low
◉ Lateralus Firmware
The RP2040 runs monitoring firmware:
@freestanding
module hho.control
import hw.adc
import hw.pwm
import hw.gpio
const MAX_TEMP = 75.0 // °C
const MAX_PRESSURE = 4.5 // PSI
const MIN_WATER = 0.2 // Level sensor
fn main() {
init_peripherals()
loop {
let sensors = read_sensors()
// Safety checks
if sensors.temp > MAX_TEMP {
emergency_stop("Over temperature")
}
if sensors.pressure > MAX_PRESSURE {
emergency_stop("Over pressure")
}
if sensors.water_level < MIN_WATER {
emergency_stop("Low water")
}
// Adjust PWM for target current
let duty = calculate_duty(sensors)
pwm.set_duty(0, duty)
// Update display
display.update(sensors)
sleep_ms(100)
}
}
fn calculate_duty(s: Sensors) -> u16 {
// Lower duty as temperature rises
let temp_factor = 1.0 - ((s.temp - 40.0) / 40.0) * 0.3
let target = TARGET_CURRENT * temp_factor
// PID control for current
pid_update(s.current, target)
}
◉ Performance Tuning
| Parameter | Optimal Range | Effect |
|---|---|---|
| Cell voltage | 1.8-2.2V/cell | Too low: slow, too high: heat |
| Temperature | 50-65°C | Higher = faster but less efficient |
| KOH concentration | 3-5% | Higher = more conductive |
| Plate spacing | 2-3mm | Smaller = lower resistance |
◉ Integration
Common applications:
- Wood stove: Inject into air intake for hotter, cleaner burn
- Generator: Mix with air intake (5-15% fuel savings)
- Torch: Direct use for brazing/soldering
- Propane heater: Supplement with HHO
◉ Troubleshooting
- Low output: Check electrolyte concentration, plate cleanliness
- Excessive heat: Reduce current, improve cooling
- Brown electrolyte: Contamination — drain and refill
- No bubbles: Check wiring polarity, connections
Full build documentation at the HHO page. CAD files at hho-genesis.