Skip to content
Snippets Groups Projects
Commit 5a17aade authored by Michael DM Dryden's avatar Michael DM Dryden
Browse files

Add current offset trimming.

parent a2959d47
Branches
No related merge requests found
......@@ -207,10 +207,15 @@ class Experiment(object):
self.__gaintable = [1e2, 3e2, 3e3, 3e4, 3e5, 3e6, 3e7, 5e8]
elif minor >= 2:
self.__gaintable = [1, 1e2, 3e3, 3e4, 3e5, 3e6, 3e7, 1e8]
self.__gain_trim_table = [None, 'r100_trim', 'r3k_trim',
'r30k_trim', 'r300k_trim', 'r3M_trim',
'r30M_trim', 'r100M_trim']
else:
raise VarError(parameters['version'], "Invalid version parameter.")
self.gain = self.__gaintable[int(self.parameters['gain'])]
self.gain_trim = int(
settings[self.__gain_trim_table[int(self.parameters['gain'])]][1])
self.commands = ["EA", "EG"]
......@@ -299,7 +304,8 @@ class Experiment(object):
scan, data = data_input
voltage, current = struct.unpack('<Hl', data) #uint16 + int32
return (scan,
[(voltage-32768)*3000./65536, current*(1.5/self.gain/8388607)])
[(voltage-32768)*3000./65536,
(current+self.gain_trim)*(1.5/self.gain/8388607)])
def data_postprocessing(self):
"""No data postprocessing done by default, can be overridden
......@@ -342,7 +348,8 @@ class Chronoamp(Experiment):
# 2*uint16 + int32
seconds, milliseconds, current = struct.unpack('<HHl', data)
return (scan,
[seconds+milliseconds/1000., current*(1.5/self.gain/8388607)])
[seconds+milliseconds/1000.,
(current+self.gain_trim)*(1.5/self.gain/8388607)])
class PDExp(Chronoamp):
"""Photodiode/PMT experiment"""
......@@ -521,10 +528,13 @@ class SWVExp(Experiment):
scan, data = input_data
# uint16 + int32
voltage, forward, reverse = struct.unpack('<Hll', data)
f_trim = forward+self.gain_trim
r_trim = reverse+self.gain_trim
return (scan, [(voltage-32768)*3000./65536,
(forward-reverse)*(1.5/self.gain/8388607),
forward*(1.5/self.gain/8388607),
reverse*(1.5/self.gain/8388607)])
(f_trim-r_trim)*(1.5/self.gain/8388607),
f_trim*(1.5/self.gain/8388607),
r_trim*(1.5/self.gain/8388607)])
class DPVExp(SWVExp):
......
......@@ -52,6 +52,11 @@
<col id="1" translatable="yes">pot</col>
<col id="2" translatable="yes">Potentiometry</col>
</row>
<row>
<col id="0">8</col>
<col id="1" translatable="yes">cal</col>
<col id="2" translatable="yes">Offset Calibration</col>
</row>
</data>
</object>
<object class="GtkAboutDialog" id="aboutdialog1">
......
......@@ -244,4 +244,56 @@ class POT(ExpInterface):
"""Adds entry listings to superclass's self.entry dict"""
super(POT, self).__init__('interface/potexp.glade')
self.entry['time'] = self.builder.get_object('time_entry')
\ No newline at end of file
self.entry['time'] = self.builder.get_object('time_entry')
class CAL(ExpInterface):
"""Experiment class for Calibrating gain."""
def __init__(self):
"""Adds entry listings to superclass's self.entry dict"""
super(CAL, self).__init__('interface/calib.glade')
self.entry['time'] = self.builder.get_object('time_entry')
self.entry['R100'] = self.builder.get_object('100_entry')
self.entry['R3k'] = self.builder.get_object('3k_entry')
self.entry['R30k'] = self.builder.get_object('30k_entry')
self.entry['R300k'] = self.builder.get_object('300k_entry')
self.entry['R3M'] = self.builder.get_object('3M_entry')
self.entry['R30M'] = self.builder.get_object('30M_entry')
self.entry['R100M'] = self.builder.get_object('100M_entry')
def on_read_button_clicked(self, data=None):
__main__.MAIN.on_pot_stop_clicked()
gobject.source_remove(__main__.MAIN.ocp_proc)
dstat_comm.read_settings()
self.entry['R100'].set_text(str(
dstat_comm.settings['r100_trim'][1]))
self.entry['R3k'].set_text(str(
dstat_comm.settings['r3k_trim'][1]))
self.entry['R30k'].set_text(str(
dstat_comm.settings['r30k_trim'][1]))
self.entry['R300k'].set_text(str(
dstat_comm.settings['r300k_trim'][1]))
self.entry['R3M'].set_text(str(
dstat_comm.settings['r3M_trim'][1]))
self.entry['R30M'].set_text(str(
dstat_comm.settings['r30M_trim'][1]))
self.entry['R100M'].set_text(str(
dstat_comm.settings['r100M_trim'][1]))
__main__.MAIN.start_ocp()
def on_write_button_clicked(self, data=None):
__main__.MAIN.on_pot_stop_clicked()
gobject.source_remove(__main__.MAIN.ocp_proc)
dstat_comm.settings['r100_trim'][1] = self.entry['R100'].get_text()
dstat_comm.settings['r3k_trim'][1] = self.entry['R3k'].get_text()
dstat_comm.settings['r30k_trim'][1] = self.entry['R30k'].get_text()
dstat_comm.settings['r300k_trim'][1] = self.entry['R300k'].get_text()
dstat_comm.settings['r3M_trim'][1] = self.entry['R3M'].get_text()
dstat_comm.settings['r30M_trim'][1] = self.entry['R30M'].get_text()
dstat_comm.settings['r100M_trim'][1] = self.entry['R100M'].get_text()
dstat_comm.write_settings()
__main__.MAIN.start_ocp()
\ No newline at end of file
......@@ -32,6 +32,7 @@ class Experiments:
self.classes['acv'] = exp.ACV()
self.classes['pde'] = exp.PD()
self.classes['pot'] = exp.POT()
self.classes['cal'] = exp.CAL()
#fill exp_section
exp_section = self.builder.get_object('exp_section_box')
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment