EPICS - Linkam CI94 Temperature Controller

The Linkam CI94 is a temperature controller. It can be connected only to the temperature stage or also to the nitrogen pump (Linkam LNP94/2), which increases the controller precision. This class supports operating either with or without the nitrogen pump and supports configuring the pump to automatic mode.

Using EPICS MarCCD camera module

Usage of Python class for EPICS Linkam CI94.

class py4syn.epics.LinkamCI94Class.LinkamCI94(pvName, mnemonic)[source]

Class to control Linkam CI94 temperature controllers via EPICS.

Examples

>>> from py4syn.epics.LinkamCI94Class import LinkamCI94
>>> 
>>> def showTemperature(pv='', name=''):
...     ci94 = LinkamCI94(pv, name)
...     print('Temperature is: %d' % ci94.getValue())
...
>>> def fastRaiseTemperature(ci94, amount, rate=30):
...     ci94.setRate(rate)
...     ci94.setValue(ci94.getValue() + amount)
...
>>> def complexRamp(ci94):
...     ci94.setPumpSpeed(-1)
...     ci94.setRate(10)
...     ci94.setValue(200)
...     ci94.wait()
...     ci94.setRate(2)
...     ci94.setValue(220)
...     ci94.wait()
...     sleep(500)
...     ci94.setRate(5)
...     ci94.setValue(100)
...     ci94.wait()
...     ci94.stop()
...
>>> import py4syn
>>> from py4syn.epics.ScalerClass import Scaler
>>> from py4syn.utils.counter import createCounter
>>> from py4syn.utils.scan import scan
>>> 
>>> def temperatureScan(start, end, rate, pv='', counter='', channel=2):
...     ci94 = LinkamCI94(pv, 'ci94')
...     py4syn.mtrDB['ci94'] = ci94
...     c = Scaler(counter, channel, 'simcountable')
...     createCounter('counter', c, channel)
...     ci94.setRate(rate)
...     scan('ci94', start, end, 10, 1)
...     ci94.stop()
...

Constructor See py4syn.epics.StandardDevice

Parameters:
pvName : string

Power supply base naming of the PV (Process Variable)

mnemonic : string

Temperature controller mnemonic

getHighLimitValue()[source]

Returns the controller high limit temperature.

Returns:
`float`
getLowLimitValue()[source]

Returns the controller low limit temperature.

Returns:
`float`
getRealPosition()[source]

Returns the same as getValue().

See: getValue()

Returns:
`float`
getValue()[source]

Returns the current measured temperature.

Returns:
`float`
isRunning()[source]

Returns true if the controller is in program mode. Whenever it is program mode, it is following a target temperature.

Returns:
`bool`
onPendingChange(value, **kwargs)[source]

Helper callback that tracks when the IOC finished changing to a requested temperature.

onTemperatureChange(**kwargs)[source]

Helper callback that indicates when the measured temperature changed.

run()[source]

Starts or resumes executing the current temperature program.

setPumpSpeed(speed)[source]

Changes the nitrogen pump speed, or enables automatic pump speed control.

Note

The Linkam front panel only has 5 LEDs to indicate speed, but internally it supports 30 different speed levels.

Parameters:
speed : int

The requested pump speed, ranging from 0 (pump off) to 30 (pump top speed), or -1 to enable automatic pump control.

setRate(r)[source]

Sets the ramp speed in degrees per minutes for use with setValue().

See: setValue()

Parameters:
r : float

Ramp speed in °C/min

setValue(v)[source]

Changes the temperature to a new value. The speed that the new temperature is reached is set with setRate(). The default rate is 5 °C/minute.

See: setRate()

Parameters:
v : float

The target temperature in °C

setVelocity(velo)[source]

Same as setRate().

See: setRate()

Parameters:
r : float

Ramp speed in °C/min

stop()[source]

Stops executing the current temperature program, stops the nitrogen pump and puts the device in idle state. In the idle state, the device will not try to set a target temperature.

wait()[source]

Blocks until the requested temperature is achieved.