Temperature Controllers#

Temperature controllers are defined as machines with one or both of these features:

  • heating

  • actively cooling

a material or enclosed volume from a room-temperature baseline (≈20-25°C).

Based on this definition machines that include temperature control, but are not primarily temperature controllers, should build on top of the TemperatureController definition.

These multi-functional machines can be described as “composite machines”. Examples of such machines include:

  • Heater shakers: shake + heat (e.g. Inheco Thermoshake)

  • qPCR machines: measure fluorescence + heat + cool (e.g. Thermo Fisher Scientific QuantStudio 5)

  • Smart storage machines: store + heat + (cool) (e.g. Thermo Fisher Scientific Cytomats)

Temperature Controller machines can be implemented with a variety of heating/cooling technologies suited to different workflows.


Actuation technologies#

Multiple technologies can be used to implement temperature control, each with its own advantages and limitations. The two most common types are:

  1. Thermoelectric (Peltier) modules are solid-state devices that pump heat via the Peltier effect, enabling both heating and cooling by reversing current flow. Compact and modular, they mount directly on robotic decks.

    Examples:

    • Inheco Cold Plate Air Cooled (CPAC) Heater/Cooler (not yet supported in PLR)

    • Hamilton Heater Cooler (HHC)

    • Opentrons Temperature Module GEN2

  • Pros: Bidirectional control; fast response; minimal footprint

  • Cons: Limited ΔT from ambient (±65°C max); efficiency drops near extremes; requires heatsinking/ventilation

  1. Liquid-circulation systems use external chillers or heaters to pump fluid (water or glycol) through channels around a sample block, delivering uniform, stable temperatures well below and above ambient.

    Examples:

    • Inheco Cold Plate Liquid Cooled (CPLC) Heater/Cooler (not yet supported in PLR)

  • Pros: Broad temperature range; excellent uniformity; precise PID control

  • Cons: Bulky; requires plumbing and space; higher cost


Implementation#

Backend#

PyLabRobot programmatically defines Temperature Controller machines based on the TemperatureController base class.

e.g.:

from pylabrobot.temperature_controlling.temperature_controller import (
  TemperatureControllerBackend
)

hhc_backend = HamiltonHeaterCoolerBackend(device_address="/dev/ttyUSB0")

Resource Model#

Physically speaking, PLR models most standalone temperature controllers as either ResourceHolder or PlateHolder objects. I.e. these machines have physical dimensions and can hold plates or other resources in a specified child_location.

e.g.:

def Hamilton_heater_cooler_resource(name: str) -> PlateHolder:
    """
    Hamilton cat. no.: 6601900-01
    """
    return PlateHolder(
        name=name,
        size_x=145.5,
        size_y=104.0,
        size_z=67.8,
        child_location=Coordinate(11.5, 8.0, 67.8),
        model="hamilton_heater_cooler",
        pedestal_size_z=0,
    )

hhc_resource_model = Hamilton_heater_cooler_resource(
    name="Hamilton Heater Cooler no1"
)

Frontend#

The frontend then enables fast and user-friendly access to the temperature controller’s functionality and storing of complete machine interfaces using familiar names.

e.g.:

Hamilton_heater_cooler = TemperatureController(
   backend=hhc_backend,
   resource_model=hhc_resource_model
   )


# Action command:
Hamilton_heater_cooler.set_temperature(37)

# Read command:
current = Hamilton_heater_cooler.get_temperature()