How to model a scanning mirror

This article demonstrates how to set up a folded system using the Fold Mirror tool, as well as how to use multiple configurations to model scan angles. It will discuss how to use Coordinate Break Surfaces to model both galvanometer and polygonal scanning mirrors, by offsetting the location of the scan point. The also demonstrates how to optimize through-scan performance by setting up Merit Functions that operate across multiple configurations.

Authored By Mark Nicholson, Updated by Nicholas Herringer


Article Attachments


In this article, we will demonstrate how to set up a scanning mirror such that a mirror scans ±5° about its nominal position.

In particular, this article explains:

  • How to set up the Coordinate Breaks needed to make a scanning mirror
  • How to use the Multiple Configuration Editor to sample multiple scan angles
  • How to set up a galvanometer-style scanning mirror, where the mirror tilts about its surface vertex
  • How to set up a polygon scanning mirror, where the mirror tilts about an offset point

The article is accompanied by sample files for the systems described herein. 

Setting up the scanning mirror

We will begin our discussion of scanning mirrors using the attached sample file "starting point.zmx." This file models a simple focusing lens, with a dummy surface (drawn in orange below) representing the scanning mirror will be located. The lens is a 5mm thick, N-BK7 lens, and it has an F-Number solve applied to its back Radius, which constrains it to be f/5. The front Radius and back focal distance have been optimized to yield the best RMS Spot performance.


In order to create a scanning mirror in this system, we will need to convert Surface 2 such that it reflects the incoming beam through 90° with respect to Surface 1. To do this, select Add Fold Mirror from the Lens Data Editor toolbar, select Fold Surface: 2 MIRROR LOCATION, Tilt Type: X Tilt, and Reflect Angle: -90 degrees. 

Add Fold Mirror


After doing this, we notice that OpticStudio has added two Coordinate Break Surfaces surrounding the dummy surface (now Surface 3), and it has converted the Material for Surface 3 to MIRROR. The first Coordinate Break (Surface 2) applies a Tilt About X of -45° prior to the mirror, and the second Coordinate Break (Surface 4) completes the -90° reflection by applying an additional Tilt About X of -45°. Remember that Coordinate Break Surfaces have no power and do not bend rays; they simply define a new coordinate system in terms of a decentration and tilt with respect to the previous surface. This is very useful, as it allows us to separate the coordinate geometry from the optical properties of the surfaces. Along these lines, also notice that OpticStudio has reversed the signs of the thicknesses of all surfaces after the mirror; this is because light now propagates in the opposite direction. 



In order to convert our fold mirror to a scanning mirror, we need to tilt it. In this case, we will tilt it by ±5° about the nominal -45° position. It is tempting to apply this additional tilt directly to the Tilt About X parameters of the existing Coordinate Break surfaces, but doing so will simply result in applying a -100° fold. It will shift the location of the lens and image plane, as well. If you made this change, set the Tilt About X on Surface 2 back to -45° before continuing.


To make the mirror a scan mirror, we must tilt it using the Tilt/Decenter Elements tool, found in the Lens Data Editor toolbar. Select Tilt/Decenter Element, and apply a -5° Tilt X to Surface 3 as shown below. 



Notice that this tool has inserted two more Coordinate Break surfaces so that the mirror is now tilted by -5° around its nominal -45° position. The scan angle can be set to any value by adjusting the value of the Tilt About X of Surface 3; the Pickup Solves automatically inserted by the two tools means that the total tilt seen between Surfaces 1 and 7 must always be -90°. This also ensures that the lens and image plane remain fixed in space while the mirror scans. 


Thus, we can see that the correct way to set up a scanning mirror is to use two sets of Coordinate Break surfaces. The first, outer set, is most easily added via Add Fold Mirror to implement the geometry of the nominal position. The second, inner set, is implemented using Tilt/Decenter Elements.

Using the Multi-Configuration Editor

