Skip to content

HB 003 - MEMS Microspeaker

Electrostatically actuated silicon-based microspeakers are an emerging technology due to their obvious advantages, providing high sound quality over a wide range of frequencies 1 2.

Multiharmonic analysis is conducted for a MEMS microspeaker in this example using a harmonic balance method.

Demo project: mems-microspeakers-webinar. The demo was presented in a Quanscient webinar 3.

Example image

Simulation setup guide

Below, you’ll find a simplified guide for setting up a multiharmonic analysis simulation for a MEMS microspeaker in Quanscient Allsolve.

Step 0 - Define shared expressions

Start out in the Properties section by defining the following shared expressions:

NameDescriptionExpression
LLength [m]1000e-6
WWidth [m]75e-6
TThickness [m]3e-6
g0Initial gap [m]10e-6
freqFrequency [Hz]100
VoltageVoltage [V]30

Step 1 - Create the geometry

In the Model section, create the model geometry by creating Box elements as follows.

  1. Create the first box:

    NameElement typeCenter point (m)Size (m)Rotation (deg)
    boxBoxX: 0X: LX: 0
    Y: 0Y: TY: 0
    Z: 0Z: WZ: 0
  2. Create the second box by copying the first one, and editing Center point Y and Size Y parameters:

    NameElement typeCenter point (m)Size (m)Rotation (deg)
    box 2BoxX: 0X: LX: 0
    Y: T/2 + g0/2Y: g0Y: 0
    Z: 0Z: WZ: 0
  3. Create the third box by copying the second one, and editing Center point Y and Size Y parameters:

    NameElement typeCenter point (m)Size (m)Rotation (deg)
    box 2 2BoxX: 0X: LX: 0
    Y: -T/2 - g0*1.5Y: 3*g0Y: 0
    Z: 0Z: WZ: 0

Finished geometry:

Example image

Step 2 - Define the materials

Go to the Properties section.

Material 1 - Air

  1. Assign Air to the 2 outer box volumes (13, 25).
  2. Share the target region.
  3. Save the material settings.

Example image

Material 2 - Monocrystalline silicon

  1. Assign Monocrystalline silicon to the intermediate box volume (1).
  2. Share the target region.
  3. Save the material settings.

Example image

Step 3 - Define the physics

Go to the Physics section.

In this example, Solid mechanics, Electrostatics, Laminar flow and Mesh deformation physics are required. Add all of them before moving on to define interactions.

Physics 1 - Solid mechanics

  • As solid mechanics target, select the Monocrystalline silicon region.
  • Add Clamp.
    • As Target, select the outer edge surfaces of the silicon volume in the positive-X and negative-X ends.
    • Example image
  • Add the Solid mechanics - Mesh deformation coupling Large displacement.
  • Add the Solid mechanics - Electrostatics coupling Electric force.
  • Add Geometric nonlinearity.

Physics 2 - Electrostatics

  • Let electrostatics target default to the whole geometry.
  • Add Constraint.
    • As Target, select the Monocrystalline silicon region.
    • Set Constraint value to Voltage*sin(2*pi*0.5*freq*t).
    • Example image
  • Add Constraint 2.
    • As Target, select the air box surface 9.
    • Set Constraint value to 0.
    • Example image
  • Add the Electrostatics - Mesh deformation coupling Large displacement.

Physics 3 - Laminar flow

  • As laminar flow target, select the Air region.
  • Add Velocity constraint and name it as noslip.
    • As Target, select surfaces 7 - 10, 12, 13, 15, 16.
    • Set Constraint value to [1, 0; 1, 0; 1, 0].
    • Example image
  • Add Pressure constraint.
    • As Target, select the air box surfaces that were not included in noslip target (11, 14).
    • Set Constraint value to 0.
    • Example image
  • Add the Laminar flow - Solid mechanics coupling Fluid structure.
    • As Target, select the silicon and air interface surfaces (3, 4).
  • Add the Laminar flow - Mesh deformation coupling Large displacement.

