{ "cells": [ { "cell_type": "markdown", "id": "alps5000-intro", "source": "# Thermo Scientific ALPS 5000\n\nThe ALPS 5000 is a heat sealer for microplates from Thermo Scientific, controlled over an RS-232 serial interface. It extends the shared ALPS protocol with initialisation, force-sensor control, foil length, sealing distance, and shuttle movement.\n\nProduct page: \n\n| Property | Value |\n|---|---|\n| Communication | Serial / RS-232, ASCII command protocol |\n| Serial settings | 9600 baud, 8 data bits, no parity, 1 stop bit, no handshake |\n| Terminator | CR (`\\r`) |\n\nThe ALPS 300, 3000, and 5000 share a command core but use different status flags and error codes, so each has its own driver class.\n\n```{warning}\nThis driver has NOT been tested against hardware in PyLabRobot. If you verify\nit on a sealer, please open a PR to remove the not-tested warning.\n```", "metadata": {} }, { "cell_type": "markdown", "id": "alps5000-setup-md", "source": "## Physical setup\n\nConnect the sealer's RS-232 port to your computer, typically through a USB-to-serial adapter. Make sure the sealer's serial parameters match the driver defaults (9600 baud, 8 data bits, no parity, 1 stop bit, no handshake).", "metadata": {} }, { "cell_type": "markdown", "id": "alps5000-connect-md", "source": "## Connect\n\n`setup()` opens the serial port, runs the instrument initialisation routine, waits for the device to be ready, and pre-heats to the preheating temperature. It also logs the not-tested warning.", "metadata": {} }, { "cell_type": "code", "id": "alps5000-connect-code", "source": "from pylabrobot.thermo_fisher.alps import ThermoScientificALPS5000\n\nsealer = ThermoScientificALPS5000(port=\"/dev/ttyUSB0\") # replace with your port\nawait sealer.setup()", "metadata": {}, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "id": "alps5000-seal-md", "source": "## Seal a plate\n\n`seal()` applies the time and temperature, optionally enables the force sensor, waits for the heater to reach the setpoint, then seals the plate. Sealing time is 0.5–9.9 s; temperature is 5–199 °C.", "metadata": {} }, { "cell_type": "code", "id": "alps5000-seal-code", "source": "await sealer.seal(temperature=170, duration=2.5, use_force_sensor=True)", "metadata": {}, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "id": "alps5000-force-md", "source": "## Force and force sensor\n\nSet the sealing force (5–50) and enable or disable the force sensor independently of a seal.", "metadata": {} }, { "cell_type": "code", "id": "alps5000-force-code", "source": "await sealer.set_force(30)\nawait sealer.enable_force_sensor(True)", "metadata": {}, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "id": "alps5000-foil-md", "source": "## Foil length and sealing distance\n\nSet the foil length (119–128) and the sealing distance (10–50).", "metadata": {} }, { "cell_type": "code", "id": "alps5000-foil-code", "source": "await sealer.set_foil_length(124)\nawait sealer.set_sealing_distance(20)", "metadata": {}, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "id": "alps5000-shuttle-md", "source": "## Shuttle\n\nMove the shuttle in and out.", "metadata": {} }, { "cell_type": "code", "id": "alps5000-shuttle-code", "source": "await sealer.shuttle_out()\nawait sealer.shuttle_in()", "metadata": {}, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "id": "alps5000-temp-md", "source": "## Temperature\n\nSet the sealing temperature setpoint and read the current heater temperature.", "metadata": {} }, { "cell_type": "code", "id": "alps5000-temp-code", "source": "await sealer.set_temperature(160)\nprint(\"Current temperature:\", await sealer.request_temperature(), \"C\")", "metadata": {}, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "id": "alps5000-status-md", "source": "## Status\n\nRead the status byte as a set of flags.", "metadata": {} }, { "cell_type": "code", "id": "alps5000-status-code", "source": "print(\"Status:\", await sealer.request_status())", "metadata": {}, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "id": "alps5000-teardown-md", "source": "## Teardown", "metadata": {} }, { "cell_type": "code", "id": "alps5000-teardown-code", "source": "await sealer.stop()", "metadata": {}, "execution_count": null, "outputs": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.11.0" } }, "nbformat": 4, "nbformat_minor": 5 }