diff --git a/pyproject.toml b/pyproject.toml index 495aad4..0c0698b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ build-backend = "pdm.backend" [project] name = "qnnpy" -version = "0.1.17" +version = "0.1.18" authors = [ { name="O. Medeiros", email="omedeiro@mit.edu" }, diff --git a/src/qnnpy/instruments/lakeshore336.py b/src/qnnpy/instruments/lakeshore336.py index 813fcfd..dffa01e 100644 --- a/src/qnnpy/instruments/lakeshore336.py +++ b/src/qnnpy/instruments/lakeshore336.py @@ -78,6 +78,21 @@ def get_ramp(self, output=1): s = self.query("RAMP? " + str(output)) return s + def set_pid(self, output=1, P=100, I=25, D=15): + """Set PID parameters for the specified output. + P: Proportional gain (0.1 to 1000) + I: Integral gain (0.1 to 1000) + D: Derivative gain (0 to 200) + """ + self.write("PID " + str(output) + "," + str(P) + "," + str(I) + "," + str(D)) + + def get_pid(self, output=1): + """Get PID parameters for the specified output. + Returns: P,I,D values as string + """ + s = self.query("PID? " + str(output)) + return s + def get_output(self, output=1): s = self.query("OUTMODE? " + str(output)) output = s.split(",") @@ -107,3 +122,27 @@ def all_off(self): self.set_range(2, 0) self.set_range(3, 0) self.set_range(4, 0) + + def get_heater_output(self, output=1): + """Get heater output percentage for specified output. + output: Output number (1-4) + Returns: Heater output as float percentage (0-100%) + """ + s = self.query("HTR? " + str(output)) + return float(s) + + def set_manual_output(self, output=1, value=0): + """Set manual heater output percentage. + Note: Output mode must be set to manual (mode=3) for this to take effect. + output: Output number (1-4) + value: Output percentage (0-100%) + """ + self.write("MOUT " + str(output) + "," + str(value)) + + def get_manual_output(self, output=1): + """Get manual heater output percentage setting. + output: Output number (1-4) + Returns: Manual output percentage as float (0-100%) + """ + s = self.query("MOUT? " + str(output)) + return float(s)