The STM control software used to drive the studentSTM was written in Visual Studio in C++ using Microsoft Foundation Classes. It has been tested both as 32 bit code and 64 bit code. The 64 bit code did not show any speed improvement, so only the 32 bit version is available as a compiled download.
This program requires drivers from National Instruments to interface with the National Instruments PCIe-6323 or the USB-6001 data acquisition cards. The “NI-DAQmx” software is the preferred option. The “NI-DAQmx Base” software does not include all the necessary features.
Using a Dell Optiplex 745, several combinations of Windows and the NI-DAQmx software have been tested to determine the maximum speed possible for a read/write combination used in the feedback loop. The feedback loop ideally would run with a speed just below the piezo resonance (4.6 kHz). The feedback loop speed is limited by the card, the card drivers, and the Windows OS. The loop reads a single value from the card, processes it, and writes it out to the card. The Speed Test results will be displayed on the status bar at the start of each image acquisition.
Windows 7 and Windows 8.1 both work with 32 and 64 bit versions of studentSTM with no difference in speed. For the USB-6001 device, the maximum speed is about 1000 Hz. For the PCIe-6323 card, NI-DAQmx V14.2 is the slowest at 800 Hz, V9.7 has a speed of 1800 Hz, and V9.1 is even faster at 2100 Hz but does not have stated support for Windows 8.1.
For the PCIe-6323 card, version 1.0.1 of the compiled 32 bit code can be downloaded. Once the NI-DAQmx driver installed, it should work without further programming.
Version 1.0.1 of the source code for use with Visual Studio can be downloaded here. To compile it, the files NIDAQmx.lib and NIDAQmx.h must be copied from the default location where the NI installer puts them to the same directory where the rest of this code resides.
Feedback Loop Group
Feedback On: The feedback loop is on if this is checked. This is normally checked.
Set Point (V): The voltage as measured by the card that it tries to hold using the feedback loop.
Feedback Gain: How strongly the feedback loop responds to perturbation.
Stepper Motor Group
Move Closer: This moves the sample closer until it is stopped by the user.
Auto Approach: This moves the sample into tunneling range while monitoring the tunnel current. It will stop by itself once tunneling is established.
Move Further: This moves the sample further until it is stopped by the user.
Data Acquisition Group
Take Image: This starts the image acquisition. It can be stopped by pushing the button again.
X Offset (nm): This entry offsets the next image in the x-axis relative to the center position.
Y Offset (nm): This entry offsets the next image in the y-axis relative to the center position.
Bias (mV): This entry sets the bias applied to the tunneling tip.
Image Width (nm): This entry sets the size of the image in nanometers.
Time (mS)/Line: This entry sets the image acquisition speed.
(PCIe-6323 option) Card Number: This entry sets the number of the card to match the number assigned by the driver.
(USB-6001 option) Card Number TZ and Card Number XY: This entry sets the number of the devices to match the number assigned by the driver.
Piezo Range (nm): This entry calibrates the scan size in each axis.
Piezo Sign: This entry allows sign reversal of the voltage going to the z-axis. If the feedback loop drives the system out of tunneling range instead of holding it in tunneling range, this sign needs to be reversed.
On the dropdown menu is a way to load images, save images, and save the parameters from the ribbon.