Оцените передаточную функцию схемы с ADALM1000

Этот пример показов, как использовать 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]

Создайте DataAcquisition для ADALM1000 устройства

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'});

Очистка данных DataAcquisition и фигур

clear ADIDaq
close all