{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Hello World, Inheco ThermoShake!\n", "\n", "The Inheco Thermoshake is a heater-cooler-shaker machine that enables:\n", "- heating & cooling,\n", "- locking & unlocking, and\n", "- (orbital) shaking\n", "\n", "...of plates.\n", "\n", "- Temperature control = 4°C to 105°C (all variants, max. 25°C difference to RT in cooling mode)\n", "- Variants:\n", " - **Inheco ThermoShake RM** ([manufacturer link](https://www.inheco.com/thermoshake-classic.html))\n", " - PLR name: `inheco_thermoshake_rm`\n", " - Cat. no.: 7100144\n", " - status: PLR-tested\n", " - shaking orbit = 2.0 mm \n", " - shaking speed = 100 - 2000 rpm\n", " - footprint: size_x=147 mm, size_y=104 mm, size_z=116 mm\n", " - **Inheco ThermoShake** ([manufacturer link](https://www.inheco.com/thermoshake-classic.html))\n", " - PLR name: `inheco_thermoshake`\n", " - Cat. no.: 7100146\n", " - status: PLR-untested (should have the same API as RM)\n", " - shaking orbit = 2.0 mm \n", " - shaking speed = 100 - 2000 rpm\n", " - footprint: size_x=147 mm, size_y=104 mm, size_z=118 mm\n", " - **Inheco ThermoShake AC** ([manufacturer link](https://www.inheco.com/thermoshake-ac.html))\n", " - PLR name: `inheco_thermoshake_ac`\n", " - Cat. no.: 7100160 & 7100161\n", " - status: PLR-untested (should have the same API as RM)\n", " - shaking orbit = 2.0 mm \n", " - shaking speed = 300 - 3000 rpm\n", " - footprint: size_x=147 mm, size_y=104 mm, size_z=115.9 mm\n", "\n", "Check out the [Thermoshake User and installation manual](https://www.inheco.com/data/pdf/thermoshake-manual-1013-1049-33.pdf) for more information." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "## Setup Instructions (Physical)\n", "\n", "See the [Inheco TemperatureController user guide](../temperature-controllers/inheco.ipynb#setup-instructions-physical) for instructions on using multiple ThermoShakes with one control box. The instructions are the same as for the Inheco CPAC." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "## Usage" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from pylabrobot.heating_shaking import HeaterShaker\n", "from pylabrobot.temperature_controlling import InhecoTECControlBox\n", "\n", "control_box = InhecoTECControlBox()\n", "await control_box.setup()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "pylabrobot.heating_shaking.heater_shaker.HeaterShaker" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from pylabrobot.heating_shaking import inheco_thermoshake\n", "hs = inheco_thermoshake(\n", " name=\"Inheco Thermoshake\",\n", " control_box=control_box,\n", " index=1,\n", ")\n", "await hs.setup()\n", "type(hs) # pylabrobot.heating_shaking.HeaterShaker" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Temperature Control\n", "\n", "See the [Inheco TemperatureController user guide](../temperature-controllers/inheco.ipynb#temperature-control) for temperature control instructions. They are the same for ThermoShake as they are for the Inheco CPAC." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Shaking Control" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The {meth}`~pylabrobot.heating_shaking.heater_shaker.HeaterShaker.setup` method is used to initialize the machine. This is where the backend will connect to the scale and perform any necessary initialization.\n", "\n", "The {class}`~pylabrobot.heating_shaking.heater_shaker.HeaterShaker` class has a number of methods for controlling the temperature and shaking of the sample. These are inherited from the {class}`~pylabrobot.temperature_controllers.temperature_controller.TemperatureController` and {class}`~pylabrobot.shakers.shaker.Shaker` classes.\n", "\n", "- {meth}`~pylabrobot.heating_shaking.heater_shaker.HeaterShaker.set_temperature`: Set the temperature of the module.\n", "- {meth}`~pylabrobot.heating_shaking.heater_shaker.HeaterShaker.get_temperature`: Get the current temperature of the module.\n", "- {meth}`~pylabrobot.heating_shaking.heater_shaker.HeaterShaker.shake`: Set the shaking speed of the module.\n", "- {meth}`~pylabrobot.heating_shaking.heater_shaker.HeaterShaker.stop_shaking`: Stop the shaking of the module." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Shake indefinitely:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "await hs.shake(speed=100) # speed in rpm" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "await hs.stop_shaking() # Stop shaking" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Shake for 10 seconds:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "await hs.shake(\n", " speed=100,\n", " duration=10\n", ") # speed in rpm, duration in seconds" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Closing Connection to Machine" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "await hs.stop()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "## Using Multiple Inheco Devices" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "See the [Inheco TemperatureController user guide](../temperature-controllers/inheco.ipynb#using-multiple-inheco-devices) for instructions on using multiple ThermoShakes with one control box. The instructions are the same as for the Inheco CPAC." ] } ], "metadata": { "kernelspec": { "display_name": "env", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.15" } }, "nbformat": 4, "nbformat_minor": 4 }