Reference
QInstruments ColdPlate
Get a QInstruments ColdPlate or ColdPlate slim connected through GroundControl and hold a first target temperature from Python.
The ColdPlate is a Peltier plate without a shaker. It is driven by the same QINSTRUMENTS BioShake connector as the shakers; only the temperature and configuration modules apply.
The code on this page is not yet run by the docs pipeline; it follows the connector's public
interface (
unitelabs-qinstruments-bioshake 0.3.0). It gains a "tested against" label once the
snippet pipeline lands.What you need
| Item | Detail |
|---|---|
| Instrument | ColdPlate or ColdPlate slim, powered on, with airflow to its fans |
| Cable | The USB (RS-232) cable QInstruments ships |
| Connector | QINSTRUMENTS BioShake from the UniteLabs registry |
| Vendor software | None |
| Machine | Windows, Linux or macOS running GroundControl |
| Access | A tenant and the SDK installed — see Setup |
Install and configure the connector
- In GroundControl, add a connector and pick QINSTRUMENTS BioShake (how to add a connector).
- Configuration:
Field Value deviceColdPlateorColdPlate slimserial_numberFrom the device label, or empty to skip the identity check portThe serial port, e.g. COM4or/dev/ttyUSB0simulatedfalse - Start the connector. It exposes
ConfigurationServiceandTemperatureController; a shaking module on a ColdPlate means the wrongdevicewas chosen.
First successful test
Set a target, switch control on, read one temperature sample, switch control off.
from unitelabs.sdk import AsyncApiClient
client = AsyncApiClient()
plate = await client.get_service_by_name(name="QINSTRUMENTS BioShake")
await plate.configuration_service.leave_eco_mode()
print(await plate.temperature_controller.get_minimum_allowed_temperature(),
await plate.temperature_controller.get_maximum_allowed_temperature())
await plate.temperature_controller.set_target_temperature(target_temp=10)
await plate.temperature_controller.turn_temperature_control_on()
subscription = await plate.temperature_controller.subscribe_current_temperature()
async with subscription:
print(await anext(subscription)) # one reading, in °C, about a second later
await plate.temperature_controller.turn_temperature_control_off()
Expected: the allowed range prints (device-specific), the plate starts cooling, one reading in °C prints, control switches off.
Known quirks and errors
| You see | It means | Do this |
|---|---|---|
EcoModeActive | Eco Mode rejects every command | leave_eco_mode() first |
TemperatureControlAlreadyEnabled / …Disabled | Control is already in the requested state | Read is_temperature_control_enabled() before toggling if you need to branch |
OverheatError (33010 / 33020) | Internal temperature too high; 33020 has tripped the fuse | Let it cool; on 33020 power-cycle the device |
FanError | A fan stalled or its airway is blocked | Clear the airflow around the device |
TecPowerError | Peltier power supply fault | Check the power supply; contact QInstruments if it persists |
| Target rejected | Outside the device range | Read get_minimum_allowed_temperature() / get_maximum_allowed_temperature() |
More snippets
- Wait until stable: loop over
subscribe_current_temperature()and stop when the reading is within tolerance ofget_target_temperature(). - Calibration offsets:
get_temperature_offset_at_40c_calibrationpoint()and theset_…counterparts — only after the vendor's calibration procedure.
Connector reference
The full list of modules and actions is generated from the connector's release data in a later
step. Until then, browse them in GroundControl or with
print(plate.temperature_controller.actions.keys()).Vendor documentation
Temperature ranges, condensation handling and safety are in QInstruments' ColdPlate manual.
Last updated