В этом примере показано, как использовать MATLAB для подключения аналоговых устройств ADALM1000 блока измерения источника, его конфигурирования и выполнения измерений тока и напряжения для характеристики светодиода.
daqlist
ans=1×5 table
VendorID DeviceID Description Model DeviceInfo
________ ________ _______________________________ ___________ ________________________
"adi" "SMU1" "Analog Devices Inc. ADALM1000" "ADALM1000" [1×1 daq.adi.DeviceInfo]
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"
Соедините светодиод последовательно с резистором между каналом 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