binder_climate_chamber

Binder class for climate chamber.

This climate chamber is not a SCPI or VISA instrument. Therefore we are using a custom library for control with it. This custom library is located at: utils.binderctl.

Classes

Binder(*args, **kwargs)

Binder

class icicle.binder_climate_chamber.Binder(*args, **kwargs)

Bases: Instrument

__init__(resource='127.0.0.1', tolerance=2, sim=False)

Init function.

Parameters:
  • resource – an ip adress at which the climate chamber is to be found

  • tolerance – A temperature tolerance to accept a temperature as reached, when the difference is lower than this.

AUTO_COND_BIT = 64
DRY_AIR_BIT = 4
FAN_BIT = 8
IDLE_MODE_BIT = 2
MEASURE_COMMAND_MAP = {'HUMI': 'rHumidity', 'TEMP': 'rTemp'}
MEASURE_TYPES = {'HUMI': 'Rel. Humidity (%)', 'TEMP': 'Temperature (°C)'}

Measurement types for this instrument.

MONITOR_KEYS = ['rTemp', 'rHumidity', 'rSetpointTemp', 'rSetpointHumidity', 'rSwitches']
class MeasureChannel(instrument, channel, measure_type, unit='')

Bases: MeasureChannel

MeasureChannel implementation for the Binder Climate Chamber.

property status
Returns:

value of rSwitches.

Return type:

int

property value

Performs measurement and returns value.

Returns:

measured value.

Return type:

float

NO_SIMULATION = True
PORT = 10001
REGISTER = {'rHumidity': (4106, <class 'float'>), 'rProgram': (4423, <class 'float'>), 'rSetpointHumidity': (4276, <class 'float'>), 'rSetpointTemp': (4274, <class 'float'>), 'rStart': (4425, <class 'float'>), 'rStop': (4426, <class 'float'>), 'rSwitches': (4754, <class 'int'>), 'rTemp': (4100, <class 'float'>), 'wProgram': (4423, <class 'float'>), 'wSetpointHumidity': (4430, <class 'float'>), 'wSetpointTemp': (4428, <class 'float'>), 'wStart': (4425, <class 'float'>), 'wStop': (4426, <class 'float'>), 'wSwitches': (4440, <class 'int'>)}
RETRIES = 3
TIMEOUT = 2.5
class TemperatureChannel(instrument, channel, measure_temperature, measure_speed)

Bases: TemperatureChannel

TemperatureChannel implementation for Binder Climate Chamber.

property speed

Not implemented/available for this device :returns: 0

property state
Returns:

whether this power channel is on or off (True/False).

Return type:

bool

property status
Returns:

value of rSwitches, which should give a good status overview

property temperature
Returns:

currently set channel temperature.

Return type:

float

check_auto_cond(verbose=True, **kwargs)

Function to check the status of the condensation protection mode of the climate chamber.

Passes no_lock and attempts to read_value sub-call via kwargs.

Parameters:

verbose – Setting for this specific function to print status.

Returns:

True if CP is on, False if CP is off

check_idle(**kwargs)

Checks, if idle mode is active or not.

Returns:

True, if idle, False, if not idle

getVals()

Helper function to read the values corresponding to the keys in MONITOR_KEYS.

Returns:

dictionary of montior value names and values.

get_temperature(**kwargs)

Simple getter method for the current temperature.

Passes no_lock and attempts to read_value sub-call via kwargs.

measure(repetitions=1, verbose=False, **kwargs)

Measuring function, that uses getVals helper function to run.

Parameters:
  • repetitions – not currently used here - to match common interface.

  • verbose – setting for this function specific, if measured values are to be printed.

Returns:

values received from getVals.

probe_temperature(target, interval=1, verbose=True)

Function to check, if a set temperature is reached. It will automatically activate/deactivate the humidity control at 20degC. Returns true, when temperature is reached.

Parameters:
  • target – Temperature to reach (plus/minus tolerance)

  • interval – Interval / sleep in between measurements

  • verbose – If measurements are to be printed out

publish(client, vals)

Function to upload measured values to an influxDB instance using mqtt.

Parameters:
  • client – mqtt client to be used for upload

  • vals – values to be uploaded in the form of return from getVals. If None, new values are taken from getVals.

read_value(key)

Wrapper for a read function with the binderctl.

Parameters:

key – REGISTER to readout

Returns:

value in this REGISTER

set_humidity(val, **kwargs)

Setter function to easier set the temperature instead of using ‘set_value’ directly.

Passes no_lock and attempts to set_value sub-call via kwargs.

Parameters:

val – temperature to go to

set_temperature(val, **kwargs)

Setter function to easier set the temperature instead of using ‘set_value’ directly.

Passes no_lock and attempts to set_value sub-call via kwargs.

Parameters:

val – temperature to go to

set_value(key, val)

Wrapper for a write function with the binderctl Readback should automatically happen with the binderctl class, but just to be sure, this can be activated here too.

Parameters:
  • key – REGISTER to write in

  • val – Which value to write in

toggle_auto_cond(turn_on=True, verbose=True, **kwargs)

Auto condensation protection mode is a setting of the binder climate chamber. It helps to prevent condensation of the module inside the chamber.

To be turned off when temperature above 20degC.

Passes no_lock and attempts to read_value sub-call via kwargs.

This function changes the state of this mode.

Parameters:
  • turn_on – If True, mode is activated, if False, it is deactivated

  • verbose – setting for this specific function, if changes are to be printed. Useful mostly in cases, where this function is executed conditionally by an automated program.

Returns:

turn_on parameter value

toggle_idle(enable, verbose=True)

Toggles idle switch on the device to put it to idle mode or not.

Passes no_lock and attempts to read_value sub-call via kwargs.

Parameters:

enable – if True, device is set to idle, else, idle mode is unset.

Returns:

status of all switches (not only idle mode switch)

toggle_switch(bit, on)

Toggle specific switch of the machine. Can be a generic switch.

Parameters:
  • bit – position of the bit corresponding to the switch in the register.

  • on – If True, bit to be set to 1, else bit to be set to 0.

validate_channel(channel, raise_exception=True)

Check if an channel exists on this device. Only successful if channel == 1.

Parameters:

channel – Channel number to validate as an input