So far, we have developed a geometry in which we have a nominal position and the ability to tilt the mirror about the nominal position. By simply entering data into the Tilt About X parameter for Surface 3 or using Optimize...Manual Adjustment...Slider, we can produce any scan angle we want. However, for optimization and tolerancing purposes, it is useful to sample this continuous movement by defining a number of configurations. This technique allows us to define a number of fixed-scan angle systems, as a way of modeling any scan angle.

Looking back to our goal in the previous section, we want to model scan angles of ±5° about the nominal -45° position. We will now model three configurations, one to model the nominal 0° scan angle, and one to model each of the ±5° scan angles. Navigate to Setup...MC Editor, and from within the Multi-Configuration Editor toolbar select Insert Configuration twice. Then open Operand Properties and set Operand 1 to PRAM. This operand controls the value of a given parameter on a surface in the system. For Operand 1, select Surface: 3 - Element Tilt and Parameter: 3


Then in Multi-Configuration Editor change the values for Operand 1 for Configurations 1-3 to -5, 0, and 5 degrees, respectively, so model a different scan angle for each configuration. By doing this, only Parameter 3 (Tilt About X) for Surface 3 will change from one configuration to the next; all other parameters in the Lens Data Editor will remain unchanged.


In order to see all three configurations superimposed in the 3D Layout, select Configuration: All in the 3D Layout settings. We can now see that the mirror is now scanning about its front vertex, similar to a galvanometer mirror.

Multi-Configuration Editor


To change the configuration, we can also press <Ctrl+A> on the keyboard. Note as we do so that the Clear Semi-Diameter of the mirror, lens, and image surfaces all change with each configuration. This is because the Clear Semi-Diameters are currently set to automatically resize based on the illuminated region of the surface. Although this setting is very helpful in the design of optical systems, it does not always give a physically realistic representation of the lens system. In this case, we don't expect the mirror or lens to resize as the mirror scans. To fix the Clear Semi-Diameters of the surfaces, in the Lens Data Editor toolbar navigate to Apertures...Convert Semi-Diameters to Maximum Apertures. This will apply a solution to each surface in the system such that it is set to the largest semi-diameter for that surface across all configurations.

Convert Semi-Diameters to Maximum Apertures

We've now created a scanning lens! However, this lens was originally optimized for on-axis performance only. Now that it is being used effectively with ±5° field points, it should be re-optimized. Open the Optimization Wizard from Optimize...Automatic Optimization...Optimization Wizard, and configure it as follows.

Optimization Wizard

Re-optimize the lens and OpticStudio quickly produces a new lens that minimizes the spot size in the scanning system. This file is saved in the attached zip archive as "galvanometer.zmx."


Scanning about an offset point

The previous example shows clearly that the mirror is tilting about its surface vertex, which is expected if we are modeling a galvanometer or similar type mirror. However, if the mirror is part of a polygon scanner, for example, then it should be tilted about a point some distance behind the surface vertex. In this section, we will demonstrate how to do this.

We need to place the pivot point of the mirror at the center of the polygon scanner. Let's say the distance from the surface vertex of the mirror to the center of the polygon is 50 mm. To define this pivot point, we just need to adjust the thickness of a few surfaces in the system. First, apply a Thickness of 50 to Surface 2 to shift the point at which the scan takes place by 50mm. Then, apply a Thickness of -50 to Surface 3, which will define the mirror surface to be 50mm before the pivot point. Then undo this process by applying a Thickness of 50 and -50 to Surfaces 4 and 5, respectively. You can also apply Pickup Solves to Surfaces 3-5, each picking up the Thickness of the previous surface with a Scale Factors of -1 so that all of the thicknesses update if you make a change to the Thickness of Surface 2. 


Finally, to be able to visualize the pivot point on the 3D Layout, navigate to Surface 4 Properties...Draw in the Lens Data Editor and select Mirror Substrate: Flat and Thickness: 50. These settings simply control how the mirror surface is drawn, and they do not impact ray tracing in any way. 


Upon doing this, we can clearly see the offset pivot point. This final file is saved as "Polygon.zmx" in the Article Attachments. 




Was this article helpful?
13 out of 14 found this helpful



Please sign in to leave a comment.