Skip to content

Commit dde12ca

Browse files
Merge pull request #1113 from TheDeanLab/asi-rst
Asi documentation + bug fixes
2 parents 29cc049 + e1f3de0 commit dde12ca

File tree

10 files changed

+104
-53
lines changed

10 files changed

+104
-53
lines changed

docs/source/02_user_guide/01_supported_hardware/daq.rst

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,57 @@ outputs can be wired up as is most convenient.
145145

146146
------------------
147147

148+
Applied Scientific Instrumentation
149+
----------------------------------
150+
151+
Tiger Controller
152+
~~~~~~~~~~~~~~~~
153+
154+
.. warning::
155+
156+
USE OF THE TIGER CONTROLLER AS A DATA ACQUISITION CARD IS STILL IN DEVELOPMENT.
157+
158+
159+
The ASI `Tiger Controller <https://www.asiimaging.com/controllers/tiger-controller/>`_ is
160+
a multi-purpose controller for ASI stages, filter wheels, and dichroic sliders.
161+
It can also control lasers, shutters, remote focusing devices, and galvanometers. More info
162+
for these devices can be found on their respective documention pages.
163+
164+
Remote focus device, galvanometer, and analog laser control is done by the `TGGALVO <https://asiimaging.com/docs/tggalvo>`_ control card.
165+
Shutter and digital laser control is done by the `TGPLC <https://asiimaging.com/docs/tiger_programmable_logic_card>`_ control card.
166+
TGPLC output 1 delivers the camera trigger signal (equivalent to camera_trigger_out_line for the NI Card).
167+
168+
We communicate with Tiger Controllers via a serial port. It is recommended that you
169+
first establish communication with the device using `ASI provided software <https://asiimaging.com/docs/products/tiger>`_.
170+
If not, simply install the `USB driver <https://www.asiimaging.com/support/downloads/usb-support-on-ms-2000-wk-controllers/>`_
171+
to communicate with the Tiger Controller
172+
173+
.. note::
174+
175+
**navigate** has been tested with the following versions of the ASI's Tiger
176+
Controller software:
177+
178+
- Tiger Controller 2.2.0.
179+
180+
.. note::
181+
Some users have reported intermittent connection issues at random intervals when
182+
used with Coherent OBIS lasers. These issues, and how to address them, are discussed
183+
in the :ref:`communication challenges <obis_tiger_connection>` section.
184+
185+
.. collapse:: Configuration File
186+
187+
.. code-block:: yaml
188+
189+
microscopes:
190+
microscope_name:
191+
daq:
192+
hardware:
193+
type: ASI
194+
port: COM4
195+
196+
|
197+
198+
------------------
148199

149200
Synthetic Data Acquisition Card
150201
-------------------------------

docs/source/02_user_guide/01_supported_hardware/galvo.rst

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,23 +40,22 @@ Multiple types of galvanometers have been used, including Cambridge Technologies
4040
4141
------------
4242

43-
ASI
44-
---
45-
46-
Multiple types of galvanometers have been used, including Cambridge
47-
Technologies/Novanta, Thorlabs, and ScannerMAX. Each of these devices
48-
are externally controlled via analog signals delivered from the ASI
49-
Tiger Controller.
50-
51-
The ASI Tiger Controller has a few limitations for the analog signals. First, the
52-
minimum voltage must be zero volts. Second, the period value needs to be a whole number.
53-
Third, there are three analog waveforms offered, sawtooth,
54-
triangle, and sine waves.
55-
43+
Applied Scientific Instrumentation
44+
----------------------------------
45+
46+
In principle, this hardware type can support any analog-controlled galvanometer,
47+
including those from Cambridge Technologies/Novanta, Thorlabs, and ScannerMAX.
48+
Each of these devices are externally controlled via analog signals delivered from the ASI Tiger Controller (`TG-1000 <https://asiimaging.com/docs/products/tiger>`_).
49+
50+
Galvanometers can take two types of analog waveforms: sawtooth and sine.
5651
The sawtooth waveform is a periodic analog waveform. There are three duty cycle values
5752
accepted, 0, 50, and 100. If the duty cycle is 0, the waveform is a falling sawtooth
5853
waveform. If the duty cycle is 50, then it is a triangle wave. If the duty cycle is 100,
59-
the waveform is a rising sawtooth waveform.
54+
the waveform is a rising sawtooth waveform. The duty cycle will be rounded to the nearest acceptable value.
55+
56+
The ASI Tiger Controller has a few limitations for the analog signals.
57+
The period value will be rounded to the nearest whole number of milliseconds,
58+
and for the triangle wave, the period will be rounded to the nearest even number.
6059

