From 0bf18c1294816151ff844ecb0542b948a95264c3 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 11 Dec 2023 21:21:54 +0000 Subject: [PATCH] Add INL Sweep solartron-7061-201216---datron-4805-XANS1---SWEEP1.csv --- .../datron-4805-XANS1/README.md | 3 + .../datron-4805-XANS1/data/INLV-SolDat.py | 187 ++++++++++++++++++ ...61-201216---datron-4805-XANS1---SWEEP1.csv | 142 +++++++++++++ ...61-201216---datron-4805-XANS1---SWEEP1.jpg | Bin 0 -> 20096 bytes 4 files changed, 332 insertions(+) create mode 100644 solartron-7061-201216/datron-4805-XANS1/README.md create mode 100644 solartron-7061-201216/datron-4805-XANS1/data/INLV-SolDat.py create mode 100644 solartron-7061-201216/datron-4805-XANS1/data/solartron-7061-201216---datron-4805-XANS1---SWEEP1.csv create mode 100644 solartron-7061-201216/datron-4805-XANS1/data/solartron-7061-201216---datron-4805-XANS1---SWEEP1.jpg diff --git a/solartron-7061-201216/datron-4805-XANS1/README.md b/solartron-7061-201216/datron-4805-XANS1/README.md new file mode 100644 index 0000000..f4fa94f --- /dev/null +++ b/solartron-7061-201216/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 | +|--------------------|-------------|--------------------|---------------------|--------------|---------------------|--------|------|----|------| +|solartron|7061|201216|datron|4805|XANS1|0.0|/data/solartron-7061-201216---datron-4805-XANS1---SWEEP1.jpg|SWEEP1|xans| diff --git a/solartron-7061-201216/datron-4805-XANS1/data/INLV-SolDat.py b/solartron-7061-201216/datron-4805-XANS1/data/INLV-SolDat.py new file mode 100644 index 0000000..534fe11 --- /dev/null +++ b/solartron-7061-201216/datron-4805-XANS1/data/INLV-SolDat.py @@ -0,0 +1,187 @@ +import GPIBPrologix +import bme280 +import smbus2 +from requests import post + +## Initialize GPIB adapter +GPIB = GPIBPrologix.ResourceManager("/dev/ttyACM0") +# Connect equipment +inst2 = GPIB.open_resource(30) +inst3 = GPIB.open_resource(16) +# 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 + +# Solartron S7061 +inst3.query("BEEp") +inst3.query("MODE VDc") +inst3.query("RANGE 10") +inst3.query("DIGits 7") +inst3.query("DRift OFf") + +# Measurement functions +def readValue(instObj): + instObj.query("TRIgger") + counter = 0 + a = instObj.read() + prevA = a + while(a == prevA and counter < 30): + a = instObj.read() + time.sleep(0.1) + counter = counter + 1 + instObj.query("DISplay []") + print(a) + b = a[14:18] + a = a[1:10] + value = a + 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 + +## 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", "8") + 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(30) +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(30) + 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"], 8) +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/solartron-7061-201216/datron-4805-XANS1/data/solartron-7061-201216---datron-4805-XANS1---SWEEP1.csv b/solartron-7061-201216/datron-4805-XANS1/data/solartron-7061-201216---datron-4805-XANS1---SWEEP1.csv new file mode 100644 index 0000000..2a643f3 --- /dev/null +++ b/solartron-7061-201216/datron-4805-XANS1/data/solartron-7061-201216---datron-4805-XANS1---SWEEP1.csv @@ -0,0 +1,142 @@ +DateTime,Set Volts,Measured Volts,Env Pressure,Env Temperature,Env Humidity +11-12-23 20:22:00,-11.5,11.50029,54.35,21.6,1006.17 +11-12-23 20:22:15,-11.5,11.50029,54.4,21.51,1006.01 +11-12-23 20:22:30,-11.5,11.500294,54.4,21.57,1006.11 +11-12-23 20:23:17,-11.0,11.00028,54.47,21.56,1006.09 +11-12-23 20:23:33,-11.0,11.000279,54.37,21.55,1006.08 +11-12-23 20:23:48,-11.0,11.000278,54.33,21.61,1006.17 +11-12-23 20:24:35,-10.5,10.500263,54.29,21.55,1006.0 +11-12-23 20:24:50,-10.5,10.500265,54.32,21.6,1006.17 +11-12-23 20:25:05,-10.5,10.500262,54.33,21.58,1006.16 +11-12-23 20:25:52,-10.0,10.000254,54.19,21.65,1006.08 +11-12-23 20:26:07,-10.0,10.000255,54.18,21.58,1005.97 +11-12-23 20:26:23,-10.0,10.000253,54.27,21.52,1005.98 +11-12-23 20:27:10,-9.5,9.500236,54.13,21.31,1005.51 +11-12-23 20:27:25,-9.5,9.500239,54.1,21.58,1006.02 +11-12-23 20:27:40,-9.5,9.500236,54.21,21.59,1006.14 +11-12-23 20:28:27,-9.0,9.000223,54.24,21.55,1006.05 +11-12-23 20:28:42,-9.0,9.000225,54.24,21.6,1006.11 +11-12-23 20:28:57,-9.0,9.000222,54.23,21.6,1006.16 +11-12-23 20:29:44,-8.5,8.500208,54.17,21.6,1006.09 +11-12-23 20:30:00,-8.5,8.500211,54.11,21.64,1006.09 +11-12-23 20:30:15,-8.5,8.50021,54.03,21.57,1005.98 +11-12-23 20:31:02,-8.0,8.000195,54.15,21.6,1006.11 +11-12-23 20:31:17,-8.0,8.000193,54.15,21.54,1006.01 +11-12-23 20:31:32,-8.0,8.000194,54.03,21.56,1005.99 +11-12-23 20:32:19,-7.5,7.500183,53.95,21.67,1006.14 +11-12-23 20:32:34,-7.5,7.500181,53.96,21.66,1006.15 +11-12-23 20:32:50,-7.5,7.500181,54.04,21.64,1006.12 +11-12-23 20:33:37,-7.0,7.000168,54.05,21.64,1006.15 +11-12-23 20:33:52,-7.0,7.000166,54.0,21.67,1006.14 +11-12-23 20:34:07,-7.0,7.000166,53.99,21.66,1006.1 +11-12-23 20:34:54,-6.5,6.500154,53.95,21.66,1006.16 +11-12-23 20:35:09,-6.5,6.500154,54.03,21.62,1006.09 +11-12-23 20:35:24,-6.5,6.500155,54.03,21.62,1006.14 +11-12-23 20:36:12,-6.0,6.000142,53.95,21.63,1006.11 +11-12-23 20:36:27,-6.0,6.000143,54.01,21.64,1006.12 +11-12-23 20:36:42,-6.0,6.000141,54.15,20.99,1005.17 +11-12-23 20:37:29,-5.5,5.500129,54.08,21.58,1006.08 +11-12-23 20:37:44,-5.5,5.500131,54.13,21.5,1005.97 +11-12-23 20:37:59,-5.5,5.50013,54.11,21.62,1006.16 +11-12-23 20:38:46,-5.0,5.000116,54.05,21.42,1005.76 +11-12-23 20:39:02,-5.0,5.000114,53.97,21.65,1006.14 +11-12-23 20:39:17,-5.0,5.000115,53.96,21.59,1006.02 +11-12-23 20:40:04,-4.5,4.500102,54.0,21.58,1006.02 +11-12-23 20:40:19,-4.5,4.500103,54.1,21.57,1006.09 +11-12-23 20:40:34,-4.5,4.500101,54.04,21.52,1005.98 +11-12-23 20:41:21,-4.0,4.000086,53.9,21.66,1006.13 +11-12-23 20:41:36,-4.0,4.000088,53.89,21.62,1006.08 +11-12-23 20:41:51,-4.0,4.000088,53.91,21.21,1005.47 +11-12-23 20:42:39,-3.5,3.500078,53.99,21.62,1006.14 +11-12-23 20:42:54,-3.5,3.500073,53.85,21.58,1006.02 +11-12-23 20:43:09,-3.5,3.500075,53.86,21.47,1005.79 +11-12-23 20:43:56,-3.0,3.000059,53.96,21.54,1006.01 +11-12-23 20:44:11,-3.0,3.000061,53.93,21.63,1006.1 +11-12-23 20:44:26,-3.0,3.000061,53.93,21.63,1006.05 +11-12-23 20:45:13,-2.5,2.500044,53.75,21.68,1006.12 +11-12-23 20:45:29,-2.5,2.500044,53.74,21.72,1006.12 +11-12-23 20:45:44,-2.5,2.500046,53.65,21.68,1006.03 +11-12-23 20:46:31,-2.0,2.000034,53.77,21.59,1006.07 +11-12-23 20:46:46,-2.0,2.000034,53.91,21.53,1005.94 +11-12-23 20:47:01,-2.0,2.000031,53.95,21.5,1006.0 +11-12-23 20:47:48,-1.5,1.500022,53.78,21.19,1005.34 +11-12-23 20:48:03,-1.5,1.50002,53.81,21.54,1005.97 +11-12-23 20:48:19,-1.5,1.500022,53.9,21.61,1006.1 +11-12-23 20:49:06,-1.0,1.000009,54.05,21.53,1006.13 +11-12-23 20:49:21,-1.0,1.000009,54.05,21.56,1006.17 +11-12-23 20:49:36,-1.0,1.000008,54.06,21.55,1006.16 +11-12-23 20:50:23,-0.5,0.499996,54.04,21.56,1006.18 +11-12-23 20:50:38,-0.5,0.499996,53.98,21.5,1006.05 +11-12-23 20:50:53,-0.5,0.499996,53.89,21.56,1006.12 +11-12-23 20:51:40,0.0,1.5e-05,53.8,21.58,1006.12 +11-12-23 20:51:56,0.0,1.6e-05,53.85,21.59,1006.15 +11-12-23 20:52:11,0.0,1.3e-05,53.85,21.61,1006.18 +11-12-23 20:52:58,0.5,0.500014,53.87,21.6,1006.17 +11-12-23 20:53:13,0.5,0.500013,53.73,21.66,1006.21 +11-12-23 20:53:28,0.5,0.500013,53.73,21.65,1006.09 +11-12-23 20:54:15,1.0,1.000026,53.59,21.69,1006.27 +11-12-23 20:54:30,1.0,1.000025,53.57,21.63,1006.08 +11-12-23 20:54:46,1.0,1.000023,53.6,21.68,1006.22 +11-12-23 20:55:33,1.5,1.500037,53.55,21.69,1006.19 +11-12-23 20:55:48,1.5,1.500037,53.55,21.69,1006.21 +11-12-23 20:56:03,1.5,1.500038,53.6,21.67,1006.18 +11-12-23 20:56:50,2.0,2.000049,53.67,21.63,1006.11 +11-12-23 20:57:05,2.0,2.000049,53.74,21.62,1006.17 +11-12-23 20:57:20,2.0,2.000049,53.74,21.63,1006.13 +11-12-23 20:58:07,2.5,2.500065,53.64,21.62,1006.17 +11-12-23 20:58:23,2.5,2.500065,53.55,21.62,1006.09 +11-12-23 20:58:38,2.5,2.500063,53.59,21.53,1005.99 +11-12-23 20:59:25,3.0,3.000076,53.7,21.52,1006.08 +11-12-23 20:59:40,3.0,3.000077,53.75,21.61,1006.1 +11-12-23 20:59:55,3.0,3.000076,53.71,21.62,1006.2 +11-12-23 21:00:42,3.5,3.500092,53.77,21.56,1006.26 +11-12-23 21:00:58,3.5,3.500091,53.8,21.5,1006.1 +11-12-23 21:01:13,3.5,3.50009,53.83,21.58,1006.24 +11-12-23 21:02:00,4.0,4.000104,53.65,21.63,1006.22 +11-12-23 21:02:15,4.0,4.000103,53.67,21.55,1006.08 +11-12-23 21:02:30,4.0,4.000105,53.79,20.04,1003.97 +11-12-23 21:03:17,4.5,4.500115,53.67,21.6,1006.27 +11-12-23 21:03:32,4.5,4.500117,53.68,21.61,1006.25 +11-12-23 21:03:48,4.5,4.500117,53.68,21.57,1006.11 +11-12-23 21:04:35,5.0,5.000129,53.65,21.54,1006.17 +11-12-23 21:04:50,5.0,5.000129,53.6,21.41,1005.9 +11-12-23 21:05:05,5.0,5.000128,53.62,21.63,1006.24 +11-12-23 21:05:52,5.5,5.500144,53.57,21.63,1006.24 +11-12-23 21:06:07,5.5,5.500144,53.63,21.54,1006.18 +11-12-23 21:06:22,5.5,5.500145,53.59,21.52,1006.12 +11-12-23 21:07:10,6.0,6.000154,53.64,21.6,1006.26 +11-12-23 21:07:25,6.0,6.000154,53.68,21.53,1006.15 +11-12-23 21:07:40,6.0,6.000156,53.61,21.61,1006.28 +11-12-23 21:08:27,6.5,6.500168,53.57,21.57,1006.19 +11-12-23 21:08:42,6.5,6.500167,53.48,21.45,1005.99 +11-12-23 21:08:57,6.5,6.500168,53.54,21.6,1006.3 +11-12-23 21:09:44,7.0,7.00018,53.62,21.51,1006.25 +11-12-23 21:10:00,7.0,7.000181,53.61,21.55,1006.24 +11-12-23 21:10:15,7.0,7.000181,53.72,21.53,1006.3 +11-12-23 21:11:02,7.5,7.500195,53.67,21.56,1006.34 +11-12-23 21:11:17,7.5,7.500194,53.68,21.48,1006.18 +11-12-23 21:11:32,7.5,7.500192,53.7,21.48,1006.1 +11-12-23 21:12:19,8.0,8.000208,53.76,21.51,1006.28 +11-12-23 21:12:34,8.0,8.000206,53.77,21.42,1006.16 +11-12-23 21:12:50,8.0,8.000206,53.71,21.49,1006.22 +11-12-23 21:13:37,8.5,8.500218,53.8,21.49,1006.34 +11-12-23 21:13:52,8.5,8.50022,53.88,21.47,1006.35 +11-12-23 21:14:07,8.5,8.500221,53.79,21.53,1006.34 +11-12-23 21:14:54,9.0,9.000236,53.65,21.54,1006.34 +11-12-23 21:15:09,9.0,9.000233,53.61,21.13,1005.59 +11-12-23 21:15:24,9.0,9.000236,53.57,20.26,1004.2 +11-12-23 21:16:12,9.5,9.500246,53.62,21.58,1006.36 +11-12-23 21:16:27,9.5,9.500247,53.49,21.6,1006.43 +11-12-23 21:16:42,9.5,9.500247,53.61,21.56,1006.37 +11-12-23 21:17:29,10.0,10.00026,53.39,21.56,1006.2 +11-12-23 21:17:44,10.0,10.000259,53.4,21.61,1006.42 +11-12-23 21:17:59,10.0,10.000259,53.38,21.61,1006.34 +11-12-23 21:18:46,10.5,10.500271,53.48,21.52,1006.25 +11-12-23 21:19:02,10.5,10.500272,53.47,21.59,1006.39 +11-12-23 21:19:17,10.5,10.500272,53.54,21.51,1006.29 +11-12-23 21:20:04,11.0,11.000287,53.56,21.53,1006.34 +11-12-23 21:20:19,11.0,11.000285,53.53,21.57,1006.36 +11-12-23 21:20:34,11.0,11.000288,53.57,21.47,1006.19 +11-12-23 21:21:21,11.5,11.500296,53.59,21.52,1006.31 +11-12-23 21:21:36,11.5,11.500297,53.69,21.5,1006.43 +11-12-23 21:21:52,11.5,11.500296,53.77,21.48,1006.31 diff --git a/solartron-7061-201216/datron-4805-XANS1/data/solartron-7061-201216---datron-4805-XANS1---SWEEP1.jpg b/solartron-7061-201216/datron-4805-XANS1/data/solartron-7061-201216---datron-4805-XANS1---SWEEP1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1ccbce0673174b9e40d4661e71a812afecea7885 GIT binary patch literal 20096 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 literal 0 HcmV?d00001