X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=research%2FTCS%2Finterface.py;h=22e04a4b1627dd14a35578d402c6bf8dd2d9d7b3;hb=ced554da0fb721d190eed99618e2cd82130f0797;hp=11ed9b298ac79438ff15d7ed4015de19b137a79d;hpb=56f525e2d01cb9e01d8a5d38130729c0a2072cd1;p=matches%2Fhonours.git diff --git a/research/TCS/interface.py b/research/TCS/interface.py index 11ed9b29..22e04a4b 100755 --- a/research/TCS/interface.py +++ b/research/TCS/interface.py @@ -13,7 +13,9 @@ import serial import datetime import odict +import Gnuplot, Gnuplot.funcutils +gnuplot = Gnuplot.Gnuplot() # TODO: Insert variables for calibration purposes here. calibrate = { @@ -32,11 +34,11 @@ calibrate = { } # TODO: Adjust aqcuisition parameters here -aquire = { "DAC_Sweep" : "0.0 + 50.0*int(step/60)", # DAC Sweep value (t is in STEPS, not seconds!) +aquire = { "DAC_Sweep" : "0.0 + 50.0*int(step)", # DAC Sweep value (t is in STEPS, not seconds!) "ADC_Averages" : 200, - "ADC_Vi" : 5, # ADC channel to read back Vi (set by DAC) through - "ADC_Is" : 4, # ADC channel to read back Is through - "ADC_Ie" : 4, # ADC channel to read back Ie through + #"ADC_Vi" : 5, # ADC channel to read back Vi (set by DAC) through + #"ADC_Is" : 4, # ADC channel to read back Is through + #"ADC_Ie" : 4, # ADC channel to read back Ie through "DAC_Settle" : 0.0, # Time in seconds to wait for DAC to stabilise #"response_wait" : 0.2, # Time to wait in seconds between sending data and reading back "start_date" : None, @@ -45,7 +47,7 @@ aquire = { "DAC_Sweep" : "0.0 + 50.0*int(step/60)", # DAC Sweep value (t is in S #Setup the serial connection parameters ser = serial.Serial( - port="/dev/ttyUSB0", # Modify as needed (note: in linux need to run `sudo chmod a+rw /dev/ttyUSBX' to set permissions) + port="/dev/ttyUSB1", # Modify as needed (note: in linux need to run `sudo chmod a+rw /dev/ttyUSBX' to set permissions) # Do not change the values below here (unless AVR butterfly is reprogrammed to use different values) baudrate=4800, @@ -64,11 +66,12 @@ parameters = odict.odict([ ("Venault Voltage" , None), ("Initial Voltage" , None), ("Heating Current" , None), - ("Heating Voltage" , None), + ("Heating Voltage (across filament)" , None), + ("Heating Voltage (across power supply)", None), ("Chamber Pressure" , None), - ("610B Zero" , None), + #("610B Zero" , None), ("602 Zero" , None), - ("610B Scale" , None), + #("610B Scale" , None), ("602 Scale" , None), ("602 0.1 Battery" , None), ("602 0.03 Battery" , None), @@ -76,6 +79,8 @@ parameters = odict.odict([ ("602 0.003 Battery" , None), ("602 0.001 Battery" , None), ("ADC Regulator" , None), + ("Sample", None), + ("Sample Angle", None), ("Title" , None), ("Comment" , None), ("Data" , None), @@ -108,7 +113,7 @@ def killed_handler(signal, frame): reason = sys.stdin.readline().strip("\r\n ") for out in aquire["open_files"]: sys.stdout.write("# Closing file " + str(out) + "\n") - out.write("# Recieved KILL signal.\n# Reason: " + str(reason)) + out.write("# Recieved KILL signal.\n# Reason: " + str(reason) + "\n") log_close(out) @@ -203,11 +208,11 @@ def main(): # Experiment # TODO: Modify data to record here sweep = 1 - while True: + for i in range(0,1): os.system("mkdir -p " + getDate()) - record_data([4, 5], getDate()+"/"+str(getTime())+".dat", None, 4000) + record_data([5], getDate()+"/"+str(getTime())+".dat", None, 4000) sweep += 1 - + setDAC(500) def checkList(): try: @@ -233,6 +238,7 @@ def checkList(): for item in parameters: input_file.write("# " + str(item) + " = " + str(parameters[item]) + "\n") input_file.write("\n") + log_close(input_file) input_file = None if (input_file == None): @@ -251,14 +257,17 @@ def checkList(): for item in parameters: checklist.write("# "+str(item) + " = " + str(parameters[item]) + "\n") #output_file.write("# "+str(item) + " = " + str(parameters[item]) + "\n") - + log_close(checklist) def record_data(ADC_channels, output, pollTime = None, dac_max = None): if (output != None): + gnuplot("set title \""+str(output)+"\"") output = [log_open(output, "w"), sys.stdout] + else: + gnuplot("set title \"\"") output = [sys.stdout] for field in aquire: @@ -275,6 +284,10 @@ def record_data(ADC_channels, output, pollTime = None, dac_max = None): start_time = time.time() + gnuplot("set xlabel \"DAC (counts)\"") + gnuplot("set ylabel \"ADC (counts)\"") + + for out in output: out.write("\n") out.write("# Experiment " + str(datetime.datetime.now()) + "\n") @@ -287,9 +300,11 @@ def record_data(ADC_channels, output, pollTime = None, dac_max = None): out.write("\n") step = 0 + data = [] # Keep track of data for dynamic plotting dacValue = int(eval(aquire["DAC_Sweep"])) if (setDAC(dacValue) == False): setDAC(dacValue) + time.sleep(2.0) while (pollTime == None or time.time() < start_time + pollTime): if (aquire["DAC_Sweep"] != None): nextDacValue = int(eval(aquire["DAC_Sweep"])) @@ -321,13 +336,19 @@ def record_data(ADC_channels, output, pollTime = None, dac_max = None): end_time = time.time() for out in output: - out.write(str((measure_start + (end_time - measure_start)/2.0 - start_time))) + measure_time = measure_start + (end_time - measure_start)/2.0 - start_time + out.write(str(measure_time)) out.write("\t"+str(dacValue)) + data.append([measure_time, dacValue]) + for adc in raw_adc: out.write("\t" + str(adc[1]) + "\t" + str(adc[2])) + data[len(data)-1].append(adc[1]) + data[len(data)-1].append(adc[2]) out.write("\n") - + + #gnuplot.plot(Gnuplot.Data(data, title="t = "+str(measure_time), with_="lp", using="2:3")) for out in output: if out != sys.stdout: log_close(out)