6160

6261
.. collapse:: Configuration File
@@ -78,10 +77,10 @@ the waveform is a rising sawtooth waveform.
7877
hardware:
7978
type: ASI
8079
axis: B
81-
min: 0
82-
max: 1.0
83-
waveform: sine
84-
phase: 1.57079632679
80+
min: -5.0
81+
max: 5.0
82+
waveform: sawtooth
83+
phase: 1.57
8584
8685
|
8786

docs/source/02_user_guide/01_supported_hardware/laser.rst

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,10 @@ We currently support laser control via voltage signals. In the near-future, we w
88
Applied Scientific Instrumentation
99
----------------------------------
1010

11-
12-
Tiger Controller
13-
~~~~~~~~~~~~~~~~~~
14-
15-
The Tiger Controller from ASI can also be used to perform analog, digital, and mixed modulation of lasers. Digital modulation is controlled with a `TGPLC <https://asiimaging.com/docs/tiger_programmable_logic_card>`_ or `TGGALVO <https://asiimaging.com/docs/tggalvo>`_ control cards, while analog modulation is controlled with a TGGALVO control card.
11+
The Tiger Controller (`TG-1000 <https://asiimaging.com/docs/products/tiger>`_) from ASI can also be used to perform analog, digital, and mixed modulation of lasers.
12+
Digital modulation is controlled with a `TGPLC <https://asiimaging.com/docs/tiger_programmable_logic_card>`_
13+
or `TGGALVO <https://asiimaging.com/docs/tggalvo>`_ control cards, while analog modulation is controlled with a TGGALVO control card.
14+
TGPLC output 1 is reserved for the camera trigger.
1615

1716
--------------------------------
1817

@@ -28,7 +27,7 @@ The Tiger Controller from ASI can also be used to perform analog, digital, and m
2827
onoff:
2928
hardware:
3029
type: ASI
31-
axis: [2-8]
30+
axis: 2
3231
min: 0.0
3332
max: 5.0
3433
power:
@@ -42,7 +41,7 @@ The Tiger Controller from ASI can also be used to perform analog, digital, and m
4241
onoff:
4342
hardware:
4443
type: ASI
45-
axis: [2-8]
44+
axis: 3
4645
min: 0.0
4746
max: 5.0
4847
power:

docs/source/02_user_guide/01_supported_hardware/remote_focus.rst

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -112,15 +112,20 @@ Optotune Focus Tunable Lens
112112
113113
------------------
114114

115-
ASI
116-
---
115+
Applied Scientific Instrumentation
116+
----------------------------------
117117

118-
The ASI Tiger Controller has a few limitations for the analog signals. First, the
119-
minimum voltage must be zero volts. Second, the period value needs to be a whole number.
118+
In principle, this hardware type can support any analog-controlled voice coil or tunable lens.
119+
The `BLINK <https://www.thorlabs.com/thorproduct.cfm?partnumber=BLINK>`_ and the `Optotune Focus Tunable Lens <https://www.optotune.com/tunable-lenses>`_
120+
can be controlled with an analog signal from the ASI Tiger Controller (`TG-1000 <https://asiimaging.com/docs/products/tiger>`_).
120121

121-
There are two analog waveforms offered, triangle and ramp waves. The triangle waveform is
122-
a periodic analog waveform, with no delay periods. The sawtooth waveform is a periodic
123-
analog waveform with a delay period between each cycle.
122+
The ASI Tiger Controller has a few limitations for the analog signals.
123+
The remote focus waveform is a periodic ramp waveform with a delay period between each ramp.
124+
The ramp lasts for the exposure time, falls very quickly and rests until the next exposure time.
125+
Fall time is not configurable so there is no 'gentle' fall with this hardware.
126+
127+
The ramp waveform must last a whole number of milliseconds. If exposure time is not a whole number,
128+
the ramp time will be rounded to the nearest whole number.
124129

125130
.. collapse:: Configuration File
126131

@@ -134,8 +139,8 @@ analog waveform with a delay period between each cycle.
134139
axis: A
135140
min: 0
136141
max: 5
137-
port: COM2
138-
baudrate: 9600
142+
port: COM4
143+
139144
|
140145
141146
------------------

docs/source/02_user_guide/01_supported_hardware/shutter.rst

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,9 @@ is closed.
1919
Applied Scientific Instrumentation
2020
----------------------------------
2121

