import GPIBPrologix import bme280 import smbus2 from requests import post import csv import time import datetime import numpy as np from math import sin import os ## Initialize GPIB adapter GPIB = GPIBPrologix.ResourceManager("/dev/ttyACM0") # Connect equipment inst3 = GPIB.open_resource(16) # Initialize BME280 temperature/humidity sensor bus = smbus2.SMBus(1) calibration_params = bme280.load_calibration_params(bus, 0x76) # Advantest R6581T inst3.query("*RST") inst3.query(":CONF:VOLT:DC") inst3.query(":SENS:VOLT:DC:RANG 10") inst3.query(":SENS:VOLT:DC:NPLC 100") inst3.query(":SENS:VOLT:DC:DIG MAX") inst3.query(":ZERO:AUTO ON") # Measurement functions def readValue(instObj): value = instObj.query("FETch?") return value def getEnvironment(instObj, i2cbus): value = instObj.sample(i2cbus, 0x76, calibration_params) return value ## Create proper directory structure basePath = os.getcwd() + "/AdvantestShortedMeasurements/" if not os.path.exists(basePath+"/data/"): os.makedirs(basePath+"/data/") SweepNPLC = [1,10,100] SweepGuard = ['FLO','LOW'] SweepVoltageRange = [0.1,1,10,100] SweepAzero = ['OFF','ON'] for azero in SweepAzero: inst3.query(":ZERO:AUTO "+azero) for NPLC in SweepNPLC: inst3.query(":SENS:VOLT:DC:NPLC "+str(NPLC)) inst3.query(":SENS:VOLT:DC:DIG MAX") for Guard in SweepGuard: inst3.query(":INP:GUAR "+str(NPLC)) for VoltageRange in SweepVoltageRange: inst3.query(":SENS:VOLT:DC:RANG "+str(VoltageRange)) inst3.query(":SENS:VOLT:DC:DIG MAX") ## Create logfile logFileName = 'Advantest-R6581T-NoGuardWire-ShieldCan-'+'Guard_'+Guard+'-'+str(NPLC)+'_NPLC-'+str(VoltageRange)+'_VRange-AZ_'+azero+'.csv' with open(basePath+"/data/"+logFileName, 'a') as f: writer = csv.writer(f) writer.writerow(["DateTime","Measured Volts","Env Pressure","Env Temperature", "Env Humidity"]) print(basePath+"/data/"+logFileName) cntr = 0 d = datetime.datetime.now() dlast = datetime.datetime.now() ## Collect data time.sleep(10) sweep = range(200) for x in sweep: cntr = cntr + 1 try: time.sleep((1/50)*NPLC*2.5) timebetween = (d-dlast) * (len(sweep)-cntr) dlast = d print(str(cntr)+'/'+str(len(sweep))+' Estimated Time Left: '+str(timebetween)) readout = readValue(inst3) data = getEnvironment(bme280, bus) #Write to file d = datetime.datetime.now() dx = d - datetime.timedelta(microseconds=d.microsecond) fields=[dx.strftime("%d-%m-%y %H:%M:%S"),float(readout),round(data.humidity,2),round(data.temperature,2),round(data.pressure,2)] print(fields) with open(basePath+"/data/"+logFileName, 'a') as f: writer = csv.writer(f) writer.writerow(fields) except Exception as e: time.sleep(3) i = i-1