Magnetic Field Sweep and Spatial Mapping Automation
Author: Serdar (adjusted by Lukas and Ryan)
Last Updated: April 2025
Filename: Mag_Field_Sweep_2024_10_21.py
Overview
This script automates spectral acquisition in a magneto-optical experiment using:
- LightField for spectrometer control (Princeton Instruments)
- AMC Positioner for precise spatial scanning
- Attocube APS100 power supplies for magnetic field control
It enables:
- Magnetic field sweeps along selected axes
- Spatial scans across X-Y positions
- B-field vector rotations with spectral capture
- Live spectrum acquisition and intensity mapping
Features
- 2D Spatial Scan: Raster-scan across a surface using AMC positioners, capturing spectra at each coordinate.
- Magnetic Field Sweep: Vary B-fields in controlled steps along x/y/z, measure spectra at each step.
- Field Rotation: Circular B-field rotation (in-plane) with angle-defined steps.
- Automated File Handling: Acquires
.spe
files, extracts and saves intensity/wavelengths, deletes intermediates. - Flexible Configuration: Resolution, range, exposure, filters, filenames and scan directions are all customizable.
Prerequisites
Hardware
- AMC100/AMC300 positioner
- Attocube APS100 single/dual-channel magnet power supplies
- Spectrometer compatible with Princeton Instruments LightField
Software & Libraries
- Python 3.8+
- Packages:
pyvisa
,numpy
,matplotlib
,pandas
,clr
,spe2py
,spe_loader
,AMC
module - .NET integration via
pythonnet
- LightField SDK: Princeton Instruments (with DLLs loaded via
clr
)
Note: Ensure
LIGHTFIELD_ROOT
environment variable is set.
Setup
-
Install dependencies
pip install pyvisa pandas numpy matplotlib pythonnet
-
Ensure required DLLs are present in:
C:\Program Files\Princeton Instruments\LightField\
-
Set up device IPs
IP_AMC100 = "192.168.71.100" # or AMC300
-
Edit scan parameters in main block:
range_x = 20000 range_y = 20000 resolution = 1000 # nanometers set_llim_bval = -0.3 set_ulim_bval = 0.3 set_res_bval = 0.003 # Tesla
Main Functions
move_scan_xy(range_x, range_y, resolution, Settings, baseFileName)
Performs a 2D XY raster scan of the probe. Acquires spectra and saves results.
sweep_b_val(instr, min_bval, max_bval, res, axis, Settings, base_file_name)
Sweeps magnetic field (in T) along the specified axis, collecting spectra at each field.
ramp_b_val(instr, bval, magnet_coil)
Smooth ramping of B-field to target value.
b_field_rotation(instr1, instr2, Babs, startangle, endangle, step, Settings)
Rotates the in-plane magnetic field by vector combination of Bx and By components.
File Saving
.txt
: Intensity data and wavelength arrays saved to timestamped folders- Folder names include experiment metadata
.spe
files are deleted after processing to conserve space
Usage Example
To sweep B-field along the Y-axis:
sweep_b_val(
instr=powerbox_singlesupply,
min_bval=-0.3,
max_bval=0.3,
res=0.003,
magnet_coil='y-axis',
Settings='experiment_config',
base_file_name='scan_name',
zerowhenfin_bool=True,
reversescan_bool=False,
loopscan_bool=True
)
Notes
- Always close power supply connections with
.close()
- Make sure
.spe
files are not locked by LightField before running - The AMC section is currently commented — uncomment if positioner control is needed
- Ensure
experiment.Load(...)
points to the correct.lfe
config
Troubleshooting
- DLL loading issues? Confirm path via
sys.path.append(...)
and DLL names. - Communication errors? Check serial port resource names via
pyvisa.ResourceManager().list_resources()
- No spectra saved? Ensure LightField is licensed and experiment file is valid.
License
Internal use only – please contact the authors before distribution or reuse.