ATX Repeat Test

PowerScript
main 0 files
ATX Repeat Test..js
ATX Repeat Test..js 3564 bytes
//Save Directory
baseDir = 'C:/Users/RRD_LAB/Desktop/Scrip_Test/'
visionDir = 'C:/Users/RRD_LAB/Desktop/Scrip_Test/Vision/'

//Create Data List
function createArray(length) {
   	var arr = new Array(length || 0),
      		i = length;

   	if (arguments.length > 1) {
		var args = Array.prototype.slice.call(arguments, 1);
		while(i--) arr[length-1 - i] = createArray.apply(this, args);
	}

	return arr;
}

var intensityList = createArray(8, 10)
var vertList = createArray(8, 10)
var latList = createArray(8, 10)
var freqList = createArray(8, 10)
var ampList = createArray(8, 10)
var qFactorList = createArray(8, 10)

//Common Variables
targetAmp = 20.0
startFreq = 100 * 1000
endFreq = 500 * 1000
drivePercent = 25.0

zSafePos = 20000
zMargin = 1000
zFastSpeed = 1.0
zSlowSpeed = 0.3
focusMargin = 250

spm.addChannel('intensity')
spm.addChannel('a-b')
spm.addChannel('lfm')

//Start
for(i = 0; i < 10; i++){

	repeatNum = i + 1
	print("Repeat#" + repeatNum)
	
	for(j = 0; j < 8; j++){

		slotNum = j + 1
		
		//Park Into
		print("Park into slot#" + slotNum)
		
		x = spm.fx.probeExchanger.slot(j).pos.x
		y = spm.fx.probeExchanger.slot(j).pos.y
		z = spm.fx.probeExchanger.slot(j).pos.z

		spm.zstage.moveTo(zSafePos)
		spm.xystage.moveTo(x, y)
		spm.fx.atx.open()
		spm.fx.atx.magnetOff()
		spm.zstage.moveTo(z + zMargin, zFastSpeed)
		spm.zstage.moveTo(z, zSlowSpeed)
		spm.fx.atx.magnetOn()

		path = visionDir + 'slot#' + slotNum + '_parkInto_rep_' + repeatNum + '.png'
		spm.focusstage.move(-focusMargin)
		spm.vision.capture(path)
		spm.sleep(1000)
		spm.focusstage.move(focusMargin)
		spm.zstage.moveTo(zSafePos)

		//Pickup At
		print("Pickup at slot#" + slotNum)

		spm.zstage.moveTo(zSafePos)
		spm.xystage.moveTo(x, y)
		spm.fx.atx.open()
		spm.fx.atx.magnetOn()
		spm.zstage.moveTo(z + zMargin, zFastSpeed)
		spm.zstage.moveTo(z, zSlowSpeed)
		spm.fx.atx.magnetOff()
		spm.zstage.moveTo(zSafePos)

		path = visionDir + 'slot#' + slotNum + '_pickupAt_rep_' + repeatNum + '.png'
		spm.vision.capture(path)
		spm.sleep(1000)
		
		//Measure PSPD signals
		print("Measuring PSPD data")
		intensityList[j][i] = spm.readChannelAveraged('intensity', 10, 10)
		vertList[j][i] = spm.readChannelAveraged('a-b', 10, 10)
		latList[j][i] = spm.readChannelAveraged('lfm', 10, 10)

		//NCM Auto Sweep
		print("Performing NCM sweep")
		spm.ncm.sweepAuto(targetAmp, startFreq, endFreq, drivePercent)

		ampList[j][i] = spm.ncm.sweepResult.peakAmp
		freqList[j][i] = (spm.ncm.sweepResult.peakFreq) / 1000
		qFactorList[j][i] = spm.ncm.sweepResult.qFactor
	}
}

//Save PSPD data
print("Saving data")

path = baseDir + 'result_pspd.txt'
app.setLogFile(path)
app.setLogFileEnabled(true)

print('Repeat,1,2,3,4,5,6,7,8,9,10')

for(k = 0; k < 8; k++){
	print('Slot#' + (k+1) + '_Intensity (V),' + intensityList[k])}
for(k = 0; k < 8; k++){
	print('Slot#' + (k+1) + '_A-B (V),' + vertList[k])}
for(k = 0; k < 8; k++){
	print('Slot#' + (k+1) + '_C-D (V),' + latList[k])}

app.setLogFileEnabled(false)
spm.sleep(1000)

//Save NCM sweep data
path = baseDir + 'result_ncmSweep.txt'
app.setLogFile(path)
app.setLogFileEnabled(true)

print('Repeat,1,2,3,4,5,6,7,8,9,10')

for(k = 0; k < 8; k++){
	print('Slot#' + (k+1) + '_peakFreq (kHz),' + freqList[k])}
for(k = 0; k < 8; k++){
	print('Slot#' + (k+1) + '_peakAmp (nm),' + ampList[k])}
for(k = 0; k < 8; k++){
	print('Slot#' + (k+1) + '_qFactor,' + qFactorList[k])}

app.setLogFileEnabled(false)
Comments (0)

No comments yet. Be the first to comment!

Snippet Information
Author: daeyeon.won
Language: PowerScript
Created: Oct 23, 2025
Updated: 0 minutes ago
Views: 17
Stars: 2