Physics 4 - Mesh deformation

  • Let mesh deformation target default to the whole geometry.
  • Add Constraint.
    • As Target, select the Monocrystalline silicon region.
    • Set Constraint value to [1, compx(u); 1, compy(u); 1, compz(u)].
    • Example image
  • Add Constraint 2.
    • As Target, select surfaces 7 - 9, 12 - 14.
    • Set Constraint value to [1, 0; 1, 0; 1, 0].
    • Example image

Finished physics tree:

Example image

Step 4 - Mesh the geometry

Go to the Simulations section.

Create a new mesh using structured meshing:

  1. Set Mesh quality to Expert settings.
  2. Add 3 Volume structured mesh entities, each targeting a different volume in the geometry.
  3. For the structured entity targeting volume 1, set the segment counts A, B and C as 5, 3 and 10, respectively. Example image
  4. For the structured entity targeting volume 13, set the segment counts A, B and C as 5, 5 and 10, respectively. Example image
  5. For the structured entity targeting volume 25, set the segment counts A, B and C as 5, 5 and 10, respectively. Example image
  6. Save the settings & mesh.

Finished mesh:

Example image

Step 5 - Simulate

In the Simulations section, create a new simulation:

  • In Simulation settings:
    • Set Analysis type to Multiharmonic.
    • Set Fundamental frequency to freq.
    • Set Harmonics to 1 2 3 4 5 6 7 8 9.
    • Set Number of FFT samples to 20.
    • Set Node count to 10.
    • Use the default Node type (1 CPU, 16 GB).
  • In Mesh, select the mesh you created.
  • In Inputs:
    • Add freq sweep.
      • Set Override expression to linspace(20, 20000, 20).
    • Add Voltage sweep.
      • Set Override expression to linspace(5, 25, 20).
  • Add Outputs to your liking.

Adding a THD output via scripting (optional)

Once you have defined all the options, inputs and outputs for your simulation through the GUI, you can add a Total Harmonic Distortion (THD) custom output with scripting:

  1. Enable scripting mode. Example image

  2. Add this snippet of code at the end of your simulation.py file.

    ##########################################
    # THD_F CUSTOM VALUE OUTPUT
    probe = [0,0,0]
    ui = []
    THD = 0
    for i in range(9):
    ui.append(qs.allinterpolate(reg.solid_mechanics, qs.harm(i+1, qs.compy(fld.u), 20), probe))
    if(i>2):
    THD = THD + ui[i]*ui[i]
    THD = qs.evaluate(qs.sqrt(THD/(ui[0]*ui[0]+ui[1]*ui[1]+1e-50)))
    qs.setoutputvalue("THD_F", THD)
    ##########################################
  3. Save the script.

Your simulation is now ready to run.

Step 6 - Plot & visualize

In the Simulations section, add plots to see value output results, or visualizations to see field output results.

One visualization example is given below, generated with the following options:

  • Field output:
    • Displacement field u harmonic 1
    • Out of sweep subsimulations 0 - 19, Simulation 0 was used
  • Color preset:
    • Cool to warm
  • Warp:
    • Scale factor 500000

Example image

Results

Below are a few examples of simulation results post-processed with external software.

Plot 1: The custom value output THD_F plotted as a function of frequency and voltage

Example image

Animation 1: Displacement, microspeaker plate cut in half at the X-axis symmetry plane

Animation 2: Displacement of the complete microspeaker plate

References

Footnotes

  1. Kaiser, B. et al. Concept and proof for an all-silicon MEMS micro speaker utilizing air chambers. Microsyst Nanoeng 5, 43 (2019). https://doi.org/10.1038/s41378-019-0095-9.

  2. Melnikov, A., Schenk, H.A.G., Monsalve, J.M. et al. Coulomb-actuated microbeams revisited: experimental and numerical modal decomposition of the saddle-node bifurcation. Microsyst Nanoeng 7, 41 (2021). https://doi.org/10.1038/s41378-021-00265-y

  3. Dr. Andrew Tweedie, Dr. Abhishek Deshmukh, Jukka Knuutinen. Faster and more reliable MEMS design with cloud-based multiphysics simulations. Quanscient webinars (2024). https://quanscient.com/events/mems-webinar-06-24/register