Presented at the COMSOL Conference 2010 Paris A Methodology for the Simulation of MEMS Spiral Inductances used as Magnetic Sensors Sylvain Druart, Denis Flandre and Laurent A. Francis Université catholique de Louvain UCL Institute of Information and Communication Technologies, Electronics and Applied Mathematics ICTEAM
Why Comsol? An example of circuit application with an inductor B ext Geometry? Induced voltage V ind Inductance value Integrated MEMS inductance with CMOS technologies Parameterized FEM simulations 2
Outline 3
Model description Equation model overview System geometry 4
Equation model overview Time Harmonic electromagnetism module ( 2 jωσ ω ε ε ) A + ( σ + jε ε ) V ) = 0 0 r 1 µ 0 µ r ( 2 jωσ ω ε ε ) A + A ( σ + jε ε ) V = 0 Output quantities 0 r 0 r 0 + 0 r A x A y A z A V Z = B x B y JdS S wire B z V Z 5
System geometry FEM geometry: spiral shape Air Parameters Wire width: Ww Wire thickness: Hw Inner square length: Lc Number of turns: Nsp Insulating box 6
Script architecture Program hierarchy Programming steps Index numbering problem 7
Program hierarchy Main application - Parameters values: Wsp = ; % [m] Nsp = ;% [m] - Fem solver calling: for Z = gen_sys(wsp, ); end - Results display: plot(wsp, Z); Comsol script function outputs = gen_sys(inputs) 1. Constants definition 2. Geometry building 3. Expressions definition 4. Equations solving 5. Post processing 8
Index numbering problem Manual boundary condition assignment example Condition 1: electric ground Condition 2: continuity Condition 3: electric insulation Manual filling of boundary index array bnd.ind = [3,3,3,3,2,2,2,2,3,3,2,2,1,2,2,2,2,2,2,2,2, ]; index=4 index=13 index=19 More than 200 boundary faces!! Need of manual assignment update when geometry changes High risk of programming errors 9
Index numbering problem Automatic boundary condition assignment example Condition 1: electric ground Condition 2: continuity Condition 3: electric insulation Boundaries mass center X M calculation Index 4 = getindex(x M4 ); Index 13 = getindex(x M13 ); Index 19 = getindex(x M19 ); X Bnd.ind(index 4 ) = 3; Bnd.ind(index 13 ) = 1; Bnd.ind(index 19 ) = 2; M, i = x dx i dx 1 1 dx dx 2 2 dx dx 3 3 No need of assignment update when geometry changes Low risk of programming errors Same way for subdomains conditions 10
Results and applications Input parameters Impedance calculation AC magnetic field detection Metallic particles detection 11
Input parameters Geometry Wire width: Wire thickness: Inner square length: Number of turns: Ww = 20 µm Hw 20 µm Lc = 100 500 µm Nsp = 1 6 Physics Wire conductivity (Cu): Air permittivity: Oxyde permittivity (SiO 2 ): Inward current: Input frequency: σ w = 59.6 MS/m ε air = ε 0 F/m ε ox = 3.9ε 0 F/m I inward = 10 µa f sys = 1 MHz 12
Impedance calculation W mag = Ω w emqav dv Z = V I ab inward L = I 2W mag 2 inward,eff ( ) L = Im Z ω R = Re ( Z ) Wire width: Wire thickness: Inner square length: Number of turns: Ww = 20 µm Hw 20 µm Lc = 100 500 µm Nsp = 1 6 13
AC magnetic field detection B V B = B amp sin(ωt) 54 simulations performed! 14
Metallic particles detection About 90 simulations!! 15
Conclusions Parameterized oriented simulations Large campaign of simulations Automatic generation of the finite element sctructure Inductances simulations Easy interpreting results Efficiency of the electromagnetic module in several applications 16
Thanks for your attention