Этот пример показов, как использовать MATLAB, чтобы соединиться с ADALM1000 модуля измерения источника, сконфигурировать его, чтобы сгенерировать произвольный сигнал, произвести живые измерения и использовать измерения, чтобы вычислить передаточную функцию соединенной схемы.
В этом примере у вас есть схема R-C, состоящая из 1 k резистор последовательно с 0,1 F конденсатор. Схема R-C присоединена к ADALM1000 устройству каналом А устройства, обеспечивающего стимул напряжения, состоящий из щебета-сигнала. Выход канала A соединяется с резистором, а земля соединяется с конденсатором. Канал B устройства используется для измерения напряжения на конденсаторе. Следующая принципиальная схема показывает настройку измерения.
Можно использовать стимул и измеренные формы волны, чтобы оценить передаточную функцию схемы 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 и установите его тип измерения Voltage.
addoutput(ADIDaq,'smu1','a','Voltage');
Чтобы измерить напряжение, добавьте аналоговый входной канал с идентификатором устройства SMU1 и идентификатором канала B и установите его тип измерения Voltage.
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 и построить график величины отклика.
Удалите смещение постоянного тока перед обработкой.
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