function Elec = TTFSS_filters(servo_No) %make TTFSS circuit transfer functions models inv_amp = @(Z1,Z2) -Z2/Z1;%inverting amplifier non_inv_amp = @(Z1,Z2) 1+Z2/Z1;% non-inverting amplifier par_imp2 = @(Z1,Z2) 1/(1/Z1+1/Z2); % impedance of paralel connection with Z1 and Z2 par_imp3 = @(Z1,Z2,Z3) 1/(1/Z1+1/Z2+1/Z3); % impedance of paralel connection with Z1 and Z2 and Z3 ser_imp2 = @(Z1,Z2) Z1 + Z2; % impedance of siriese connection with Z1 and Z2 ser_imp3 = @(Z1,Z2,Z3) Z1 + Z2 + Z3; % impedance of siriese connection with Z1 and Z2 and Z3 cap = @(C) zpk([],[0],[1/C]); ind = @(L) tf([L 0],1); v_dev = @(Z1,Z2) Z2/(Z1+Z2);%voltage devider gen_fil = @(Z1,Z2,Z3,Z4,Z5,Z6,Z7)... -((1/Z1)*((1/Z5)+(1/Z6)+(1/Z7))-(1/Z7)*((1/Z3)+((Z2+Z3)/Z3)*(1/Z1)+((Z2+Z3)/Z3)*(1/Z4)))... /((1/Z4)*((1/Z5)+(1/Z6)+(1/Z7))-(1/Z6)*((1/Z3)+((Z2+Z3)/Z3)*(1/Z1)+((Z2+Z3)/Z3)*(1/Z4)));%generic filter %% %% unit k = 1e3; M = 1e6; u = 1e-6; n = 1e-9; p = 1e-12; m = 1e-3; %% IC ic = struct; ic.max333 = 16.5;%The on resistance of switch ic.ad602in = 100;%The input impedance of the AD602 %% Circuit element parameters %% RF rf = struct; rf.R9 = 22; rf.C13 = 220 * p; rf.C12 = 47 * p; rf.C14 = 220 * p; rf.L3 = 1.2 * u; %% TTFSS ttfss = struct; %Common ttfss.R3 = 124; ttfss.R4 = 392; ttfss.R5 = 3.92 * k; ttfss.R7 = 100; ttfss.R8 = 100 * k; ttfss.R9 = 100 * k; ttfss.R11 = 1.2 * k; ttfss.R17 = 0; ttfss.C5 = 1 * u; % confirm(Hpdnotch,'pdnotch.csv') % confirm(Hoslpf,'OSfilter.csv') %Fast ttfss.R35 = 560; ttfss.R30 = 4.87 * k; ttfss.R36 = 750; ttfss.R31 = 3.09 * k; ttfss.R37 = 499; ttfss.R32 = 499; ttfss.R34 = 150; ttfss.R39 = 33; ttfss.R29 = 5.6 * k; ttfss.R47 = 5.6 * k; ttfss.R40 = 5.6 * k; ttfss.R49 = 56 * k; ttfss.R46 = 15.8 * k; ttfss.C36 = 3.3 * n; ttfss.C37 = 1.5 * n; ttfss.C47 = 1200 * p; ttfss.C46 = 65 * p; ttfss.C51 = 1 * u; ttfss.L2 = 470 * u; % confirm(Hfout,'Fout.csv'); %EOM ttfss.R19=24.9* k; ttfss.R22=1.1 * k; ttfss.R20=47 * k; ttfss.R18=1.5* k; ttfss.R24=1.3* k; ttfss.C15=3.3* n; ttfss.C23=1* u; ttfss.C18=33 * p; ttfss.C16=3.3 * n; ttfss.C24=1 * u; ttfss.R14=3.01 * k; ttfss.R15=100; ttfss.C11=330 * p; ttfss.C13= 84 * p;%valuable % ttfss.C13= 4 * p;%valuable ttfss.L1=220 * u; ttfss.R25=499; ttfss.C25=1 * u; ttfss.R21=10 * k; %% TTFSS HV/Interface hv = struct; hv.R42 = 3.3 * k; hv.R45 = 1 * k; hv.R47 = 100 * k; hv.R54 = 11 * k; hv.R51 = 100 * k; hv.C21 = 1 * n; hv.C22 = 220 * n; hv.C25 = 47 * p; %% TTFSS Slow slow = struct; slow.R3 = 4.02 * k; slow.R4 = 1.00 * k; slow.R5 = 4.02 * k; slow.C4 = 1 * u; %% Interface Board I = struct; I.R116 = 100 * k; I.R117 = 100 * k; I.R99 = 100 * k; I.R100 = 100 * k; I.R37 = 1 * M; I.R135 = 49.9; I.R136 = 20 * k; I.R32 = 10 * k; I.C53 = 1 * u; I.C52 = 1 * u; I.C40 = 20 * u; I.C41 = 1 * u; I.Vref = 10; %% Transfer Functions. Elec = containers.Map;% electronics gain [V/V] Elec('common_notch') = v_dev(ser_imp2(rf.R9,ic.max333),cap(rf.C13))*v_dev(par_imp2(ind(rf.L3),cap(rf.C12)),par_imp2(cap(rf.C14),ttfss.R3)); Elec('common_gain1') = inv_amp(ttfss.R3,ttfss.R4); Elec('common_gain2') = v_dev(ser_imp2(ttfss.R7,ic.max333),ic.ad602in); Elec('fast_gain1') = v_dev(ttfss.R34,ic.ad602in); Elec('fast_LPF_10k') = inv_amp(ttfss.R35,par_imp2(cap(ttfss.C36),ttfss.R30)); Elec('fast_LPF_34k') = inv_amp(ttfss.R36,par_imp2(cap(ttfss.C37),ttfss.R31)); Elec('fast_notch') = v_dev(ttfss.R37,par_imp2(ser_imp3(ttfss.R39,ind(ttfss.L2),par_imp2(cap(ttfss.C47),cap(ttfss.C46))),ttfss.R32))*inv_amp(ttfss.R32,ttfss.R29); Elec('fast_LPF_out') = v_dev(ttfss.R46,cap(ttfss.C51)); Elec('EOM_BPF1') = inv_amp(ser_imp2(cap(ttfss.C23),ttfss.R22),par_imp2(ser_imp2(ttfss.R17,cap(ttfss.C15)),ttfss.R19)); Elec('EOM_BPF2') = inv_amp(ser_imp2(cap(ttfss.C24),ttfss.R24),par_imp3(ser_imp2(ttfss.R18,cap(ttfss.C16)),ttfss.R20,cap(ttfss.C18))); Elec('EOM_HPF') = inv_amp(ser_imp2(cap(ttfss.C25),ttfss.R25),ttfss.R21); Elec('EOM_BPF3') = v_dev(ser_imp2(cap(ttfss.C11),ttfss.R14),par_imp2(ser_imp2(ind(ttfss.L1),cap(ttfss.C13)),ttfss.R15))*inv_amp(ttfss.R15,ttfss.R21); Elec('EOM_HV') = inv_amp(ser_imp2(par_imp2(cap(hv.C21),cap(hv.C22)),hv.R42),par_imp2(hv.R47,ser_imp2(hv.R45,cap(hv.C25)))); Elec('slow_integrator') = tf([-1],[I.R37*I.C40 0]); Elec('slow_gain') = v_dev(I.R136,I.R135); Elec('slow_LPF') = zpk(tf([-1],[I.R37*I.C40 0])); Elec('slow_input') = zpk(tf([1],[I.R32*I.C41 1])); Elec('slow_output_p') = zpk(tf([slow.R4*slow.C4*slow.R5 slow.R4+slow.R5],... [(slow.R3+slow.R5)*slow.C4*slow.R4 slow.R3+slow.R5+slow.R4])); Elec('slow_output_n') = zpk(tf([slow.R4*slow.C4*slow.R5 slow.R5],... [(slow.R3+slow.R5)*slow.C4*slow.R4 slow.R3+slow.R5+slow.R4])); end