|Sebastien Bourdeauducq 7c9faf4529 new algo with better diagnostics||1 month ago|
|src||1 month ago|
|.gitignore||4 months ago|
|Cargo.lock||2 months ago|
|Cargo.toml||2 months ago|
|LICENSE||1 month ago|
|README.md||1 month ago|
|diagram.pdf||1 month ago|
|diagram.png||1 month ago|
|glasgow-applet.diff||1 month ago|
|glasgow.nix||2 months ago|
|plot.py||2 months ago|
|shell.nix||1 month ago|
|simple-dmi.json||2 months ago|
|simulate.py||3 months ago|
|wavemeter.json||1 month ago|
An open source laser wavemeter with NO expensive optics and NO machining.
Traveling Michelson wavemeters are one of the simplest designs that one can build. However, a high-resolution wavemeter requires the travel of a cube corner over a long range of motion. This motion needs to be smooth and vibration-free, which makes the mechanical design and construction rather difficult, and maintaining alignment over the whole range of travel is also challenging.
This design avoids those difficulties by restricting the range of motion to about a millimeter, which allows a low-cost voice coil to be used as actuator, such as an actual audio speaker with the corner cube glued in the middle. As a result, this wavemeter can be built entirely using low-cost off-the-shelf components.
While this reduced range of motion corresponds to a similar reduction in resolution in a traditional Michelson wavemeter, this design compensates by using the following techniques:
We assume that the reader has a basic understanding of the principles of displacement measurement interferometers using two-frequency lasers, and of traveling Michelson wavemeters. The links below provide a good introduction to them.
The core of the design is a displacement measurement interferometer with a corner cube moving back and forth, and the input laser superimposed on the DMI beam but propagating in the opposite direction. The input laser traverses the same optical path as the DMI beam, interferes with itself, and produces a bright or dark spot at the photodetector depending on the optical path difference between the two arms of the interferometer. Meanwhile, the DMI constantly measures this optical path difference, which it can do precisely as its beam is superimposed with the input beam. The distance, as measured by the DMI, between bright and dark spots (fringes) corresponds to the wavelength of the input laser.
To improve precision, a distance measurement is taken for several thousands of consecutive input laser fringes, for about one half-cycle (“scan”) of the corner cube motion. The distance between the first and last fringe is divided by the number of intervals between fringes that have been counted during the scan.
The DMI beam has the same function as the tracer beam in traditional Michelson interferometers. One disadvantage of this design, however, is that the tracer beam cannot be blocked by a simple polarizer as it has two orthogonally polarized components.
The input laser must be circularly polarized, or polarized 45 degrees from the axes of the DMI’s polarizing beam splitter (PBS), so that equal power comes out of each side of the PBS. After the beams are recombined by the PBS, they do not interfere yet as they are orthogonally polarized. A polarizer at 45 degrees in the recombined beam creates the interference.
The mobile corner cube is mounted in the center of an audio speaker. This is easy to do using two-component epoxy glue and a short section of rigid water pipe of a diameter slightly smaller than the corner cube. This arrangement has a mechanical resonance, at a frequency around 47Hz on the prototype, at which little drive power is required to obtain an oscillation amplitude of over a millimeter. At resonance, the speaker can be connected directly to a typical function generator without an additional amplifier, and sufficient displacement can still be obtained.
All the signals coming from the optical setup (REF from the two-frequency laser, MEAS from the DMI photodetector, and INPUT from the input laser photodetector) are sampled by a logic analyzer that streams the raw data into a computer for analysis in software.
The software’s main loop runs at each cycle of the 48MHz sample clock of the logic analyzer.
A digital phase locked loop (DPLL) locks to the REF signal (around 2MHz) and provides phase information at each cycle of the sample clock (48MHz). It also “unwraps” the phase: a second phase accumulator inside the DPLL does not wrap around at each cycle of the REF clock, but after a large number of cycles. This “unwrapped” phase output makes the job of the position tracker easier. The position tracker monitors the MEAS signal for edges, and uses the unwrapped phase difference between consecutive MEAS edges to deduce the displacement.
Those two components, the DPLL and the position tracker, are enough to form a basic DMI setup. The program
simple-dmi does that, and adds decimation/averaging to the output. It can be used as a minimalist alternative to Sam Goldwasser’s µMD1 that runs on Linux (and uses a Glasgow logic analyzer instead of the chipKit DP32). The output can be plotted in real time with PyQtGraph using
The wavemeter cannot use the raw output of the position tracker for two reasons:
Those sources of noise are attenuated using a digital filter. First, the position signal (whose rate of updates varies due to REF instability and the Doppler effect on MEAS) is resampled to a constant 48MHz by duplicating samples. This is followed by a biquad IIR low-pass filter.
The rest of the wavemeter algorithm is fairly straightforward. The minimum and maximum positions of the moving corner cube are monitored, and a position window during which fringes are counted is determined. Every time the moving corner cube enters and leaves this window (in both directions of motion), the positions of the first and last fringes from the input laser are stored along with the number of fringes within the window; this information is then used to compute the input laser wavelength. Several measurements are then averaged to further reduce noise and generate the final wavelength output. As the scanning rate is higher than in typical Michelson wavemeters, an update rate better than 1Hz is still feasible with a high averaging/decimation factor.
Questions, comments: email sb [AT] m-labs.hk
The software in this repository is copyright © 2019 Sébastien Bourdeauducq and licensed under the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See the LICENSE file.
Basically, do whatever you want with this program, but keep the core open. I’m fed up with proprietary laser equipment with pricing through the roof, salespeople wearing ties, and hobbyist-hostile policies.
To build, install Rust and Cargo and run
cargo build --release. This will produce binaries in the
target directory. Do not forget the
--release flag, as the software without the compiler optimizations is too slow for real-time processing. You will also need to install the Glasgow software (with the provided patch that adds the logic analyzer applet) to run the program.
plot.py DMI demo requires Python with PyQtGraph and Quamash.
All of the above has been tested on Linux only, and may or may not work on Windows.
If you are using Nix, running
nix-shell will set up Rust, Cargo, patched Glasgow, and Python for you.