% Libro de Magistris e Miano Circuiti 2007 % Filtri passa banda e taglia banda clear format short g format compact %get(groot,'factory') %get(groot,'factoryObjectType') %get(groot,'factoryObjectTypePropertyName') %set(0, 'defaultfigureposition', [80 10 1000 990]); set(0, 'defaultfigurepapertype','A4', 'defaultfigureunits', 'centimeters', 'defaultfigurepaperunits', 'centimeters'); set(0, 'defaultfigureposition', [1 1 28 18]); %set(0, 'defaultfigurepaperpositionmode','manual', 'defaultfigurepaperposition', [1 1 18 18]); %set(0, 'defaultaxeslinewidth', 0.9); %set(0, 'defaultaxeslinewidth', 'factory'); set(0, 'defaultaxesfontsize', 10); set(0, 'DefaultAxesTitleFontWeight', 'normal') set(0, 'DefaultAxesTitleFontSizeMultiplier', 1) set(0, 'defaultlinelinewidth', 1.1); %set(0, 'defaultpatchlinewidth', 1.1); %set(0, 'defaultlinemarkersize', 15); %set(0,'defaulttextinterpreter','latex'), set(0,'defaulttextinterpreter','factory') [ST,I] = dbstack; %fprintf(2,['$$$$ ' num2str(100*rand) ' $$$$\n']) fprintf(2,'$$$$ %0.5g $$$$ %s\n', 100*rand,ST.file) %% convenienza della rappresentazione logaritmica disp(' rappresentazione logaritmica ') AR = [.01 .1 1 10 100 1000 10000]; Alog10 = log10(AR); AdB = 20*log10(AR); disp([AR; Alog10; AdB]) % AdB_check_ERR = 10*log10(A^2) % ERROR AdB_check = 10*log10(AR.^2) %% Funzione di rete filtro passa banda RLC serie disp(' filtro RLC serie ') R = 1; R = 10; R = 100; R = 1000; L=250e-9; C=10e-12; omegar = 1/sqrt(L*C); fr = omegar/(2*pi) Qs = sqrt(L/C)/R % = omegar*L/R quality factor LC serie Qp = 1/Qs % quality factor LC parallelo %f = linspace(1e5,1e10,10000); f = logspace(5,10,10000); omega = 2*pi*f; ZL_ = 1i*omega*L; ZC_ = -1i./(omega*C); ZLC_ = ZL_+ZC_; % VR_ = E_ * R/(R+ZLC_) % VR_ / E_ = HR_ HR_ = R./(R+ZLC_); AR = abs(HR_); phiR = angle(HR_); ARdB = 20*log10(AR); hf1 = 1; figure(hf1) set(hf1,'name','Bandpass RLC filter') subplot(2,3,1), plot(f,AR) , grid, xlabel('f [Hz]'), ylabel('A [-]') subplot(2,3,2), semilogx(f,AR) , grid, xlabel('f [Hz]'), ylabel('A [-]') subplot(2,3,3), semilogx(f,ARdB), grid, xlabel('f [Hz]'), ylabel('A [dB]') %title(['f_r = ' num2str(fr) ' Qs = ' num2str(Qs)]) str = sprintf('f_r = %0.3e Qs = %0.3f', fr,Qs); title(str) subplot(2,3,4), plot(f,phiR) , grid, xlabel('f [Hz]'), ylabel('phi [rad]') subplot(2,3,5), semilogx(f,phiR), grid, xlabel('f [Hz]'), ylabel('phi [rad]') %% Funzione di rete filtro notch RLC serie % VLC_ = E_ * ZLC_/(R+ZLC_) % VLC_ / E_ = HLC_ HLC_ = ZLC_./(R+ZLC_); ALC = abs(HLC_); % |omega*L-1/(omega*C)| / |R+j*(omega*L-1/(omega*C)| ALCdB = 20*log10(ALC); phiLC = angle(HLC_); % pi/2*sign(omega*L-1/(omega*C)) - atan((omega*L-1/(omega*C)/R)) hf2 = 2; figure(hf2) set(hf2,'name','Notch RLC filter') subplot(2,3,1), plot(f,ALC) , grid, xlabel('f [Hz]'), ylabel('A [-]') subplot(2,3,2), semilogx(f,ALC) , grid, xlabel('f [Hz]'), ylabel('A [-]') subplot(2,3,3), semilogx(f,ALCdB), grid, xlabel('f [Hz]'), ylabel('A [dB]') title(str) subplot(2,3,4), plot(f,phiLC) , grid, xlabel('f [Hz]'), ylabel('phi [rad]') subplot(2,3,5), semilogx(f,phiLC), grid, xlabel('f [Hz]'), ylabel('phi [rad]') %% Funzione di rete filtro notch LC parallelo (libro Figura 5.43 pag 282) Zp_ = paral(ZL_,ZC_); % VR_ = E_ * R_/(R+Zp_) % VR_ / E_ = HRn_ HRn_ = R./(R+Zp_); ARn = abs(HRn_); ARndB = 20*log10(ARn); phiRn = angle(HRn_); hf3 = 3; figure(hf3) set(hf3,'name','Notch filter Fig. 5.43') subplot(2,3,1), plot(f,ARn) , grid, xlabel('f [Hz]'), ylabel('A [-]') subplot(2,3,2), semilogx(f,ARn) , grid, xlabel('f [Hz]'), ylabel('A [-]') subplot(2,3,3), semilogx(f,ARndB), grid, xlabel('f [Hz]'), ylabel('A [dB]') %title(['Qp = ' num2str(Qp)]) str = sprintf('f_r = %0.3e Qp = %0.3f', fr,Qp); title(str) subplot(2,3,4), plot(f,phiRn) , grid, xlabel('f [Hz]'), ylabel('phi [rad]') subplot(2,3,5), semilogx(f,phiRn), grid, xlabel('f [Hz]'), ylabel('phi [rad]')