Mirrorcle Software Suite User guides for

Mirrorcle Software Suite
User guides for:
MirrorcleDraw – Windows executable software
MirrorcleLinearRaster – Windows executable software
MTIDevice–Test – Windows executable software
MTIDevice–C++ Software Development Kit
MTIDevice–LabView Software Development Kit
MTIDevice–Matlab Software Development Kit
Version and Date:
Ver. 9.4, March 3rd, 2014
Authors:
Abhishek Kasturi
Kenneth Castelino, Ph.D.
Veljko Milanovic, Ph.D.
Andrew Miner, Ph.D.
Mirrorcle Technologies, Inc., Richmond, CA
support@mirrorcletech.com
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
1
System Requirements & Installation: NI DAQ based USB MEMS Controller
(USB-NI)
Software Requirements (depending on the version of the hardware:)
1) Windows XP and Windows 7 are the preferred operating systems.
2) NI-DAQmx drivers 9.x or later must be installed – the DAQmx drivers are provided
along with the DAQ card or can be downloaded from the NI website.
Hardware / Software Setup
1. NI-DAQmx Drivers
Install the DAQmx drivers that come along with the card. Restart the computer if the driver
installation requires it. Once the driver installation is finished, verify that the card is present
by opening the Measurement & Automation Explorer (MAX) from the National Instruments
program group in the Windows Start menu. Sometimes the item in the program group
appears only as “Measurement & Automation.” Open the device list under My
System/Devices and Interfaces/NI-DAQmx Devices, and check that your DAQ card is listed
under „DAQmx devices‟.
2. Mirrorcle Software Suite-NI
Install the Mirrorcle Software Suite (msi) file from the MirrorcleDraw CD on your Windows
PC. This will automatically extract all of the files into default directories already predetermined in the setup file. The install will create a sub folder within MirrorcleTech based
on specific hardware and software versions. In general we recommend that you allow the
executable extractor to place the files in the pre-determined (default) directories. This will
automatically create the files in:
C:\\MirrorcleTech\
Program Operation:
An executable file is provided for output via the USB MEMS Controller: MirrorcleDraw-NI.exe
In addition to the windows executable MirrorcleDraw, two other executable files are included
with the CD: MTIDevice-Test-NI.exe and MirrorcleLinearRaster-NI.exe.
MTIDevice-Test-NI.exe runs a very simple example of C code that was created using the
included MTIDevice-C++ Software Development Kit (described in this document.) The source
files for this example are all included in the MTIDevice-Cpp directory and should allow a
programming-skilled user to quickly develop new applications that use the MirrorcleTech
devices.
MirrorcleLinearRaster-NI.exe is a simple user interface (UI) for preparing and running raster
scans with uniformly spaced lines and with uniform scanning velocity. The user chooses number
of lines, pixels per line, line duration, point-to-point or uniform-velocity motion, and other
parameters and runs single or continuous raster scans with the MEMS mirror. Lines can have
any, user-controlled angle. The application controls MEMS mirror x-axis and y-axis, and also
provides synchronized digital output to a laser driver or other user peripherals.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
2
System Requirements & Installation: MTI USB MEMS Controller (USB-SL)
Software Requirements (depending on the version of the hardware:)
Windows XP and Windows 7 are the preferred operating systems.
Hardware / Software Setup
Mirrorcle Software Suite-SL
Install the Mirrorcle Software Suite (msi) file from the MirrorcleDraw CD on your Windows PC.
This will automatically extract all of the files into default directories already pre-determined in
the setup file. The install will create a sub folder within MirrorcleTech based on specific
hardware and software versions. In general we recommend that you allow the executable
extractor to place the files in the pre-determined (default) directories. This will automatically
create the files in:
C:\MirrorcleTech\
Program Operation:
An executable file is provided for output via the USB MEMS Controller: MirrorcleDraw-SL.exe
In addition to the windows executable MirrorcleDraw, two other executable files are included
with the CD: MTIDevice-Test-SL.exe and MirrorcleLinearRaster-SL.exe.
MTIDevice-Test-SL.exe runs a very simple example of C code that was created using the
included MTIDevice-C++ Software Development Kit (described in this document.) The source
files for this example are all included in the MTIDevice-Cpp directory and should allow a
programming-skilled user to quickly develop new applications that use the MirrorcleTech
devices.
MirrorcleLinearRaster-SL.exe is a simple user interface (UI) for preparing and running raster
scans with uniformly spaced lines and with uniform scanning velocity. The user chooses number
of lines, pixels per line, line duration, point-to-point or uniform-velocity motion, and other
parameters and runs single or continuous raster scans with the MEMS mirror. Lines can have
any, user-controlled angle. The application controls MEMS mirror x-axis and y-axis, and also
provides synchronized digital output to a laser driver or other user peripherals.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
3
Mirrorcle Software Suite
Introduction
The Mirrorcle Software Suite enables the user to perform Mirrorcle Technologies MEMS device
verification, implement application demonstrations and it features software development
capabilities. There are multiple Windows-based executables which give you access and control
of all of the mirrors' various modes of operation - point-to-point beam steering, line-by-line
uniform velocity rastering, vector graphics at various refresh rates, bitmap image laser displaying
or laser marking, one-axis-resonating, and Lissajous patterns. The main executable
"MirrorcleDraw" provides a graphical user interface with all of the above-mentioned modes and
options. The program further allows users to study a device's step response, resonant frequency
of each axis, response with the use of various types of filters, device look up tables, etc. There
are several examples of laser display capabilities based on vector graphics drawings, laser
display of text with various fonts, and animations. Features also include the capability to load
waveforms (import data from a text file) to direct the MEMS mirror to user-controlled positions,
as well as the capability to load standard, ILDA-specification vector files. Another executable,
"MirrorcleLinearRaster" is focused on user-controlled raster scan patterns with uniform scan
velocity and linear line spacing or point-to-point type of rasters etc. It is designed to be a helpful
tool in the development of biomedical imaging, 3D scanning, and similar applications. There are
also source codes and examples in the SDKs in C++, Matlab, and LabView. The Development
Kit includes 6 hours of software support, which is most often used to develop customer-specific
examples of scans, etc.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
4
Settings Files:
Windows-executable version of the software for USB MEMS Controller interface includes an
ASCII text settings file which is located in the same “exe” directory as the executables. File
name is:
Mtidevice.ini
These files contain important settings that are required by the programs to run properly. The
settings are purposely placed into these ini files so that they can be responsibly modified by an
advanced user of the kit. The values that are entered into the settings will directly affect the
voltages that are applied to the device and can therefore easily damage a device if improperly
entered. Please make sure that you enter proper values and verify the system operation
(oscilloscope, volt-meter) before operating devices. There are six settings available in the
mtidevice.ini file, but only the first two settings can be modified by the user:
VmaxDevice
HwFilterBw
(float) This is the value of voltage which will be maximum allowed voltage during
software operation. It is recommended to keep this value at the maximum voltage for a
specific device to minimize risk of exceeding that voltage during operation. Default is
125. Maximum possible value is 140V, limited by hardware design.
Warning: The maximum voltage value should be less than or equal to the maximum
allowed voltage published with the specific device‟s datasheet. Values higher than
maximum allowed for a specific device can cause erroneous behavior or device damage.
(int) This value is the bandwidth for the hardware filters on board USB MEMS Controller
Card. The value should be set according to the recommended filter setting on the
datasheet of each individual MEMS device. This ensures device safety when using the
MTISerialDevice-Test.exe where the user cannot set the filter settings. MirrorcleDraw
starts up with the default BW setting inside the settings text file, and can be changed as
needed by the user.
Warning: The filter cut-off frequency should not significantly exceed the recommended
filter published with the specific device‟s datasheet. Values significantly higher than the
recommended filter value can cause ringing, larger angle overshoot, and device damage.
WARNING: Any other settings should only be modified after consulting MirrorcleTech support.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
5
MirrorcleDraw (Windows executable)
Introduction
MirrorcleDraw is a comprehensive software for the use in controlling two axes (tip and tilt) of a
MEMS mirror in a laser-beam steering system so as to deflect the laser beam in a desired angle
or direction. Because Mirrorcle Technologies MEMS mirrors offer the ability to deflect optical
beams in point to point (quasi-static) mode, vector mode, resonant, and various mixed modes,
therefore the MirrorcleDraw software offers a wide variety of ways to generate and condition
command voltages for those devices. The role of the extensive graphical user interface is to
allow the user to control a lot of parameters in generating desired commands and therefore
desired beam deflection, as well as in generating synchronous laser driving output or digital
commands to external systems.
For laser beams that are terminated on a flat screen or a wall, this system will create “drawings”
which can be static or animated. The general operation of the program is to take inputs from a
user in terms of the desired pattern that the laser beam is supposed to follow, the refresh rate
which determines the speed at which the laser will trace (and repeat) that pattern and other
optional inputs. The program then computes the necessary sequences of voltage commands
(waveforms) for each axis to achieve that result and sends them to the user‟s desired output port
of the computer. In addition it sends a third waveform of digital numbers (byte per sample)
which is for commanding a laser or camera or other devices user may want to synchronize to the
movement of the MEMS mirror. The targeted device will then output two analog voltage
waveforms as well as a digital stream synchronized to the voltage waveforms, representing the
user‟s desired sequence of positions and corresponding laser brightness or on/off commands.
Read the Installation and Setup section of this manual to determine if all requirements of the
program and overall system are met properly. For a more technical discussion on the operating
principles and applications of MEMS mirrors, please visit the Mirrorcle Technologies website.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
6
Global Controls:
1) Max Voltage: The slider bar limits the maximum voltage sent to the device. This is a
parameter that scales all created analog waveforms. Warning: The maximum voltage value
should be less than or equal to the maximum allowed voltage published with the specific
device‟s datasheet. Values higher than maximum allowed for a specific device can cause
erroneous behavior or device damage.
2) Sample Rate: For the USB MEMS Controllers, the maximum rate is 50000 samples per
second (“sps”). The program automatically sets default sampling rates in various modes, but the
user can alter that rate in the range of 1000 to 50000 sps. Higher sampling rates are useful with
data that has a lot of high frequency content (e.g. Vector Graphics mode with imported ILDA
files function, or Vector Graphics mode with Scan Patterns function of Image type), but require
more computation time and USB communication time. Therefore in simple waveforms (e.g.
Signal Generator mode) it is useful to use smaller sps settings.
3) Refresh Rate: This slider sets the effective refresh rate of the drawing. This is the number of
times that the complete drawing or waveform in that mode will be repeated each 1s of time. For
a given sampling rate (sps), as the refresh rate is increased, the number of points per frame drops
resulting in greater loss of spatial information in the drawing depending on its complexity. Very
high refresh rates therefore require higher sps settings and higher filter bandwidth which is of
course appropriate only for faster MEMS mirror devices.
4) Retrace Path: The user can choose to either retrace a path or go directly from the last point to
the first. Retracing results cannot handle complex forms but is smoother.
5) Filter Settings: USB MEMS Controller hardware includes on-board filters for each analog
output channel. The filter cut-off frequency is controlled by the cutoff frequency, entered in the
“Cutoff” setting. Minimum allowable value is 100Hz and maximum value is 10,000Hz.
Warning: The filter cut-off frequency should not significantly exceed the recommended filter
published with the specific device‟s datasheet.
Values significantly higher than the
recommended filter value can cause ringing, larger angle overshoot, and device damage.
The waveforms generated in the software are generally not filtered before being downloaded to
the USB MEMS Controller hardware when the filter type setting is “Hardware”. However, a
software-filtered copy of the waveforms is generated in the software only for the purposes of
displaying to the user the likely filtered analog output. NOTE: The displayed waveform in
MirrorcleDraw is an approximation of a digital filter done by the software, whereas the actual
USB MEMS Controller output is from the onboard analog Bessel filters. The filtered waveform
is displayed as a red curve and is changed to reflect any changes in inputs or filter settings.
Another option for the user is to use the various software filters available in the MirrorcleDraw
executable. The user must first set the “Hardware” filters to the maximum, 10000Hz, so that
hardware Bessel filters will not affect the software filtered waveforms. After setting the
“Hardware” filters, the user can click on the dropdown menu under Filter Type and select one of
the following software filters: Bessel, Butterworth, Chebyshev, Elliptic and Legendre. Once the
filter type is selected, the user can set the cut-off frequency and the poles for the low-pass filter.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
7
6) Enable Amp: This switch toggles the HV Amp on/off using a digital line – toggling it ON turn
on the amplifier‟s high voltage supply, which biases the MEMS device and enables driving at
full angles. The toggle should be off whenever any hardware changes or tests are being
performed, and especially prior to removing a MEMS device from the circuit or socket or
placing another MEMS device into the socket.
7) X–Offset / Y–Offset: These numbers are to offset the scan from the center. When a user
imports a sample or keypoints file, the offset numbers can be used to position the imported
waveform at any desired location within the field of view of the device‟s maximum angle.
8) Export: The export button exports the waveform displayed in the MirrorcleDraw GUI to a
notepad file with a list of X, Y samples and laser modulation into a samples file (.smp) and a
keypoints file (.kmp). The exported samples file or keypoints file can be imported using the
example shown in MTIDevice-Test.exe or can be plotted in Matlab, etc. The files are exported
into the “exe” installation sub-folder and the name includes a random generated number to
prevent overwriting of exported files. Note that in some cases the installed folders may be write
protected by default after installation, and may prevent the use of “export” features of the
software. If necessary, the user may alter the installation path to outside of Program Files
folders.
MirrorcleDraw GUI
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
8
Program Modes
The program has a number of different modes which can be selected using the drop-down list at
the top left corner of the GUI.
Sketching Mode:
There are two separate sketching programs in this mode:
1) Freehand: You can draw a shape by clicking the left mouse button and dragging to trace out
the curve. Releasing the mouse button terminates the curve segment. The user can draw
multiple disconnected curve segments in this fashion and the blanking information is
automatically computed. Right clicking closes the sketch by connecting the first and last
points. To clear the sketch, press the reset button. The pattern is displayed on the screen by
the mirror and the stream can be stopped or restarted using the start/stop button.
2) Polyline: This mode can be used to draw polygons that are open or closed. Clicking with the
left mouse button adds points to the existing polygon. Keeping the left mouse button pressed
and moving the mouse can be used to dynamically place the new point. Releasing the left
button confirms the addition of the point. In order to close a polygon, click the right mouse
button, which joins the first and last points. It is also possible to modify the existing polygon.
Click the left mouse button on the point you want to move and drag the mouse to move the
point to its new location. Right clicking in the vicinity of the point will delete the point.
Deleting the first/last points of a closed polygon results in opening of the polygon.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
9
3) Projection Xfm: This mode is currently under development and is not enabled.
4) Coordinates : This mode displays the coordinates (X,Y) of the location the MEMS device is
pointing at (e.g. 50, 50 for center). The coordinate system starts with the lower left corner
being 0,0, and increases to the upper right corner of 100, 100. Clicking with the left mouse
button in the drawing area updates the coordinates to the new location. Keeping the left
mouse button pressed and moving the mouse can be used to dynamically update the
coordinates.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
10
Vector Graphics Mode:
This mode demonstrates different types of mathematical curves, animations and some sample
vector text. Clicking the mouse anywhere in the drawing area moves the center of the generated
object to that location. This applies to all sub-modes and is useful for translating objects.
1) Waveforms: This function is used to draw simple waveforms such as sine, triangle and
square. The user can choose the number of cycles displayed and the amplitude of the
waveform. For the sawtooth and square waveforms, the duty cycle can also be adjusted. A
useful exercise in this mode is to check the step response of the device and the effect of
various filter parameters. In order to do this, select the square waveform with a single cycle
and choose between the Butterworth, Bessel, and Inverse Square filters and check out the
response of the device. Finally, there is also a spiral option, which traces out a right-angled
spiral with variable number of loops and is useful for checking the fidelity of the filters in
tracing sharp corners. These figures can be rotated by choosing the rotate option in the
animation menu at the bottom. The animation time slider can be used to fix the total time for
one cycle of the animation. Normally an animation time of 1-2 sec gives visually pleasing
results. Increasing the animation time slows the rotations but takes longer to compute. Once
the animation frames are computed, the program loops the animation infinitely.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
11
2) Spirographs: These patterns are formed by tracing the paths of points on a circle as it
revolves around another circle. Depending on the relative radii of the circles and the position
of the point, different curves are obtained. The program allows the user to choose between
epitrochoids, hypotrochoids, epicycloids, and hypocycloids. The user can specify the
parameters A, B, C that determine the shape of the curves and the size of the drawing. In this
mode it is possible to have two main types of animations: in the first case, the entire curve is
rotated at the rate specified by the animation time slider. The second animation option allows
the user to cycle through different values of A, B, or C giving rise to a sequence of curves.
The program calculates sweeps the chosen parameter (A/B/C) from the current setting
through 6 values. Another curve is the rose family, which generates a set of roses with npetals. The curve family can be generated by varying two parameters A & B. For B=1, a rose
with n=A petals is obtained for odd A and 2A petals for even A. Changing B gives rise to
more intricate and complicated patterns. The user can also obtain rotating animations by
choosing the rotate animation option. Some sample screenshots and suggested parameter
values are shown below.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
12
3) Lissajous: Lissajous patterns are generated by using a set of basis waveforms (sinusoidal /
sawtooth) on the X and Y axes and are commonly seen on oscilloscopes. Changing the
relative frequencies on either axis gives rise to a whole array of patterns. In addition to the
frequency, it is also possible to change the phase and amplitude of the signal on either axis. A
more complicated set of patterns is obtained by allowing modulation of the waveform on
either or both axes. The user can select amplitude or frequency modulation for each axis and
also the type of waveform used for modulation. The modulation index, which is a measure of
the strength of frequency modulation, can be chosen by the user. As the modulation index is
increased, the curve starts to get more complicated and deviates from its non modulated
version. The user can choose to animate rotation of the entire curve as in previous modes or
animate the X-Y phase lag. The phase lag animation sweeps the phase through 360 o,
resulting in an appearance of rotation of the curve about its long axis. Similarly, the
modulation phase, which is the phase angle between the base and modulation signals can be
swept to generate another type of animation. Finally, the modulation ratio can also be swept
in order to see the effect of increasing modulation strengths on the base signal.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
13
4) Import File (ILDA Keypoint or ILDA Sample): The International Laser Display
Association (ILDA) has a standard file format for laser graphics that is used in many laser
show design software. The ILD file format is a binary format and can contain multiple
frames that are part of an animation sequence. A number of sample ILDA files are included
with the program. To load a new ILDA file, press the import file button and choose the file
from the file dialog box. Under File Type, the user can select ILDA Keypoint or ILDA
Sample depending on the type of ILDA file being imported. ILDA Sample is recommended
if the ILDA file being imported needs to be matched to a specific sample rate. The program
parses the file to extract all the frame information and displays the total number of frames.
The user can display a single static frame by using the frame number slider control.
Alternatively, it is possible to run all the frames as part of an animation by setting the
animation type to Slideshow. As in previous modes, it is possible to create a rotation
animation of a single frame by choosing the Rotate mode as the animation type. The
animation time determines the time to display all the frames. If the time is too short, each
frame will have few points resulting in loss of detail or smoothing applied by the filters. The
other factor in displaying animations is the refresh rate. Too high refresh rates again decrease
the number of points available per frame leading to loss of details. Hence it is important to
keep a sufficiently large animation time and low enough refresh rate for best results. Finally,
each frame can be rotated in 3D by choosing the camera theta (angle with +X axis) and phi
(angle from XY plane). This can lead to cool effects in viewing frames containing 3D
objects. A good starting file is cangoose.ild. Load the file and select Slideshow animation
and set animation time to 2 sec. To make the bird fly faster, decrease animation time to 1s,
0.25 sec in steps.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
14
Import File (User Sample): Another option is to import XYM sample data-points in a text file
with extension .smp. This option is selected as User Sample under the File Type menu. Each
line in the file represents a sample to be sent in sequence to the DACs, and will be output at the
DACs at the “Sample Rate (sps)” set in the GUI. Therefore the refresh rate setting will not affect
the output in this mode as the list of samples is read directly to the DACs in an infinite loop with
no post-processing, interpolation, or filtering. The hardware filters are still applied after the DAC
outputs, before the high voltage amplifier. A sample file, raster_vertical.smp is included in the
exe directory of the software installation. Valid sample files must have three space-delimited
columns and each valid line must terminate with an EOL (“\n”) character. The .smp file can also
have the sample rate as the first line of the file (e.g. 50000), and this number is read during the
User Sample Import File function. This is optional, and if there is no sample rate number on the
first line, then the function uses the default value in the SPS box in the GUI.
The first column represents sample values for the X-axis, the 2nd column for the Y-axis. All
coordinates should be normalized to -1 to +1 and are imported as floating point numbers. Inside
the program the normalized data for X and Y is scaled with the Max Voltage setting in the GUI.
The third, or the “M” column is unsigned 8-bit digital data from 0 to 255 which appears on the
systems digital output port synchronously with MEMS voltages in the first two columns. These
are often used for triggering various accessories or instruments in sync with MEMS mirror
movement, e.g. lasers, timers, cameras, etc. As an example, in this mode of use where the
numbers are used as triggers, if a user wishes to trigger a camera which is connected on line 3 of
the port, the M number will be 8. Or if two devices are to be triggered, connected to lines 5 and
1, M number will be 33.
In the mode where the system is used with an analog-modulation laser driver, the values 0 to 255
will represent laser brightness and therefore small values and zero will practically turn the laser
off during those specific samples, while high values will render bright pixels for their respective
samples. The numbers in the third column may be written as floating point or integers but the
system will interpret them as unsigned integers and only force values to the range of 0 to 255.
0.51231
0.51163
0.51035
0.50975
0.85026
0.85054
0.85114
0.85144
255.00000
200.00000
0.00000
0.00000
An example list of a few sample points
WARNING: A list of samples must be carefully designed in order to give desired MEMS mirror
movement results and avoid device damage. Samples are read line by line and sent to the output
DAC without interpolation and processing and therefore it is the task of the designer of the list to
ensure that it is well-formed. If there are any significant steps (position changes) from sample to
sample, they will result in large oscillations of the MEMS device and possibly damage.
Therefore, smooth transitions (e.g. by spline function or software filtering) should be used. The
end of the list should bring the device back to the same or very near the same co-ordinates as
those at the beginning of the list since the output system will repeatedly refresh and read the list
from the beginning to end. Therefore a step function must be avoided from the last to first
sample. The proper forming of such sample files is best demonstrated in the software
development examples (SDK folders), both in C++ and in Matlab, where several steps are
utilized to ensure smooth transitions: returning the trajectory onto itself (ideally at device origin
at each beginning and end,) trapezoidal interpolation between desired locations and finally
additional smoothening by software filtering.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
15
Import File (User Keypoint): The third option is to import a list of XYM keypoints in a text
file, with the extension .kpt. This option is selected as User Keypoint under the File Type menu.
Each line in this file represents a keypoint, and is processed with the sps settings in the GUI,
interpolated and filtered before being outputted to the DACs. A Keypoints file can be applied
with different refresh rate settings. Valid sample files must have three space-delimited columns
and each valid line must terminate with an EOL (“\n”) character. An example of the keypoints
file, openbox.kpt is included in the exe directory of the software installation. The first column
represents values for the X-axis, the 2nd column for the Y-axis. All coordinates should be
normalized to -1 to +1 for 4-Quadrant devices. Inside the program the normalized data for X and
Y is scaled with the Max Voltage setting in the GUI. The third column is unsigned 8-bit digital
data from 0 to 255 which appears on the systems digital output port synchronously with MEMS
voltages in the first two columns. In the mode where the system is used with a laser driver, the
values 0 to 255 will represent laser brightness and therefore small values and zero will
practically turn the laser off during those specific samples, while high values will render bright
pixels for their respective samples. The numbers in the third column may be written as floating
point or integers but the system will interpret them as unsigned integers and only force values to
the range of 0 to 255. Because this import file option is for vector keypoints and not actual
samples, the user does not have complete control of the output samples on X, Y, or the M
channel. The Mirrorcledraw software will appropriately interpolate from one keypoint to the
next to optimize mirror movement, and will copy the same M number to all samples between
two keypoints.
0.25
0.25
0.75
0.75
0.25
0.75
0.75
0.25
255
255
255
255
The example of the keypoints file, openbox.kpt
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
16
5) Text: This mode allows the user to enter a text string and uses either a vector or TrueType
font in order to display the text. We use the Hershey font set, which contains a list of 22
English fonts and a variety of Oriental characters for vector text and standard TrueType
fonts. There is also a character display mode which can be used to display mathematical
symbols, ASCII characters, Kanji characters and various other symbols defined in the
Hershey database. The user can select the character ID for the particular type of font and the
program displays the font. If the text string is too long, it is possible to scroll the text across.
In order to scroll the text string, check the Marquee checkbox. Note that it can take a long
time to compute the marquee waveform.
It is also possible to display TrueType fonts. The TTF Font button can be used to select any
TTF font currently installed on your computer. The user can also choose whether characters
will be Bold, Italics and the Encoding system used (Western European, Cyrillic, Central
European etc.). This mode utilizes Windows GDI functions in order to get vectorized a string
or character in any system font and displays the vectorized text. Currently, the program does
not support Unicode text but it is possible to input various non-ascii symbols for Oriental and
other fonts by using „Alt-xxxx‟ where xxxx is the Unicode ID for the particular character in
the chosen font (e.g. Choose the MS Mincho Font and Japanese Encoding in the TTF Font
dialog and enter Alt-0211 in the text to display a certain Hiragana character – try out
different codes or use the Windows Character Map utility to find the code for a particular
character).
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
17
6) Scan Patterns: This mode allows the user to generate different scan patterns: Raster, Spiral,
Lissajous and Image. The Raster scan pattern creates a line at a steady rate along the
horizontal axis, and is repeated as the line scan is moved along the vertical axis. The user can
control the amplitude, the number of lines for this scan and, the angle of the raster scan. The
Spiral scan creates a spiral pattern starting at the center, spiraling outwards and returns back
to the center by retracing its path. The user can control the amplitude and the number of
loops in the spiral. Lissajous pattern allows the user to create various Lissajous patterns by
controlling the frequencies of X and Y axis, and amplitude of the pattern. Image scan lets the
user import an image (.jpg) file and display it either as a black and white, or a Grayscale
image. The displayed resolution of the image is adjusted by the number of lines used in the
raster scan to create the image.
7) Clock: This mode creates a vector graphic drawing of the current time in 24 hour format,
updated every second. There are two display modes: a digital clock with HH:MM:SS format,
and an analog clock with the hour, minute and seconds hand. With a fast refresh rate (e.g.
>15 Hz) and a fast MEMS mirror this results in a projected vector display of current PC time.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
18
Function Generator:
This mode uses the USB MEMS Controller as an analog output to directly send synthesized
waveforms to the mirror. Unlike in the curve plotter mode, there is no modulation scheme used
to transmit the signal to the mirror. Hence this mode must be used carefully since it is possible to
excite the resonant frequencies of the device and damage it.
1) Waveforms: This mode can be used to send a set of signal waveforms on either or both
channels. The user can choose between DC, sinusoidal, sawtooth, or noise waveforms. The
DC mode allows the user to input any voltage level to either axis. For the sinusoidal and
sawtooth waveforms, the user can choose the frequency and this can be used to find the
resonant frequency of the device. This is simply done by choosing sine waves of different
frequencies and observing the mirrors deflection peak at the resonant frequency, which
should be visibly obvious. It is safest to keep the voltage level low since the devices have
high Q and can be damaged by exciting them resonantly with excess voltage. The resonant
frequency can then be used to refine the system parameters used to calculate the Inverse
Square filter. Q values from 10-100 are reasonable. Another point to note is that the actual
resonant frequency is twice the value on the slider since the mirror responds to the square of
the voltage waveform. The noise waveform is useful for checking if the devices are
functional and can occasionally be used to revive devices that may be stuck or crashed.
2) Lissajous: This is similar to the function in the curve plotter mode but there is no modulation
used in this case. The user can directly choose the base and modulation frequencies on both
axes and the types of waveforms desired. Here, it is relatively simple to obtain animations by
offsetting one of the X/Y frequencies by 1-2 Hz (e.g. 201/200 Hz). Another interesting set of
animations is obtained near resonance. Make both X, Y base frequencies near resonance so
that a large mirror amplitude is obtained. Now change the modulation frequencies to greater
than 30-35 Hz so that persistence of vision gives rise to an intricate set of animations.
Changing the modulation frequency to a non-integer number slows the animation and also
gives more aesthetic patterns. It is possible to get a virtually limitless set of patterns using the
four sets of frequency parameters.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
19
MirrorcleLinearRaster (Executable)
Introduction
MirrorcleLinearRaster is an executable software with a simple user interface (UI) for preparing
and running raster scans with uniformly spaced lines and with uniform scanning velocity. User
chooses number of lines, pixels per line, line duration, point-to-point or uniform-velocity motion,
and other parameters and runs single or continuous raster scans with the MEMS mirror. Lines
can have any user-controlled angle, i.e. horizontal, vertical, or any in-between angle rasters are
possible. Program controls MEMS mirror X- and Y-axis, and also provides synchronized digital
output to laser driver or other user peripherals.
Global Settings
1: Set number of lines (2-1000): Allows the user to set the total number of lines for the scan.
Note: if the number of lines * number of pixels exceeds a maximum available number of points
for the system, the system will notify and reject the settings.
2: Set number of pixels along the line (2-1000): Allows the user to set the number of pixels per
line.
Note: if the number of lines * number of pixels exceeds a maximum available number of points
for the system, the system will notify and reject the settings.
3: Set angle of lines (0-360, 0 = vertical): Allows the user to rotate the raster scan clockwise, at
any desired angle. It is an integer input and therefore the angle can be rotated in increments of 1.
4: Set duration of one line: Allows the user to set the time duration of one line during the raster
scan. The time applies only to the „active scan“ portion of the line, after the initial acceleration
from the edge of the scan field, and before the decelleration at the other edge of the scan field.
The input is in seconds, and the input accepts floating point numbers.
5: Allow bi-directional writing on fast axis: This option toggles between bi-directional writing
being on (1) and off (0). The default value is on (1).
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
20
6: Set the filter cut-off frequency (Hz): The filter cut-off frequency is controlled by this setting.
USB MEMS Controller hardware includes on-board filters for each analog output channel.
Minimum allowable value is 50Hz and maximum value is 5000Hz. Warning: The filter cut-off
frequency should not significantly exceed the recommended filter published with the specific
device‟s datasheet. Values significantly higher than the recommended filter value can cause
ringing, larger angle overshoot, and device damage.
7: Start continous running: Pressing 7 brings up all available devices for the raster scan to be
downloaded to. After the user selects which target to use, the software downloads and begins the
raster scan after any of hte global settings have been changed. After the scan has started, pressing
any key will stop and allow the user to return to the main menu.
8: Start a single raster: Pressing 8 brings up all available devices for the raster scan to be
downloaded to. After the user selects which target to use, the software downloads and will
execute a single raster scan. After the scan has finished, pressing any key will stop and allow the
user to return to the main menu.
x: Set the X axis amplitude (0-1): This is a parameter that scales the created X axis analog
waveform between a value of 0.00 and 1.00. The input value is a floating point number.
Warning: The maximum voltage value should be less than or equal to the maximum allowed
voltage published with the specific device‟s datasheet. Values higher than maximum allowed for
a specific device can cause erroneous behavior or device damage.
y: Set the Y axis amplitude (0-1): This is a parameter that scales the created Y axis analog
waveform between a value of 0.00 and 1.00. The input value is a floating point number.
Warning: The maximum voltage value should be less than or equal to the maximum allowed
voltage published with the specific device‟s datasheet. Values higher than maximum allowed for
a specific device can cause erroneous behavior or device damage.
t: Toggle between linear raster (0) and point to point raster (1): This parameter allows the user to
switch between a linear raster scan and point to point raster scan. The linear raster scan has the
MEMS mirror scan the individual lines with constant velocity, with acceleration and deceleration
at the turn around portions. The point to point raster scan drives the MEMS mirror to each pixel
in a line, decelerating to each pixel point, and accelerating after each pixel point in a line.
e: Toggle to allow export of waveform to file (1) or no export (0): This parameters allows the
user to set to have the linear raster scan waveform with the current settings be exported into a
textfile when enabled. The text file contains a list of X and Y sample points, and modulation
data.
+, -: Control delay of pulses (+ Increase, - Decrease): This parameter rotates the synchronized
digital outputs to adjust for delay. The software is already calibrated to adjust for the delay from
the hardware, low pass Bessel filters, but this feature allows the user to adjust the delay to
synchronize with other peripherals, such as lasers, cameras, etc.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
21
Software Development Kit (SDK) – C++
This is effectively the Software Development Kit (SDK) of Mirrorcle Serial Software Suite that
allows users to develop their own applications using C++ DLLs: This interface provides a library
with wrapper classes for the entire process starting with content generation, content conditioning
and manipulation (filtering, scaling, interpolation, etc.), content downloading to a selected target
device, and control of that target device including control of its integrated hardware filters.
An example Visual C++ project is provided to illustrate the use of the library classes.
MirrorcleTech‟s API includes a class focused on data generation and signal conditioning,
MTIDataGenerator, with the corresponding header, library, and DLL files:
MTIDataGeneratorAPI.h, MTIDataGenerator.lib, and MTIDataGenerator.dll
Further, the API includes a class focused on interfacing with the target. For users with the MTI
USB MEMS Controller, the interfacing class is MTIDeviceSerial, with the corresponding
header, library, and DLL files: MTIDeviceAPI.h, MTIDeviceSerial.lib, and MTIDeviceSerial.dll
For users with a NI-DAQ USB MEMS Controller, the interfacing class is MTIDeviceNidaq,
with the corresponding header, library and DLL files: MTIDeviceAPI.h, MTIDeviceNidaq.lib
and MTIDeviceNidaq.dll
For users with Visual Studio C++ 2010 version or newer, there is an example code which utilizes
the provided libraries and functions. This example allows the user to output 2 analog channels
and digital channels (laser modulation) to the USB MEMS Controller-based development kit.
Users can easily modify the C++ code and rebuild new executables. Note that when a new exe
file is built by Visual Studio, it will be created in the “Debug” directory, and should be moved
into the “exe” directory with all other Mirrorcle executables because the necessary dlls are there
as well.
MTIDevice-Test.cpp example:
This example C++ program demonstrates to the user five possible and different ways of
actuating MirrorcleTech devices. When you execute the pre-compiled version of this program
within the exe directory, you will be asked to run one of those three modes, i.e. “Point-to-Point”
mode, “Scanning” mode, or “Import File” mode.
Scanning mode example:
This example C++ program is designed to send a stream of co-ordinates to the micromirror
device via USB MEMS Controller output ports. It demonstrates the use of functions such as
SendDataStream() to communicate to an analog/digital output port of the computer and
eventually to the MirrorcleTech device. The user will be first prompted which USB MEMS
Controller he or she uses, and which maximum voltage to scale the pattern of co-ordinates
through. The .cpp file is fairly self-explanatory and commented to provide easier use and
modification to user‟s desired application. For example, the user may choose to output the
stream with infinite repetition, for example to create a repeating raster patter, or he or she may
choose to output the stream in a single or multiple-cycle burst. This is done with the last “loop”
parameter of the SendDataStream() function. It should be noted that in addition to creating X
and Y arrays of data to send to the port, the user must also create a B array of laser blanking data
or digital triggering data, depending on the application. This blanking data is streamed to the
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
22
laser driver, available on all USB MEMS Controller. This allows the digital output stream to
coincide (correlate) with the X and Y analog voltage streams.
Point-to-point example:
The point-to-point demonstrates one way to simplify the open-loop control of devices in an
application where the user will need to point the laser beam to different sequential points and
would like to have a smooth and fast transition between those points. The user selects the step
time for each point-to-point movement. The example will ask the user to input a set of
normalized co-ordinates to send the device to. Values from 0 to 1 on each axis are valid unless
you have a bi-directional device in which case values from -1 to 1 are valid inputs. When a new
set of co-ordinates is entered, the program sends a step to the USB MEMS Controller which will
send the device from Xold, Yold to Xnew, Ynew as follows:
OutputX = Xold + (Xnew-Xold) * Step1ms
OutputY = Yold + (Ynew-Yold) * Step1ms,
where e.g. step1ms is an array of 100 points representing the 1ms filtered step.
If a user enters co-ordinates outside of -1 to 1 limit, program quits.
In the current version the laser blanking M channel is given zeros during the step such that the
laser which is modulated with this channel will be turned off in the transition region between the
new and old co-ordinates. The laser is then turned on at the very last point of the transition by
assigning M[last point]=1. The user should modify this as desired.
Import Sample File example:
This example imports XYM sample data-points in a text file raster_vertical.smp. Each line in
the file represents a sample to be sent in sequence to the DACs, and will be output at the DACs
at the “Sample Rate (sps)” set in the cpp file. The hardware filters are still applied after the DAC
outputs, before the high voltage amplifier. Valid sample files must have three space-delimited
columns and each valid line must terminate with an EOL (“\n”) character. The .smp file can also
have the sample rate as the first line of the file (e.g. 50000), and this number is read during the
User Sample Import File function. This is optional, and if there is no sample rate number on the
first line, then the function uses the default sps value.
The first column represents sample values for the X-axis, the 2nd column for the Y-axis. All
coordinates should be normalized to -1 to +1 and are imported as floating point numbers. Inside
the program the normalized data for X and Y is scaled with the Max Voltage setting. The third,
or the “M” column is unsigned 8-bit digital data from 0 to 255 which appears on the systems
digital output port synchronously with MEMS voltages in the first two columns. These are often
used for triggering various accessories or instruments in sync with MEMS mirror movement, e.g.
lasers, timers, cameras, etc. As an example, in this mode of use where the numbers are used as
triggers, if a user wishes to trigger a camera which is connected on line 3 of the port, the M
number will be 8. Or if two devices are to be triggered, connected to lines 5 and 1, M number
will be 33.
In the mode where the system is used with an analog-modulation laser driver, the values 0 to 255
will represent laser brightness and therefore small values and zero will practically turn the laser
off during those specific samples, while high values will render bright pixels for their respective
samples. The numbers in the third column may be written as floating point or integers but the
system will interpret them as unsigned integers and only force values to the range of 0 to 255.
0.51231
0.51163
0.51035
0.50975
0.85026
0.85054
0.85114
0.85144
255.00000
200.00000
0.00000
0.00000
An example list of a few sample points
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
23
WARNING: A list of samples must be carefully designed in order to give desired MEMS mirror
movement results and avoid device damage. Samples are read line by line and sent to the output
DAC without interpolation and processing and therefore it is the task of the designer of the list to
ensure that it is well-formed. If there are any significant steps (position changes) from sample to
sample, they will result in large oscillations of the MEMS device and possibly damage.
Therefore, smooth transitions (e.g. by spline function or software filtering) should be used. The
end of the list should bring the device back to the same or very near the same co-ordinates as
those at the beginning of the list since the output system will repeatedly refresh and read the list
from the beginning to end. Therefore a step function must be avoided from the last to first
sample. The proper forming of such sample files is best demonstrated in the software
development examples (SDK folders), both in C++ and in Matlab, where several steps are
utilized to ensure smooth transitions: returning the trajectory onto itself (ideally at device origin
at each beginning and end,) trapezoidal interpolation between desired locations and finally
additional smoothening by software filtering.
Import Keypoint File example:
This example imports a list of XYM keypoints in the text file, text.kpt. Each line in this file
represents a keypoint, and is processed with the sps setting, interpolated and filtered before being
outputted to the DACs. A Keypoints file can be applied with different refresh rate settings. Valid
sample files must have three space-delimited columns and each valid line must terminate with an
EOL (“\n”) character. The first column represents values for the X-axis, the 2nd column for the
Y-axis. All coordinates should be normalized to -1 to +1 for 4-Quadrant devices. Inside the
program the normalized data for X and Y is scaled with the Max Voltage setting. The third
column is unsigned 8-bit digital data from 0 to 255 which appears on the systems digital output
port synchronously with MEMS voltages in the first two columns. In the mode where the system
is used with a laser driver, the values 0 to 255 will represent laser brightness and therefore small
values and zero will practically turn the laser off during those specific samples, while high values
will render bright pixels for their respective samples. The numbers in the third column may be
written as floating point or integers but the system will interpret them as unsigned integers and
only force values to the range of 0 to 255. Because this import file option is for vector keypoints
and not actual samples, the user does not have complete control of the output samples on X, Y,
or the M channel. The software API will appropriately interpolate from one keypoint to the next
to optimize mirror movement, and will copy the same M number to all samples between two
keypoints.
0.25
0.25
0.75
0.75
0.25
0.75
0.75
0.25
255
255
255
255
Slow Raster Example:
The slow raster example shows how to prepare a raster scan. The user is able to define the
number of lines, sample rate, and the refresh rate of each line. Using the user defined inputs, the
program creates the straight segments with uniform velocity and number of points, the curved
segments for the scan to turn around, and modulating the laser to be on during the straight
segments and off during the curved segments. The example also shows the proper way to start
and end each scan by allowing the device to return to the origin before starting the new scan to
prevent large steps and resonance during the return portion.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
24
Follow Arrow Keys Example:
The arrow keys example allows the user to manipulate a laser beam being reflected off the
MEMS device. Each key press adjusts the DC voltage on each axis and directs the beam to the
requested position in DC steps. The commands to the MEMS device are filtered to avoid
overshoot and ringing. The effect is that after each button press, the position is quickly and
smoothly updated and displayed on screen.
Software Requirements:
The provided dynamic link libraries (DLLs) in Mirrorcle SDK are general Windows32 DLLs
that can be used in a variety of development environments.
In order to run the provided examples developed in Visual Studio C++, Microsoft Visual Studio
.NET 2010 should be installed.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
25
MTIDevice SDK – Matlab
MTIDevice Matlab-based Software Development Kit. Similar to Cpp SDK version, this is a
Matlab-based software development kit (SDK) allowing the user the fastest and easiest route to
development of micromirror applications.
Matlab-based MTIDevice SDK with Matlab functions for quick development of analog output
applications. User can use the existing functions inside the MTIDevice class to identify an
analog output device such as a USB MEMS Controller, to create excitation signals and to send
them to the output device. The user has to prescribe the excitation signals sample by sample, by
forming vectors for the x axis and the y axis.
For additional information type
help MTIDeviceHELP
Also once an object in the class is created user can see all of the object properties and methods
available. For example,
device = MTIDevice
creates the object and shows the properties to the user. Clicking on the methods link below will
show available functions as well.
Following examples detail the use of these functions:
MTIDevice_Box.m
MTIDevice_Import_And_Run.m
MTIDevice_Example.m
Software Requirements:
Matlab-based MTIDevice functions require Matlab R2012 or later with the Data Acquisition
Toolbox 3.2 or later.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
26
MTIDevice SDK – LabView
LabView-based Software Development Kit. Similar to MTIDevice Cpp version, this is a
LabView-based software development kit (SDK) allowing the user the fastest and easiest route
to development of micromirror applications. There are several example vi-s provided here to
demonstrate driving of devices through waveform-based signal generation, array-based signal
generation, and file importing.
Software Requirements:
LabView-based examples require LabView 2011 or later.
© Mirrorcle Technologies, Inc., 2012-2014. All rights reserved.
27