Thorlabs
XY Stage
Summary: | XY Stage - brushless DC motor controller BBD 102 |
Author: | Nenad Amodaj |
License: | BSD |
Platforms: | All platforms (uses serial port) |
Devices: | XYStage |
Example Config File: | See below |
XY stage device adapter that works with BBD 102 brushless DC motor contoroller[1] and supports high speed motorized scanning stage MLS 203 [2].
Setup
This adapter requires only a serial serial port (RS-232). One port should be reserved for this stage and initialized with the following parameters:
BaudRate: 115200
Handshaking: Off
Parity: None
StopBits: 1
(all other micro-manager port parameters can be left with defaults)
The only parameter that is required for configuration of the stage is the name of the serial port (e.g. COM2) attached to the controller.
Using the stage
If the port was correctly set and connected in the previous step, micro-manager will load the stage adapter at startup. The stage uses absolute XY coordinates and any positions recorded in micro-manager will always correspond to the same physical location. However, because of this feature, each time we power-up this stage needs to be "homed" before sending any commands. If we try to move it before homing, error message will pop up. Homing is not automatic on startup because during this procedure stage moves to its limits and in may cause one of the objectives to hit the stage frame, if the objective turret is left high enough. This is an issue with any XY stage and the user always needs to make sure that objective turret is in the safe position before homing.
Home procedure
The stage needs to be homed once after each power-up. Homing is not necessary if we just exit and re-start the software without powering down. There are three ways to home the stage:
Using Calibrate command
Open Stage Position List dialog and press "Calibrate" button (menu: Tools | XY List...).
Using script
Copy the following script, paste it into the Script Editor (menu: Tools | Script Panel...) and press "Run" button.
// home XY Stage gui.message("Homing started..."); xyStage = mmc.getXYStageDevice(); mmc.home(xyStage); x = mmc.getXPosition(xyStage); y = mmc.getYPosition(xyStage); gui.message("Done! Home position [um]: " + x + ", " + y);
This script can be saved and stored in the Script-Shortcut list for future use.
Using special micro-manager startup script To automate the process of homing so that you get prompted for it each time you start micro-manager you can use startup scripts. Startup script must reside in the root directory of the micro-manager software and its name is specified in the Options dialog (menu: Tools | Options...). Add the following code to the existing startup script (or create a new one):
// startup script to home Thorlabs BBD102 XY stage // import ij.gui.GenericDialog; GenericDialog dlg = new GenericDialog("HOME command - XY Stage", null); dlg.addMessage("WARNING!!! The XY stage is about to move. Make sure objectives are out of the way.\nIf you are in doubt about what to do Cancel this command!"); dlg.showDialog(); if (dlg.wasCanceled()) return false; gui.message("Homing started..."); xyStage = mmc.getXYStageDevice(); mmc.home(xyStage); x = mmc.getXPosition(xyStage); y = mmc.getYPosition(xyStage); gui.message("Done! Home position [um]: " + x + ", " + y);
Each time you start micro-manager you will be prompted to home the stage and warned to move objectives to the safe position.