Hardware · Control system

The CO₂ controller.

What it is
A loop that holds CO₂ at a setpoint
Two jobs
Enrich to grow, or ventilate to keep air fresh
The catch
CO₂ is an asphyxiant; treat safety seriously

A CO₂ controller holds a growing space at a target carbon-dioxide level, and it does so in one of two opposite ways: enriching, adding CO₂ to push growth, or ventilating, exhausting CO₂ to keep the air fresh. Either way it reads a CO₂ sensor, compares it to a setpoint, and switches an actuator, a valve or a fan, through a relay. It is the same closed loop as the pH/EC controller, applied to the air.

A CO2 cylinder and regulator
Image: Kevin B 3, CC BY 2.0, via Wikimedia Commons

What it is.

A controller, a CO₂ sensor, and an actuator, wired into a loop. The controller can be a commercial unit or a microcontroller running the logic; the actuator is a solenoid valve on a CO₂ supply for enrichment, or an exhaust fan for ventilation, switched by a relay or contactor. The whole point is to keep the CO₂ where the crop wants it without you standing there with a meter.

Enrich or ventilate.

The first thing to settle is which job you are doing, because they are opposites. The two modes, side by side:

CO₂ control modes · verified 2026-06-24
Spec Enrichment Ventilation
Goal Add CO₂ to push growth Remove CO₂ to keep air fresh
Acts when CO₂ falls below setpoint CO₂ rises above setpoint
Actuator A valve on a CO₂ supply An exhaust fan
Typical space Sealed grow rooms, greenhouses Mushroom rooms, sealed or occupied spaces
Watch for Enrich only with the lights on Provide fresh-air makeup, not just exhaust

Enrichment suits a sealed grow room, greenhouse, or cabinet where plants draw the CO₂ down and extra growth is the goal; a common target is somewhere around 800 to 1500 parts per million. Ventilation suits a mushroom room, a sealed space, or anywhere respiration or combustion drives CO₂ up, where fruiting bodies or people need it back down. Same sensor and loop, opposite action.

How the loop works.

Read the CO₂ sensor, compare to the setpoint with a dead band so the equipment does not short-cycle, and if the reading is on the wrong side, switch the actuator for a spell, then wait for the air to mix and measure again. For enrichment there is one more rule that matters: only enrich with the lights on, because plants take up CO₂ during photosynthesis and ignore it in the dark, so dosing at night just wastes gas and risks a dangerous build-up. Tie the enrichment loop to the photoperiod.

CO₂ sources for enrichment.

If you are adding CO₂, where it comes from shapes the whole setup. A compressed CO₂ tank with a regulator and a solenoid valve is the clean, controllable choice: the controller opens the solenoid to dose, and nothing else changes in the room. A generator or burner (propane or natural gas) makes CO₂ cheaply at scale but adds heat, humidity, and the real hazards of combustion, including carbon monoxide and fire. Fermentation or CO₂ bags are hobby-scale and uncontrolled, with no way for a controller to throttle them. For a controlled, sensor-driven system, the tank-and-solenoid is the one to build on.

Use a real NDIR sensor.

This decides whether the whole thing is safe and useful. A CO₂ controller is only as honest as the sensor it reads, and there are two very different kinds. A true NDIR sensor (the SCD40, the MH-Z19) measures actual CO₂ in parts per million. A cheap eCO₂ sensor only guesses CO₂ from other gases and is worthless for control. Never let an eCO₂ sensor drive a CO₂ controller: it will enrich or vent against a made-up number. Only a real NDIR reading should open a valve.

A serious word on safety.

CO₂ is an asphyxiant, and a controller that adds it to a room demands respect. Sustained high levels harm people well before they harm plants, so never enrich an occupied space without monitoring and an alarm, and a stuck-open solenoid can flood a sealed room to dangerous levels, so set hard limits and a maximum dose. If you burn fuel for CO₂, you add carbon monoxide and fire risk on top, which need their own alarms. Build in an independent high-CO₂ alarm, fail the valve closed, and treat an enriched room as a space that can become unsafe to enter.

Key facts.

Where it fits, and where it doesn’t.

Where it fits

  • Enriching a sealed grow room, greenhouse, or cabinet.
  • Ventilating a mushroom room to keep CO₂ low for fruiting.
  • Clearing CO₂ from a sealed or occupied space.
  • A loop driven by a real NDIR sensor, with alarms.

Where it doesn’t

  • A leaky, open space; enrichment just escapes.
  • An eCO₂ sensor; it cannot drive a controller safely.
  • An occupied room without monitoring and alarms.
  • Unattended enrichment with no dose limit or fail-closed.

Resources.

The sensor it reads, the switch it uses, and the deeper reading:

CO₂ sensors (NDIR) Relays & contactors CO₂ enrichment guide Home Assistant

Frequently asked questions.

What does a CO2 controller do?

It holds a growing space at a target CO2 level by either enriching, adding CO2 to push growth, or ventilating, exhausting CO2 to keep the air fresh. It reads a CO2 sensor, compares it to a setpoint, and switches a valve or an exhaust fan through a relay. It is the same closed loop as a pH/EC controller, applied to the air instead of the water.

Should I enrich or ventilate CO2?

It depends on the goal. Enrich when you want extra growth in a sealed grow room, greenhouse, or cabinet where plants draw CO2 down, often to around 800 to 1500 ppm. Ventilate when CO2 builds up and needs to come down, in a mushroom room where low CO2 drives fruiting, or in a sealed or occupied space for fresh air. Same sensor and loop, opposite action.

Why must a CO2 controller use an NDIR sensor?

Because a controller does exactly what its sensor says, and only a true NDIR sensor measures actual CO2 in parts per million. A cheap eCO2 sensor only estimates CO2 from other gases and is worthless for control, so it would open a valve or run a fan against a made-up number. Use a real NDIR sensor like the SCD40 or MH-Z19; never let an eCO2 sensor drive the loop.

Is running a CO2 controller safe?

It can be, with real care, because CO2 is an asphyxiant. Sustained high levels harm people before plants, so never enrich an occupied space without monitoring and an alarm, and set hard dose limits so a stuck-open valve cannot flood the room. Burning fuel for CO2 adds carbon monoxide and fire risk that need their own alarms. Build in an independent high-CO2 alarm and fail the valve closed.

Why only enrich CO2 when the lights are on?

Because plants take up CO2 during photosynthesis, which only happens in light. In the dark they do not use it, so enriching at night just wastes gas and lets CO2 build to a level that is dangerous and useless. Tie the enrichment loop to the photoperiod so the valve can only open while the lights are on.