top bar

Difference between revisions of "ASIStage"

m (ASI Stage)
 
(26 intermediate revisions by 5 users not shown)
Line 2: Line 2:
  
 
<table><tr><td>
 
<table><tr><td>
'''Summary:'''</td><td>Controls ASI XY, Z stages and CRIF</td></tr>
+
'''Summary:'''</td><td>For ASI MS2000 controllers, including stages (XY, Z, piezo) and CRISP autofocus. Also MFC-2000.</td></tr>
<tr><td>'''Author:'''</td><td>Jizhen Zhao, based on Nenad Amodaj's Prior adapter.  CRIF by Nico Stuurman.  Currently maintained by Nico Stuurman</td></tr>
+
<tr><td>'''Author:'''</td><td>Jizhen Zhao, based on Nenad Amodaj's Prior adapter.  CRIFF, CRISP, and AZ100 Turret by Nico Stuurman.  Generic state device (for filter sliders and motorized turrets) by Jon Daniels. Currently maintained by Nico Stuurman and Jon Daniels</td></tr>
 
<tr><td>'''License:'''</td><td>LGPL</td></tr>  
 
<tr><td>'''License:'''</td><td>LGPL</td></tr>  
 
<tr><td>'''Platforms:'''</td><td>All platforms (uses serial port)</td></tr>
 
<tr><td>'''Platforms:'''</td><td>All platforms (uses serial port)</td></tr>
<tr><td>'''Devices:'''</td><td>XYStage, ZStage, CRIF, AZ100 Turret</td></tr>
+
<tr><td>'''Devices:'''</td><td>XYStage, ZStage, CRIF, CRISP, AZ100 Turret, LED</td></tr>
 
<tr><td>'''Example Config File:'''</td><td>None</td></tr>
 
<tr><td>'''Example Config File:'''</td><td>None</td></tr>
 
</table>
 
</table>
  
Controls ASI's [http://www.asiimaging.com/automation.html] XY, Z stages and the reflection-based CRIF autofocussing unit.  Each device (XY stage, Z stage and CRIF) needs to be assigned to a serial port (even though all devices might actually be attached to one and the same controller and this controller is attached to the PC through a serial cable).
+
NB: there is a separate device adapter for modular TG1000 "Tiger" controllers [[ASITiger]].
  
The ASI controller can control two different Z stages, a normal one ("Z"), and a piezo Z stage which can either be called "Z", or - if a normal motorized S stage is installed "F"AS of Micro-Manager version 1.2.7, you can instantiate multiple ASI Z-stages, which will take a pre-initialization property 'Axis' that can be set to either"Z' or "F" (do not instantiate the same axis twice!).
+
Controls ASI's stage controllers such as the MS2000 [http://www.asiimaging.com/products/controllers/ms-2000-wk-multi-axis-stage-controller/], [http://www.asiimaging.com/products/controllers/rm-2000-rack-mount-stage-controller/].  Depending on installed hardware, the controller works with XY, Z stages (linear and piezo) and the CRISP or CRIFF autofocusing modulesIn Micro-manager, each stage or device connected to the controller is added as a separate device assigned to the appropriate serial port (even though all devices might actually be attached to one and the same controller and this controller is attached to the PC through a serial cable).
  