22-
Tiger Controller
23-
~~~~~~~~~~~~~~~~~~
24-
25-
-----------------
26-
27-
The `tgplc <https://asiimaging.com/docs/tiger_programmable_logic_card>`_ control card from ASI can be used to trigger shutter operation.
22+
The `TGPLC <https://asiimaging.com/docs/tiger_programmable_logic_card>`_ control card for the
23+
Tiger Controller (`TG-1000 <https://asiimaging.com/docs/products/tiger>`_) from ASI can be used to trigger shutter operation.
24+
TGPLC output 1 is reserved for the camera trigger.
2825

2926
-----------------
3027

@@ -37,9 +34,10 @@ The `tgplc <https://asiimaging.com/docs/tiger_programmable_logic_card>`_ control
3734
shutter:
3835
hardware:
3936
type: ASI
40-
axis: [1-8]
37+
axis: 2
4138
min: 0.0
4239
max: 5.0
40+
port: COM4
4341
4442
|
4543

docs/source/05_reference/api.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Software API
88

99
navigate.config
1010
navigate.controller
11+
navigate.controller.configurator
1112
navigate.log_files
1213
navigate.model
1314
navigate.tools

src/navigate/config/configuration_database.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@
108108

109109
daq_device_types = {
110110
"National Instruments": "NI",
111-
"Applied Scientific Instrumentation": "ASI",
111+
"Applied Scientific Instrumentation": ("ASI", "asi"),
112112
"Virtual Device": "Synthetic",
113113
}
114114

src/navigate/model/device_startup_functions.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -539,9 +539,7 @@ def start_daq(
539539

540540
return NIDAQ(configuration)
541541

542-
elif device_type == "asi.ASI":
543-
# from navigate.model.devices.daq.asi import ASIDaq
544-
# name = "Microscope-0"
542+
elif device_type == "ASI":
545543
return start_device(name, configuration, "daq")
546544

547545
elif device_type.lower().startswith("synthetic"):

src/navigate/model/devices/laser/asi.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def __init__(self, microscope_name, device_connection, configuration, device_id:
8080
"laser"
8181
][device_id]["onoff"]["hardware"].get("type", None)
8282

83-
if analog == "asi.ASI" and digital == "asi.ASI":
83+
if "ASI" in analog and "ASI" in digital:
8484
modulation_type = "mixed"
8585
#: float: The minimum digital modulation voltage.
8686
self.laser_min_do = self.device_config["onoff"]["hardware"]["min"]
@@ -93,15 +93,15 @@ def __init__(self, microscope_name, device_connection, configuration, device_id:
9393
#: str: Output axes on Tiger Controller
9494
self.analog_axis = self.device_config["power"]["hardware"]["axis"]
9595
self.digital_axis = self.device_config["onoff"]["hardware"]["axis"]
96-
elif analog == "asi.ASI":
96+
elif "ASI" in analog:
9797
modulation_type = "analog"
9898
#: float: The minimum analog modulation voltage.
9999
self.laser_min_ao = self.device_config["power"]["hardware"]["min"]
100100
#: float: The maximum analog modulation voltage.
101101
self.laser_max_ao = self.device_config["power"]["hardware"]["max"]
102102
#: str: Output axis on Tiger Controller
103103
self.analog_axis = self.device_config["power"]["hardware"]["axis"]
104-
elif digital == "asi.ASI":
104+
elif "ASI" in digital:
105105
modulation_type = "digital"
106106
#: float: The minimum digital modulation voltage.
107107
self.laser_min_do = self.device_config["onoff"]["hardware"]["min"]

src/navigate/model/microscope.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -564,11 +564,11 @@ def end_acquisition(self) -> None:
564564
4 must be manually shut off).
565565
"""
566566
self.daq.stop_acquisition()
567-
galvo_type = self.configuration["configuration"]["microscopes"][
568-
self.microscope_name
569-
]["galvo"][0]["hardware"]["type"]
570-
if galvo_type == "asi.ASI":
571-
for k in self.galvo:
567+
for i, k in enumerate(self.galvo):
568+
galvo_type = self.configuration["configuration"]["microscopes"][
569+
self.microscope_name
570+
]["galvo"][i]["hardware"]["type"]
571+
if galvo_type in ("asi.ASI", "ASI"):
572572
self.galvo[k].turn_off()
573573

574574
self.stop_stage()

0 commit comments

Comments
 (0)