NAME

Lab::Moose::Instrument::Lakeshore350 - Lakeshore Model 350 Temperature Controller

VERSION

version 3.900

SYNOPSIS

use Lab::Moose;

# Constructor
my $lakeshore = instrument(
    type => 'Lakeshore372',
    connection_type => 'VISA::GPIB',
    connection_options => {pad => 10},
    input_channel => 'A', # set default input channel for all method calls
);


my $temp_B = $lakeshore->get_T(channel => 'B'); # Get temperature for channel 'B'
my $resistance_B = $lakeshore->get_sensor_units_reading(channel => 'B'); # Get resistance for channel 'B'

 
# setup input channel 'A' for fixed 100kOhm range with 10nA excitation
$lakeshore->set_intype(
    channel => 'A',
    sensor_type => 3, # NTC RTD
    autorange => 0,
    range => 8, # 100kOhm
    compensation => 1, # current reversal for EMF compensation
    units => 1, # use Kelvin for setpoint control
    sensor_excitation => 0, # 1mV =>  10nA excitation current
 );

METHODS

get_T

my $temp = $lakeshore->get_T(channel => $channel);

$channel needs to be one of A, B, C, D.

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.

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 => 1, value => 1);
my $range = $lakeshore->get_heater_range(output => 1);

For outputs 1 and 2: 0 = Off, 1 = Range 1, 2 = Range 2, 3 = Range 3, 4 = Range 4, 5 = Range 5

For outputs 3 and 4: 0 = Off, 1 = On

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_heater_output

my $power = $lakeshore->get_heater_output(output => 1);

Return heater output in percent of range.

set_outmode/get_outmode

$lakeshore->set_outmode(
 output => 0, # 0, 1, 2
 mode => 3, # 0, ..., 6
 channel => 'A',
 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 => 'A', value => 25);
my $curve = $lakeshore->get_input_curve(channel => 'A');

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(output => 1, P => 1, I => 50, D => 50)
my %PID = $lakeshore->get_pid(output => 1);
# %PID = (P => $P, I => $I, D => $D);

set_zone/get_zone

$lakeshore->set_zone(
    output => 1,
    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_mout/get_mout

$lakeshore->set_mout(output => 1, value => 10);
my $mout = $lakeshore->get_mout(output => 1);

set_intype/get_intype

$lakeshore->set_intype(
    channel => 'A',
    sensor_type => 3, # NTC
    autorange => 0,
    range => 8, 100kOhm
    compensation => 1,
    units => 1, # Kelvin (default)
    sensor_excitation => 0
);

my %intype = $lakeshore->get_intype(channel => 'A');

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_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, 
   num_fields => 2, 
   displayed_info => 1, 
);

my %display = $lakeshore->get_display();

Consumed Roles

This driver consumes the following roles:

Lab::Moose::Instrument::Common

COPYRIGHT AND LICENSE

This software is copyright (c) 2023 by the Lab::Measurement team; in detail:

Copyright 2022-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.