From 2db4f790c117f8bc0a58a8195237ba736a4e5c8e Mon Sep 17 00:00:00 2001 From: Owen Medeiros Date: Tue, 8 Jul 2025 12:07:40 -0400 Subject: [PATCH 1/3] Add PID control methods to Lakeshore336 class --- src/qnnpy/instruments/lakeshore336.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/qnnpy/instruments/lakeshore336.py b/src/qnnpy/instruments/lakeshore336.py index 813fcfd..d235d91 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(",") From 24ed2f375107e42c1f95b73fcaf07ddb0c02ee4a Mon Sep 17 00:00:00 2001 From: Owen Medeiros Date: Tue, 8 Jul 2025 12:35:30 -0400 Subject: [PATCH 2/3] Add methods to get and set manual heater output in Lakeshore336 class --- src/qnnpy/instruments/lakeshore336.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/qnnpy/instruments/lakeshore336.py b/src/qnnpy/instruments/lakeshore336.py index d235d91..dffa01e 100644 --- a/src/qnnpy/instruments/lakeshore336.py +++ b/src/qnnpy/instruments/lakeshore336.py @@ -122,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) From 2f76ec0e98436d9997af5309e5996ff2b0e3861c Mon Sep 17 00:00:00 2001 From: Owen Medeiros Date: Tue, 8 Jul 2025 12:37:06 -0400 Subject: [PATCH 3/3] Bump version to 0.1.18 in pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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" },