ika
Unofficial Python package to control IKA products; we are not affiliated with IKA.
Package not compatible with Mac OS
Products supported and tested
- Magnetic stirrer
- IKA Magnetic Stirrer model C-MAG HS 7
- IKA RCT 5 digital
- Thermoshaker
- IKA MATRIX Orbital Delta plus
- Chiller
- Vacuum pump
- Vacstar control
- https://www.ika.com/en/Products-Lab-Eq/Vacuum-csp-158/VACSTAR-control-cpdt-20109375/
- Note that you need to plug into the micro usb slot on the operator panel, not the usb b slot on back of the vacuum pump
- https://www.ika.com/en/Products-Lab-Eq/Vacuum-csp-158/VACSTAR-control-cpdt-20109375/
- Vacstar control
- Overhead stirrer
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()}')
Metadata
Release files for ika 2.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ika-2.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Release files / ika-2.0.3-py3-none-any.whl
| Download URL | ika-2.0.3-py3-none-any.whl |
|---|---|
| Size | 30.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
aebca99fc089fc29e65c5c9a3ff8a4c513a1cca5e48d8a8dc3c6ae6d1e4ef269
|
|
BLAKE2b-256 checksum How to use checksums |
00ad018e5b3a2eb60c3ba64adef6abc61c74a51b8fccd6b78f9b69234e8bfb79
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|