PI Motor Controllers

ScanImage supports the following PI motor controllers:

They are utilized in closed-loop mode to achieve a high degree of positional accuracy and performance in motion.


Hardware setup can vary from controller to controller. Please follow the instructions included with the controller and actuator for direction on setup.

ScanImage will expect the controller to be connected via USB.

Additional notes per controller are included below.


If using the E-861 PiezoWalk® NEXACT® Controller, then these additional steps should be taken.

On the front panel of the controller, there are 8 DIP switches. The first four are responsible for the address. All four should be set to the ON position in order for the computer to recognize the controller. Switches 5 and 6 can be left in any position.


The mode switches, 7 and 8, must be left in the off position. The E861 has two modes - normal operation and firmware update. See the table below for a summary of the states:




Firmware Update






Once hardware configuration is complete, turn on the controller.


In order to communicate with the PI motor controllers, download and install the latest drivers from PI as suggested by the PI Software Suite. The PI USB Drivers are particularly important. You should ensure that the software is up to date by using the PI Update Finder.

After first receiving the controller, test it with PI Mikromove. This is included in the PI Software Suite, which is on the disk that is included with the controller. If you can connect the controller in PI Mikromove, then you should be able to use the controller from ScanImage. If not, please contact PI support.

Configuration within ScanImage is relatively simple with few configuration parameters to enter. At a minimum, the controller will require a Controller name or COM port selected from a dropdown menu. If the controller does not show in the drop down, then exit ScanImage and MATLAB and ensure that the controller can be connected to from PI Mikromove. The controller can be in an error state which may be indicated by an LED on the controller labeled ERR. If this is the case, power off the controller, wait 10 seconds, and plug it back in.

The controller may be responsible for several axes of a multi-axis stage. ScanImage drivers for such controllers will allow the user to select the enumerated axes that should be enabled for position control. The axes will be enumerated the same way as they are in PI Mikromove.

Nanometer Resolution Position Control

Some controllers can achieve nanometer or sub-nanometer level position control. For example, the ND72Z2LAQ PIFOC Objective Scanning System 2000 µm in Nanostepping mode has a closed loop positioning resolution of 5 nm (Analog Mode is not supported).

ScanImage normally has position displayed in microns to two decimals places. To view the position in higher resolution, one could minimally alter the source code to add more decimal places.

In ..\+scanimage\+guis\MotorControls.m in function update(obj,varargin), alter

if ~isequal(currentObj,obj.etZPos)
    obj.etZPos.String = sprintf('%.2f',pt(3));

to be

if ~isequal(currentObj,obj.etZPos)
    obj.etZPos.String = sprintf('%.3f',pt(3));


if ~isequal(currentObj,obj.etZPos)
    obj.etZPos.String = sprintf('%.4f',pt(3));

If the actuator supports sub nanometer position control.