Repository navigation
Use the PyMeasure Eurotherm driver and implement setpoint moves - #4
Merged
Merged
Conversation
The Eurotherm3200Series actuator now builds pymeasure's Eurotherm3216 on a SerialAdapter. PyMeasure is installed from the PyMoDAQ fork branch until the drivers are released upstream. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DEVtMjKj8sTCBv7uiR4gzQ
Ported from adelaisbruel/pymodaq_plugins_eurotherm (feature/eurotherm-dev) onto the PyMeasure driver: move_abs/move_rel set the target setpoint, stop_motion holds the current temperature, the PID parameters are exposed as settings, and close releases the serial port. Co-authored-by: Adélaïs Bruel <adelais.bruel@gmail.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DEVtMjKj8sTCBv7uiR4gzQ
seb5g
force-pushed
the
feature/pymeasure-eurotherm
branch
from
October 12, 2026 15:52
d85efc6 to
f8dbb07
Compare
Co-authored-by: Adélaïs Bruel <adelais.bruel@gmail.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DEVtMjKj8sTCBv7uiR4gzQ
Co-authored-by: Pierre-Anne Bausson <bausson.pierreanne@gmail.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DEVtMjKj8sTCBv7uiR4gzQ
The target setpoint is stored in EEPROM, limited to about 100,000 writes. By default moves now write the remote (comms) setpoint, refreshed every second as the controller expects it at least every 5 s. Closing stores the last value as target setpoint and goes back to the local setpoint. The previous behaviour stays available as 'Target (stored)'. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DEVtMjKj8sTCBv7uiR4gzQ
The eight Segment axes were never used and a slave axis would have written the target setpoint, hence the EEPROM. One furnace is one plugin instance. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DEVtMjKj8sTCBv7uiR4gzQ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces #1 (Adélaïs Bruel's PR), whose work this builds on. She is listed as an author in
pyproject.tomland the README, and as co-author of the commits that port her code. Pierre-Anne Bausson (PABausson/pymodaq_plugins_eurotherm, whose 3500 driver went into PyMoDAQ/pymeasure#5) is also listed as an author.Before: the plugin depended on
nupylab, installed from GitHub, and theEurotherm3200Seriesactuator was still the template (moves raisedNotImplementedError).After: the actuator uses
pymeasure.instruments.eurotherm.Eurotherm3216on aSerialAdapter. Moving writes the remote (comms) setpoint, refreshed every second, instead of the target setpoint, which is stored in EEPROM (about 100,000 writes, per the Eurotherm manuals); closing stores the last value as target setpoint and returns to the local setpoint, and a 'Setpoint' setting switches back to writing the target setpoint. The actuator has a single axis (one furnace per plugin instance), the unusedSegment_000..007axes are dropped. Stopping holds the current temperature, the PID parameters (proportional band, integral and derivative times) are shown and editable in the settings, and closing releases the serial port. Units are °C.How:
pyproject.tomlinstalls PyMeasure from the PyMoDAQ fork branchfeature/eurotherm-drivers(PyMoDAQ/pymeasure#5) until the drivers are in a PyMeasure release; the dependency then becomes a plainpymeasure>=<version>. The move and PID logic is ported from Adélaïs Bruel's work on adelaisbruel/pymodaq_plugins_eurotherm (feature/eurotherm-dev), adapted to the PyMeasure properties. Not ported from it: the fixed scaling offset of 273 set at init,closesetting the setpoint to 30 °C, andmove_homegoing to 27 °C;move_homeis still the template stub.Tested:
pytest(3 passed, 1 skipped);check_pluginpasses with 15 TODOs left instead of 30. Not tested on hardware.🤖 Generated with Claude Code
https://claude.ai/code/session_01DEVtMjKj8sTCBv7uiR4gzQ
Generated by Claude Code