From d2851986a75aed691fba8acd93b0ad9841d1bb6e Mon Sep 17 00:00:00 2001 From: root Date: Fri, 10 May 2024 00:02:21 +0100 Subject: [PATCH] Add INL Sweep hp-3458A-2823A14043---datron-4805-XANS1---AZEROSWEEP.csv --- .../datron-4805-XANS1/README.md | 3 + .../datron-4805-XANS1/data/INLV-3458ADat.py | 188 ++++++++++++++++++ ...14043---datron-4805-XANS1---AZEROSWEEP.csv | 142 +++++++++++++ ...14043---datron-4805-XANS1---AZEROSWEEP.jpg | Bin 0 -> 26139 bytes 4 files changed, 333 insertions(+) create mode 100644 hp-3458A-2823A14043/datron-4805-XANS1/README.md create mode 100644 hp-3458A-2823A14043/datron-4805-XANS1/data/INLV-3458ADat.py create mode 100644 hp-3458A-2823A14043/datron-4805-XANS1/data/hp-3458A-2823A14043---datron-4805-XANS1---AZEROSWEEP.csv create mode 100644 hp-3458A-2823A14043/datron-4805-XANS1/data/hp-3458A-2823A14043---datron-4805-XANS1---AZEROSWEEP.jpg diff --git a/hp-3458A-2823A14043/datron-4805-XANS1/README.md b/hp-3458A-2823A14043/datron-4805-XANS1/README.md new file mode 100644 index 0000000..5a307b6 --- /dev/null +++ b/hp-3458A-2823A14043/datron-4805-XANS1/README.md @@ -0,0 +1,3 @@ +| Meter Manufacturer | Meter Model | Meter SerialNumber | Source Manufacturer | Source Model | Source SerialNumber | MinMax | File | ID | User | +|--------------------|-------------|--------------------|---------------------|--------------|---------------------|--------|------|----|------| +|hp|3458A|2823A14043|datron|4805|XANS1|0.0|/data/hp-3458A-2823A14043---datron-4805-XANS1---AZEROSWEEP.jpg|AZEROSWEEP|xans| diff --git a/hp-3458A-2823A14043/datron-4805-XANS1/data/INLV-3458ADat.py b/hp-3458A-2823A14043/datron-4805-XANS1/data/INLV-3458ADat.py new file mode 100644 index 0000000..055dcfd --- /dev/null +++ b/hp-3458A-2823A14043/datron-4805-XANS1/data/INLV-3458ADat.py @@ -0,0 +1,188 @@ +import GPIBPrologix +import bme280 +import smbus2 +from requests import post +import time + +## Initialize GPIB adapter +GPIB = GPIBPrologix.ResourceManager("/dev/ttyACM0") +# Connect equipment +inst2 = GPIB.open_resource(30) +inst3 = GPIB.open_resource(22) +# Initialize BME280 temperature/humidity sensor +bus = smbus2.SMBus(1) +## Configure equipment +# BME280 temperature/humidity sensor +calibration_params = bme280.load_calibration_params(bus, 0x76) + +# Datron 4805 Calibrator +inst2.query("F0=") #DCV +inst2.query("R6=") #10/100K Range +inst2.query("S1=") #RemoteSense +inst2.query("M0.0069=") #6.9mV Out, sanity check +inst2.query("O1=") #OutputON +#Setup 34401A +inst3.write("RESET") +inst3.write("MEM OFF") +inst3.write("OFORMAT ASCII") +inst3.write("END ALWAYS") +inst3.write("TARM AUTO") +inst3.write("DCV 10") +inst3.write("NRDGS 1,AUTO") +inst3.write("NPLC 100") +inst3.write("NDIG 9") +inst3.write("AZERO ON") + +# Measurement functions +def readValue(instObj): + instObj.write("BEEP OFF") + print(instObj.read()) + value = "" + while value == "": + value = instObj.read() + print(value) + return value +def setValue(instObj, inputVar): + instObj.query("M"+str(inputVar)+"=") + return inputVar +def getEnvironment(instObj, i2cbus): + value = instObj.sample(i2cbus, 0x76, calibration_params) + return value +setValue(inst2,-1) +inst3.write("BEEP") +readValue(inst3) + +## Have gitpython pull in the repository +import os +import git +import shutil +username = input("Your 0xC6 git username: ") +password = input("Your 0xC6 git password: ") +remote = f"https://{username}:{password}@git.0xc6.com/xans/INL-Measurements.git" +if not os.path.exists(os.getcwd()+"/INL-Measurements"): + git.Repo.clone_from(remote, os.getcwd()+"/INL-Measurements/") +else: + shutil.rmtree(os.getcwd()+"/INL-Measurements/", ignore_errors=True) + git.Repo.clone_from(remote, os.getcwd()+"/INL-Measurements/") + +## Get needed info to properly label everything +MeterManufacturer = input("Meter Manufacturer: ").lower() +MeterModel = input("Meter Model: ").upper() +MeterSN = input("Meter SN: ").upper() +SourceManufacturer = input("Source Manufacturer: ").lower() +SourceModel = input("Source Model: ").upper() +SourceSN = input("Source SN: ").upper() +measid = input("Personally assigned measurement ID: ").upper() +shellyIp = input("If you use shelly for protection, enter the IP: ").upper() + +if shellyIp and os.system("ping -c 1 " + shellyIp): + print("shelly not found") + quit() +if shellyIp: + url = "{}://{}:{}/relay/0?turn=on".format("http", "192.168.0.101", "80") + post(url) + +## Create proper directory structure +basePath = os.getcwd() + "/INL-Measurements/" +dutname = MeterManufacturer+'-'+MeterModel+'-'+MeterSN +if not os.path.exists(basePath+dutname): + os.makedirs(basePath+dutname) +sourcename = SourceManufacturer+'-'+SourceModel+'-'+SourceSN +if not os.path.exists(basePath+dutname+'/'+sourcename): + os.makedirs(basePath+dutname+'/'+sourcename) +if not os.path.exists(basePath+dutname+'/'+sourcename+"/data/"): + os.makedirs(basePath+dutname+'/'+sourcename+"/data/") +basePath = basePath+dutname+'/'+sourcename +print(basePath+"/data/") + +import csv +import time +import datetime +import numpy as np +import pandas as pd +from math import sin +## Create logfile +logFileName = MeterManufacturer+'-'+MeterModel+'-'+MeterSN+'---'+SourceManufacturer+'-'+SourceModel+'-'+SourceSN+'---'+measid+'.csv' +with open(basePath+"/data/"+logFileName, 'a') as f: + writer = csv.writer(f) + writer.writerow(["DateTime","Set Volts","Measured Volts","Env Pressure","Env Temperature", "Env Humidity"]) +print(basePath+"/data/"+logFileName) + +sweep = np.arange(-11.5,12,0.5) + +cntr = 0 +d = datetime.datetime.now() +dlast = datetime.datetime.now() +## Collect data +time.sleep(3) +for x in sweep: + cntr = cntr + 1 + try: + #Set volt and let accimatize + setPoint = setValue(inst2,round(x,5)) + timebetween = (d-dlast) * (len(sweep)-cntr) + dlast = d + print(str(cntr)+'/'+str(len(sweep))+' Estimated Time Left: '+str(timebetween)) + time.sleep(60) + for i in range(3): + try: + time.sleep(5) + #Get DUT value + readout = readValue(inst3) + #Get envirnmental values + 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"),setPoint,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) + if shellyIp and float(data.temperature) > 30 or float(data.temperature) < 16: + url = "{}://{}:{}/relay/0?turn=off".format("http", "192.168.0.101", "80") + post(url) + except Exception as e: + time.sleep(15) + i = i-1 + except Exception as e: + print(e) + time.sleep(1) + +## Calculate high order polynomial +df = pd.read_csv(basePath+"/data/"+logFileName) +df = df.groupby(["Set Volts"], as_index=False).mean(numeric_only=True) +highOrderPolyFit = np.polyfit(df["Set Volts"], df["Set Volts"]-df["Measured Volts"], 12) +trendPoly = np.poly1d(highOrderPolyFit) +## Make plot and save +import sys +from matplotlib import pyplot as plt +plt.plot(df["Set Volts"], df["Set Volts"]-df["Measured Volts"]) +polyIndex = np.arange(-11,11,0.01) +plt.plot(polyIndex, trendPoly(polyIndex)) +plt.xlabel('Source Voltage') +plt.ylabel('Delta Set/Meas') +plt.title ('INLV sweep '+ logFileName[:-4]) +plt.savefig(basePath+"/data/"+logFileName[:-4]+".jpg", bbox_inches='tight') + +minVal = trendPoly(polyIndex) +maxVal = trendPoly(polyIndex) +minVal = min(minVal) +maxVal = min(maxVal) +## Write away values to result overview +if not os.path.exists(basePath+'/README.md'): + with open(basePath+'/README.md', 'a') as f: + f.write("| Meter Manufacturer | Meter Model | Meter SerialNumber | Source Manufacturer | Source Model | Source SerialNumber | MinMax | File | ID | User |\n") + f.write("|--------------------|-------------|--------------------|---------------------|--------------|---------------------|--------|------|----|------|\n") + f.close() +with open(basePath+'/README.md', 'a') as f: + linkToImg = "/data/"+logFileName[:-4]+".jpg" + print("|"+MeterManufacturer+"|"+MeterModel+"|"+MeterSN+"|"+SourceManufacturer+"|"+SourceModel+"|"+SourceSN+"|"+str(round((maxVal-minVal),10))+"|"+linkToImg+"|"+measid+"|"+username+"|\n") + f.write("|"+MeterManufacturer+"|"+MeterModel+"|"+MeterSN+"|"+SourceManufacturer+"|"+SourceModel+"|"+SourceSN+"|"+str(round((maxVal-minVal),10))+"|"+linkToImg+"|"+measid+"|"+username+"|\n") + f.close() + shutil.copy(os.getcwd()+'/'+sys.argv[0],basePath+"/data/") + repo = git.Repo(os.getcwd() + "/INL-Measurements/") + repo.git.add(basePath) + repo.index.commit("Add INL Sweep "+ logFileName) + repo.remotes[0].push() + diff --git a/hp-3458A-2823A14043/datron-4805-XANS1/data/hp-3458A-2823A14043---datron-4805-XANS1---AZEROSWEEP.csv b/hp-3458A-2823A14043/datron-4805-XANS1/data/hp-3458A-2823A14043---datron-4805-XANS1---AZEROSWEEP.csv new file mode 100644 index 0000000..45b1792 --- /dev/null +++ b/hp-3458A-2823A14043/datron-4805-XANS1/data/hp-3458A-2823A14043---datron-4805-XANS1---AZEROSWEEP.csv @@ -0,0 +1,142 @@ +DateTime,Set Volts,Measured Volts,Env Pressure,Env Temperature,Env Humidity +09-05-24 22:55:46,-11.5,-11.4999911,58.68,22.79,1022.41 +09-05-24 22:55:54,-11.5,-11.49999128,58.68,22.79,1022.41 +09-05-24 22:56:03,-11.5,-11.499991,58.67,22.78,1022.37 +09-05-24 22:57:12,-11.0,-10.99999244,58.79,22.74,1022.43 +09-05-24 22:57:21,-11.0,-10.9999927,58.73,22.73,1022.42 +09-05-24 22:57:29,-11.0,-10.99999258,58.83,22.72,1022.43 +09-05-24 22:58:39,-10.5,-10.49999114,58.89,22.7,1022.46 +09-05-24 22:58:47,-10.5,-10.49999121,58.94,22.7,1022.37 +09-05-24 22:58:56,-10.5,-10.49999159,58.92,22.7,1022.38 +09-05-24 23:00:05,-10.0,-9.999992436,59.0,22.7,1022.46 +09-05-24 23:00:14,-10.0,-9.999992507,59.05,22.7,1022.41 +09-05-24 23:00:22,-10.0,-9.999991979,59.0,22.7,1022.41 +09-05-24 23:01:32,-9.5,-9.499990834,59.03,22.71,1022.39 +09-05-24 23:01:40,-9.5,-9.49999013,59.05,22.72,1022.38 +09-05-24 23:01:48,-9.5,-9.49999057,59.05,22.72,1022.41 +09-05-24 23:02:58,-9.0,-8.999991308,59.11,22.64,1022.25 +09-05-24 23:03:06,-9.0,-8.999991325,59.08,22.73,1022.42 +09-05-24 23:03:15,-9.0,-8.999991237,59.11,22.73,1022.39 +09-05-24 23:04:24,-8.5,-8.499989494,59.15,22.72,1022.43 +09-05-24 23:04:33,-8.5,-8.49999062,59.09,22.73,1022.42 +09-05-24 23:04:41,-8.5,-8.499990691,59.13,22.73,1022.42 +09-05-24 23:05:51,-8.0,-7.999991376,59.03,22.35,1021.71 +09-05-24 23:05:59,-8.0,-7.999991499,59.14,22.74,1022.44 +09-05-24 23:06:08,-8.0,-7.999991622,59.15,22.76,1022.41 +09-05-24 23:07:17,-7.5,-7.499990935,59.2,22.74,1022.46 +09-05-24 23:07:26,-7.5,-7.499990847,59.15,22.74,1022.47 +09-05-24 23:07:34,-7.5,-7.499990038,59.14,22.75,1022.37 +09-05-24 23:08:44,-7.0,-6.999991128,59.14,22.03,1021.15 +09-05-24 23:08:52,-7.0,-6.999991128,59.19,22.76,1022.4 +09-05-24 23:09:01,-7.0,-6.999991374,59.12,22.76,1022.44 +09-05-24 23:10:10,-6.5,-6.499991725,59.16,22.79,1022.44 +09-05-24 23:10:19,-6.5,-6.49999183,59.15,22.79,1022.44 +09-05-24 23:10:27,-6.5,-6.49999213,59.1,22.78,1022.42 +09-05-24 23:11:36,-6.0,-5.999990826,59.25,22.62,1022.15 +09-05-24 23:11:45,-6.0,-5.999991266,59.22,22.77,1022.46 +09-05-24 23:11:53,-6.0,-5.999991161,59.23,22.78,1022.48 +09-05-24 23:13:03,-5.5,-5.499992075,59.2,22.78,1022.48 +09-05-24 23:13:11,-5.5,-5.499991388,59.14,22.78,1022.4 +09-05-24 23:13:20,-5.5,-5.499991424,59.22,22.76,1022.42 +09-05-24 23:14:29,-5.0,-4.999990965,59.35,22.78,1022.42 +09-05-24 23:14:38,-5.0,-4.999991176,59.34,22.78,1022.37 +09-05-24 23:14:46,-5.0,-4.999991123,59.33,22.78,1022.4 +09-05-24 23:15:56,-4.5,-4.499991298,59.35,22.78,1022.4 +09-05-24 23:16:04,-4.5,-4.499991404,59.38,22.79,1022.44 +09-05-24 23:16:13,-4.5,-4.499991316,59.34,22.79,1022.44 +09-05-24 23:17:22,-4.0,-3.999991068,59.4,22.8,1022.38 +09-05-24 23:17:31,-4.0,-3.999990611,59.39,22.79,1022.36 +09-05-24 23:17:39,-4.0,-3.999990541,59.36,22.79,1022.39 +09-05-24 23:18:49,-3.5,-3.499992299,59.44,22.8,1022.44 +09-05-24 23:18:57,-3.5,-3.499991912,59.39,22.64,1022.17 +09-05-24 23:19:06,-3.5,-3.499992264,59.39,22.79,1022.45 +09-05-24 23:20:15,-3.0,-2.999991295,59.41,22.8,1022.4 +09-05-24 23:20:24,-3.0,-2.999991348,59.44,22.79,1022.42 +09-05-24 23:20:32,-3.0,-2.999991278,59.46,22.79,1022.45 +09-05-24 23:21:42,-2.5,-2.499991488,59.46,22.81,1022.42 +09-05-24 23:21:50,-2.5,-2.499991681,59.43,22.81,1022.38 +09-05-24 23:21:58,-2.5,-2.499991628,59.47,22.82,1022.41 +09-05-24 23:23:08,-2.0,-1.999991434,59.22,22.92,1022.42 +09-05-24 23:23:16,-2.0,-1.999991434,59.23,22.93,1022.39 +09-05-24 23:23:25,-2.0,-1.999991575,59.17,22.92,1022.38 +09-05-24 23:24:34,-1.5,-1.499992981,59.35,22.89,1022.45 +09-05-24 23:24:43,-1.5,-1.499992964,59.43,22.89,1022.43 +09-05-24 23:24:51,-1.5,-1.499992911,59.38,22.9,1022.41 +09-05-24 23:26:01,-1.0,-0.9999936139,59.43,22.88,1022.43 +09-05-24 23:26:09,-1.0,-0.9999936491,59.38,22.88,1022.42 +09-05-24 23:26:18,-1.0,-0.9999935259,59.42,22.88,1022.39 +09-05-24 23:27:27,-0.5,-0.4999928033,59.52,22.86,1022.35 +09-05-24 23:27:36,-0.5,-0.4999928913,59.47,22.85,1022.41 +09-05-24 23:27:44,-0.5,-0.4999930321,59.49,22.86,1022.35 +09-05-24 23:28:54,0.0,5.332328122e-06,59.45,22.87,1022.34 +09-05-24 23:29:02,0.0,5.561107876e-06,59.46,22.88,1022.36 +09-05-24 23:29:11,0.0,5.45551722e-06,59.43,22.88,1022.38 +09-05-24 23:30:20,0.5,0.4999960942,59.59,22.89,1022.42 +09-05-24 23:30:29,0.5,0.4999960766,59.61,22.9,1022.41 +09-05-24 23:30:37,0.5,0.4999958654,59.6,22.9,1022.4 +09-05-24 23:31:47,1.0,0.9999964648,59.61,22.89,1022.37 +09-05-24 23:31:55,1.0,0.9999963592,59.63,22.88,1022.33 +09-05-24 23:32:04,1.0,0.9999963416,59.65,22.88,1022.44 +09-05-24 23:33:13,1.5,1.4999949,59.59,22.88,1022.39 +09-05-24 23:33:21,1.5,1.499994988,59.54,22.73,1022.12 +09-05-24 23:33:30,1.5,1.499995023,59.57,22.88,1022.38 +09-05-24 23:34:39,2.0,1.999994566,59.65,22.89,1022.42 +09-05-24 23:34:48,2.0,1.999994514,59.6,22.88,1022.41 +09-05-24 23:34:56,2.0,1.999994461,59.63,22.87,1022.43 +09-05-24 23:36:06,2.5,2.499994708,59.64,22.64,1022.01 +09-05-24 23:36:14,2.5,2.499994638,59.71,22.86,1022.41 +09-05-24 23:36:23,2.5,2.499994655,59.73,22.68,1022.11 +09-05-24 23:37:32,3.0,2.999993917,59.77,22.84,1022.36 +09-05-24 23:37:41,3.0,2.999994093,59.84,22.86,1022.35 +09-05-24 23:37:49,3.0,2.999994058,59.84,22.86,1022.43 +09-05-24 23:38:59,3.5,3.499994569,59.66,22.9,1022.39 +09-05-24 23:39:07,3.5,3.49999471,59.72,22.9,1022.39 +09-05-24 23:39:16,3.5,3.499994464,59.72,22.89,1022.35 +09-05-24 23:40:25,4.0,3.999993268,59.8,22.91,1022.43 +09-05-24 23:40:34,4.0,3.999993409,59.78,22.89,1022.38 +09-05-24 23:40:42,4.0,3.999993919,59.85,22.9,1022.39 +09-05-24 23:41:51,4.5,4.499994096,59.8,22.89,1022.37 +09-05-24 23:42:00,4.5,4.499994431,59.82,22.88,1022.44 +09-05-24 23:42:08,4.5,4.499994624,59.87,22.89,1022.34 +09-05-24 23:43:18,5.0,4.999994291,59.77,22.33,1021.37 +09-05-24 23:43:26,5.0,4.999994274,59.82,22.91,1022.43 +09-05-24 23:43:35,5.0,4.999994291,59.84,22.92,1022.43 +09-05-24 23:44:44,5.5,5.499995242,59.81,22.92,1022.42 +09-05-24 23:44:53,5.5,5.499994732,59.71,22.9,1022.36 +09-05-24 23:45:01,5.5,5.499995084,59.86,22.9,1022.39 +09-05-24 23:46:11,6.0,5.999994117,59.88,22.91,1022.38 +09-05-24 23:46:19,6.0,5.99999424,59.87,22.9,1022.36 +09-05-24 23:46:28,6.0,5.999993976,59.82,22.54,1021.8 +09-05-24 23:47:37,6.5,6.499995262,59.93,22.88,1022.44 +09-05-24 23:47:46,6.5,6.499995086,59.96,22.88,1022.43 +09-05-24 23:47:54,6.5,6.499994981,60.02,22.87,1022.36 +09-05-24 23:49:04,7.0,6.999994084,59.99,22.47,1021.65 +09-05-24 23:49:12,7.0,6.999994348,59.99,22.9,1022.4 +09-05-24 23:49:21,7.0,6.999994454,60.0,22.9,1022.42 +09-05-24 23:50:30,7.5,7.499993821,59.96,22.75,1022.14 +09-05-24 23:50:39,7.5,7.49999412,60.0,22.92,1022.38 +09-05-24 23:50:47,7.5,7.499994349,59.94,22.92,1022.37 +09-05-24 23:51:57,8.0,7.999994825,59.75,22.67,1022.01 +09-05-24 23:52:05,8.0,7.999994808,59.92,22.9,1022.31 +09-05-24 23:52:13,8.0,7.999995265,60.02,22.9,1022.41 +09-05-24 23:53:23,8.5,8.499994263,60.01,22.92,1022.37 +09-05-24 23:53:31,8.5,8.499994492,59.83,22.04,1020.85 +09-05-24 23:53:40,8.5,8.499994492,59.93,22.9,1022.32 +09-05-24 23:54:49,9.0,8.999995197,60.04,22.71,1021.99 +09-05-24 23:54:58,9.0,8.999995443,60.04,22.92,1022.29 +09-05-24 23:55:06,9.0,8.999995461,60.05,22.93,1022.36 +09-05-24 23:56:16,9.5,9.499994318,60.08,22.93,1022.36 +09-05-24 23:56:24,9.5,9.499994248,60.01,22.75,1022.05 +09-05-24 23:56:33,9.5,9.499994952,60.03,22.94,1022.38 +09-05-24 23:57:42,10.0,9.999996079,59.98,22.93,1022.42 +09-05-24 23:57:51,10.0,9.999995938,60.04,22.93,1022.39 +09-05-24 23:57:59,10.0,9.999995639,60.02,22.69,1021.95 +09-05-24 23:59:09,10.5,10.49999576,60.17,22.92,1022.42 +09-05-24 23:59:17,10.5,10.49999594,60.02,22.92,1022.42 +09-05-24 23:59:26,10.5,10.49999576,60.15,22.92,1022.4 +10-05-24 00:00:35,11.0,10.99999723,60.11,22.93,1022.31 +10-05-24 00:00:44,11.0,10.99999733,60.15,22.94,1022.33 +10-05-24 00:00:52,11.0,10.99999772,60.14,22.94,1022.33 +10-05-24 00:02:02,11.5,11.49999749,60.07,22.95,1022.4 +10-05-24 00:02:10,11.5,11.49999775,60.07,22.95,1022.35 +10-05-24 00:02:18,11.5,11.49999705,60.07,22.95,1022.3 diff --git a/hp-3458A-2823A14043/datron-4805-XANS1/data/hp-3458A-2823A14043---datron-4805-XANS1---AZEROSWEEP.jpg b/hp-3458A-2823A14043/datron-4805-XANS1/data/hp-3458A-2823A14043---datron-4805-XANS1---AZEROSWEEP.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2950c97ddedf9decbe45d1945d993d1bcd447fc6 GIT binary patch literal 26139 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 literal 0 HcmV?d00001