Сгенерируйте и измерьте сигналы с аналоговыми устройствами ADALM1000

Обновленный синтаксис функций

Чтобы вместить ADALM1000, следующие функции Data Acquisition Toolbox™ позволяют специфичные для поставщика опции аргумента:

  • daq и daqlist примите аргумент "adi" поставщика.

  • addinput и addoutput примите аргумент 'SMU1' имени устройства (модуль исходного измерения), и аргументы ID канала 'A' и 'B' соответствовать каналу помечает на модуле ADALM1000.

Исходное напряжение и текущая мера

В этом примере показано, как получить напряжение при измерении текущий на том же канале, чтобы вычислить нагрузочное сопротивление. Первая программа ADALM1000, чтобы предоставить постоянное 5-вольтовое предоставление загрузке, и затем измерить ток на том же канале устройства.

Узнайте свое устройство ADALM и просмотрите его информацию.

dev = daqlist("adi")
dev =

  1×4 table

    DeviceID              Description                 Model              DeviceInfo       
    ________    _______________________________    ___________    ________________________

     "SMU1"     "Analog Devices Inc. ADALM1000"    "ADALM1000"    [1×1 daq.adi.DeviceInfo]
dev{1,"DeviceInfo"}
adi: Analog Devices Inc. ADALM1000 (Device ID: 'SMU1')
   Analog input supports:
      0 to +5.0 Volts,-0.20 to +0.20 A ranges
      Rates from 100000.0 to 100000.0 scans/sec
      2 channels ('A','B')
      'Voltage','Current' measurement types
   
   Analog output supports:
      0 to +5.0 Volts,-0.20 to +0.20 A ranges
      Rates from 100000.0 to 100000.0 scans/sec
      2 channels ('A','B')
      'Voltage','Current' measurement types

Настройте Data Acquisition Toolbox DataAcquisition, чтобы управлять ADALM100.

d = daq("adi")
d = 

DataAcquisition using Analog Devices Inc. hardware:

                     Running: 0
                        Rate: 100000
           NumScansAvailable: 0
            NumScansAcquired: 0
              NumScansQueued: 0
    NumScansOutputByHardware: 0
                   RateLimit: [100000 100000]

Добавьте канал аналогового выхода, чтобы получить напряжение от канала устройства A.

addoutput(d,"SMU1","A","Voltage");

Добавьте канал аналогового входа, чтобы измериться текущий на том же канале устройства A.

addinput(d,"SMU1","A","Current");

Просмотрите настройку канала.

d.Channels
ans = 

    Index    Type    Device    Channel      Measurement Type             Range              Name   
    _____    ____    ______    _______    _____________________    __________________    __________

      1      "ao"    "SMU1"      "A"      "Voltage (SingleEnd)"    "0 to +5.0 Volts"     "SMU1_A"  
      2      "ai"    "SMU1"      "A"      "Current"                "-0.20 to +0.20 A"    "SMU1_A_1"

Сгенерируйте выходное напряжение и измерьте ток.

V_load = 5;
write(d,V_load);
I_load = read(d,"OutputFormat","Matrix");
write(d,0);  % Reset device output.
R_load = V_load/I_load
R_load =

   50.3005

Совет

ADALM1000 продолжает генерировать последнее значение, запрограммированное, пока вы не выпускаете оборудование. Когда вы будете закончены со своими сигналами, сбросьте устройство, чтобы вывести 0 вольт.

Сгенерируйте импульс

В этом примере показано, как сгенерировать 1 миллисекунду, импульс на 5 вольт, окруженный с обеих сторон 10 миллисекундами на уровне 0 вольт.

pdata = zeros(2100,1); % Column vector of 2100 samples.
pdata (1001:1100) = 5; % Pulse in middle of vector.

d = daq("adi");
addoutput(d,"SMU1","B","Voltage");
write(d,pdata)

Сгенерируйте формы волны

В этом примере показано, как одновременно сгенерировать прямоугольную волну на 1 кГц на канале A, и синусоида на 100 Гц на канале B. Каждый выход длится в течение 5 секунд.

Пример требует двух каналов DataAcquisition для каналов устройства A и B, оба, когда выход образовывает канал для напряжения.

d = daq("adi");
addoutput(d,"SMU1","A","Voltage");
addoutput(d,"SMU1","B","Voltage");

Задайте эти две формы волны.

Sq = zeros(500000,1); % Column vectors of 500k scans.
Sw = zeros(500000,1);

% Define square wave:
for r = 1:100:499900;
    Sq(r:r+49) = 5;  % Set first 50 of each 100 samples to 5 v.
end

% Define sine wave:
Sw = sin(linspace(1,500000,500000)'*2*pi/1000);
Sw = Sw + 1;  % Shift for positive voltage output

Просмотрите настройку канала.

d.Channels
ans = 

    Index    Type    Device    Channel      Measurement Type             Range            Name  
    _____    ____    ______    _______    _____________________    _________________    ________

      1      "ai"    "SMU1"      "A"      "Voltage (SingleEnd)"    "0 to +5.0 Volts"    "SMU1_A"
      2      "ai"    "SMU1"      "B"      "Voltage (SingleEnd)"    "0 to +5.0 Volts"    "SMU1_B"

Запустите генерацию выходного сигнала. 500 000 сканов при 100 000 сканов в секунду длятся в течение 5 секунд.

write(d,[Sq Sw])

Смотрите также

Функции

Похожие темы

Внешние веб-сайты