function [ filename ] = make_TTFSS_TFs( ) %SAVE_PARAMETERS make mat file including all parameters and transfer functions in the TTFSS circuit. filename = 'TTFSS_TFs'; %% 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.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 = 910 * p; ttfss.C46 = 40 * 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=65 * 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. All functions below are local functions defined in this script. %TTFSS TF_cnotch = PDnotch(ic,rf,ttfss); cgain1 = ttfss.R4/ttfss.R3; cgain2 = ic.ad602in/(ttfss.R7+ic.max333+ic.ad602in); fgain1 = ic.ad602in/(ttfss.R34+ic.ad602in); TF_PZTLPF10k = zpk(tf([-1/ttfss.R35],[ttfss.C36 1/ttfss.R30])); TF_PZTLPF34k = zpk(tf([-1/ttfss.R36],[ttfss.C37 1/ttfss.R31])); TF_PZTnotch = PZTnotch(ttfss); TF_PZTout = zpk(tf([1],[ttfss.R46 * ttfss.C51 1])); TF_EOMBPF1 = EOMBPF1(ttfss); TF_EOMBPF2 = EOMBPF2(ttfss); TF_EOMHPF = EOMHPF(ttfss); TF_EOMBPF3 = EOMBPF3(ttfss); TF_HVEOM = HVEOM(HV); sgain1 = I.R135/(I.R135+I.R136); TF_int = zpk(tf([-1],[I.R37*I.C40 0])); TF_SLOWI = zpk(tf([1],[I.R32*I.C41 1])); TF_SLOWp = 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])); TF_SLOWn = zpk(tf([Slow.R4*Slow.C4*Slow.R5 Slow.R5],... [(Slow.R3+Slow.R5)*Slow.C4*Slow.R4 Slow.R3+Slow.R5+Slow.R4])); %% save(filename,'TF_cnotch','cgain1','cgain2','fgain1','TF_PZTLPF10k','TF_PZTLPF34k','TF_PZTnotch','TF_PZTout','TF_EOMBPF1','TF_EOMBPF2',... 'TF_EOMHPF','TF_EOMBPF3','TF_HVEOM','sgain1','TF_int','TF_SLOWI','TF_SLOWp','TF_SLOWn'); end function Hzpk = PDnotch(ic,rf,ttfss) %% Z1 = tf(ic.max333,[1]); Z2 = tf([1],[rf.C13 0]); Z3 = tf([rf.L3 0], [rf.C12*rf.L3 0 1]); Z4 = tf([1],[rf.C14 0]); Z5 = tf(ttfss.R3,[1]); Z6 = tf(ttfss.R4,[1]); invZ4p = invtf(Z4) + invtf(Z5); Z4p = invtf(invZ4p); invZ2p = invtf(Z2) + invtf(Z3+Z4p); Z2p = invtf(invZ2p); Hzpk = zpk( Z4p * invtf(Z3+Z4p) * ... Z2p * invtf(Z1+Z2p)); %% end function Hzpk = PZTnotch(ttfss) invden = tf(1,ttfss.R37)+tf([(ttfss.C47+ttfss.C46) 0],... [ttfss.L2*(ttfss.C47+ttfss.C46) ttfss.R39*(ttfss.C47+ttfss.C46) 1])+tf(1,ttfss.R32); H = tf([-ttfss.R29/ttfss.R37/ttfss.R32],[1])*tf(invden.den,invden.num); Hzpk = zpk(H); end function Hzpk = EOMBPF1( ttfss ) Hzpk = -zpk(tf([ttfss.C23 0],[ttfss.R22 * ttfss.C23 1])... * tf([ttfss.R19],[ttfss.R19*ttfss.C15 1])); end function Hzpk = EOMBPF2( ttfss ) Hzpk = -zpk(tf([ttfss.C24 0],[ttfss.R24 * ttfss.C24 1])... * tf([ttfss.R18*ttfss.R20*ttfss.C16 ttfss.R20],... [ttfss.R18*ttfss.R20*ttfss.C18*ttfss.C16... ttfss.R20*ttfss.C18+ttfss.R18*ttfss.C16+ttfss.R20*ttfss.C16 1])); end function Hzpk = EOMHPF( ttfss ) Hzpk = -zpk(tf([ttfss.C25*ttfss.R21 0],[ttfss.R25 * ttfss.C25 1])); end function Hzpk = EOMBPF3(ttfss) Z1 = tf([ttfss.R14*ttfss.C11 1],[ttfss.C11 0]); Z2 = tf([ttfss.L1*(ttfss.C13) 0 1],[ttfss.C13 0]); Z3 = tf(ttfss.R15,[1]); Z4 = tf(ttfss.R21,[1]); invZ2p = invtf(Z2) + invtf(Z3); Z2p = invtf(invZ2p); Hzpk = zpk(-Z4 * invtf(Z3) * Z2p * invtf(Z1+Z2p)); end function Hzpk = HVEOM( HV ) H = -tf([HV.R47*(HV.C21+HV.C22) 0],[(HV.C21+HV.C22)*HV.R42 1]) * ... tf([HV.R45*HV.C25 1],[HV.R45*HV.C25 + HV.R47*HV.C25 1]); Hzpk = zpk(H); end