Skip to content

Simulate pull-in of an electrostatic MEMS actuator

In this tutorial you set up a coupled electrostatics, solid mechanics, and mesh-deformation model of a simple MEMS capacitor and find the pull-in voltage—the bias at which the structure becomes electromechanically unstable. Pull-in matters because electrostatic actuation in small gaps can no longer be balanced by elastic restoring force at that point.

Prerequisites: you should be comfortable with the project layout in Introduction to Quanscient Allsolve (Geometry, Physics, Simulations, and the Common sidebar).

The model consists of two parallel square plates with equal thickness, separated by a vacuum gap. A DC voltage is applied to the bottom plate while the top plate is grounded. The bottom plate is clamped and the top plate is attached to a spring with stiffness KK. The displacement of the top plate is constrained to move only in the ZZ-direction. The interaction between the top plate and attached spring is determined using a lumped model:

Fz=KUz F_z = -K \cdot U_z

INTRO_pull-in-2D-model

The model parameters, that should be defined as variables in Allsolve, are defined as follows:

  • Length of the square plate, L=50L = 50 μm
  • Height of the square plate, H=3H = 3 μm
  • Gap between the two parallel square plates, d=1d = 1 μm
  • Stiffness of the spring, K=10000K = 10000 N/m
  • Overlapping area between the two parallel plates, A=L×L A = L \times L ~
ElementSizeCenter point (X, Y, Z)
Bottom plateL ×\times L ×\times H(0, 0, 0)
Top plateL ×\times L ×\times H(0, 0, H + d)
Vacuum boxL ×\times L ×\times d(0, 0, H/2 + d/2)
  • Plot of applied voltage vs resulting displacement.
  1. Vacuum for the gap between the parallel plates
    • Electric permittivity: ϵ\epsilon = ϵ0 \epsilon_0 ~ [F/m]
  2. Silicon dioxide for the top and bottom plate
    • Young’s modulus: EE = 70 70 ~ [GPa]
    • Poisson’s ratio: ν\nu = 0.170.17
    • Electric permittivity: ϵ\epsilon = 3.9ϵ0 3.9 \cdot \epsilon_0 ~ [F/m]
  • Bottom plate

    • Electrode: VV = VDCV_{\rm DC}
    • Clamped: [ux,uy,uz][u_x, u_y, u_z] = [0,0,0][0, 0, 0]
  • Top plate

    • Grounded: VV = 00
    • in-plane clamp: [ux,uy][u_x, u_y] = [0,0][0, 0]

For the model setup defined above, the analytical solution to the pull-in voltage VpV_{\rm p} is given by the formula: 1

Vp=827Kd3ϵAV_{\rm p} = \sqrt{\frac{8}{27}\frac{Kd^3}{\epsilon A}}

where,

  • KK is the spring stiffness [N/m].
  • dd is the initial gap between the parallel plates [m].
  • ϵ\epsilon is the electric permittivity of the gap medium [F/m].
  • AA is the overlapping area between the parallel plates [m²].

The corresponding displacement upu_{\rm p} of the top plate at pull-in voltage is one-third of the initial gap between the plates.

x=13dx = \frac{1}{3} d

The pull-in voltage and the corresponding displacement based on the values defined in Parameters:

Vp=365.9 voltsup=0.3333 μmV_{\rm p} = 365.9 ~ volts \\ u_{\rm p} = 0.3333 ~ μm

The steps below use regions to select volumes and surfaces. After Fragment all (finalize), entity tags can differ from project to project, so the tutorial does not rely on fixed tag numbers. Name regions clearly and use them everywhere you need a target (materials, physics, mesh rules, and outputs).

  1. Start with a new project, and name it as Pull-in analysis.

  2. In the project geometry options, start from a box (or add a Box from Geometry elements).

  3. Open the Common sidebar, Definitions tab, and add the following variables.

    NameDescriptionExpression
    LPlate size [m]50e-6
    HPlate thickness [m]3e-6
    dGap between plates [m]1e-6
    VdcDC Voltage [V]1
    KSpring stiffness [N/m]1e4
    AOverlap area between plates [m²]L*L

    You can import the variables as a csv file:

    name,description,expression
    L,Plate size [m],50e-6
    H,Plate thickness [m],3e-6
    d,Gap between plates [m],1e-6
    Vdc,DC Voltage [V],1
    K,Spring stiffness [N/m],1e4
    A,Overlap area between plates [m²],L*L
  4. Return to Geometry and set the first Box so its Size (X, Y, Z) is L, L, H and the center is (0, 0, 0), matching the bottom plate row in Geometric elements.

    First box dimensions and example model view after geometry is built.
    First box: set size, center, and then build.

  5. Add a Translation to make a second box: set Target to the bottom-plate volume (the first box; pick the volume in the model view or from Entities in the Common sidebar). Set Copy to Yes and Translation in Z to H + d. Repeat count 1 adds the top plate as a second volume.

    Example geometry after translating a copy to form the top plate.
    Translate the first volume along Z by H + d, with copy enabled, to form the top plate.

  6. Add a third Box that fills the gap between the plates. Use Size (X, Y, Z) = (L, L, d) and center (0, 0, H/2 + d/2). Then Confirm model changes so the vacuum cell between the plates exists as a volume in the final built model.

    All three boxes in place: bottom plate, top plate, and central vacuum gap.
    Final geometry: two plates and a box for the gap region.

