В этом примере показано, как использовать 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]
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 последовательно с 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
Чтобы изучить характеристики светодиода I-V, разверните область значений значений напряжения от 0 В до 5 В и измерьте ток для каждого значения. Агрегат всех измерений обеспечивает данные, чтобы изобразить ток в виде графика через LED в области значений напряжений.
v = linspace(0,5,250)'; i = readwrite(ADIDaq,v,"OutputFormat","Matrix");
Когда у вас есть результаты измерений, можно визуализировать его. Можно также вычислить математическую модель, которая аппроксимирует поведение 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 включает, состоит приблизительно в том, где эта линия пересекает ось напряжения.
Найдите линию, которая проходит через линейный фрагмент сигнала.
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)));
write(ADIDaq,0);
close
clear ADIDaq