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

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

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

daq.getDevices
ans = 
adi: Analog Devices Inc. ADALM1000 (Device ID: 'SMU1')
   Analog input subsystem 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 subsystem 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
   

Properties, Methods, Events


Создайте сеанс Используя устройство ADALM1000

ADISession = daq.createSession('adi')
ADISession = 
Data acquisition session using Analog Devices Inc. hardware:
   Will run for 1 second (100000 scans) at 100000 scans/second.
   No channels have been added.
   
Properties, Methods, Events

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

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

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

addAnalogOutputChannel(ADISession,'smu1','a','Voltage');

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

addAnalogInputChannel(ADISession,'smu1','a','Current');

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

ADISession
ADISession = 
Data acquisition session using Analog Devices Inc. hardware:
   No data queued.  Will run at 100000 scans/second.
   Number of channels: 2
      index Type Device Channel   MeasurementType        Range       Name
      ----- ---- ------ ------- ------------------- ---------------- ----
      1     ao   SMU1   A       Voltage (SingleEnd) 0 to +5.0 Volts
      2     ai   SMU1   A       Current             -0.20 to +0.20 A
   
Properties, Methods, Events

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

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

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

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

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

v = linspace(0,5,250);

for iLoop=1:length(v)
    outputSingleScan(ADISession,v(iLoop));
    i(iLoop) = inputSingleScan(ADISession);
end

Постройте характеристическую кривую 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 и очистите сеанс

outputSingleScan(ADISession,0);
close
clear ADISession
Для просмотра документации необходимо авторизоваться на сайте