The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Lab::Moose::Instrument::ZI_MFLI - Zurich Instruments MFLI Lock-in Amplifier

VERSION

version 3.701

SYNOPSIS

 use Lab::Moose;

 my $mfli = instrument(
     type => 'ZI_MFLI',
     connection_type => 'Zhinst',
     oscillator => 1, # 0 is default
     connection_options => {
         host => '132.188.12.13',
         port => 8004,
     });

 $mfli->set_frequency(value => 10000);

 # Set time constants of first two demodulators to 0.5 sec:
 $mfli->set_tc(demod => 0, value => 0.5);
 $mfli->set_tc(demod => 1, value => 0.5);

 # Read out demodulators:
 my $xy_0 = $mfli->get_xy(demod => 0);
 my $xy_1 = $mfli->get_xy(demod => 1);
 say "x_0, y_0: ", $xy_0->{x}, ", ", $xy_0->{y};

METHODS

If the MFLI has the Impedance Analyzer option, calling some of the following setter options might be without effect. E.g. if the Bandwith Control option of the Impedance Analyzer module is set, manipulating the time constant with set_tc will not work.

get_frequency

 # Get oscillator frequency of default oscillator.
 my $freq = $mfli->get_frequency();


 my $freq = $mfli->get_frequency(oscillator => ...);

get_frq

Alias for "get_frequency".

set_frequency

 $mfli->set_frequency(value => 10000);

Set oscillator frequency.

set_frq

Alias for "set_frequency".

get_voltage_sens

 my $sens = $mfli->get_voltage_sens();

Get sensitivity (range) of voltage input.

set_voltage_sens

 $mfli->set_voltage_sens(value => 1);

Set sensitivity (range) of voltage input.

get_current_sens

 my $sens = $mfli->get_current_sens();

Get sensitivity (range) of current input.

set_current_sens

 $mfli->set_current_sens(value => 100e-6);

Set sensitivity (range) of current input.

get_amplitude_range

 my $amplitude_range = $mfli->get_amplitude_range();

Get range of voltage output.

set_amplitude_range

 $mfli->set_amplitude_range(value => 1);

Set amplitude of voltage output.

set_output_status

 $mfli->set_output_status(value => 1); # Enable output
 $mfli->set_output_status(value => 0); # Disable output

get_offset_voltage

 my $offset = $mfli->get_offset_voltage();

Get DC offset.

set_offset_voltage

 $mfli->set_offset_voltage(value => 1e-3);

Set DC offset.

set_offset_status

 $mfli->set_offset_status(value => 1); # Enable offset voltage
 $mfli->set_offset_status(value => 0); # Disable offset voltage

set_input/get_input

 $mfli->set_input(demod => 0, value => 'CurrIn1');
 my $signal = $mfli->get_input(demod => 0);

Valid inputs: currin1, trigger1, trigger2, auxout1, auxout2, auxout3, auxout4, auxin1, auxin2, constant_input

t

get_phase

 my $phase = $mfli->get_phase(demod => 0);

Get demodulator phase shift.

set_phase

 $mfli->set_phase(demod => 0, value => 10);

Set demodulator phase.

get_tc

 my $tc = $mfli->get_tc(demod => 0);

Get demodulator time constant.

set_tc

 $mfli->set_tc(demod => 0, value => 0.5);

Set demodulator time constant.

get_order

 my $order = $mfli->get_order(demod => 0);

Get demodulator filter order.

set_order

 $mfli->set_order(demod => 0, order => 4);

Set demodulator filter order.

get_amplitude

 # set amplitude for default oscillator
 my $amplitude = $mfli->get_amplitude();

 # set amplitude of oscillator 1
 my $amplitude = $mfli->get_amplitude(oscillator => 1);

Get peak amplitude of voltage output. The default oscillator is determined by the oscillator attribute.

set_amplitude

 $mfli->set_amplitude(value => 300e-3);
 $mfli->set_amplitude(value => ..., demod => ...);

Set peak amplitude of voltage output. The oscillator is determined by the oscillator attribute.

get_amplitude_rms/set_amplitude_rms

Get/Set root mean square value of amplitude. These are wrappers around get_amplitude/set_amplitude and divide/multiply the peak amplitude with sqrt(2).

get_xy

 my $xy_0 = $mfli->get_xy(demod => 0);
 my $xy_1 = $mfli->get_xy(demod => 1);
 
 printf("x: %g, y: %g\n", $xy_0->{x}, $xy_0->{y});

Get demodulator X and Y output measurement values.

COPYRIGHT AND LICENSE

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

  Copyright 2017       Andreas K. Huettel, Simon Reinhardt
            2019-2020  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.