Author Topic: Measuring bandwidth/bode plot DS1074Z/SDG2042X  (Read 1439 times)

0 Members and 1 Guest are viewing this topic.

Offline kim.ddTopic starter

  • Newbie
  • Posts: 9
  • Country: be
Measuring bandwidth/bode plot DS1074Z/SDG2042X
« on: November 10, 2018, 11:45:07 am »
Hi all I am playing arround with a Siglent SDG2042X and a DS1074Z.
I was trying to create a bode plot script in scilab, but was getting unexpected data.

So what I did was hookup the siggen on the Rigol and measure the response from 1..100MHz in 1Mhz steps:





Cable 1 is the one included with the SDG2042X.
Cable 2 is from Batronix CFL200.
Drop down at the end is about -10db/decade arround the -3db point.

Both devices are unlocked to maximum bandwidth.
Is this because I didn't terminate (50ohm) at the scope end? I didn't expect this below 100MHz.
Or did unlock backfire and is the DS1074Z defaulting to 50Mhz (system info shows DS1104Z and option for bandwidth 100mhz offcial).
The SDG2042X normally has a bandwidth for sines of 40MHz, but is unlocked and shows SDG2122X and allows upto 120MHz.

Scilab script:
Code: [Select]
clear;
format("v",20);

// Cable 1 => Siglent SDG 2042X included cable, markings 3D-FB
// Cable 2 => Batronix BNC-Cable CLF200, 50 Ω, 1m, markings CLF-200 LOW LOSS 50 OHM COAXIAL CABLE
// 0 => SDG2042X:CH1->DS1074Z:CH1 (Cable 1), SDG2042X:CH2->DS1074Z:CH2 (Cable 2)
// 1 => SDG2042X:CH1->DS1074Z:CH2 (Cable 1), SDG2042X:CH2->DS1074Z:CH1 (Cable 2)
// 2 => SDG2042X:CH2->DS1074Z:CH1 (Cable 1), SDG2042X:CH1->DS1074Z:CH2 (Cable 2)
swap = 2;

[status, deviceAddrs] = findAllInstruments();
[status, defaultRM] = viOpenDefaultRM();
[status, wavegen_id] = viOpen( defaultRM, deviceAddrs(1), viGetDefinition("VI_NULL"), viGetDefinition("VI_NULL"));
[status, scope_id] = viOpen( defaultRM, deviceAddrs(2), viGetDefinition("VI_NULL"), viGetDefinition("VI_NULL"));

[status, count] = viWrite(wavegen_id, "*IDN?");
[status, wavegen_idn, count] = viRead(wavegen_id, 255);

[status, count] = viWrite(scope_id, "*IDN?");
[status, scope_idn, count] = viRead(scope_id, 255);

[status, count] = viWrite(wavegen_id, "C1:OUTP LOAD,HZ,PLRT,NOR,WVTP,SINE");
[status, count] = viWrite(wavegen_id, "C1:BSWV AMP,1V,OFST,0V,PHSE,0");
[status, count] = viWrite(wavegen_id, "C1:BSWV FRQ,10000000HZ");
[status, count] = viWrite(wavegen_id, "C1:OUTP ON");
[status, count] = viWrite(wavegen_id, "C2:OUTP ON");

[status, count] = viWrite(scope_id, ":ACQ:TYPE HRES");

[status, count] = viWrite(scope_id, ":CHAN1:BWL OFF");
[status, count] = viWrite(scope_id, ":CHAN1:COUP DC");
[status, count] = viWrite(scope_id, ":CHAN1:DISP ON");
[status, count] = viWrite(scope_id, ":CHAN1:PROB 1");

[status, count] = viWrite(scope_id, ":CHAN2:BWL OFF");
[status, count] = viWrite(scope_id, ":CHAN2:COUP DC");
[status, count] = viWrite(scope_id, ":CHAN2:DISP ON");
[status, count] = viWrite(scope_id, ":CHAN2:PROB 1");

[status, count] = viWrite(scope_id, ":MEAS:STAT:ITEM VPP,CHAN1");
[status, count] = viWrite(scope_id, ":MEAS:STAT:ITEM VPP,CHAN2");
[status, count] = viWrite(scope_id, ":MEAS:STAT:ITEM RPH,CHAN12");

