Skip to content

Remove logic and begin adding grating scan #1

Merged
merged 24 commits into from
Mar 27, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
4071af9
Adding a generic motor interface as well as hardware spec for Thorlab…
Mar 13, 2025
7328212
Adding a generic motor interface as well as hardware spec for Thorlab…
Mar 13, 2025
794b2c4
Merge branch 'diffgrat_exp' of https://github.itap.purdue.edu/hoodlab…
lange50 Mar 13, 2025
b4264a0
Added set wavelength command for scanning laser, also beginning to in…
lange50 Mar 13, 2025
9320b6b
Continuing work on the grating scan logic. Lots of additions includin…
Mar 17, 2025
98e2e19
Adding a powermeter interface, hardware, dummy, and logic.
Mar 17, 2025
b5ca3ae
Adjusted how calibration is handled. Likely still needs work.
Mar 18, 2025
a97696e
Adding in grating scan GUI and main window code.
Mar 20, 2025
7ae1963
Added set wavelength to dummy
lange50 Mar 20, 2025
a63d0b7
Adding Christians requests to the GUI. Still need to be connected to …
lange50 Mar 20, 2025
a6f971a
Updating to move scan_rate and scan_type to front panel and to only s…
Mar 21, 2025
31878d5
Adding functions to match with the new interface to get allowed scan …
Mar 21, 2025
145df00
Updating Grating Scan to improve the UI as well as poll the laser for…
Mar 21, 2025
48d1259
Updates to the save routine to (hopefully) get the data we care about…
Mar 21, 2025
668afd0
Fixed wavelength calibration for processing data.
Mar 21, 2025
35112c6
Updated port number
lange50 Mar 26, 2025
fb90d92
Updates to how laser scan rate and scan type were passed down to the …
lange50 Mar 26, 2025
0002bd5
Updates to how scan rate and scan type are handled and set. Should co…
lange50 Mar 26, 2025
80bd9a9
Updated to have correct laser port, to not use redundant logic module…
lange50 Mar 26, 2025
3c1093e
Removed duplicate common/ logic modules and moved their functionality…
lange50 Mar 26, 2025
20eb17e
Moved signals into interface, from hardware spec. I assume this is al…
lange50 Mar 26, 2025
76f479a
Fixes to get the laser rate/type to match properly. Updated scan type…
lange50 Mar 27, 2025
efb5395
Removed debug prints.
lange50 Mar 27, 2025
d2005fc
Merge branch 'main' into remove_logic
bcerjan Mar 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
127 changes: 127 additions & 0 deletions cfg/grating_scan.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
global:
# list of modules to load when starting
startup_modules: []

# Module server configuration for accessing qudi GUI/logic/hardware modules from remote clients
remote_modules_server:
address: 'localhost'
port: 12345

# Server port for serving the active qudi module namespace locally (localhost).
# Used by e.g. the Qudi jupyter kernel.
namespace_server_port: 18861

# If this flag is set (True), all arguments passed to qudi module APIs from remote
# (jupyter notebook, qudi console, remote modules) will be wrapped and passed "per value"
# (serialized and de-serialized). This is avoiding a lot of inconveniences with using numpy in
# remote clients.
# If you do not want to use this workaround and know what you are doing, you can disable this
# feature by setting this flag to False.
force_remote_calls_by_value: True

# Qss stylesheet for controlling the appearance of the GUIs.
# Absolute path or relative to qudi.artwork.styles
stylesheet: 'qdark.qss'

# Default root directory for measurement data storage. All eventual data sub-directories should
# be contained within this directory. This is not enforced, just convention.
# The fallback directory is <user home>/qudi/Data/
# default_data_dir: C:\Users\neverhorst\qudi\Data

# Save data to daily data sub-directories by default
daily_data_dirs: True


gui:
grating_scan_gui:
module.Class: 'terascan.terascan_gui.TerascanGui'
connect:
terascan_logic: terascan_logic

logic:
terascan_logic:
module.Class: 'terascan_logic.TerascanLogic'
connect:
laser: scanning_laser_logic
wavemeter: wavemeter_logic
counter: fast_counter_logic
daq: daq_reader_logic # Note that this logic assumes there is exactly one (digital) input to the DAQ.
options:
record_length_ms: 1 # Length of data (in ms) to take at each wavelength. Only integers.


daq_reader_logic:
module.Class: 'common.daq_reader_logic.DAQReaderLogic'
connect:
daq: nidaq # daq_reader_dummy
options:
update_interval: 0 # Period in ms to check for data updates. Integers only. 0 is as fast as possible


wavemeter_logic:
module.Class: 'common.wavemeter_logic.WavemeterLogic'
connect:
wavemeter: wavemeter # wavemeter_dummy


fast_counter_logic:
module.Class: 'common.fast_counter_logic.FastCounterLogic'
connect:
fast_counter: swabian_timetagger # fast_counter_dummy


scanning_laser_logic:
module.Class: 'common.scanning_laser_logic.ScanningLaserLogic'
connect:
laser: solstis_laser # scanning_laser_dummy
options:
min_wavelength: 0.700 # in um
max_wavelength: 0.800 # in um


hardware:

# Real Hardware:
nidaq:
module.Class: 'daq.nidaq.NIDAQ'
options:
device_str: 'Dev2'
channels:
signal:
description: 'Laser Lock TTL'
type: 0 # 0 for Digital, 1 for Analog
name: 'line0' # The name as idintified by the card
port: 1 # port number identified by the card