In the Common sidebar, open the Definitions tab. Under Regions, add regions (see Regions) so you can pick stable names for materials and physics. Use the model view or Entities to choose which tags belong in each region. Suggested names:

Region (suggested name)What to include
platesBoth plate volumes (silicon dioxide)
vacuum_gapThe gap volume (vacuum)
bottom_plateThe bottom plate volume only
top_plateThe top plate volume only
top_plate_topThe top exterior surface of the top plate (a surface region, for Lump U/F)

Open the Physics section and add Materials:

  1. Add a Vacuum material. Set its target to the region you defined for the gap (for example vacuum_gap).

  2. Add a Silicon dioxide material. Set its target to the region that contains both plate volumes (for example plates).

Materials with vacuum and silicon dioxide assigned to named volume regions.
Vacuum is assigned to the gap region and silicon dioxide to the plates region.

Step 4 — Define physics and interactions

Section titled “Step 4 — Define physics and interactions”

In the Physics section:

  1. Add Solid mechanics, Electrostatics, and Mesh deformation.

    Physics list with solid mechanics, electrostatics, and mesh deformation added.
    Add the three physics before wiring interactions.

  1. Set the Solid mechanics target to the same silicon dioxide volume region you used for the material (for example plates).

    PhysicsTarget
    Solid mechanicsRegion for both plates (e.g. plates)
  2. Add Clamp on the bottom plate.

    Interaction nameInteraction typeTarget
    ClampClampbottom_plate
  3. Add Constraint for in-plane fixation of the top plate:

    Interaction nameInteraction typeTargetValue
    In-plane clampConstrainttop_plate[1, 0; 1, 0; 0, 0]

    The in-plane clamp constrains translation in X and Y directions on the top plate. Z remains free for pull-in motion.

    In-plane constraint on the top plate.
    Constraint pattern for the top plate.

  4. Add Lump U/F to attach the lumped spring on the top face:

    Interaction nameInteraction typeTargetActuation modeValue
    Lump U/FLump U/Ftop_plate_topCircuit coupling[0, 0; 0, 0; 1, lump.Fz + K*lump.Uz]

    Lump U/F on the top surface of the top plate.
    Lumped spring via circuit coupling on the top face.

  5. Add Electric force (Solid mechanics ↔ Electrostatics).

  6. Add Large displacement (Solid mechanics ↔ Mesh deformation).

  1. Let the electrostatics target be the whole model (all volumes: plates and gap), unless you have a reason to restrict it.

  2. Add a Constraint for the ground (top plate at 0 V):

    Interaction nameInteraction typeTargetValue
    groundConstrainttop_plate0
  3. Add a Constraint for the electrode (bottom plate at Vdc):

    Interaction nameInteraction typeTargetValue
    electrodeConstraintbottom_plateVdc
  4. Add Large displacement (Electrostatics ↔ Mesh deformation).

  1. Let the mesh deformation target be the whole model (all volumes).

  2. Add a second Constraint for the vacuum region so the mesh does not shear in-plane in the gap (same pattern as the old in-plane lock on the gap volume):

    Interaction nameInteraction typeTargetValue
    In-plane constraintConstraintvacuum_gap[1, 0; 1, 0; 0, 0]

    In-plane mesh constraint in the gap.
    Gap region: in-plane mesh constraint.

All required physics and interactions are in place.

Physics tree with couplings.
Completed physics and interaction list.

  1. Go to the Simulations section.

  2. Add a new mesh.

  3. Set Autorefine to Disabled.

  4. Open the Mesh element size options.

  5. Set Scale factor to 0.75.

  6. Under Customizations, add Mesh extrusion —> Simple extrusion:

    CustomizationOverlap modeTargetSublayers
    Simple extrusionPreventAll three box volumes10, 8, 10
  7. Run meshing and check the preview.

Mesh preview.
Preview the mesh before simulating.

Step 6 — Apply settings and run the simulation

Section titled “Step 6 — Apply settings and run the simulation”
  1. Add a new simulation.

  2. Set Analysis type to Static.

  3. Select the mesh you created.

  4. In the Common sidebar —> Definitions, add a Sweep Variable override. Override the Vdc variable with expression linspace(5, 365, 73). Add the sweep in your simulation inputs.

  5. Add a Custom Value output called max displacement in um. Set the Output expression to maxvalue(reg.plates, -compz(u), 5) * 1e6. Here reg.plates is a region handle that matches the Solid mechanics target.

  6. Run the simulation.

Simulation card with sweep and outputs.
Run the static sweep over `Vdc`.

  1. Add a plot with Vdc on the X axis and max displacement in um on the Y axis.

Voltage versus maximum displacement.
Pull-in: displacement grows with voltage until the system becomes unstable in this idealized model.

You defined variables and regions, applied materials to the gap and plates, coupled electrostatics, solid mechanics (with a lumped spring on the top face), and mesh deformation, meshed the model, ran a static sweep over Vdc, and plotted displacement. Compare the pull-in point on the graph to the analytical values for the same KK, dd, ϵ\epsilon, and AA.

  1. Kaajakari, V. MEMS Tutorial: Pull-in voltage in electrostatic microactuators, 1–2. https://www.kaajakari.net/~ville/research/tutorials/pull_in_tutorial.pdf