Camera cooling
Modelled on Voyager's cooling system. The goal: get the sensor to a stable known temperature before exposing, so calibration frames stay valid across the night.
Settings (Settings → Camera cooling)
The most important:
- Enable cooling subsystem — master switch. Off means the sequencer never tries to cool.
- Camera supports temp control — leave on for a cooled camera; uncheck for a DSLR or any camera Starship shouldn't send cooler commands to. With this off, every cooling command (manual and sequenced) is refused.
- Default setpoint — global default. Blank means cooling is disabled by default; sequences that ask to cool will fail unless they specify their own setpoint. Valid range −50 to +30 °C.
- On camera connect — three-way:
unchanged(don't touch the cooler),on(turn on at default setpoint),off.unchangedis safest — it prevents thermal-cycling when you reconnect during testing. Note thatononly takes effect if a default setpoint is set; with no default it leaves the cooler alone. The cooler write is applied after Connect all finishes, as its own job; a camera that ignores it is reported as a warning (camera card, console log, /api/ascomcooling_on_connect) and never fails the connect. If the ASCOM watchdog then reports the camera unresponsive onset_prop.CoolerOn (cooling on connect), the driver blocked inside that write - set the action tounchanged. A blockscript or sequencerconnect_allwaits for that job (about 20 s at most) before its next action, so acool_tothat follows always finds the on-connect write already applied. - Deviation max (settle window) + settle dwell — temperature must stay within ±window for dwell seconds before "settled" is declared. Defaults: 1.0°C, 60 s.
- Settling timeout — give up after this long if not settled (default 15 min).
- Warm-up target + timeout — for the warm-up routine; blank means "just turn the cooler off".
- Poll interval — how often the sensor is sampled during settle/warm-up waits (default 2 s).
Slow ramp
Rather than slamming the setpoint and letting the camera's firmware absorb the shock, Starship can walk the setpoint to the target linearly over a set time — gentler on the TEC.
- Ramp time (min, 0 = off) — how long a ramp takes. 0 means no ramp: set the target directly.
- Ramp step (s) — how often the setpoint is nudged during a ramp (default 15 s).
- No cooldown for delta — when the change is smaller than this many °C, skip the ramp and set directly (firmware handles small steps). Default 5 °C.
The same ramp is used going both ways: a cool-down to a colder setpoint and a warm-up toward ambient both ramp when a ramp time is configured.
Console widget
Folded into the Camera card, shown only when a camera with temperature control is connected. Live readout: sensor temp, setpoint, Δ from setpoint (green = settled, amber = ramping), power %, state pill. Manual controls: a Set target box with an optional Ramp (min) field next to it, Apply target, Cooler ON, Cooler OFF, and Warm up.
Enter a target and press Apply target to command the setpoint. Leave Ramp blank to use the configured ramp time, enter 0 to slam straight to the target, or enter a number of minutes to ramp over that time regardless of the config default. Warm up ramps back toward the warm-up target (or straight to it if no ramp is set), then switches the cooler off.
Power % at 100% means the cooler is maxed out — you're asking for a setpoint it can't reach. The widget colors this red.
The state pill reads cooler off, cooling, settled, or idle / at ambient — the last one covers the common case of a camera that reports its cooler "on" the moment it connects but isn't actually pulling any power.
Sequencer integration
The Cooling tab on the sequence editor:
- ☐ Cool sensor before first capture — commands setpoint, turns cooler on, optionally waits for settle
- Setpoint override — leave blank to use the global default
- ☐ Wait for settle — if unchecked, command setpoint and continue immediately (use only if you don't care about exposure-time temperature stability)
- ☐ Warm up at end — runs
cooler_warm_upafter the last step, regardless of how the sequence ended
If cooling is requested with wait-for-settle and it fails (timeout, unable to reach), the sequence aborts. There's no point capturing at uncontrolled temperatures.
If a ramp time is configured, the cool-on-start and the warm-up-at-end both ramp the setpoint gently rather than slamming it — the settle wait still gates until the sensor reaches and holds the target.
Cool camera as a step action
You can also cool (or re-cool) mid-sequence by dropping a Cool camera action into the steps: it takes an optional setpoint (blank turns the cooler on at the current/default target), an over min ramp qualifier (ramp to the setpoint over that many minutes instead of slamming it), and a wait settle toggle. This gives you a per-step temperature override without touching the global setpoint, and is available in the on-start and on-resume action lists too.
Blockscript
Unattended blockscripts have matching cooling verbs for the startup/shutdown states: cool to (target °C over an optional number of minutes) and warm cooler (ramp toward the warm-up target, then switch off). The default startup script cools to −10 over 5 minutes; the default shutdown script warms the cooler before disconnecting.
What's not built yet
Auto-scale fallback (try −25 if −30 fails) — for marginal coolers in summer, still not wired in the driver. Everything else that used to live here has shipped: the slow ramp ("cool down time" in Voyager) now runs on cool-down, warm-up, the console widget, sequence steps, and blockscripts; per-event setpoint overrides are handled by the Cool camera step action and the blockscript cool-to verb.