Этот пример показывает, как использовать MATLAB, чтобы соединиться с модулем исходного измерения ADALM1000, сконфигурировать его, чтобы сгенерировать произвольный сигнал, сделать живые измерения и использовать измерения, чтобы вычислить передаточную функцию подключенной схемы.
В этом примере у вас есть схема R-C, состоящая из 1 К резистор последовательно с 0.1 F конденсатор. Схема R-C присоединена к устройству ADALM1000 с Каналом устройства, обеспечивающего стимул напряжения, состоящий из сигнала щебета. Вывод Канала A соединяется с резистором, и земля соединяется с конденсатором. Образуйте канал B устройства используется, чтобы измерить напряжение через конденсатор. Следующая принципиальная схема показывает настройку измерения.
Вы используете знание стимула и измеренной формы волны, чтобы оценить передаточную функцию схемы R-C и сравнить измеренный ответ на теоретический ответ схемы R-C.
daq.getDevices
ans = adi: Analog Devices Inc. ADALM1000 (Device ID: 'SMU1') Analog input subsystem supports: 0 to +5.0 Volts,-0.20 to +0.20 A ranges Rates from 100000.0 to 100000.0 scans/sec 2 channels ('A','B') 'Voltage','Current' measurement types Analog output subsystem supports: 0 to +5.0 Volts,-0.20 to +0.20 A ranges Rates from 100000.0 to 100000.0 scans/sec 2 channels ('A','B') 'Voltage','Current' measurement types Properties, Methods, Events
ADISession = daq.createSession('adi')
ADISession = Data acquisition session using Analog Devices Inc. hardware: Will run for 1 second (100000 scans) at 100000 scans/second. No channels have been added. Properties, Methods, Events
Устройство ADALM1000 способно к определению источника и измерению напряжения одновременно на отдельных каналах. Настройте устройство в этом режиме.
К исходному напряжению добавьте канал аналогового выхода с устройством ID SMU1 и ID канала A, и установите его тип измерения на Напряжение.
addAnalogOutputChannel(ADISession,'smu1','a','Voltage');
Чтобы измерить напряжение, добавьте канал аналогового входа с устройством ID SMU1 и ID канала B, и установите его тип измерения на Напряжение.
addAnalogInputChannel(ADISession,'smu1','b','Voltage');
Подтвердите настройку сеанса.
ADISession
ADISession = Data acquisition session using Analog Devices Inc. hardware: No data queued. Will run at 100000 scans/second. Number of channels: 2 index Type Device Channel MeasurementType Range Name ----- ---- ------ ------- ------------------- --------------- ---- 1 ao SMU1 A Voltage (SingleEnd) 0 to +5.0 Volts 2 ai SMU1 B Voltage (SingleEnd) 0 to +5.0 Volts Properties, Methods, Events
Используйте форму волны щебета амплитуды на 1 вольт, располагающейся в частоте от 20 Гц до 20 кГц для стимулирования схемы. Щебет происходит в период 1 секунды.
Fs = ADISession.Rate;
T = 0:1/Fs:1;
ExcitationSignal = chirp(T,20,1,20e3,'linear');
Добавьте смещение DC 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 input signal')
Визуализируйте сигнал в частотном диапазоне.
figure(2) spectrogram(ExcitationSignal,1024,1000,1024,Fs,'yaxis') title('Frequency domain view of the the input signal')
Поставьте в очередь данные, которые будут отосланы устройством на первом канале и измерят напряжение через конденсатор на втором канале.
queueOutputData(ADISession,ExcitationSignal'); MeasuredSignal = startForeground(ADISession);
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 function'});
clear ADIsession close all