The MDTD Series Motor-driven Variable Optical Fiber Delay Lines provide precision optical delays of up to 2100 ps. It is a turn-key unit, coming with a wall plug power supply, a computer interface USB cable, and a user-friendly GUI software. The simple design consists of two fiber collimators and a movable reflector controlled by a precision step motor. Light from an input fiber collimator projects into free space and is collected by an output fiber collimator. The distance the light travels in free space is varied by a precision stage. The device is conveniently controlled by a computer via a USB cable interface. A graphic control software is provided. We have two of these delay stages


Vendor: Agiltron

Model: 330ps Delay Stage

Current Location: 26-352

Setup Instructions: Install both the driver and software from the USB drive accompanying the delay stages. They can be controlled using the software or the python code given below. The driver and the software must be installed for the python code to work.

Python Codes:

import serial
import time
import time
import sys
import binascii
import inspect
import numpy as np

 

def send_command(port_address,cmd_string):
cmd_bytes = bytearray.fromhex(cmd_string)
for cmd_byte in cmd_bytes:
hex_byte = ("{0:02x}".format(cmd_byte))
#print (hex_byte)
port_address.write(bytearray.fromhex(hex_byte))
time.sleep(.100)
response = port_address.read(16)
#print ("response:", binascii.hexlify(bytearray(response)))
return binascii.hexlify(bytearray(response))

 

def home_stage(port_address):
homing_command='012000000000'
answer1=send_command(port_address,homing_command)
homing_command='012100000000'
check1=send_command(port_address,homing_command)
if str(check1)[-2]=='0':
print('Homing Success')
if str(check1)[-2]=='1':
print('Homing Failure')
return

 

def set_target_position(port_address,delay_in_ps):
delay_in_ps=np.absolute(delay_in_ps)
if delay_in_ps>333:
print('ERROR:Delay Out of Bounds:Stage Not Moved')
return
hx_tgt=str(hex(int(np.floor(80000*delay_in_ps/333))))
target=hx_tgt[2:len(hx_tgt)]
for indx in range(8-len(target)):
target = '0'+target
cmd_string='0114'+target
answer1=send_command(port_address,cmd_string)
curdel=(int(str(answer1)[-9:-1],16))*333/80000
print('Delay is set to '+str(curdel)+'ps')
return curdel

 

def read_current_position(port_address):
cmd_string='011600000000'
answer1=send_command(port_address,cmd_string)
curdel=(int(str(answer1)[-9:-1],16))*333/80000
print('Current delay is '+str(curdel)+'ps')
return curdel

 

serialPort1 = serial.Serial(
port="COM5", baudrate=9600, bytesize=8, timeout=2, stopbits=serial.STOPBITS_ONE
)
serialPort2 = serial.Serial(
port="COM9", baudrate=9600, bytesize=8, timeout=2, stopbits=serial.STOPBITS_ONE
)
print(serialPort1.isOpen())
print(serialPort2.isOpen())

#set_target_position(serialPort1,100.0)
#set_target_position(serialPort2,100.0)

##---------Home delay lines
home_stage(serialPort1)
home_stage(serialPort2)


serialPort1.close()
serialPort2.close()

 

serialPort1 = serial.Serial(
port="COM5", baudrate=9600, bytesize=8, timeout=2, stopbits=serial.STOPBITS_ONE
)
serialPort2 = serial.Serial(
port="COM9", baudrate=9600, bytesize=8, timeout=2, stopbits=serial.STOPBITS_ONE
)
print(serialPort1.isOpen())
print(serialPort2.isOpen())

##---------Home delay lines
#home_stage(serialPort1)
#home_stage(serialPort2)

set_target_position(serialPort1,150)
set_target_position(serialPort2,150)

read_current_position(serialPort1)
read_current_position(serialPort2)

serialPort1.close()
serialPort2.close()

 

Price: 2300$  

Purchase Date: 04/01/2023

  • No labels