function set_freq(f)
    disp(string(f));
    [status, count] = viWrite(wavegen_id, strcat(["C1:BSWV FRQ,",string(f),"HZ"]));
    [status, count] = viWrite(scope_id, strcat([":TIM:MAIN:SCAL ",string(0.5/f)]));
    sleep(2500);
    [status, count] = viWrite(scope_id, ":MEAS:STAT:RES");
    sleep(250);
endfunction

function value = get_vpp1()
    [status, count] = viWrite(scope_id, ":MEAS:ITEM? VPP,CHAN1");
    [status, value, count] = viRead(scope_id, 255);
    value = strtod(value);
endfunction

function value = get_vpp2()
    [status, count] = viWrite(scope_id, ":MEAS:ITEM? VPP,CHAN2");
    [status, value, count] = viRead(scope_id, 255);
    value = strtod(value);
endfunction

function value = get_phase12()
    [status, count] = viWrite(scope_id, ":MEAS:ITEM? RPH,CHAN12");
    [status, value, count] = viRead(scope_id, 255);
    value = strtod(value);
endfunction

delta = 1000000;
n = 100;
freq_set = zeros(n,1);
amp1 = zeros(freq_set);
amp2 = zeros(freq_set);
amp1_db = zeros(freq_set);
amp2_db = zeros(freq_set);
phase = zeros(freq_set);

for k=1:n
    freq_set(k) = delta*k;
    set_freq(freq_set(k));
    amp1(k) = mean([get_vpp1(),get_vpp1(),get_vpp1()]);
    amp2(k) = mean([get_vpp2(),get_vpp2(),get_vpp2()]);
    phase(k) = mean([get_phase12(),get_phase12(),get_phase12()]);
    amp1_db(k) = 20.0*log10(amp1(k)/1);
    amp2_db(k) = 20.0*log10(amp2(k)/1);
end

[status, count] = viWrite(wavegen_id, "C1:OUTP OFF");
[status, count] = viWrite(wavegen_id, "C2:OUTP OFF");

viClose(wavegen_id);
viClose(scope_id);
viClose(defaultRM);

if ( swap == 0 ) then
    scf();
    plot2d("ln",freq_set/1000000,amp1_db,2);
    plot2d("ln",freq_set/1000000,amp2_db,5);
    xlabel("Frequency [MHz]");
    ylabel("Amplitude [db]");
    title("Frequency sweep");
    legend(["SDG2042X:CH1->DS1074Z:CH1 (Cable 1)";"SDG2042X:CH2->DS1074Z:CH2 (Cable 2)"],"in_lower_left");
    set(gca(),"grid",[1 1]);
elseif ( swap == 1 ) then
    scf();
    plot2d("ln",freq_set/1000000,amp2_db,2);
    plot2d("ln",freq_set/1000000,amp1_db,5);
    xlabel("Frequency [MHz]");
    ylabel("Amplitude [db]");
    title("Frequency sweep");
    legend(["SDG2042X:CH1->DS1074Z:CH2 (Cable 1)";"SDG2042X:CH2->DS1074Z:CH1 (Cable 2)"],"in_lower_left");
    set(gca(),"grid",[1 1]);
elseif ( swap == 2 ) then
    scf();
    plot2d("ln",freq_set/1000000,amp1_db,2);
    plot2d("ln",freq_set/1000000,amp2_db,5);
    xlabel("Frequency [MHz]");
    ylabel("Amplitude [db]");
    title("Frequency sweep");
    legend(["SDG2042X:CH2->DS1074Z:CH1 (Cable 1)";"SDG2042X:CH1->DS1074Z:CH2 (Cable 2)"],"in_lower_left");
    set(gca(),"grid",[1 1]);
end
« Last Edit: November 10, 2018, 12:12:00 pm by kim.dd »
 

Offline kim.ddTopic starter

  • Newbie
  • Posts: 9
  • Country: be
Re: Measuring bandwidth/bode plot DS1074Z/SDG2042X
« Reply #1 on: November 13, 2018, 08:30:59 pm »
Did the measurement again now with 50ohm termination at the scope terminals:



Both cables now perform the same... still similar bandwidth response.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf