NAME
Lab::Moose::Instrument::Lakeshore372 - Lakeshore Model 372 Temperature Controller
VERSION
version 3.900
SYNOPSIS
use Lab::Moose;
# Constructor
my $lakeshore = instrument(
type => 'Lakeshore372',
connection_type => 'Socket',
connection_options => {host => '192.168.3.24'},
input_channel => '5', # set default input channel for all method calls
);
my $temp_5 = $lakeshore->get_T(channel => 5); # Get temperature for channel 5.
my $resistance_5 = TODO
Example: Configure inputs
# enable channels 1..3
for my $channel (1..3) {
$lakeshore->set_inset(
channel => $channel,
enabled => 1,
dwell => 1,
pause => 3,
curve_number => 0, # no curve
tempco => 1, # negative temp coeff
);
}
# disable the other channels
for my $channel ('A', 4..16) {
$lakeshore->set_inset(
channel => $channel,
enabled => 0,
dwell => 1,
pause => 3,
curve_number => 0, # no curve
tempco => 1, # negative temp coeff
);
}
# setup the enabled input channels 1,2,3 for 20μV voltage excitation:
for my $channel (1..3) {
$lakeshore->set_intype(
channel => $channel,
mode => 0,
excitation => 3,
# control input, ignored:
autorange => 0,
range => 1,
);
}
METHODS
get_T
my $temp = $lakeshore->get_T(channel => $channel);
$channel
needs to be one of 'A', 1, ..., 16.
get_value
alias for get_T
.
get_sensor_units_reading
my $reading = $lakeshore->get_sensor_units_reading(channel => $channel);
Get sensor units reading (in ohm) of an input channel.
get_quadrature_reading
my $imaginary_part = $lakeshore->get_quadrature_reading(
channel => 1, # 1..16 (only measurement input)
);
get_excitation_power_reading
my $excitation_power = $lakeshore->get_excitation_power_reading(
channel => 1, # 1..16 or A
);
set_setpoint/get_setpoint
Set/get setpoint for loop 0 in whatever units the setpoint is using
$lakeshore->set_setpoint(value => 10, loop => 0);
my $setpoint1 = $lakeshore->get_setpoint(loop => 0);
set_T
alias for set_setpoint
set_heater_range/get_heater_range
$lakeshore->set_heater_range(output => 0, value => 1);
my $range = $lakeshore->get_heater_range(output => 0);
For output 0 (sample heater), value is one of 0 (off), 1, ..., 8. For outputs 1 and 2, value is one of 0 and 1.
set_heater_setup/get_heater_setup
$lakeshore->set_heater_setup(
loop => 0,
resistance => 1500, # Ohms
max_current => 0, # warm-up heater
max_user_current => 0.1, # Amps
display => 2, # Display power
);
my %setup = $lakeshore->get_heater_setup(loop => 0);
get_sample_heater_output
my $power = $lakeshore->get_sample_heater_output();
Depending on setting, return either percentage of current range or power.
set_outmode/get_outmode
$lakeshore->set_outmode(
output => 0, # 0, 1, 2
mode => 3, # 0, ..., 6
channel => 5, # A, 1, ..., 16
powerup_enable => 1, # (default: 0)
polarity => 1, # (default: 0)
filter => 1, # (default: 0)
delay => 1, # 1,...,255
);
my $args = $lakeshore->get_outmode(output => 0);
set_input_curve/get_input_curve
# Set channel 5 to use curve 25
$lakeshore->set_input_curve(channel => 5, value => 25);
my $curve = $lakeshore->get_input_curve(channel => 5);
set_remote_mode/get_remote_mode
$lakeshore->set_remote_mode(value => 0);
my $mode = $lakeshore->get_remote_mode();
Valid entries: 0 = local, 1 = remote, 2 = remote with local lockout.
set_pid/get_pid
$lakeshore->set_pid(loop => 0, P => 1, I => 50, D => 50)
my %PID = $lakeshore->get_pid(loop => 0);
# %PID = (P => $P, I => $I, D => $D);
set_zone/get_zone
$lakeshore->set_zone(
loop => 0,
zone => 1,
top => 10,
P => 25,
I => 10,
D => 20,
mout => 0, # 0%
range => 1,
rate => 1.2, # 1.2 K / min
relay_1 => 0,
relay_2 => 0,
);
my %zone = $lakeshore->get_zone(loop => 0, zone => 1);
set_filter/get_filter
$lakeshore->set_filter(
channel => 5,
on => 1,
settle_time => 1, # (1s..200s)
window => 2, # % 2 percent of full scale window (1% ... 80%)
);
my %filter = $lakeshore->get_filter(channel => 5);
set_freq/get_freq
# Set input channel 0 (measurement input) excitation frequency to 9.8Hz
$lakeshore->set_freq(channel => 0, value => 1);
my $freq = $lakeshore->get_freq(channel => 0);
Allowed channels: 0 (measurement input), 'A' (control input). Allowed values: 1 = 9.8 Hz, 2 = 13.7 Hz, 3 = 16.2 Hz, 4 = 11.6 Hz, 5 = 18.2 Hz.
set_common_mode_reduction/get_common_mode_reduction
$lakeshore->set_common_mode_reduction(value => 1);
my $cmr = $lakeshore->get_common_mode_reduction();
Allowed values: 0 and 1.
set_mout/get_mout
$lakeshore->set_mout(output => 0, value => 10);
my $mout = $lakeshore->get_mout(output => 0);
set_inset/get_inset
$lakeshore->set_inset(
channel => 1, # A, 1, ..., 16
enabled => 1,
dwell => 1,
pause => 3,
curve_number => 1,
tempco => 1, # 1 or 2
);
my %inset = $lakeshore->get_inset(channel => 1);
set_intype/get_intype
$lakeshore->set_intype(
channel => 1,
mode => 0, # voltage excitation mode
excitation => 3, # 20μV, only relevant for measurement input
autorange => 0, # only relevant for control input
range => 1, # only relevant for control input
cs_shunt => 0, # default: 0
units => 1, # Kelvin, default: 1
my %intype = $lakeshore->get_intype(channel => 1);
curve_delete
$lakeshore->curve_delete(curve => 21);
set_curve_header/get_curve_header
$lakeshore->set_curve_header(
curve => 21,
name => "Germanium",
SN => "selfmade",
format => 4, # log Ohm / Kelvin
limit => 300,
coefficient => 1, # negative
);
my %header = $lakeshore->get_curve_header(curve => 21);
set_curve_point/get_curve_point
$lakeshore->set_curve_point(
curve => 21, # 21..59
index => 1, # sets first point (1..200)
units => 2, # R or log(R)
temp => 0.012345,
curvature => 0, # default: 0
);
my %point = $lakeshore->get_curve_point(curve => 21, point => 1);
set_input_name/get_input_name
$lakeshore->set_input_name(channel => 1, value => 'RuOx_Sample');
my $name = $lakeshore->get_input_name(channel => 1);
set_ramp/get_ramp
$lakeshore->set_ramp(
loop => 0,
on => 1, # 0 or 1
rate => 10e-3, # ramp rate in K/min
);
my %rate = $lakeshore->get_ramp(loop => 0);
set_scanner/get_scanner
# Set scanner to channel 5 and start autoscanning
$lakeshore->set_scanner(
channel => 5,
autoscan => 1,
);
my %scanner = $lakeshore->get_scanner();
my $current_channel = $scanner{channel};
set_display_field/get_display_field
$lakeshore->set_display_field(
field => 1,
input => 1,
units => 1, # Kelvin
);
my %field = $lakeshore->get_display_field(field => 1);
set_display/get_display
$lakeshore->set_display(
mode => 2, # custom
num_fields => 2, # 8 fields
displayed_info => 1, # sample_heater
);
my %display = $lakeshore->get_display();
Consumed Roles
This driver consumes the following roles:
COPYRIGHT AND LICENSE
This software is copyright (c) 2023 by the Lab::Measurement team; in detail:
Copyright 2018 Simon Reinhardt
2020 Andreas K. Huettel, Simon Reinhardt
2021-2023 Simon Reinhardt
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.