Skip to main content

Unofficial Python package to control IKA products; not affiliated with IKA.

Project description

ika

Unofficial Python package to control IKA products; we are not affiliated with IKA.

Package not compatible with Mac OS

Products supported and tested

Basics

Make sure you have installed the necessary driver for your computer:

To control a magnetic stirrer with the ika package, you need to identify the comport the device is when connected to your computer.

Example usage

Magnetic stirrer

import time
from ika.magnetic_stirrer import MagneticStirrer

port = 'COM5'
plate = MagneticStirrer(device_port=port)
plate.start_stirring()
plate.set_target_temperature(100)
time.sleep(10)
plate.set_target_temperature(200)
plate.stop_stirring()

plate.set_target_temperature(20)
plate.start_heating()
plate.set_target_temperature(19)
time.sleep(5)
plate.stop_heating()

Thermoshaker

import time
import logging

from ika.thermoshaker import Thermoshaker

logger = logging.getLogger(__name__)
format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
logging.basicConfig(format=format, level=logging.DEBUG)


if __name__ == '__main__':
    port = 'COM8'  # todo set to the correct port
    ts = Thermoshaker(port)

    ts.set_watchdog_safety_temperature(15.5)
    ts.start_watchdog_mode_1(30)
    ts.start_watchdog_mode_2(30)
    ts.switch_to_normal_operation_mode()

    actual_temperature = ts.temperature()
    set_temperature = ts.target_temperature()
    actual_speed = ts.speed()
    set_speed = ts.target_speed()
    logger.info(f'actual temperature: {actual_temperature}, '
                f'set temperature: {set_temperature}, '
                f'actual speed: {actual_speed}, '
                f'set speed: {set_speed}')

    logger.info('change the set temperature to 30 and speed to 500')
    ts.set_target_temperature(30)
    ts.set_target_speed(500)
    set_temperature = ts.target_temperature()
    set_speed = ts.target_speed()
    logger.info(f'set temperature: {set_temperature}, '
                f'set speed: {set_speed}')

    logger.info('start tempering and shaking')
    ts.start_heating()
    ts.start_shaking()

    time.sleep(5)

    actual_temperature = ts.temperature()
    actual_speed = ts.speed()
    logger.info(f'actual temperature: {actual_temperature}, '
                f'actual speed: {actual_speed}')

    logger.info('change the set temperature to 25 and speed 0')
    ts.set_target_temperature(25)
    ts.set_target_speed(0)
    set_temperature = ts.target_temperature()
    set_speed = ts.target_speed()
    logger.info(f'set temperature: {set_temperature}, '
                f'set speed: {set_speed}')
    actual_temperature = ts.temperature()
    actual_speed = ts.speed()
    logger.info(f'actual temperature: {actual_temperature}, '
                f'actual speed: {actual_speed}')

    logger.info('stop tempering and shaking')
    ts.stop_heating()
    ts.stop_shaking()

Chiller

import time
import logging

from ika.chiller import Chiller

logger = logging.getLogger(__name__)
format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
logging.basicConfig(format=format, level=logging.DEBUG)


if __name__ == '__main__':
    port = 'COM14'  # todo set to the correct port

    c = Chiller(port=port)

    c.set_watchdog_safety_temperature(10)
    # c.start_watchdog_mode_1(20)
    # c.start_watchdog_mode_2(30)

    actual_temperature = c.temperature()
    setting_temperature = c.target_temperature()
    logger.info(f'actual temperature: {actual_temperature}, '
                f'setting temperature: {setting_temperature}')

    logger.info('change the setting temperature to 8.5')
    c.set_target_temperature(8.5)
    setting_temperature = c.target_temperature()
    logger.info(f'setting temperature: {setting_temperature}')

    logger.info('start tempering')
    c.start_heating()

    time.sleep(5)

    actual_temperature = c.temperature()
    logger.info(f'actual temperature: {actual_temperature}')

    logger.info('change the set temperature to 8')
    c.set_target_temperature(8.0)
    setting_temperature = c.target_temperature()
    logger.info(f'setting temperature: {setting_temperature}')
    actual_temperature = c.temperature()
    logger.info(f'actual temperature: {actual_temperature}')

    logger.info('stop tempering')
    c.stop_heating()

    print('done')

