aboutsummaryrefslogtreecommitdiff
path: root/qolab/hardware/daq
diff options
context:
space:
mode:
authorEugeniy E. Mikhailov <evgmik@gmail.com>2022-04-02 17:56:47 -0400
committerEugeniy E. Mikhailov <evgmik@gmail.com>2022-04-02 17:56:47 -0400
commit81ff68030bf288f330fbef6cc339e1859b98fb97 (patch)
tree6ebbdfc989e4756468e4248631ed9f5d864c9fb3 /qolab/hardware/daq
parentec78435b6b6ef54be299cb87a20ac47cbc95b312 (diff)
downloadqolab-81ff68030bf288f330fbef6cc339e1859b98fb97.tar.gz
qolab-81ff68030bf288f330fbef6cc339e1859b98fb97.zip
draft of labjack_ue9 driver
Diffstat (limited to 'qolab/hardware/daq')
-rw-r--r--qolab/hardware/daq/__init__.py15
-rw-r--r--qolab/hardware/daq/labjack_ue9.py59
2 files changed, 74 insertions, 0 deletions
diff --git a/qolab/hardware/daq/__init__.py b/qolab/hardware/daq/__init__.py
new file mode 100644
index 0000000..8828591
--- /dev/null
+++ b/qolab/hardware/daq/__init__.py
@@ -0,0 +1,15 @@
+from qolab.hardware.basic import BasicInstrument
+
+class DAQ(BasicInstrument):
+ # Minimal set of methods to be implemented by a RFGenerator
+ def __init__(self, *args, **kwds):
+ BasicInstrument.__init__(self, *args, **kwds)
+ self.config['Device type']='DAQ'
+ self.config['Device model'] = 'Generic DAQ Without Hardware interface'
+ self.config['FnamePrefix'] = 'daq'
+ self.deviceProperties = {'AnalogInputsNum', 'AnalogOutputsNum' }
+
+ # this is device dependent
+ self.AnalogInputsNum=0
+ self.AnalogOutputsNum=0
+
diff --git a/qolab/hardware/daq/labjack_ue9.py b/qolab/hardware/daq/labjack_ue9.py
new file mode 100644
index 0000000..5b293f4
--- /dev/null
+++ b/qolab/hardware/daq/labjack_ue9.py
@@ -0,0 +1,59 @@
+from qolab.hardware.basic import BasicInstrument
+from qolab.hardware.daq import DAQ
+import ue9
+
+class LabJackUE9(DAQ):
+ """
+ This custom modification of the stock LabJack UE9 class provided by LabJack as ue9
+ """
+
+ def __init__(self, *args, debug = False, autoOpen = True, ethernet=False, ipAddress="192.168.1.209", **kargs):
+ """
+ LabJack UE9 can be contacted via TCP, use
+ QOL_UE9(ethernet=True, ipAddress="192.168.1.209")
+ """
+ super().__init__(*args, **kargs)
+ self.config['Device model'] = 'LabJack UE9'
+ self.AnalogInputsNum=4
+ self.AnalogOutputsNum=2
+
+ # self.daq = ue9.UE9(debug=debug, autoOpen=autoOpen, ethernet=ethernet, ipAddress=ipAddress)
+ self.daq = ue9.UE9(debug=debug, autoOpen=autoOpen)
+
+ # For applying the proper calibration to readings.
+ c=self.daq.getCalibrationData()
+
+ # by evmik
+ # fixing missing slope for gain '0'
+ c['AINSlopes']['0']= 0.0000775030
+
+ def getChanVoltage(self, chNum, BipGain):
+ BipGain = 8
+ # BipGain = 8 -> bipolar range (-5V, +5V) gain 1
+ # UE9 default BipGain = 0 -> signal range (0V, +5V) gain 1
+ # other BipGain could be:
+ # 0 = Unipolar Gain 1, 1 = Unipolar Gain 2,
+ # 2 = Unipolar Gain 4, 3 = Unipolar Gain 8,
+ # 8 = Bipolar Gain 1
+ return self.daq.getAIN(chNum, BipGain = BipGain)
+
+ def setChanVoltage(self, chNum, volts):
+ if chNum == None or volts == None:
+ print("setOutputCh needs chNum and volts to be set")
+ return 0
+ bits = self.daq.voltageToDACBits(volts, dacNumber = chNum)
+ # out is completely bogus for DAC settings in UE9
+ out=self.daq.singleIO(IOType=5, Channel=chNum, DAC=bits)
+ return volts
+
+ def close(self):
+ self.daq.close()
+
+
+
+if __name__ == '__main__':
+ daq = LabJackUE9()
+ print("testing")
+ print('------ Header start -------------')
+ print(str.join('\n', daq.getHeader()))
+ print('------ Header ends -------------')