|Summary:||For ASI MS2000 controllers, including stages (XY, Z, piezo) and CRISP autofocus|
|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|
|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 , . 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.
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" and run a Z-stack (this forces Micro-Manager to compute the ring buffer positions). 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  was ASI's original autofocus product, and has been replaced by the 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 ). 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.
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:
|Stepsize (for X and Y in um)||Read-only property.|
|WaitCycles||Sets 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.|