# How to model DMD (MEMS) in OpticStudio

Digital Mirror Device (DMD) or Micro Electro Mechanical Systems (MEMS) consist of an array of small rectangular mirrors. Each mirror can have a different tilt. These devices can be used for many applications including spectroscopy (the mirrors can send light from different wavelengths at different positions) and DLP projection technology to project images from a monitor onto a large screen. OpticStudio can model them in sequential with a DLL or in non-sequential with the MEMS Object.

Authored By Michael Humphreys and Sandrine Auriol

Article Attachments

## What is a DMD/ MEMS

The image below shows such a device (https://ibsen.com/technology/spectrometer-tutorial/dmd-spectrometers/). The DMD is made of micromirrors that are individually tilted. The mirrors are commonly called pixels.

## How to model a DMD/MEMS in OpticStudio

These devices can be modelled either in Sequential or in Non-Sequential Mode.

 Mode Object Sample file Sequential User Defined Surface called us_mems.dll {Zemax}\Samples\Sequential\Miscellaneous\MEMS DLL Sample.ZMX Non-Sequential MEMS {Zemax}\Samples\Non-sequential\Miscellaneous\MEMS device.zmx"

## How to calculate the rotation for individual pixels / mirrors

This section explains how to set up the rotation of individual pixels. The pixels can be set by rows (in that case a row of mirrors will always be in the same state/tilt), by columns (in that case a column of mirrors will always be in the same state/tilt), or the pixels can be addressed individually.

In this section, we will explain how to set up the mirrors individually, i.e. when the P-Flag parameter is equal to 2.

The MEMS can be seen as a grid that begins in the bottom left corner and increases in pixel number as you move to the right and then up one row.

For this example, below is a 6x6 grid. Any grid size can be used up to 3750 elements (see the Help File for more information).

The MEMS Object considers groups of 15 pixels/mirrors at a time.

So, if the MEMS is a 6x6 grid, it means that it has 36 pixels in total, so 3 groups: 2 groups of 15 pixels and one with 6 pixels:

These groups will be set by different parameters:

 Mode State of rows/columns/mirrors 1-15 State of rows/columns/mirrors 16-30 State of rows/columns/mirrors 31-45 Group Green pixels Yellow pixels Orange pixels Sequential Parameter 14 labeled “Pixels 1-15” Parameter 15 labeled “Pixels 16-30” Parameter 16 labeled “Pixels 31-45” Non-Sequential Par 10 column labeled “Pixels 1-15” Par 11 column labeled “Pixels 16-30” Par 12 column labeled “Pixels 31-45”

Since each grouping has a single base three number to tell OpticStudio how to point individual pixels, the grouping of pixels can be normalized as shown below, with each value corresponding to the power you need to raise the base 3 to:

Each pixel can have one of three values (0, 1, 2) which correspond to Angle 0, Angle 1 and Angle 2.

Let’s assume that the angle values are defined as:

• Angle 0 = 12°
• Angle 1 = 0°
• Angle 2 = -8°

The grid below shows the state of each pixel:

Now, to calculate the value of the State of rows/columns/mirrors 1-15, you will need to use the following equation:

P = $$\sum$$(Angle State of the pixel * 3^(Pixel number – 1))

This process needs to be repeated for Pixels 16-30 and Pixels 31-45

## Excel Macro to calculate the mirror tilt

The Excel Macro workbook in the attachments help calculate these values.

To run the Excel macro:

• Click on the Table
• Then click on the MEMS button (ensure that the Excel security is setup to run macros).
A Userform will appear where you can enter the X Pixels & Y Pixels
• Then click Create Table.  If you have previous data in before, you should check the Clear Previous Table

This will then populate 2 tables, one at the top of the page that shows the row, column, pixel number and grouping of 15 pixels that you can use as your guide.  The second table, which starts around row 13 for our 6x6 example (this row will change based on the number of X Pixels you selected) is where you should enter the 0/1/2 pixel value states.

Once you have entered these values, click on the Calculate P Val button.  The macro will then calculate the required values to copy & paste into OpticStudio:

## MEMS in Sequential Mode

Let’s have a look at the sample file in Sequential Mode under {Zemax}\Samples\Sequential\Miscellaneous\MEMS DLL Sample.ZMX"

This sample file describes a 4x4 MEMS mirror.

So, the device can be seen as:

Now let’s see in which state (0,1,2) the pixels are. P flag = 0 so it means that the mirrors are addressed by rows.
The value for the parameter “Rows 1-15” = 5
The value for the parameter “Rows 1-15” = $$Row_1 \times 3^{0} + Row_2 \times 3^{1} + Row_3 \times 3^{2} + Row_4 \times 3^{3}$$
The value for the parameter “Rows 1-15” = $$Row_1 + 3 \times Row_2 + 9 \times Row_3 + 27 \times Row_4$$
As the value for the parameter “Rows 1-15” = 5, it means that $$Row_3$$ = 0 and $$Row_4$$ = 0
Then we can deduct that $$Row_2$$ = 1 and $$Row_1$$ = 2

The pixels states are defined as below:

 0 0 0 0 0 0 0 0 1 1 1 1 2 2 2 2

It means that we have the following angles. The rotation angle is 45 degrees. The initial tip plane is along +X. Then the angles are rotated about the Z axis to the tip the mirror.

 0 0 0 0 0 0 0 0 -10 -10 -10 -10 10 10 10 10

So the layout shows that different part of the mirror have different angles:

## MEMS in Non-Sequential Mode

Let’s have a look at the sample file in Non-Sequential Mode under {Zemax}\Samples\Non-sequential\Miscellaneous\MEMS device.zmx"

This sample file describes a 1x15 MEMS mirror.

So, the device can be seen as:

Now let’s see in which state (0,1,2) the pixels are. P flag = 2 so it means that the mirrors are addressed individually.
The value for the parameter “Pixels 1-15” = 13245761.
We can deduct that the pixels states are defined as below:

 2 0 2 2 0 2 1 2 2 0 2 2 0 2 2

It means that we have the following angles.

 10 -10 10 10 -10 10 0 10 10 -10 10 10 -10 10 10

## Conclusion

The MEMS can be easily modelled in OpticStudio.