Охарактеризуйте LED с ADALM1000

В этом примере показано, как использовать MATLAB, чтобы соединиться с Аналоговые устройства модуль исходного измерения ADALM1000, сконфигурировать его и сделать текущими и измерения напряжения, чтобы охарактеризовать LED.

Узнайте поддерживаемые устройства сбора данных, подключенные с вашей системой

daqlist
ans=1×5 table
    VendorID    DeviceID              Description                 Model              DeviceInfo       
    ________    ________    _______________________________    ___________    ________________________

     "adi"       "SMU1"     "Analog Devices Inc. ADALM1000"    "ADALM1000"    [1×1 daq.adi.DeviceInfo]

Создайте интерфейс DataAcquisition для устройства ADALM1000

ADIDaq = daq("adi");

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

Устройство ADALM1000 способно к определению источника напряжения и измерению, текущему одновременно на том же канале. Настройте устройство в этом режиме.

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

addoutput(ADIDaq,'smu1','a','Voltage');

Добавьте канал аналогового входа с устройством ID SMU1 и ID канала A, и установите его тип измерения на ток.

addinput(ADIDaq,'smu1','a','Current');

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

ADIDaq.Channels
ans=1×2 object
    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"

Мигните присоединенным LED пять раз

Соедините LED последовательно с 330-Ω резистор между ADALM1000 образовывает канал A и земля. Альтернативно применяйте 5 В и 0 В.

for iLoop = 1:5
    % Turn on LED by generating an output of 5 volts.
    write(ADIDaq,5);
    pause(0.2);
    % Turn off LED by generating an output of 0 volts.
    write(ADIDaq,0);
    pause(0.2);
end

Охарактеризуйте LED

Чтобы изучить характеристики светодиода I-V, разверните область значений значений напряжения от 0 В до 5 В и измерьте ток для каждого значения. Агрегат всех измерений обеспечивает данные, чтобы изобразить ток в виде графика через LED в области значений напряжений.

v = linspace(0,5,250)';
i = readwrite(ADIDaq,v,"OutputFormat","Matrix");

Постройте характеристическую кривую LED и оцените математическую модель

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

% Plot the measured data.
plot(v,i,'LineWidth',2);
hold on;
grid on;
ylabel('I (amperes)');
xlabel('V (volts)');
title({'I-V Characteristic Curve of LED';'and fifth-order polynomial approximation.'});

Соответствуйте данным с помощью полинома пятого порядка и наложите полученные данные с моделью LED, аппроксимированного полиномом пятого порядка.

approxPoly = polyfit(v,i,5);

Отобразите аппроксимированные данные на графике.

plot(v,polyval(approxPoly,v),'-k','Linewidth',1);

Вычислите напряжение, при котором LED включает

На основе полиномиального приближения пятого порядка можно найти приближение первого порядка, которое представляет линейно увеличивающийся фрагмент кривой. Напряжение, при котором LED включает, состоит приблизительно в том, где эта линия пересекает ось напряжения.

Найдите линию, которая проходит через линейный фрагмент сигнала.

normErr = -1;
errThreshold = 0.001;
numPointsForLine = numel(v) - 10;
while (numPointsForLine > 0) && (normErr < errThreshold)
    approximation = polyval(approxPoly,v(numPointsForLine:end));
    [linearPoly, errorStruct] = polyfit(v(numPointsForLine:end),approximation, 1);
    numPointsForLine = numPointsForLine - 5;
    normErr = errorStruct.normr;
end

Оцените линейный полином в области значений измерений. Значение, где это пересекает горизонтальную линию, представляющую любую текущую утечку, является напряжением, при котором LED включает.

LEDThreshold = 1.2;
leakageCurrent = mean(i(v<LEDThreshold));
linearIV = polyval(linearPoly,v);
minIndex = sum(linearIV<leakageCurrent);

Постройте линейный фрагмент кривой.

plot(v(minIndex-1:end),polyval(linearPoly,v(minIndex-1:end)),'Magenta','Linewidth',2,'LineStyle','--')

Окружите аппроксимированное напряжение, при котором LED включает.

plot(v(minIndex),leakageCurrent,'o','Linewidth',2,'MarkerSize',20,'MarkerEdgeColor','Red')
title(sprintf('Calculated Voltage at Which LED Turns On: %1.2fV',v(minIndex)));

Выключите LED и очистите DataAcquisition

write(ADIDaq,0);
close
clear ADIDaq