message: Further tuning of the AIR control values trades some exhale fall time performance for better overshoot characteristics.
  Stablity in test 5, 7, and 8 is improved, but 5 still possibly an issue.  Problematic undershoot in Test 6 is reduced.
diff: @@ -72,6 +72,7 @@ static DebugFloat dbg_volume_uncorrected("uncorrected_volume",
  static DebugFloat dbg_flow_correction("flow_correction",
  "Correction to flow, cc/sec");
  +
  // TODO: If we had a notion of read-only DebugVars, we could call this
  // blower_valve_ki, which would be kind of nice? Alternatively, if we had a
  // notion of DebugVars that a user had set/pinned to a certain value, we could
  @@ -122,11 +123,15 @@ Controller::Run(Time now, const VentParams &params,
  // Note that we use desired_state.pip/peep and not params.pip/peep because
  // desired_state updates at breath boundaries, whereas params updates
  // whenever the user clicks the touchscreen.
  +
  +
  float blower_ki = std::clamp(
  - 2.0f * (desired_state.pip - desired_state.peep).cmH2O() - 10.0f, 10.0f,
  + 0.5f * (desired_state.pip - desired_state.peep).cmH2O() + 5.0f, 10.0f,
  20.0f);
  +
  dbg_blower_valve_computed_ki.Set(blower_ki);
  +
  blower_valve_pid_.SetKP(dbg_blower_valve_kp.Get());
  blower_valve_pid_.SetKI(blower_ki);
  blower_valve_pid_.SetKD(dbg_blower_valve_kd.Get());
  @@ -178,7 +183,7 @@ Controller::Run(Time now, const VentParams &params,
  .blower_power = 1,
  .blower_valve = blower_valve,
  // coupled control: exhale valve tracks inhale valve command
  - .exhale_valve = 1.0f - 0.8f * blower_valve - 0.2f,
  + .exhale_valve = 1.0f - 0.55f * blower_valve - 0.35f,
  };
  } else {
  // Delivering pure oxygen.
  