From 0399437cafbf9a81da09f73c68ac68bc68b5a0d1 Mon Sep 17 00:00:00 2001 From: Wouter Horlings Date: Mon, 11 Dec 2017 16:04:06 +0100 Subject: [PATCH] functies uitgebreid voor multiple measurements. Ook veel plot mogelijkheden toegevoegd --- OOequipment/RC_TransferFunction.mlx | Bin 3683 -> 3918 bytes OOequipment/RLC_TransferFunction.mlx | Bin 34203 -> 3945 bytes OOequipment/initializeEquipment.m | 14 +-- OOequipment/subfiles/Oscilloscope.m | 30 +++--- .../subfiles/RC_TransferFunction_script.m | 92 +++++++++++++++--- .../subfiles/RLC_TransferFunction_script.m | 88 ++++++++++++++--- OOequipment/subfiles/phamag.m | 2 +- OOequipment/subfiles/transferFunction.m | 18 ++-- 8 files changed, 190 insertions(+), 54 deletions(-) diff --git a/OOequipment/RC_TransferFunction.mlx b/OOequipment/RC_TransferFunction.mlx index 03fce8bdc3af9b9728dfef045c00faa2cc090166..0d34e1ca6080e88032fd0d53034e8d89f6db2e94 100644 GIT binary patch delta 2380 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 delta 2129 zcmV-X2(I_e9^)LakOB_deThr_n6)&=0{{Rt5tE(*8-M?A+C~)rJ%7cUrA!Gc*wAHa zAy7rMEWfOaNH%S%T6EaY__p(%dw0eme|_KC7-*Ufra%-VFh1Yid++nUea`1^Zc_ns z)P^hB_u8$%1C*hPxSaL9KW;|NSKgb!dC`qjn5QT$(0pmSMc+%T&APsC!UR)hS}H?H z&tj!hW`F5c&-_B^DAOuLV`#fn_?;m5#ZMWRp4)P&qJ_I=<tKaiI#Nv*DbN-LR~H2A{}q- z?!pspz=WD-778u|=v)HJts*oqf)ts_H97%R4)Gt3WCX7;#HVBB?EeD#(*S@qsW^xBpisx9&mo z&VTqYe0yNF9RHrAM?*K%K5M<|VDokF zc*Hb|c5%=n!1$H&pfou`!yOP)oDm32MpUYzRoX0o87Po|qpQr*DOCb00LEfwx_gHv zo*2utB{a?gg68t>$c?Cs2HGW9mv;w+<$oFFZ0u|fTAu`$CSxI<2sLX5CrgA*U#xFc zcKYHh2u`0%O5Y@?G_yQp0*1MsA2z91aZK^bTz{%ML7C%hMujhraQ}gNLEdS$gGS|r z_D?6BM#dX)W84^?wmx-s^TlII+0w);VdenlT{-iZWpdN5r?M%`ZBxbZx&-atzJF2Z zvdgcmdkWhwsH9GnO{j`4(##S=p{kl7@sY2j7TqwXgiik=`dD;Pl+>p0)uHWuHKP*1 ztkpDEvK0GX#7!pHqSVu?m5P}#H6HgCFSU!|$C>T9FT|7ZJ`Srj8!O5_@k~?~q`KH$ z_5DZF^~9t^HK{Z9A!x)sc<^&vPk$n6D!&c#qw9%adRA`I?9`QIGySSvmXjXd)j&&H81(j zMt(KRs{Ke(*?-Gv!8hb>)AUSnCy4mkqqUKflIU$y=WmrmNbzW};zugCS$|H)uQU^7 z|8$#G&Mbo{f{t_TZSbIlndmVKz_&Xb%7Y5dZ)HZDDk5 zVPY?Db#!obbS`*pY|WQpZ-3e_5QhIsgj5MwA+doKgh|zPL!C6OQ|Z1IdC7%FbDY$% ztI}UT8$t`66-#YZg-`L>$=&l3zrK*uhm3jmAj&l7vli+HEf08<$0=XUTEDO7y>aU_ zB#`}qIEMIA$wJ98BpFEhl}f6o?kQ7L>f0BRN(eK`6=lSK87GXcbAKhbgE)^=23!(< zKT7h=zC(kG0?fCpZeMfxPt>~ET_TGgUgh=tsJCLY?=8aB>ixjtB+C{52%zoU@5$;9?f3pcRUqFKRGsbbii zz7BGCi;3+)ox9`ee0eP>FB1@R#WyRKWhBzV@hEMD-0kMT?x=%TII6$*&1vE< zKA8UjP)h>@6aWAK2ml>%hf7`G1!$8$3NwF{0^6_wcA?poCMIGu-ZkZnHPX_wRknX` zhl4G17hayc&v|k_iuGQ0!8aHydQ~D4#V7#9`$nj?M6dNG%u!$+Qw{5S1tmIwMZvl% zxTd@}@N9Yw#tE>27b#1*F44|8O)<872a?&y6Uv9%-bm(rX1r5j0fdu6&CK17BRtk5}aI<3yFK7ow+MDp0%;esRnHq*6 z8q$&T^Ar63^!PHa8VYqh6$exmCpF~;n1d$p0{T1Hl)R<)5A_CBNlaEDNy2zlla$6e zUF07HzUn^004kH|0 z-vwwC0RR9H0ssIT0000000001000000740qd=5tfj|!6z4;z!<4lV+Z3zHBJI0kDB H00000OR(@? diff --git a/OOequipment/RLC_TransferFunction.mlx b/OOequipment/RLC_TransferFunction.mlx index cf69d6dbbcbf4c9c5e2701cbc5bb85dedd631c16..f9f205a7f5d2a7dadceed786874e2ced19fab9a6 100644 GIT binary patch delta 2380 zcmV-S3A6T_ivsB$u#f@{SA2_0+leL^ngjpQLGad3DHEPOawMafy=LyunR1s4Gvh#}oeAYV z&oINm^X-Fw!fKI2Z0wqUyUG1A$Cru<9fKlqE<%I$5E&Cn&QJSI0S1-%*X}WHrz-Y8 zAReyGb0ZNBh)4=l=L&x;gqk2oWG3?#`BfSqCZUE<+z~6d z$`O4AnotE~%qAcR6XX*pbJN+MLTNx{_dk02#^a z|ErVTw-UXh?>_fGo?M=Mrcsnplhj}7d=xVd`tMh}-7jB`9~7h^G-qnz?1!~UfZ8~J zw2OcHGR>s0N$>~dIp}SM)4+xhy58bm#!f^gPHeUO9PT(LJ@UTQZXdjb{VpM7=eH!S zo#NttD>yhjv`e`7351%}`nY`9YVW^$2hI2RWM@DXjUMB>C*brG=7>Wh0?jN&BN!t- zR76V&Msv z;gK{6R^C~f8Dun>SAj7h(+4-rBzH zMs&Gk8V0B{IaV^=0JbIPUk!inM!e@J^6K+jz6@bosvKC_KhNg7~`Ndnd zM_Og(qZT%Pq|tXigKS2f#UsD1)VyA}l7;HY++;Zhd75#@ubrZHE~>sDjX?m807%lN z3@OZ$)xDLp#*G_Kv&vmP@}^t63s$iDJCq z`@`xh;-CzHVbRXk0OMDmG5z@`(&PUCP)h>@6aWAK2mn`ni%Y8tuE)p%005#8000pH z003=abZlW_FK=~paCLMpcx`OWnD1|*Fc^UU6=Gtd+z<->z*t#!yED7QoR_)#I@5#V z$U$MHUFQD!YX!HtYv_NnEen3pzAd)TBYk-*JiX6S;||j@$;rF}22RJoB+R3PZ0DWd zR}0JUoCXkQe{dAxXvJBI;5yVUz~Wp|@^ByIvPVlr0m215d2zu_2dph#o%H9)6Gr-{bP73HuTFUF0!J z%VzXTV{S|b01SV}*qa&M)lJq24z%DCCHUlH!E3H}kuL?gH*ki&KkHs#LU)bet`^)^ zg8S_QKNsNs0CjYBuG55+1qyL5&9{HR>D6~b|KzEe7yXlwbYi-m~nq_?V3yTT)uy)W9DVm*65k&^{BHYXkohi zCH;uXh4hXj*a}k`ExuNZ>nOFzaND#jLb<2xNM3LaI!ETvMEEF6q-{h(3h*8`grEO;e2L4 zJFUz3i@zHF0Z>Z=1QY-O00;mbafeGTV6~EyjDRqIO4EBN1r*W%yU^@P6B98S@0xPP z8fj_TD%-!e!;LMv3olRJ=R7$d)oP~(^aa+*QP-Hp2}YpB*h$^j_@!M(B}UG3-SJ`6 zP~$x~j8;u03=^Y;Cp#LjUV=kGq#YBc##`?VBgBa^O8UKls~xBCg7#pQy9&?A zLhhVgsA-zwDVw=4KP7LE56|z|!CbWoX z8YM+bGnSO>rhKo+ul}=8h2L!Czl@Z&G-p{6&hp~IcoH-f`SZl)8&FFF1e5H98nfkr zL;?<1e2Yuli6$7D1ONb46_YoFGay%di%Y8tuE)p%005#8000pH000000003100000 yQ3sQXgd+qlV6~Eyv4j=^ND7n5ghv9E3zJ=i8425}7l00004*MZ>x delta 32892 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 diff --git a/OOequipment/initializeEquipment.m b/OOequipment/initializeEquipment.m index a281035..78b196d 100644 --- a/OOequipment/initializeEquipment.m +++ b/OOequipment/initializeEquipment.m @@ -1,9 +1,9 @@ -addpath('subfiles'); +if ~exist('theory_only','var') || theory_only == false + if ~exist('functiongenerator','var') + functiongenerator = FunctionGenerator('10.0.0.3',1234,10); + end -if ~exist('functiongenerator','var') - functiongenerator = FunctionGenerator('10.0.0.3',1234,10); -end - -if ~exist('oscilloscope','var') - oscilloscope = Oscilloscope('10.0.0.2',5025,2); + if ~exist('oscilloscope','var') + oscilloscope = Oscilloscope('10.0.0.2',5025,2); + end end \ No newline at end of file diff --git a/OOequipment/subfiles/Oscilloscope.m b/OOequipment/subfiles/Oscilloscope.m index e484385..e599c82 100644 --- a/OOequipment/subfiles/Oscilloscope.m +++ b/OOequipment/subfiles/Oscilloscope.m @@ -72,15 +72,18 @@ classdef Oscilloscope < Equipment m = str2double(sc.query(['MEAS',num2str(measurement),':RES:ACT?'])); end - function setWaveformSettings(sc,window,format) - if nargin < 3 - format = 'REAL'; - if nargin < 2 - window = 'DEF'; + function setWaveformSettings(sc,window,format,type) + if nargin < 4 + type = 'HRES'; + if nargin < 3 + format = 'REAL'; + if nargin < 2 + window = 'DEF'; + end end end sc.clear; - sc.write('CHAN:TYPE HRES'); + sc.write(['CHAN:TYPE ',type]); sc.write(['FORM ',format]); sc.write('FORM:BORD MSBF'); sc.write(['CHAN:DATA:POIN ',window]); @@ -96,15 +99,18 @@ classdef Oscilloscope < Equipment end - function data = waveform(sc,channels,window) - if nargin < 3 - window = 'DEF'; - if nargin < 2 - channels = 1:sc.nchannels; + function data = waveform(sc,channels,window,type) + if nargin < 4 + type = 'HRES'; + if nargin < 3 + window = 'DEF'; + if nargin < 2 + channels = 1:sc.nchannels; + end end end sc.enable_channels; - sc.setWaveformSettings(window); + sc.setWaveformSettings(window,'REAL',type); for i = channels curcha = ['ch',num2str(i)]; wave = sc.(curcha).getWaveform; diff --git a/OOequipment/subfiles/RC_TransferFunction_script.m b/OOequipment/subfiles/RC_TransferFunction_script.m index 8ccf40f..de8eb9a 100644 --- a/OOequipment/subfiles/RC_TransferFunction_script.m +++ b/OOequipment/subfiles/RC_TransferFunction_script.m @@ -1,20 +1,88 @@ -%% Run the measurements -data = transferFunction(oscilloscope,functiongenerator,f_start,f_stop,n_steps,amplitude); - -%% plot the data +%% Plot theory only S = asymptote(S_smaller,S_larger,f,Fc); P = mod(P,pi); + figure; -subplot(2,1,1) -semilogx(data.frequency,data.magnitude,f,A,f,S) +ax1 = subplot(2,1,1); +semilogx(f,A,f,S) ylabel('Magnitude [dB]','Fontsize',10); xlabel('Frequency [Hz]','Fontsize',10); -legend('Measurement','Theory','Asymptote'); +xlim([f_start,f_stop]); +legend('Theory','Asymptote'); grid on -title('RC-circuit Bodeplot') -subplot(2,1,2); -semilogx(data.frequency,data.phase,f,P) +title('RC-circuit Bodeplot Theory') +ax2 = subplot(2,1,2); +semilogx(f,P) ylabel('Phase [rad]','Fontsize',10); xlabel('Frequency [Hz]','Fontsize',10); -legend('Measurement','Theory'); -grid on \ No newline at end of file +xlim([f_start,f_stop]); +legend('Theory'); +grid on +linkaxes([ax1,ax2],'x') + +%% Run the measurements +if theory_only == false + data = transferFunction(oscilloscope,functiongenerator,f_start,f_stop,amplitude,n_steps,n_measurements); + %% Process the data + A_mean = mean(data.magnitude); + P_mean = mean(data.phase); + A_std = std(data.magnitude); + P_std = std(data.phase); + + %% plot average measurement, theory and asymptote. + figure; + ax1 = subplot(2,1,1); + semilogx(data.frequency,20*log10(A_mean),f,A,f,S) + ylabel('Magnitude [dB]','Fontsize',10); + xlabel('Frequency [Hz]','Fontsize',10); + legend('Average Measurement','Theory','Asymptote'); + grid on + title('RC-circuit Bodeplot') + ax2 = subplot(2,1,2); + semilogx(data.frequency,P_mean,f,P) + ylabel('Phase [rad]','Fontsize',10); + xlabel('Frequency [Hz]','Fontsize',10); + legend('Average Measurement','Theory'); + grid on + + %% plot avearage measurement with standard deviation and theory. + figure; + ax1 = subplot(2,1,1); + ax1.XScale = 'log'; + errorbar(data.frequency,20*log10(A_mean),20*log10(A_std)) + hold on + semilogx(f,A) + hold off + ylabel('Magnitude [dB]','Fontsize',10); + xlabel('Frequency [Hz]','Fontsize',10); + legend('Average Measurement','Theory','Asymptote'); + grid on + title('RC-circuit Bodeplot') + ax2 = subplot(2,1,2); + ax2.XScale = 'log'; + errorbar(data.frequency,P_mean,P_std); + hold on + semilogx(data.frequency,P_mean,f,P) + hold off + ylabel('Phase [rad]','Fontsize',10); + xlabel('Frequency [Hz]','Fontsize',10); + legend('Average Measurement','Theory'); + grid on + %% plot avearage measurement with standard deviation. + figure; + ax1 = subplot(2,1,1); + ax1.XScale = 'log'; + errorbar(data.frequency,20*log10(A_mean),20*log10(A_std)) + ylabel('Magnitude [dB]','Fontsize',10); + xlabel('Frequency [Hz]','Fontsize',10); + legend('Average Measurement'); + grid on + title('RC-circuit Bodeplot') + ax2 = subplot(2,1,2); + ax2.XScale = 'log'; + errorbar(data.frequency,P_mean,P_std); + ylabel('Phase [rad]','Fontsize',10); + xlabel('Frequency [Hz]','Fontsize',10); + legend('Average Measurement'); + grid on +end \ No newline at end of file diff --git a/OOequipment/subfiles/RLC_TransferFunction_script.m b/OOequipment/subfiles/RLC_TransferFunction_script.m index bcaa57c..944a171 100644 --- a/OOequipment/subfiles/RLC_TransferFunction_script.m +++ b/OOequipment/subfiles/RLC_TransferFunction_script.m @@ -1,25 +1,85 @@ -%% Run the measurements -data = transferFunction(oscilloscope,functiongenerator,f_start,f_stop,n_steps,amplitude); -%% plot the data +%% Plot theory only S = asymptote(S_smaller,S_larger,f,Fc); P = mod(P,pi); + figure; -subplot(2,1,1) -semilogx(data.frequency,data.magnitude) -hold on +subplot(2,1,1); semilogx(f,A,f,S) -hold off ylabel('Magnitude [dB]','Fontsize',10); xlabel('Frequency [Hz]','Fontsize',10); -legend('Measurement','Theory','Asymptote'); +legend('Theory','Asymptote'); grid on -title('RLC-circuit Bodeplot') +title('RLC-circuit Bodeplot Theory') subplot(2,1,2); -semilogx(data.frequency,data.phase) -hold on semilogx(f,P) -hold off ylabel('Phase [rad]','Fontsize',10); xlabel('Frequency [Hz]','Fontsize',10); -legend('Measurement','Theory'); -grid on \ No newline at end of file +legend('Theory'); +grid on + +%% Run the measurements +if theory_only == false + data = transferFunction(oscilloscope,functiongenerator,f_start,f_stop,amplitude,n_steps,n_measurements); + %% Process the data + A_mean = mean(data.magnitude); + P_mean = mean(data.phase); + A_std = std(data.magnitude); + P_std = std(data.phase); + + %% plot average measurement, theory and asymptote. + figure; + subplot(2,1,1); + semilogx(data.frequency,20*log10(A_mean),f,A,f,S) + ylabel('Magnitude [dB]','Fontsize',10); + xlabel('Frequency [Hz]','Fontsize',10); + legend('Average Measurement','Theory','Asymptote'); + grid on + title('RLC-circuit Bodeplot') + subplot(2,1,2); + semilogx(data.frequency,P_mean,f,P) + ylabel('Phase [rad]','Fontsize',10); + xlabel('Frequency [Hz]','Fontsize',10); + legend('Average Measurement','Theory'); + grid on + + %% plot avearage measurement with standard deviation and theory. + figure; + ax = subplot(2,1,1); + ax.XScale = 'log'; + errorbar(data.frequency,20*log10(A_mean),20*log10(A_std)) + hold on + semilogx(f,A) + hold off + ylabel('Magnitude [dB]','Fontsize',10); + xlabel('Frequency [Hz]','Fontsize',10); + legend('Average Measurement','Theory','Asymptote'); + grid on + title('RLC-circuit Bodeplot') + ax = subplot(2,1,2); + ax.XScale = 'log'; + errorbar(data.frequency,P_mean,P_std); + hold on + semilogx(data.frequency,P_mean,f,P) + hold off + ylabel('Phase [rad]','Fontsize',10); + xlabel('Frequency [Hz]','Fontsize',10); + legend('Average Measurement','Theory'); + grid on + %% plot avearage measurement with standard deviation. + figure; + ax = subplot(2,1,1); + ax.XScale = 'log'; + errorbar(data.frequency,20*log10(A_mean),20*log10(A_std)) + ylabel('Magnitude [dB]','Fontsize',10); + xlabel('Frequency [Hz]','Fontsize',10); + legend('Average Measurement'); + grid on + title('RLC-circuit Bodeplot') + ax = subplot(2,1,2); + ax.XScale = 'log'; + errorbar(data.frequency,P_mean,P_std); + ylabel('Phase [rad]','Fontsize',10); + xlabel('Frequency [Hz]','Fontsize',10); + legend('Average Measurement'); + grid on +end \ No newline at end of file diff --git a/OOequipment/subfiles/phamag.m b/OOequipment/subfiles/phamag.m index 2556382..27fcd6e 100644 --- a/OOequipment/subfiles/phamag.m +++ b/OOequipment/subfiles/phamag.m @@ -8,6 +8,6 @@ n = 2^nextpow2(length); X = fft(wave,n,2)/n; idx = ceil(frequency*n/Fs); phase = mod(angle(mean(X(2,idx)))-angle(mean(X(1,idx))),pi); -magnitude = 20*log10(abs(X(2,idx))/abs(X(1,idx))); +magnitude = abs(X(2,idx))/abs(X(1,idx)); end diff --git a/OOequipment/subfiles/transferFunction.m b/OOequipment/subfiles/transferFunction.m index 3a6383b..131bf52 100644 --- a/OOequipment/subfiles/transferFunction.m +++ b/OOequipment/subfiles/transferFunction.m @@ -1,4 +1,4 @@ -function data = transferFunction(oscilloscope,functiongenerator,f_start,f_stop,n_steps,amplitude) +function data = transferFunction(oscilloscope,functiongenerator,f_start,f_stop,amplitude,n_steps,n_measurements) %TRANSFERFUNCTION Summary of this function goes here % Detailed explanation goes here @@ -7,14 +7,16 @@ function data = transferFunction(oscilloscope,functiongenerator,f_start,f_stop,n functiongenerator.waveform = 'SINUSOID'; oscilloscope.enable_channels; oscilloscope.trigger.source = 'CH1'; - emptydata = zeros(n_steps,1); + emptydata = zeros(n_measurements,n_steps); data = struct('magnitude',emptydata,'phase',emptydata,'frequency',f_array); - for i = 1:n_steps - fprintf('Measurement %i of %i - Frequency: %.2f Hertz\n',i,n_steps,f_array(i)); - functiongenerator.frequency = f_array(i); - oscilloscope.auto; - wavedata = oscilloscope.waveform(1:2); - [data.phase(i),data.magnitude(i)] = phamag(wavedata.ch1,wavedata.ch2,wavedata.length,f_array(i),wavedata.sampletime); + for j = 1:n_measurements + for i = 1:n_steps +% fprintf('Measurement %i of %i - Frequency: %.2f Hertz\n',i,n_steps,f_array(i)); + functiongenerator.frequency = f_array(i); + oscilloscope.auto; + wavedata = oscilloscope.waveform(1:2,'DEF','SAMP'); + [data.phase(j,i),data.magnitude(j,i)] = phamag(wavedata.ch1,wavedata.ch2,wavedata.length,f_array(i),wavedata.sampletime); + end end %bodePlot(data.magnitude,data.phase,data.frequency) end