Vacuum pump

import time
import logging

from ika.vacuum_pump import VacuumPump, EvacuatingMode

logger = logging.getLogger(__name__)
format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
logging.basicConfig(format=format, level=logging.DEBUG)


if __name__ == '__main__':
    port = 'COM9'  # todo set to the correct port

    vp = VacuumPump(port=port)

    logger.info(f'device name: {vp.name()}')
    logger.info(f'device type: {vp.device_type()}')
    logger.info(f'device firmware version: {vp.firmware_version()}')
    logger.info(f'device firmware version date: {vp.firmware_version_date()}')
    logger.info(f'device mac address: {vp.mac_address()}')
    logger.info(f'device paired mac address: {vp.paired_mac_address()}')

    vp.set_watchdog_safety_pump_rate(10)
    vp.start_watchdog_mode_1(30)
    logger.info(f'watchdog communication time: {vp.watchdog_communication_time}')

    logger.info('switch to normal mode')
    vp.switch_to_normal_operation_mode()

    logger.info('set to program evacuating mode')
    vp.set_evacuating_mode(EvacuatingMode.PROGRAM)
    logger.info(f'evacuating mode is: {vp.evacuating_mode()}')
    logger.info('set to percent evacuating mode')
    vp.set_evacuating_mode(EvacuatingMode.PERCENT)
    logger.info(f'evacuating mode is: {vp.evacuating_mode()}')
    logger.info('set to automatic evacuating mode')
    vp.set_evacuating_mode(EvacuatingMode.AUTOMATIC)
    logger.info(f'evacuating mode is: {vp.evacuating_mode()}')
    logger.info('set to manual evacuating mode')
    vp.set_evacuating_mode(EvacuatingMode.MANUAL)
    logger.info(f'evacuating mode is: {vp.evacuating_mode()}')

    logger.info(f'current set pressure point to go to: {vp.target_pressure()}')
    logger.info('set the set pressure point to go to to 1010 mbar')
    vp.set_target_pressure(1010)
    logger.info('set the set pressure point to go to to 1024 mbar')
    vp.set_target_pressure(1024)

    logger.info('start')
    vp.start()
    time.sleep(1)
    logger.info(f'current pressure measurement: {vp.pressure()} mbar')
    logger.info('stop')
    vp.stop()

    print('done')

Overhead stirrer

import time
from ika.overhead_stirrer import OverheadStirrer

if __name__ == '__main__':
    port = 'COM9'  # todo set this
    stirrer = OverheadStirrer(port=port)
    print(f'stirrer name: {stirrer.name()}')
    print('set speed to 30')
    stirrer.set_target_speed(30)
    print(f'stirrer set speed: {stirrer.target_speed()}')
    print('start stirring')
    stirrer.start_stirring()
    time.sleep(5)
    print(f'stirrer current speed: {stirrer.speed()}')
    print('set speed to 40')
    stirrer.set_target_speed(40)
    time.sleep(3)
    print(f'stirrer set speed: {stirrer.target_speed()}')
    print(f'stirrer current speed: {stirrer.speed()}')
    print(f'stirrer torque: {stirrer.torque()}')
    print('stop stirring')
    stirrer.stop_stirring()
    print(f'stirrer set speed: {stirrer.target_speed()}')
    print(f'stirrer temperature: {stirrer.temperature()}')

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ika-2.0.3-py3-none-any.whl (30.7 kB view details)

Uploaded Python 3

File details

Details for the file ika-2.0.3-py3-none-any.whl.

File metadata

  • Download URL: ika-2.0.3-py3-none-any.whl
  • Upload date:
  • Size: 30.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for ika-2.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 aebca99fc089fc29e65c5c9a3ff8a4c513a1cca5e48d8a8dc3c6ae6d1e4ef269
MD5 f16de145dbbcf215765e617421a49b23
BLAKE2b-256 00ad018e5b3a2eb60c3ba64adef6abc61c74a51b8fccd6b78f9b69234e8bfb79

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page