exponenta event banner

Охарактеризовать светодиодный индикатор с помощью ADALM1000

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

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

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

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

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

ADIDaq = daq("adi");

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

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

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

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

Добавьте аналоговый входной канал с идентификатором устройства SMU1 и идентификатором канала 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"

Blink Attached LED пять раз

Соедините светодиод последовательно с 330-Ω резистором между каналом A ADALM1000 и землей. Поочередно применяют 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

Охарактеризовать светодиодный индикатор

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

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

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

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

% 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.'});

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

approxPoly = polyfit(v,i,5);

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

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

Расчет напряжения, при котором включается светодиод

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

Найдите линию, проходящую через линейную часть сигнала.

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

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

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','--')

Обведите приблизительно напряжение, при котором включается светодиод.

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

Выключение светодиодного индикатора и сброс сбора данных

write(ADIDaq,0);
close
clear ADIDaq