Package: ika
ikaUnofficial Python package to control IKA products; we are not affiliated with IKA.Package not compatible with Mac OSProducts supported and testedMagnetic stirrerIKA Magnetic Stirrer model C-MAG HS 7https://www.ika.com/en/Products-Lab-Eq/Magnetic-Stirrers-Hot-Plate-Lab-Mixer-Stirrer-Blender-csp-188/C-MAG-HS-7-control-Downloads-cpdl-20002694/IKA RCT 5 digitalhttps://www.ika.com/en/Products-Lab-Eq/Magnetic-Stirrers-Hot-Plate-Lab-Mixer-Stirrer-Blender-csp-188/RCT-5-digital-cpdt-20002704/ThermoshakerIKA MATRIX Orbital Delta plushttps://www.ika.com/en/Products-Lab-Eq/Thermoshakers-csp-918/MATRIX-Orbital-Delta-Plus-cpdt-10006853/ChillerRC 2 Litehttps://www.ika.com/en/Products-Lab-Eq/Temperature-Control-Circulation-and-Immersion-thermostat-csp-272/RC-2-lite-cpdt-25006624/Vacuum pumpVacstar controlhttps://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 pumpOverhead stirrerMicrostar 30https://www.ika.com/en/Products-Lab-Eq/Overhead-Stirrers-Agitator-Blender-Lab-mixer-csp-187/MICROSTAR-30-digital-cpdt-25004884/BasicsMake sure you have installed the necessary driver for your computer:https://www.ika.com/en/Products-Lab-Eq/Magnetic-Stirrers-Hot-Plate-Lab-Mixer-Stirrer-Blender-csp-188/C-MAG-HS-7-control-Package-Downloads-cpdl-10003279/To control a magnetic stirrer with theikapackage, you need to identify the comport the device is when connected to
your computer.Example usageMagnetic stirrerimporttimefromika.magnetic_stirrerimportMagneticStirrerport='COM5'plate=MagneticStirrer(device_port=port)plate.start_stirring()plate.target_stir_rate=100time.sleep(10)plate.target_stir_rate=200plate.stop_stirring()plate.target_temperature=20plate.start_heating()plate.target_temperature=19time.sleep(5)plate.stop_heating()plate.disconnect()Thermoshakerimporttimeimportloggingfromika.thermoshakerimportThermoshakerlogger=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 portdummy=True# todo set to true if testing without connecting to an actual thermoshakerkwargs={'port':port,'dummy':dummy,}ts=Thermoshaker.create(**kwargs)ts.watchdog_safety_temperature=15.5ts.start_watchdog_mode_1(30)ts.start_watchdog_mode_2(30)ts.switch_to_normal_operation_mode()actual_temperature=ts.temperatureset_temperature=ts.set_temperatureactual_speed=ts.speedset_speed=ts.set_speedlogger.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_temperature=30ts.set_speed=500set_temperature=ts.set_temperatureset_speed=ts.set_speedlogger.info(f'set temperature:{set_temperature}, 'f'set speed:{set_speed}')logger.info('start tempering and shaking')ts.start_tempering()ts.start_shaking()time.sleep(5)actual_temperature=ts.temperatureactual_speed=ts.speedlogger.info(f'actual temperature:{actual_temperature}, 'f'actual speed:{actual_speed}')logger.info('change the set temperature to 25 and speed 0')ts.set_temperature=25ts.set_speed=0set_temperature=ts.set_temperatureset_speed=ts.set_speedlogger.info(f'set temperature:{set_temperature}, 'f'set speed:{set_speed}')actual_temperature=ts.temperatureactual_speed=ts.speedlogger.info(f'actual temperature:{actual_temperature}, 'f'actual speed:{actual_speed}')logger.info('stop tempering and shaking')ts.stop_tempering()ts.stop_shaking()Chillerimporttimeimportloggingfromika.chillerimportChillerlogger=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 portc=Chiller(port=port)c.watchdog_safety_temperature=10# c.start_watchdog_mode_1(20)# c.start_watchdog_mode_2(30)actual_temperature=c.temperaturesetting_temperature=c.setting_temperaturelogger.info(f'actual temperature:{actual_temperature}, 'f'setting temperature:{setting_temperature}')logger.info('change the setting temperature to 8.5')c.setting_temperature=8.5setting_temperature=c.setting_temperaturelogger.info(f'setting temperature:{setting_temperature}')logger.info('start tempering')c.start_tempering()time.sleep(5)actual_temperature=c.temperaturelogger.info(f'actual temperature:{actual_temperature}')logger.info('change the set temperature to 8')c.setting_temperature=8.0setting_temperature=c.setting_temperaturelogger.info(f'setting temperature:{setting_temperature}')actual_temperature=c.temperaturelogger.info(f'actual temperature:{actual_temperature}')logger.info('stop tempering')c.stop_tempering()print('done')Vacuum pumpimporttimeimportloggingfromika.vacuum_pumpimportVacuumPump,EvacuatingModelogger=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 portvp=VacuumPump(port=port)logger.info(f'device name:{vp.name}')logger.info(f'device type:{vp.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.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.evacuating_mode=EvacuatingMode.PROGRAMlogger.info(f'evacuating mode is:{vp.evacuating_mode}')logger.info('set to percent evacuating mode')vp.evacuating_mode=EvacuatingMode.PERCENTlogger.info(f'evacuating mode is:{vp.evacuating_mode}')logger.info('set to automatic evacuating mode')vp.evacuating_mode=EvacuatingMode.AUTOMATIClogger.info(f'evacuating mode is:{vp.evacuating_mode}')logger.info('set to manual evacuating mode')vp.evacuating_mode=EvacuatingMode.MANUALlogger.info(f'evacuating mode is:{vp.evacuating_mode}')logger.info(f'current set pressure point to go to:{vp.set_pressure}')logger.info('set the set pressure point to go to to 1010 mbar')vp.set_pressure=1010logger.info('set the set pressure point to go to to 1024 mbar')vp.set_pressure=1024logger.info('start')vp.start()time.sleep(1)logger.info(f'current pressure measurement:{vp.pressure}mbar')logger.info('stop')vp.stop()print('done')Overhead stirrerimporttimefromika.overhead_stirrerimportOverheadStirrerif__name__=='__main__':port='COM9'# todo set thisstirrer=OverheadStirrer(port=port)print(f'stirrer name:{stirrer.name}')print('set speed to 30')stirrer.set_speed=30print(f'stirrer set speed:{stirrer.set_speed}')print('start stirring')stirrer.start_stirring()time.sleep(5)print(f'stirrer current speed:{stirrer.speed}')print('set speed to 40')stirrer.set_speed=40time.sleep(3)print(f'stirrer set speed:{stirrer.set_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.set_speed}')print(f'stirrer temperature:{stirrer.temperature}')