wavemeter:
module.Class: 'wavemeter.high_finesse_wavemeter.HighFinesseWavemeter'

swabian_timetagger:
module.Class: 'timetagger.swabian_tagger.SwabianTimeTagger'
options:
channels:
counts: 1 # label and channel number on the time tagger (1,2,3,4)

solstis_laser:
module.Class: 'laser.solstis_laser.SolstisLaser'
options:
host_ip_addr: '192.168.1.225' # IP address of control computer
laser_ip_addr: '192.168.1.222' # IP address of laser
laser_port: 39933 # Port number to connect on
scan_rate: 13 # See "solstis_constants.py" TeraScanRate Enum for values
scan_type: 2 # see "solstis_constants.py" TeraScanType Enum for values

# Dummy Hardware:
daq_reader_dummy:
module.Class: 'dummy.daq_reader_dummy.DAQReaderDummy'

fast_counter_dummy:
module.Class: 'dummy.fast_counter_dummy.FastCounterDummy'

wavemeter_dummy:
module.Class: 'dummy.wavemeter_dummy.WavemeterDummy'

scanning_laser_dummy:
module.Class: 'dummy.scanning_laser_dummy.ScanningLaserDummy'


70 changes: 34 additions & 36 deletions cfg/terascan.cfg
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
global:
# list of modules to load when starting
startup_modules: []
startup_modules: [terascan_gui]

# Module server configuration for accessing qudi GUI/logic/hardware modules from remote clients
remote_modules_server:
Expand Down Expand Up @@ -42,41 +42,41 @@ logic:
terascan_logic:
module.Class: 'terascan_logic.TerascanLogic'
connect:
laser: scanning_laser_logic
wavemeter: wavemeter_logic
counter: fast_counter_logic
daq: daq_reader_logic # Note that this logic assumes there is exactly one (digital) input to the DAQ.
laser: solstis_laser
wavemeter: wavemeter
counter: swabian_timetagger
daq: nidaq # Note that this logic assumes there is exactly one (digital) input to the DAQ.
options:
record_length_ms: 1 # Length of data (in ms) to take at each wavelength. Only integers.


daq_reader_logic:
module.Class: 'common.daq_reader_logic.DAQReaderLogic'
connect:
daq: nidaq # daq_reader_dummy
options:
update_interval: 0 # Period in ms to check for data updates. Integers only. 0 is as fast as possible
# daq_reader_logic:
# module.Class: 'common.daq_reader_logic.DAQReaderLogic'
# connect:
# daq: nidaq # daq_reader_dummy
# options:
# update_interval: 0 # Period in ms to check for data updates. Integers only. 0 is as fast as possible


wavemeter_logic:
module.Class: 'common.wavemeter_logic.WavemeterLogic'
connect:
wavemeter: wavemeter # wavemeter_dummy
# wavemeter_logic:
# module.Class: 'common.wavemeter_logic.WavemeterLogic'
# connect:
# wavemeter: wavemeter # wavemeter_dummy


fast_counter_logic:
module.Class: 'common.fast_counter_logic.FastCounterLogic'
connect:
fast_counter: swabian_timetagger # fast_counter_dummy
# fast_counter_logic:
# module.Class: 'common.fast_counter_logic.FastCounterLogic'
# connect:
# fast_counter: swabian_timetagger # fast_counter_dummy


scanning_laser_logic:
module.Class: 'common.scanning_laser_logic.ScanningLaserLogic'
connect:
laser: solstis_laser # scanning_laser_dummy
options:
min_wavelength: 0.700 # in um
max_wavelength: 0.800 # in um
# scanning_laser_logic:
# module.Class: 'common.scanning_laser_logic.ScanningLaserLogic'
# connect:
# laser: solstis_laser # scanning_laser_dummy
# options:
# min_wavelength: 0.700 # in um
# max_wavelength: 0.800 # in um


hardware:
Expand Down Expand Up @@ -108,20 +108,18 @@ hardware:
host_ip_addr: '192.168.1.225' # IP address of control computer
laser_ip_addr: '192.168.1.222' # IP address of laser
laser_port: 39900 # Port number to connect on
scan_rate: 13 # See "solstis_constants.py" TeraScanRate Enum for values
scan_type: 2 # see "solstis_constants.py" TeraScanType Enum for values

# Dummy Hardware:
daq_reader_dummy:
module.Class: 'dummy.daq_reader_dummy.DAQReaderDummy'
# daq_reader_dummy:
# module.Class: 'dummy.daq_reader_dummy.DAQReaderDummy'

fast_counter_dummy:
module.Class: 'dummy.fast_counter_dummy.FastCounterDummy'
# fast_counter_dummy:
# module.Class: 'dummy.fast_counter_dummy.FastCounterDummy'

wavemeter_dummy:
module.Class: 'dummy.wavemeter_dummy.WavemeterDummy'
# wavemeter_dummy:
# module.Class: 'dummy.wavemeter_dummy.WavemeterDummy'

scanning_laser_dummy:
module.Class: 'dummy.scanning_laser_dummy.ScanningLaserDummy'
# scanning_laser_dummy:
# module.Class: 'dummy.scanning_laser_dummy.ScanningLaserDummy'


Loading