Temperature Module¶
The Temperature Module acts as both a cooling and heating device. It can control the temperature of its deck between 4 °C and 95 °C with a resolution of 1 °C.
The Temperature Module is represented in code by a TemperatureModuleContext
object, which has methods for setting target temperatures and reading the module’s status. This example demonstrates loading a Temperature Module GEN2 and loading a well plate on top of it.
temp_mod = protocol.load_module(
module_name="temperature module gen2", location="D3"
)
New in version 2.3.
Loading Labware¶
Use the Temperature Module’s load_adapter()
and load_labware()
methods to specify what you will place on the module. You may use one or both of the methods, depending on the labware you’re using. See Loading Labware on Adapters for examples of loading labware on modules.
The Opentrons Labware Library includes definitions for both standalone adapters and adapter–labware combinations. These labware definitions help make the Temperature Module ready to use right out of the box.
Standalone Adapters¶
You can use these standalone adapter definitions to load Opentrons verified or custom labware on top of the Temperature Module.
Adapter Type |
API Load Name |
---|---|
Opentrons Aluminum Flat Bottom Plate |
|
Opentrons 96 Well Aluminum Block |
|
For example, these commands load a PCR plate on top of the 96-well block:
temp_adapter = temp_mod.load_adapter(
"opentrons_96_well_aluminum_block"
)
temp_plate = temp_adapter.load_labware(
"nest_96_wellplate_100ul_pcr_full_skirt"
)
New in version 2.15: The load_adapter()
method.
Note
You can also load labware directly onto the Temperature Module. In API version 2.14 and earlier, this was the correct way to load labware on top of the flat bottom plate. In API version 2.15 and later, you should load both the adapter and the labware with separate commands.
Block-and-tube combinations¶
You can use these combination labware definitions to load various types of tubes into the 24-well thermal block on top of the Temperature Module. There is no standalone definition for the 24-well block.
Tube Type |
API Load Name |
---|---|
Generic 2 mL screw cap |
|
NEST 0.5 mL screw cap |
|
NEST 1.5 mL screw cap |
|
NEST 1.5 mL snap cap |
|
NEST 2 mL screw cap |
|
NEST 2 mL snap cap |
|
For example, this command loads the 24-well block with generic 2 mL tubes:
temp_tubes = temp_mod.load_labware(
"opentrons_24_aluminumblock_generic_2ml_screwcap"
)
New in version 2.0.
Block-and-plate combinations¶
The Temperature Module supports these 96-well block and labware combinations for backwards compatibility. If your protocol specifies an apiLevel
of 2.15 or higher, you should use the standalone 96-well block definition instead.
96-well block contents |
API Load Name |
---|---|
Bio-Rad well plate 200 μL |
|
Generic PCR strip 200 μL |
|
NEST well plate 100 μL |
|
This command loads the same physical adapter and labware as the example in the Standalone Adapters section above, but it is also compatible with earlier API versions:
temp_combo = temp_mod.load_labware(
"opentrons_96_aluminumblock_nest_wellplate_100uL"
)
New in version 2.0.
Temperature Control¶
The primary function of the module is to control the temperature of its deck, using set_temperature()
, which takes one parameter: celsius
. For example, to set the Temperature Module to 4 °C:
temp_mod.set_temperature(celsius=4)
When using set_temperature()
, your protocol will wait until the target temperature is reached before proceeding to further commands. In other words, you can pipette to or from the Temperature Module when it is holding at a temperature or idle, but not while it is actively changing temperature. Whenever the module reaches its target temperature, it will hold the temperature until you set a different target or call deactivate()
, which will stop heating or cooling and will turn off the fan.
Note
Your robot will not automatically deactivate the Temperature Module at the end of a protocol. If you need to deactivate the module after a protocol is completed or canceled, use the Temperature Module controls on the device detail page in the Opentrons App or run deactivate()
in Jupyter notebook.
New in version 2.0.
Temperature Status¶
If you need to confirm in software whether the Temperature Module is holding at a temperature or is idle, use the status
property:
temp_mod.set_temperature(celsius=90)
temp_mod.status # "holding at target"
temp_mod.deactivate()
temp_mod.status # "idle"
If you don’t need to use the status value in your code, and you have physical access to the module, you can read its status and temperature from the LED and display on the module.
New in version 2.0.
Changes with the GEN2 Temperature Module¶
All methods of TemperatureModuleContext
work with both the GEN1 and GEN2 Temperature Module. Physically, the GEN2 module has a plastic insulating rim around the plate, and plastic insulating shrouds designed to fit over Opentrons aluminum blocks. This mitigates an issue where the GEN1 module would have trouble cooling to very low temperatures, especially if it shared the deck with a running Thermocycler.