运动与定位
PI 纳米定位台、Attocube、Newport Picomotor、Thorlabs APT 等精密运动与定位驱动。
概述
Quatm 支持从压电纳米定位到步进电机长行程的多种运动平台,统一 IMultiaxisStage 接口。
Physik Instrumente (PI) 压电纳米定位
概述
GenericPIController 封装 PI 通用控制器串口通信,通过 ASCII 命令集控制多种 PI 压电定位平台。
PI 压电控制器 E-xxx 系列
| 通信 | 串口 (RS232) |
| 协议 | PI ASCII 命令集 |
| 轴数 | 取决于控制器型号 |
| 精度 | 亚纳米级 |
驱动模块:
GenericPIController初始化
from quatm.drivers.PhysikInstrumente.base import GenericPIController
# 串口连接
stage = GenericPIController(conn="/dev/ttyUSB0")
# 归零
stage.home(axis=0)
# 绝对定位(µm)
stage.move_to(axis=0, position=50.0)
# 相对移动
stage.move_by(axis=1, delta=10.0)
# 查询当前位置
pos = stage.get_position(axis=0)
关键方法
| 方法 | 说明 |
|---|---|
home(axis) | 指定轴归零 |
move_to(axis, position) | 绝对定位 (µm) |
move_by(axis, delta) | 相对移动 (µm) |
get_position(axis) | 查询当前位置 |
stop(axis) | 紧急停止 |
设备配置
"objective_z": {
"type": "local",
"module": "drivers.PhysikInstrumente.base",
"class": "GenericPIController",
"arguments": {"conn": "/dev/ttyUSB0"},
}
## 使用示例
```python
# 在 Experiment 类中
self.pi_stage = self.get_device("pi_stage")
# 移动到指定位置 (μm)
self.pi_stage.move_absolute(x=50.0, y=25.0, z=10.0)
# 相对移动
self.pi_stage.move_relative(dx=1.0, dy=0.0, dz=0.0)
注意:压电平移台有行程限制,超出范围会触发硬件保护。使用前请查阅设备手册确认最大行程。
Thorlabs APT/Kinesis 位移台
KDC101 / K10CR1 系列
KDC101 / K10CR1 / 滤光轮 Thorlabs APT/Kinesis
| 通信 | 串口 (FTDI) |
| 协议 | APT (二进制) |
| 适用设备 | 直流伺服电机、步进电机、滤光轮、快门 |
驱动模块:
BasicKinesisDevicefrom quatm.drivers.Thorlabs.kinesis import BasicKinesisDevice
stage = BasicKinesisDevice(conn="27200001")
stage.home()
stage.move_to(position=25.0) # mm
Elliptec 压电谐振电机
ELLx 系列 Thorlabs Elliptec
| 通信 | 串口 (9600 baud) |
| 行程 | 取决于滑块 |
| 精度 | µm 级 |
驱动模块:
ElliptecMotorfrom quatm.drivers.Thorlabs.elliptec import ElliptecMotor
motor = ElliptecMotor(conn="/dev/ttyUSB0", addrs=[0])
motor.move_to(axis=0, position=10.0)
电动滤光轮 FW102/FW212
from quatm.drivers.Thorlabs.serial import FW
fw = FW(conn="/dev/ttyUSB0")
fw.set_position(position=2) # 切换到第 2 个滤光片位置
Physik Instrumente (PI)
概述
GenericPIController 封装 PI 通用控制器串口通信,通过 ASCII 命令集控制多种 PI 压电定位平台。
PI 压电控制器 E-xxx 系列
| 通信 | 串口 (RS232) |
| 协议 | PI ASCII 命令集 |
| 轴数 | 取决于控制器型号 |
| 精度 | 亚纳米级 |
驱动模块:
GenericPIController初始化
from quatm.drivers.PhysikInstrumente.base import GenericPIController
# 串口连接
stage = GenericPIController(conn="/dev/ttyUSB0")
# 归零
stage.home(axis=0)
# 绝对定位(µm)
stage.move_to(axis=0, position=50.0)
# 相对移动
stage.move_by(axis=1, delta=10.0)
# 查询当前位置
pos = stage.get_position(axis=0)
关键方法
| 方法 | 说明 |
|---|---|
home(axis) | 指定轴归零 |
move_to(axis, position) | 绝对定位 (µm) |
move_by(axis, delta) | 相对移动 (µm) |
get_position(axis) | 查询当前位置 |
stop(axis) | 紧急停止 |
设备配置
"objective_z": {
"type": "local",
"module": "drivers.PhysikInstrumente.base",
"class": "GenericPIController",
"arguments": {"conn": "/dev/ttyUSB0"},
}
## 使用示例
```python
# 在 Experiment 类中
self.pi_stage = self.get_device("pi_stage")
# 移动到指定位置 (μm)
self.pi_stage.move_absolute(x=50.0, y=25.0, z=10.0)
# 相对移动
self.pi_stage.move_relative(dx=1.0, dy=0.0, dz=0.0)
注意:压电平移台有行程限制,超出范围会触发硬件保护。使用前请查阅设备手册确认最大行程。
Thorlabs 位移台与电机
Quatm 支持多类 Thorlabs 设备,包含位移台、光学测量仪器与相机。
APT/Kinesis 位移台 BasicKinesisDevice
KDC101 / K10CR1 / 滤光轮 Thorlabs APT/Kinesis
| 通信 | 串口 (FTDI) |
| 协议 | APT (二进制) |
| 适用设备 | 直流伺服电机、步进电机、滤光轮、快门 |
驱动模块:
BasicKinesisDevicefrom quatm.drivers.thorlabs.kinesis import BasicKinesisDevice
# 连接指定序列号的设备
stage = BasicKinesisDevice(conn="27200001") # 序列号
# 归零
stage.home()
# 绝对定位(mm)
stage.move_to(position=25.0)
# 读取当前位置
pos = stage.get_position()
Elliptec 压电谐振电机 ElliptecMotor
ELLx 系列 Thorlabs Elliptec
| 通信 | 串口 (9600 baud) |
| 行程 | 取决于滑块长度 |
| 精度 | µm 级 |
| 真空兼容 | 可选 |
驱动模块:
ElliptecMotorfrom quatm.drivers.thorlabs.elliptec import ElliptecMotor
motor = ElliptecMotor(conn="/dev/ttyUSB0", addrs=[0])
motor.move_to(axis=0, position=10.0) # mm
电动滤光轮
from quatm.drivers.thorlabs.serial import FW
fw = FW(conn="/dev/ttyUSB0") # FW102 / FW212
fw.set_position(position=2) # 切换到第 2 个滤光片位置
KDC101 电机平移台
通过 .NET SDK 控制 Thorlabs KDC101/T-Cube 系列电机平移台。
from quatm.drivers.thorlabs.kdc101 import KDC101
stage = KDC101("26001234") # 序列号
stage.home() # 回零
stage.move_absolute(10.0) # 移动到 10.0 mm
pos = stage.get_position() # 读取当前位置
| 功能 | 说明 |
|---|---|
| 回零 | 自动寻找限位开关 |
| 绝对移动 | 移动到指定位置 (mm) |
| 相对移动 | 相对当前位置移动 |
| 位置读取 | 实时读取当前位置 |
##概述
Quatm 支持从压电纳米定位到步进电机长行程的多种运动平台。所有平台继承 io.stage 接口,提供统一的 move_to / get_position / home API。
Attocube ANC300 / ANC350 纳米定位
ANC300 Attocube
| 通信 | TCP/IP (端口 7230) |
| 轴数 | 最多 7 轴 |
| 行程 | mm 级 |
| 精度 | nm 级 |
| 适用 | 低温 / 真空 |
驱动模块:
ANC300from quatm.drivers.Attocube.anc300 import ANC300
anc = ANC300(conn=("192.168.1.30", 7230))
# 归零
anc.home(axis=0)
# 纳米级步进
anc.move_by(axis=0, delta=0.1) # 100 nm
# 连续扫描模式
anc.set_continuous_mode(axis=1, enable=True)
anc.set_continuous_speed(axis=1, speed=100.0) # nm/s
ANC350 Attocube (USB)
| 通信 | USB HID (PyUSB) |
| 轴数 | 最多 3 轴 |
| 控制 | USB 直接连接 |
驱动模块:
ANC350from quatm.drivers.Attocube.anc350 import ANC350
anc = ANC350(conn=0) # 第一台 USB 设备
anc.move_to(axis=0, position=50.0)
Newport Picomotor 8742 4 轴控制器
Picomotor 8742 Newport
| 通信 | USB (PyUSB) 或 TCP/IP Telnet (端口 23) |
| 轴数 | 4 |
| 步长 | < 30 nm |
| 真空兼容 | 可选 |
驱动模块:
Picomotor8742from quatm.drivers.Newport.picomotor import Picomotor8742
# USB 连接
pico = Picomotor8742(conn=0)
# 或 TCP/IP
pico = Picomotor8742(conn="192.168.1.40", multiaddr=(0, 1))
pico.move_to(axis=0, position=5.0) # mm
pico.home(axis=0)
SmarAct MCS2 / SCU3D 高精度定位
MCS2 SmarAct
| 通信 | 原生 MCS2 SDK |
| 轴数 | 最多 18 轴 |
| 精度 | nm 级 |
| 速度 | 最高 20 mm/s |
| 真空/低温 | 可选模块 |
驱动模块:
MCS2from quatm.drivers.SmarAct.MCS2 import MCS2
mcs = MCS2(locator="usb:sn:12345678")
mcs.move_to(axis=0, position=10.0) # mm
mcs.get_position(axis=0)
SCU3D SmarAct 3 轴
| 通信 | SCU3DControl SDK |
| 轴数 | 3 |
驱动模块:
SCU3Dfrom quatm.drivers.SmarAct.scu3d import SCU3D
scu = SCU3D(idx=0)
scu.move_to(axis=1, position=25.0)
Standa 8SMC 步进电机控制器
8SMC4 / 8SMC5 Standa
| 通信 | 串口 (115200 baud) |
| 轴数 | 1–4 |
| 步进分辨率 | 取决于电机/丝杠 |
| 应用 | 长行程位移台、旋转台 |
驱动模块:
Standa8SMCfrom quatm.drivers.standa.base import Standa8SMC
stage = Standa8SMC(conn="/dev/ttyUSB0")
stage.move_to(position=50.0) # mm
stage.home()
Arcus Performax 多轴步进控制
Performax Arcus Technology
| 通信 | USB (DLL) 或 RS485 串口 |
| 轴数 | 最多 4 轴 |
| 功能 | 加减速曲线、限位检测 |
驱动模块:
GenericPerformaxStagefrom quatm.drivers.arcus.performax import GenericPerformaxStage
stage = GenericPerformaxStage(idx=0, conn="USB")
stage.move_to(axis=0, position=100.0)
stage.set_acceleration(axis=0, accel=50.0) # mm/s²
Trinamic TMCM-1110 一体化步进电机
TMCM-1110 Trinamic
| 通信 | 串口 (9600 baud, TMCL 协议) |
| 功能 | StallGuard 失速检测、CoolStep 节能 |
驱动模块:
TMCM1110from quatm.drivers.trinamic.base import TMCM1110
motor = TMCM1110(conn="/dev/ttyUSB0")
motor.move_to(position=180.0) # 旋转 (°)
motor.set_velocity(500.0) # °/s
Thorlabs Elliptec 压电谐振电机
Thorlabs 位移台详情见本页下方。
通用运动平台配置
"objective_z": {
"type": "local",
"module": "drivers.Attocube.anc300",
"class": "ANC300",
"arguments": {"conn": ("192.168.1.30", 7230)},
}
多轴协调
所有io.multiaxisstage 驱动支持独立的轴向映射。通过 muxaxis 工具可将物理轴组合为逻辑坐标系,实现倾斜校正、坐标变换等高级功能。