В этом примере показано, как использовать MATLAB для подключения к блоку измерения источника ADALM1000, конфигурировать его для генерации произвольного сигнала, производить измерения в реальном времени и использовать измерения для вычисления передаточной функции подключенной схемы.
В этом примере имеется схема R-C, состоящая из резистора 1 кОм, последовательно с конденсатором 0,1 мкФ. Схема R-C присоединена к ADALM1000 устройству с каналом А устройства, обеспечивающим стимул напряжения, состоящий из сигнала чирпа. Выход канала А подключен к резистору, а заземление - к конденсатору. Канал В устройства используется для измерения напряжения на конденсаторе. На следующей принципиальной схеме показана настройка измерения.

Можно использовать стимул и измеренные формы сигналов для оценки передаточной функции схемы R-C и сравнения измеренного отклика с теоретическим откликом схемы R-C.
daqlist("adi")ans=1×4 table
DeviceID Description Model DeviceInfo
________ _______________________________ ___________ ________________________
"SMU1" "Analog Devices Inc. ADALM1000" "ADALM1000" [1×1 daq.adi.DeviceInfo]
ADIDaq = daq("adi")ADIDaq =
DataAcquisition using Analog Devices Inc. hardware:
Running: 0
Rate: 100000
NumScansAvailable: 0
NumScansAcquired: 0
NumScansQueued: 0
NumScansOutputByHardware: 0
RateLimit: []
Show channels
Show properties and methods
Устройство ADALM1000 выполнено с возможностью одновременного источника и измерения напряжения на отдельных каналах. Настройте устройство в этом режиме.
Для напряжения источника добавьте аналоговый выходной канал с идентификатором устройства SMU1 и идентификатором канала A и установите его тип измерения «Напряжение».
addoutput(ADIDaq,'smu1','a','Voltage');
Для измерения напряжения добавьте аналоговый входной канал с идентификатором устройства SMU1 и идентификатором канала B и установите его тип измерения «Напряжение».
addinput(ADIDaq,'smu1','b','Voltage');
Подтвердите конфигурацию каналов.
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" "B" "Voltage (SingleEnd)" "0 to +5.0 Volts" "SMU1_B"
Для стимуляции цепи используйте чирп-сигнал с амплитудой 1 В в диапазоне частот от 20 Гц до 20 кГц. Чирп происходит за период в 1 секунду.
Fs = ADIDaq.Rate;
T = 0:1/Fs:1;
ExcitationSignal = chirp(T,20,1,20e3,'linear');Добавьте смещение постоянного тока 2 В, чтобы убедиться, что выходное напряжение устройства всегда выше 0 В.
Offset = 2; ExcitationSignal = ExcitationSignal + Offset;
Визуализируйте сигнал стимула во временной области.
figure(1) plot(T, ExcitationSignal,'Blue') xlim([0 0.15]) xlabel('Time (s)') ylabel('Magnitude (V)') title('Time domain plot of stimulus signal')

Визуализация сигнала стимула в частотной области.
figure(2) spectrogram(ExcitationSignal,1024,1000,1024,Fs,'yaxis') title('Frequency domain view of stimulus signal')

Генерировать выход устройства и измерять напряжение на конденсаторе одновременно на другом канале.
MeasuredTable = readwrite(ADIDaq,ExcitationSignal');
MeasuredSignal = MeasuredTable{:,1};figure(1) hold on; plot(T,MeasuredSignal,'Red'); xlim([0 0.15]) ylim([1 3]) title('Time domain plot of stimulus and measured signal') legend('Excitation Signal','Measured Signal')

figure(3) spectrogram(MeasuredSignal,1024,1000,1024,Fs,'yaxis') title('Frequency domain view of the the measured signal')

Сравните измеренный сигнал и сигнал стимула для вычисления передаточной функции схемы R-C и постройте график амплитудной характеристики.
Перед обработкой удалите смещение DC.
MeasuredSignal = MeasuredSignal - mean(MeasuredSignal); ExcitationSignal = ExcitationSignal - Offset; [TFxy,Freq] = tfestimate(ExcitationSignal,MeasuredSignal,[],[],[],Fs); Mag = abs(TFxy);
Сравните расчетную передаточную функцию с теоретической амплитудной характеристикой.
R = 1000; % Resistance (ohms) C = 0.1e-6; % Capacitance (farads) TFMagTheory = abs(1./(1 + (1i*2*pi*Freq*C*R))); figure(4); semilogy(Freq,TFMagTheory,Freq,Mag); xlim([0 20e3]) xlabel('Frequency (Hz)') ylim([0.05 1.1]) ylabel('Magnitude') grid on legend('Theoretical frequency response','Measured frequency response') title({'Magnitude response of the theoretical'; 'and estimated transfer functions'});

clear ADIDaq close all