The logic of the CRIF is a bit funky. The CRIF [http://www.asiimaging.com/criff.html] cycles through a number of states (laser idle, laser on, calibrate, lock/unlock, laser off) by pressing the middle button on the controller for 6 seconds (see the CRIF manual [http://www.asiimaging.com/pdfs/CRIFF_Manual.pdf])Some of these state changes are implemented in the CRIF adapter. In general, it is best to first calibrate the CRIF by hand and then let the software lock and unlock the CRIF.
+
The MS2000 and relatives can control two different Z stages, a normal one ("Z"), and a piezo Z stage which can either be called "Z", or - if a normal motorized stage is installed "F"As of Micro-Manager version 1.2.7, you can instantiate multiple ASI Z-stages, which will take a pre-initialization property 'Axis' that can be set to either "Z" or "F" (do not instantiate the same axis twice!).
  
AS of ASI controller version 8.0 (called the 'WK Whizkid'), the build-in USB connection is actually a USB to serial converterYou can find Windows drivers for this converter at the [http://www.asiimaging.com/wk_usb_support.html ASI] website and drivers for Mac OS X and linux at the [http://www.silabs.com/tgwWebApp/public/web_content/products/Microcontrollers/USB/en/mcu_vcp.htm Silabs] website. The dipswitches on the back now control the baudrate settings for both the real serial and the USBto serial ports on the controller.
+
The piezo Z stage can be set up to receive trigger signals from many cameras (see documentation on Micro-Manager's [[Hardware-based_synchronization]] feature). A BNC cable is connected from the camera's TTL output to the MS2000 controller's piezo trigger inputBy synchronizing Z slices with camera exposures, you can acquire very fast Z stacks. Most ASI firmware includes the required ring buffer module with 50 positions; if you want to acquire Z stacks with more slices or do not have ring buffer support, please [http://www.asiimaging.com/contact-us/ contact ASI directly] for a firmware update. To use this feature, set the property "Use Sequence" to value "Yes" under device "ZStage" in the Property Browser.
  
The following properties are currently implemented in the Micro-Manager ASI stage adapter:
+
If you have firmware from October 2015 or newer then you need to use a build of Micro-Manager newer than March 2016. (The firmware code was "fixed" to make it more self-consistent but which broke the original Micro-Manager code for loading sequence points; as of March 2016 the device adapter handles any firmware).
 +
 
 +
There is a further feature designed for collecting sequential Z-stacks with minimal delay by eliminating serial communication between Z-stacks and relying completely on TTL. This is the "Use Fast Sequence" property. To use, first set the property value set to "No" (but "Use Sequence" must be set to "Yes") and run a Z-stack, or if you are scripting you need to invoke SendStageSequence().  This forces Micro-Manager to compute the ring buffer positions and send them to the controller. Then set the property value to "Armed" and perform desired acquisitions. Afterwards be sure to set the value back to "No" because the controller will not interact with Micro-Manager normally when set to "Armed" (sequence operations are short-circuited as is the widely-used API function Busy()).
 +
 
 +
Starting in mid-2013 the firmware reports the number of ring buffer positions, thus obviating the prior need for the user specifying the number of positions as a pre-init property.  As of the 20160316 nightly build detecting the number of ring buffer positions happens automatically if at all possible, and if it is not possible then a standard (not pre-init) property is used to set the number of positions.  This is a convenience for most users, but if you have an existing config file will need to slightly modify it after updating Micro-Manager to anything newer than March 2016.  Open the config file (.cfg) in a text editor and delete the line that looks like "Property,ZStage,RingBufferSize,50".  If you have firmware before mid-2013 with a 250-position ring buffer then you further should add the property "RingBufferSize" to the System/Startup group/preset with value set to 250.
 +
 
 +
CRIFF [http://www.asiimaging.com/products/focus-stabilization/criff-continuous-reflective-interface-feedback-focus-system/] was ASI's original autofocus product, and has been replaced by the CRISP autofocus system [http://www.asiimaging.com/products/focus-stabilization/crisp-autofocus-system/].  In both, the user can cycle of several states states (laser idle, laser on, calibrate, lock/unlock, laser off) by pressing the middle "@" button on the controller for 6 seconds (see the CRIFF manual [http://www.asiimaging.com/ftp2asi/Manuals/CRIFF%20Manual.pdf]).  Most of these state changes are implemented in the CRIFF and CRISP adapters.  In general, it is easiest to first calibrate the CRIFF/CRISP by hand and then use Micro-manager to lock and unlock the CRIFF/CRISP.
 +
 
 +
{{Note|For the CRISP focus curve to work correctly, you need to increase the serial port timeout to approximately 1500 ms.}}
 +
 
 +
As of ASI controller version 8.0 (called the 'WK Whizkid'), the built-in USB connection is actually a USB to serial converter.  You can find drivers for Windows, Mac OS X, and linux at the [http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx silabs] website.
 +
 
 +
The DIP switches on the back on recent controllers control the baudrate for both the real serial and the USB to serial ports on the controller.  See your manual for details.
 +
 
 +
The following is an incomplete list of properties currently implemented in the Micro-Manager ASI stage adapter:
 
<table>
 
<table>
 
<tr><th>Property</th><th>Description</th></tr>
 
<tr><th>Property</th><th>Description</th></tr>
 
<tr><td><b>Stepsize</b> (for X and Y in um)</td><td>  Read-only property.</td></tr>
 
<tr><td><b>Stepsize</b> (for X and Y in um)</td><td>  Read-only property.</td></tr>
<tr><td><b>WaitCycles</b></td><td> Sets how long the controller will wait after reaching a position before clearing its 'busy' signal.  Number equals the number of 'servo' cycles (80 ms per cycle on XYstage, 120 ms per cycle on XYZ stages, etc..).  Range: 0-255</td></tr>
+
<tr><td><b>WaitCycles</b></td><td>Sets how long the controller will wait after reaching its target position before clearing its 'busy' signal in millisecondsFor firmware version 8.4 and earlier (2008 vintage) the number of wait cycles is limited to 255 and is specified in the number of servo cycles instead of ms; for such old systems the servo cycle time is generally 1-10ms depending on exact hardware and firmware.</td></tr>
 
<tr><td><b>Speed</b> (for both X and Y)</td><td>Sets the maximum speed at which the stage will move in mm/sec.  Hardware maximum is 7.5 mm/s for 6.5 mm pitch leadscrews</td></tr>
 
<tr><td><b>Speed</b> (for both X and Y)</td><td>Sets the maximum speed at which the stage will move in mm/sec.  Hardware maximum is 7.5 mm/s for 6.5 mm pitch leadscrews</td></tr>
<tr><td><b>Backlash</b> (for both X and Y, in nm)</td><td>Makes the controller approach the target always from the same direction, starting the set number of nm away from the target position</td></tr>
+
<tr><td><b>Backlash</b> (for both X and Y, in mm)</td><td>Makes the controller approach the target always from the same direction, starting the set number of mm away from the target position</td></tr>
 
<tr><td><b>Error</b> (for both X and Y, in nm)</td><td>When the difference between the current position (as read from the encoders) is larger than this number, the controller will re-engage the motors to reach the target position</td></tr>
 
<tr><td><b>Error</b> (for both X and Y, in nm)</td><td>When the difference between the current position (as read from the encoders) is larger than this number, the controller will re-engage the motors to reach the target position</td></tr>
 
<tr><td><b>Finish Error</b> (for both X and Y in nm)</td><td>This setting controls at what difference between the target and current position the controller will stop trying to get closer to the target.  Similar to Error, but this one applies to ongoing movements.</td></tr>
 
<tr><td><b>Finish Error</b> (for both X and Y in nm)</td><td>This setting controls at what difference between the target and current position the controller will stop trying to get closer to the target.  Similar to Error, but this one applies to ongoing movements.</td></tr>
<tr><td><b>OverShoot</b> (for both X and Y)</td><td>Inverse of BacklashSetting this might help to increase stability of the stage after a movement</td></tr>
+
<tr><td><b>OverShoot</b> (for both X and Y)</td><td>Analogous to backlash, but will always overshoot the desired position by the set amount and then come back, whereas backlash always approaches from the same directionBacklash move, if any, occurs before the overshoot move.</td></tr>
 
<tr><td><b>MotorOnOff</b> (for  both X and Y)</td><td>  Switches motor On or Off.</td></tr>
 
<tr><td><b>MotorOnOff</b> (for  both X and Y)</td><td>  Switches motor On or Off.</td></tr>
 
<tr><td><b>NrMoveRepetition</b></td><td> Number of times the stage sill approach the same position.  Setting this to 0 will cause one approach.  Settings this to 2 or 3 can increase the accuracy with which a position is reached.</td></tr>
 
<tr><td><b>NrMoveRepetition</b></td><td> Number of times the stage sill approach the same position.  Setting this to 0 will cause one approach.  Settings this to 2 or 3 can increase the accuracy with which a position is reached.</td></tr>
 
</table>
 
</table>
 +
 +
 +
{{Devices_Sidebar}}

Latest revision as of 09:39, 21 June 2018

ASI Stage

Summary:For ASI MS2000 controllers, including stages (XY, Z, piezo) and CRISP autofocus. Also MFC-2000.
Author:Jizhen Zhao, based on Nenad Amodaj's Prior adapter. CRIFF, CRISP, and AZ100 Turret by Nico Stuurman. Generic state device (for filter sliders and motorized turrets) by Jon Daniels. Currently maintained by Nico Stuurman and Jon Daniels
License:LGPL
Platforms:All platforms (uses serial port)
Devices:XYStage, ZStage, CRIF, CRISP, AZ100 Turret, LED
Example Config File:None

NB: there is a separate device adapter for modular TG1000 "Tiger" controllers ASITiger.

Controls ASI's stage controllers such as the MS2000 [1], [2]. Depending on installed hardware, the controller works with XY, Z stages (linear and piezo) and the CRISP or CRIFF autofocusing modules. In Micro-manager, each stage or device connected to the controller is added as a separate device assigned to the appropriate serial port (even though all devices might actually be attached to one and the same controller and this controller is attached to the PC through a serial cable).

The MS2000 and relatives can control two different Z stages, a normal one ("Z"), and a piezo Z stage which can either be called "Z", or - if a normal motorized stage is installed "F". As of Micro-Manager version 1.2.7, you can instantiate multiple ASI Z-stages, which will take a pre-initialization property 'Axis' that can be set to either "Z" or "F" (do not instantiate the same axis twice!).

The piezo Z stage can be set up to receive trigger signals from many cameras (see documentation on Micro-Manager's Hardware-based_synchronization feature). A BNC cable is connected from the camera's TTL output to the MS2000 controller's piezo trigger input. By synchronizing Z slices with camera exposures, you can acquire very fast Z stacks. Most ASI firmware includes the required ring buffer module with 50 positions; if you want to acquire Z stacks with more slices or do not have ring buffer support, please contact ASI directly for a firmware update. To use this feature, set the property "Use Sequence" to value "Yes" under device "ZStage" in the Property Browser.

If you have firmware from October 2015 or newer then you need to use a build of Micro-Manager newer than March 2016. (The firmware code was "fixed" to make it more self-consistent but which broke the original Micro-Manager code for loading sequence points; as of March 2016 the device adapter handles any firmware).

There is a further feature designed for collecting sequential Z-stacks with minimal delay by eliminating serial communication between Z-stacks and relying completely on TTL. This is the "Use Fast Sequence" property. To use, first set the property value set to "No" (but "Use Sequence" must be set to "Yes") and run a Z-stack, or if you are scripting you need to invoke SendStageSequence(). This forces Micro-Manager to compute the ring buffer positions and send them to the controller. Then set the property value to "Armed" and perform desired acquisitions. Afterwards be sure to set the value back to "No" because the controller will not interact with Micro-Manager normally when set to "Armed" (sequence operations are short-circuited as is the widely-used API function Busy()).

Starting in mid-2013 the firmware reports the number of ring buffer positions, thus obviating the prior need for the user specifying the number of positions as a pre-init property. As of the 20160316 nightly build detecting the number of ring buffer positions happens automatically if at all possible, and if it is not possible then a standard (not pre-init) property is used to set the number of positions. This is a convenience for most users, but if you have an existing config file will need to slightly modify it after updating Micro-Manager to anything newer than March 2016. Open the config file (.cfg) in a text editor and delete the line that looks like "Property,ZStage,RingBufferSize,50". If you have firmware before mid-2013 with a 250-position ring buffer then you further should add the property "RingBufferSize" to the System/Startup group/preset with value set to 250.

CRIFF [3] was ASI's original autofocus product, and has been replaced by the CRISP autofocus system [4]. In both, the user can cycle of several states states (laser idle, laser on, calibrate, lock/unlock, laser off) by pressing the middle "@" button on the controller for 6 seconds (see the CRIFF manual [5]). Most of these state changes are implemented in the CRIFF and CRISP adapters. In general, it is easiest to first calibrate the CRIFF/CRISP by hand and then use Micro-manager to lock and unlock the CRIFF/CRISP.

Note
For the CRISP focus curve to work correctly, you need to increase the serial port timeout to approximately 1500 ms.

As of ASI controller version 8.0 (called the 'WK Whizkid'), the built-in USB connection is actually a USB to serial converter. You can find drivers for Windows, Mac OS X, and linux at the silabs website.

The DIP switches on the back on recent controllers control the baudrate for both the real serial and the USB to serial ports on the controller. See your manual for details.

The following is an incomplete list of properties currently implemented in the Micro-Manager ASI stage adapter:

PropertyDescription
Stepsize (for X and Y in um) Read-only property.
WaitCyclesSets how long the controller will wait after reaching its target position before clearing its 'busy' signal in milliseconds. For firmware version 8.4 and earlier (2008 vintage) the number of wait cycles is limited to 255 and is specified in the number of servo cycles instead of ms; for such old systems the servo cycle time is generally 1-10ms depending on exact hardware and firmware.
Speed (for both X and Y)Sets the maximum speed at which the stage will move in mm/sec. Hardware maximum is 7.5 mm/s for 6.5 mm pitch leadscrews
Backlash (for both X and Y, in mm)Makes the controller approach the target always from the same direction, starting the set number of mm away from the target position
Error (for both X and Y, in nm)When the difference between the current position (as read from the encoders) is larger than this number, the controller will re-engage the motors to reach the target position
Finish Error (for both X and Y in nm)This setting controls at what difference between the target and current position the controller will stop trying to get closer to the target. Similar to Error, but this one applies to ongoing movements.
OverShoot (for both X and Y)Analogous to backlash, but will always overshoot the desired position by the set amount and then come back, whereas backlash always approaches from the same direction. Backlash move, if any, occurs before the overshoot move.
MotorOnOff (for both X and Y) Switches motor On or Off.
NrMoveRepetition Number of times the stage sill approach the same position. Setting this to 0 will cause one approach. Settings this to 2 or 3 can increase the accuracy with which a position is reached.


© Micro-Manager : Vale Lab, UCSF 2006-2011 | All Rights Reserved | Contact