Novanta Opus Lasers#
The Opus family are continuous-wave diode lasers manufactured by Novanta.
Three models are supported, differentiated by wavelength and output power.
QOpus is the shared base class; the model subclasses add the
correct power limits and wavelength as class-level constants.
Base class#
- class QInstrument.instruments.Novanta.Opus.instrument.QOpus(portName=None, **kwargs)[source]#
Bases:
QSerialInstrumentLaser Quantum Opus Continuous-wave Laser
The Opus command interface uses plain text:
Queries end in
?and return a value with a units suffix (e.g.POWER?→'0123.4mW').Setpoint commands use
CMD=valuesyntax (e.g.POWER=100.0).Boolean commands are sent as plain mnemonics (
ON,OFF).
Properties#
Control#
- powerfloat [mW]
Getter returns the actual output power. Setter transmits a new power setpoint, clamped to
maximum_power.- maximum_powerfloat [mW]
Software upper bound on the power setpoint. Default: 1000. Not discoverable from the hardware; set at startup and persisted via the saved configuration.
- wavelengthfloat [nm]
Emission wavelength of the specific laser unit. Default: 532. Not discoverable from the hardware; set at startup and persisted via the saved configuration.
- currentfloat [%]
Diode current as a percentage of maximum.
- emissionbool
True: laser emission enabled. False: emission disabled.
Status (read-only)#
- statusbool
True if the laser is ENABLED (interlock satisfied and ready to emit). False if DISABLED (keyswitch off or enable button not pressed); a warning is logged when DISABLED is received.
- laser_temperaturefloat [°C]
Laser head temperature.
- psu_temperaturefloat [°C]
Power supply unit temperature.
- comm = {'baudRate': qtpy.QtSerialPort.QSerialPort.BaudRate.Baud19200, 'dataBits': qtpy.QtSerialPort.QSerialPort.DataBits.Data8, 'eol': '\r\n', 'flowControl': qtpy.QtSerialPort.QSerialPort.FlowControl.NoFlowControl, 'parity': qtpy.QtSerialPort.QSerialPort.Parity.NoParity, 'stopBits': qtpy.QtSerialPort.QSerialPort.StopBits.OneStop, 'timeout': 500}#
- identify()[source]#
Return True if the connected device identifies as an Opus laser.
Queries the firmware version and checks for the
'MPC-D'controller model token in the response. On success, sendsCONTROL=POWERto ensure the controller regulates output power rather than diode current for all subsequent setpoint commands.- Return type:
- class QInstrument.instruments.Novanta.Opus.fake.QFakeOpus(*args, **kwargs)[source]#
Bases:
QFakeInstrument,QOpusFake Opus laser for UI development without hardware.
The Opus property getters call hardware query helpers (
_getPower,_getCurrent,_parseTemp) rather than using the_register()convention, so all properties are registered explicitly with_store-backed getters.- identify()[source]#
Return True if the connected device identifies as an Opus laser.
Queries the firmware version and checks for the
'MPC-D'controller model token in the response. On success, sendsCONTROL=POWERto ensure the controller regulates output power rather than diode current for all subsequent setpoint commands.- Return type:
- class QInstrument.instruments.Novanta.Opus.widget.QOpusWidget(*args, device=None, **kwargs)[source]#
Bases:
QInstrumentWidgetControl widget for a Laser Quantum Opus diode laser.
Shows actual output power [W] and diode current [%] as read-only displays. The requested power setpoint is controlled with a rotary encoder spinbox (in Watts; converted to mW for the instrument). Laser emission is toggled with a push-button; a red LED alongside the button reflects the current emission state.
The widget polls the instrument every
poll_intervalms to refresh the read-only displays and the emission indicator.- UIFILE = 'OpusWidget.ui'#
- wsetter = {'QCheckBox': 'setChecked', 'QComboBox': 'setCurrentIndex', 'QDoubleSpinBox': 'setValue', 'QGroupBox': 'setChecked', 'QLabel': 'setText', 'QLedWidget': 'setValue', 'QLineEdit': 'setText', 'QPushButton': 'setChecked', 'QRadioButton': 'setChecked', 'QRotaryEncoderSpinBox': 'setValue', 'QSpinBox': 'setValue'}#
- wgetter = {'QCheckBox': 'isChecked', 'QComboBox': 'currentIndex', 'QDoubleSpinBox': 'value', 'QGroupBox': 'isChecked', 'QLabel': 'text', 'QLedWidget': 'value', 'QLineEdit': 'text', 'QPushButton': 'isChecked', 'QRadioButton': 'isChecked', 'QRotaryEncoderSpinBox': 'value', 'QSpinBox': 'value'}#
- wsignal = {'QCheckBox': 'toggled', 'QComboBox': 'currentIndexChanged', 'QDoubleSpinBox': 'valueChanged', 'QGroupBox': 'toggled', 'QLineEdit': 'editingFinished', 'QPushButton': 'toggled', 'QRadioButton': 'toggled', 'QRotaryEncoderSpinBox': 'valueChanged', 'QSpinBox': 'valueChanged'}#
- class QInstrument.instruments.Novanta.Opus.tree.QOpusTree(*args, device=None, fields=None, **kwargs)[source]#
Bases:
QInstrumentTreeParameter tree for a Laser Quantum Opus laser.
Opus532 (532 nm, 0–6 W)#
- class QInstrument.instruments.Novanta.Opus532.instrument.QOpus532(portName=None, **kwargs)[source]#
Bases:
QOpusNovanta Opus532 continuous-wave laser (532 nm, 0–6 W).
- class QInstrument.instruments.Novanta.Opus532.fake.QFakeOpus532(*args, **kwargs)[source]#
-
Fake Opus532 laser for UI development without hardware.
- class QInstrument.instruments.Novanta.Opus532.widget.QOpus532Widget(*args, device=None, **kwargs)[source]#
Bases:
QOpusWidgetControl widget for a Novanta Opus532 laser (532 nm, 0–6 W).
- class QInstrument.instruments.Novanta.Opus532.tree.QOpus532Tree(*args, device=None, fields=None, **kwargs)[source]#
Bases:
QInstrumentTreeParameter tree for a Novanta Opus532 laser.
Opus660 (660 nm, 0–1.5 W)#
- class QInstrument.instruments.Novanta.Opus660.instrument.QOpus660(portName=None, **kwargs)[source]#
Bases:
QOpusNovanta Opus660 continuous-wave laser (660 nm, 0–1.5 W).
- class QInstrument.instruments.Novanta.Opus660.fake.QFakeOpus660(*args, **kwargs)[source]#
-
Fake Opus660 laser for UI development without hardware.
- class QInstrument.instruments.Novanta.Opus660.widget.QOpus660Widget(*args, device=None, **kwargs)[source]#
Bases:
QOpusWidgetControl widget for a Novanta Opus660 laser (660 nm, 0–1.5 W).
- class QInstrument.instruments.Novanta.Opus660.tree.QOpus660Tree(*args, device=None, fields=None, **kwargs)[source]#
Bases:
QInstrumentTreeParameter tree for a Novanta Opus660 laser.
Opus1064 (1064 nm, 2–10 W)#
- class QInstrument.instruments.Novanta.Opus1064.instrument.QOpus1064(portName=None, **kwargs)[source]#
Bases:
QOpusNovanta Opus1064 continuous-wave laser (1064 nm, 2–10 W).
- class QInstrument.instruments.Novanta.Opus1064.fake.QFakeOpus1064(*args, **kwargs)[source]#
-
Fake Opus1064 laser for UI development without hardware.
- class QInstrument.instruments.Novanta.Opus1064.widget.QOpus1064Widget(*args, device=None, **kwargs)[source]#
Bases:
QOpusWidgetControl widget for a Novanta Opus1064 laser (1064 nm, 2–10 W).
- class QInstrument.instruments.Novanta.Opus1064.tree.QOpus1064Tree(*args, device=None, fields=None, **kwargs)[source]#
Bases:
QInstrumentTreeParameter tree for a Novanta Opus1064 laser.