Spectrometer Triggering

Triggering deals with connecting electrical peripherals together such that one device can electronically signal another to start or end an activity such that operations can be closely synchronized.

Wasatch Photonics spectrometers support two types of triggering: acquisition triggering, where an external device signals the spectrometer to begin one or a sequence of acquisitions, and light source triggering, where the spectrometer signals an external device (typically a laser, lamp or shutter thereof) to change state in synchronization with the start/end of a spectral measurement.

All Wasatch Photonics spectrometers contain the electronics and firmware necessary to support triggering, but standard benchtop models do not expose the necessary leads and connectors to wire up the spectrometer to your electronics. However, our OEM models do make the electrical connectors readily available, while providing a miniaturized and easily mounted optical bench and baseplate suitable for system integration.

Acquisition Triggering

On our OEM spectrometers, the top-mounted “USB board” (containing the USB Micro-B connector and 12V power barrel jack) has an exposed 20021111-00016T4LF (Digikey 609-3715-ND) connector labeled J8. As described in ENG-0085 (“110378 OEM Connector Interface”), pin 10 on this connector provides an inbound acquisition trigger.

A simple cable can be built using the matching 1175-1650-ND IDC socket and ribbon cable, or Wasatch Photonics can provide one for your testing and evaluation.

This trigger pin expects a LVTTL signal from 0 to 3.3V. On the rising edge, the spectrometer will internally generate an 0xad opcode (the same command normally sent by software to start an acquisition). This will have the same result as if your software had sent a START_ACQUISITION command, but will avoid the latency and non-determinability of USB communications.

The process of reading the spectra over USB from software is unchanged: you can optionally issue a series of POLL_DATA commands to “ping” the spectrometer to determine when the next spectrum is ready to be read, or you can open a read() against the bulk endpoint(s) with an appropriate timeout. You can issue the bulk read in one large chunk or a series of smaller ones.

The process of enabling triggering in software is slightly different depending on whether you’re using an FX2- or ARM-based spectrometer. As long as you’re using Wasatch drivers, this difference is encapsulated and automated for the caller. In brief, on the FX2 you must send the opcode 0xd2 (SET_TRIGGER_SOURCE) with an argument of 0x01 (TRIGGER_SOURCE_EXTERNAL) to tell the microcontroller to check the external pin for incoming acquisition signals (instead of waiting for software to send a START_ACQUISITION command over USB). ARM-based spectrometers don’t need this opcode, and in fact are continuously monitoring for both internal (software) and external (triggered) acquisition signals.

More information about these and other opcodes can be found in our ENG-0001 USB API documentation. Regardless of your spectrometer architecture, our software drivers provide functions and properties to ensure that subsequent calls to their respective getSpectrum() functions will not internally generate a START_ACQUISITION command:

A simple functional test of this sequence is demonstrated in the Python unit-test script here:

You can see this process demonstrated using ENLIGHTEN, Wasatch.NET and LabVIEW in the video below:

This demonstration used a Koolertron DDS Signal Generator sending a 3.3V (LVTTL) square wave at 0.2Hz (5sec period) with 1.65V offset (so sine wave isn’t centered on zero, and spans (0, 3.3V)) and 50% duty cycle.