Характеристика светодиода с 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]

Создайте интерфейс DataAcquisition для 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"

Мигает подключенный светодиод пять раз

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

Выключите светодиодный индикатор и очистите DataAcquisition

write(ADIDaq,0);
close
clear ADIDaq