Flexure Combined Motion
Table of contents
This support was designed for APS flexure stages, but it should work for other coarse/fine motor applications.
APS Flexure Hardware
An APS flexure stage includes the following hardware:
- A New Focus picomotor controller
- A New Focus open-loop picomotor (providing coarse motion and a large travel range)
- A PI piezo controller
- A PI piezo (providing fine motion and a small travel range)
- A Lion Precision cap sensor driver
- A Lion Precision cap sensor (providing absolute positioning)
- A measComp USB-2408-2AO or LabJack T8 (analog inputs to read the cap sensor)
Motivation
The existing CoarseFineMotor.db could not be used because it was not guaranteed that the open-loop picomotor would get within the piezo’s range of the desired position. flexCombinedMotion.st was adapted from a hybrid motion program already in use at an APS beamline.
Modes of Operation
| Mode | Description |
|---|---|
| Fast | Combined motion using the specified piezo range as the deadband |
| Precise | Combined motion using the specified deadband as the deadband |
| Coarse | Motion using only the coarse motor |
| Fine | Motion using only the fine motor |
Example Configuration
Motors
| Parameter | Value |
|---|---|
| PREFIX | optics: |
| Picomotor | $(PREFIX):nf:c0:m1 |
| Piezo | $(PREFIX):pi:c0:m1 |
| Piezo range | 15 um |
| Analog input (cap sensor voltage) | $(PREFIX):LJT8:1:Ai0 |
| Cap sensor conversion factor | 32.59 um/V |
| Cap sensor name | cap1 |
| Combo motor name | m1 |
IOC configuration
The flexCombinedMotion.iocsh file describes the required and optional macros it accepts. This example includes only the required macros:
iocshLoad("$(OPTICS)/iocsh/flexCombinedMotion.iocsh","P=$(PREFIX),C=cap1,V=$(PREFIX)LJT8:1:Ai1,UMV=32.59,M=m1,LLM=0.0,HOME=7.5,HLM=15.0,FM=pi:c0:m1,CM=nf:c0:m1")
The
LLM/HLMvalues can be used to restrict the usable range of the piezo. TheHOMEcan be nearLLMorHLMto allow more fine steps in one direction before a coarse move is needed.
Display file macros
flexCombinedMotionTop.{adl,ui}
"P=optics:,M=m1,CM=nf:c0:m1,FM=pi:c0:m1,C=cap1"
flexCombinedMotion.{adl,ui}
"P=optics:,M=m1"
flexCapSensor.{adl,ui}
"P=optics:,C=cap1"