Motion control

How do I see the status of the the axes?

Run hBT.getStageStatus to get a report on how each axis is set up and other important information.

My PI direct-drive stages are cutting out and/or giving over-current errors

If necessary, set the D terms of the PID loops to zero then at the MikroMove command line run the phase finding command: FPH 1. The axis has to be enabled (i.e. EAX? 1 returns 1) and the servo mode has to be off (SVO? 1 returns 0). You can query the result of the phase-finding operation with FPH?. This should return a positive value. -1 indicates that the phase finding operation failed. If it worked, the new value can be saved to non-volatile memory via the command WPA 100

Once this is done, enable the servo and see if performance improves. If not you could try setting a small positive D term to the position PID loop (e.g. 0.005) but be cautious of going too far as this may increase position noise.

If you have simply knocked the stages and caused the servo to cut out, you can test for this by running the BakingTray command hBT.getStageStatus. If, say, the X axis is listed as disabled you can try enabling it with hBT.xAxis.resetAxis.


Is BakingTray scanning software?

No it's not. BakingTray uses external scanning or image acquisition software to obtain images. Currently only ScanImage is supported. BakingTray interacts with ScanImage indirectly via the SIBT class.

Is a custom version of ScanImage needed?

BakingTray interacts with ScanImage via the ScanImage API and requires no modification (see also here).

How does BakingTray use ScanImage?

BakingTray coordinates a tile scan over a sample by triggering ScanImage to acquire a small z stack at each tile X/Y position. The X and Y stages are moved by BakingTray and are not connected to ScanImage. The Z stack is performed using a PIFOC controlled by ScanImage. BakingTray interacts with ScanImage to do the following:

  1. Set the parameters for a fast z-stack

  2. Set the number of reps of this stack

  3. Set up the imaging parameters such as image size, number of microns per optical degree, etc.

The tile scan itself is performed using a callback function in the SIBT class that runs after z stack finishes at a single X/Y position.


Can I change the number of sections to acquire on a running acquisition?

To change the number of sections to acquire once the acquisition has started you currently need to stop the acquisition then restart it.

I notice substantial variability in section acquisition time in the acqLog file

Of course different sections will have different numbers of tiles should you be using the default auto-ROI feature. However, in addition to this, there are small time differences between sections even with the same number of tiles. If these differences are large, you might want to confirm that the PID loop of your stages is behaving as expected and there are not issues in settling time of the stages.

Should I blank the scanner flyback?

If you blank the scanner flyback with amplifiers you can get rid of amplifier ringing which would otherwise create slightly annoying bright/dim alternating lines in the raw data. However, with a resonant scanner this also causes the non-imaged parts of the tile to be bleached and can create stitching artifacts later. Further, the ringing should be canceled out with the average image correction.

Laser control

The laser seems to connect but can't be turned on via the GUI.

As a workaround, try issuing hBT.laser.turnOn at the command line. This may turn on the laser then allow it to be controlled via the GUI. You could also try closing and re-opening the GUI. File an issue if you see behavior such as this.

Last updated