Cabin CO₂ obeys a first-order mass balance: crew respiration adds gas at a fixed rate, and the scrubber bed removes it at a rate roughly proportional to how much CO₂ is present (diffusion into the sorbent scales with partial pressure):
dP/dt = k_gen · n_crew − k_scrub · A(t) · P
P cabin CO₂ partial pressure (mmHg)
n_crew crew count aboard
A(t) fraction of scrub capacity online (1.0 = both units, less while primary is offline)
Steady state: P_ss = k_gen · n_crew / (k_scrub · A)
An engineering change to the primary scrubber (Unit A) — a firmware update, a bed swap, a sensor replacement — cannot happen with the crew still breathing into a fully-online cabin: standard practice pulls the unit offline for the change window and lets the standby unit (Unit B) alone carry the load. This simulator models exactly that: starting the change order drops removal capacity to the standby fraction you set, and cabin CO₂ climbs toward a new, higher steady state for the duration of the window. If it crosses the 7.6 mmHg caution line the change is still recoverable; crossing the 15 mmHg emergency limit forces an abort and brings Unit A back online immediately, exactly as a real change control board's abort criteria would.
- Crew slider — more crew means faster CO₂ generation, so the same standby capacity depletes margin sooner.
- Standby capacity slider — the fraction of nominal scrubbing the backup unit alone can sustain; a weaker backup means a steeper CO₂ rise.
- Change window slider — how long Unit A must stay offline to complete the change; a longer window gives CO₂ more time to climb before Unit A returns.
- Start Change Request — takes Unit A offline, starts the clock, and runs the ODE above until the window closes (success) or the emergency limit is hit (abort).
The 7.6 mmHg / 15 mmHg thresholds are representative of the spacecraft cabin CO₂ limits used for ISS-class habitats — a real change board would size the standby capacity and window length so the margin never gets this close in the first place.