This repository contains design files and software for the Scanning-Transfer-Cavity-Lock Arduino shield described in the paper https://arxiv.org/abs/1810.07256. For more information about use and performance of the circuit please refer to the paper. The material in this git repository is mainly provided for convenience, and to allow readers to faithfully replicate circuits layouts and firmware used in our experiment.
To order or fabricate a PCB please use the gerber files in ./gerbers.
This folder contains the Eagle files (*.epf *.sch and *.brd ) and the bill of materials is shown below in this same document. One *.pdf printout of the schematic is also provided to allow consulting the schematics without installing a CAD software.
To modify the design Eagle (Version 9 or higher is suggested) must be installed in the computer. Please change current directory path to the directory where your Eagle projects are, then use the command:
git clone https://github.com/JQIamo/Scanning-Transfer-Cavity-Lock
The Eagle project Scanning-Transfer-Cavity-Lock should be directly available for editing from within Eagle.
NOTE: R1 forms a voltage divider with the laser control input impedance, hence it must be chosen for the particular slave laser system used. In our specific case the optimum value was 300 kOhm.
Qty | Value | Parts | Description | Part number |
---|---|---|---|---|
6 | 100 | R4, R6, R7, R9, R10, R16 | RESISTOR SMD 0603 | |
1 | 10K | R5 | RESISTOR SMD 0603 | |
9 | 10K | R17, R22, R23,R24, R25, R26, R27, R28, R29 | RESISTOR SMD 0603 | |
1 | 25K | R14 | RESISTOR SMD 0603 | |
1 | 3.18K | R2 | RESISTOR SMD 0603 | |
1 | 3.9K | R3 | RESISTOR SMD 0603 | |
2 | 30 | R18, R19 | RESISTOR SMD 0603 | |
1 | 300K | R1 | RESISTOR SMD 0603 | |
1 | 5K | R30 | RESISTOR SMD 0603 | |
4 | 5k | R20 | RESISTOR SMD 0603 | |
1 | DNP | R12 | Do not place | |
1 | 10K | R15 | Trimmer | Y505110K0000J0L |
5 | BNC-H | IN_DIGITAL_TRIGGER, IN_PD, IN_RAMP, OUT_LASER, OUT_PIEZO | BNC Connector (TE Connectivity) | 5227161-7 |
11 | 0.1uF | C2, C3, C4, C6, C8, C10, C14, C15, C16, C19, C20 | CAPACITOR SMD 0805 25V | |
2 | 100pF | C5, C18 | CAPACITOR SMD 0805 25V | |
3 | 10nF | C1, C7, C17 | CAPACITOR SMD 0603 25V | |
1 | 10uF | C21 | CAPACITOR SMD 0603 25V | |
3 | 1uF | C9, C11, C12 | CAPACITOR SMD 0603 25V | |
1 | 2.2uF | C13 | CAPACITOR SMD 0603 25V | |
2 | INA2128U | U2, U8 | ||
1 | 12V | U4 | ||
1 | 5V | U7 | ||
1 | -12V | U5 | ||
1 | LTC6655 | U1 | Voltage reference 3.3V | LTC6655CHMS8-3.3#PBF |
4 | MMBD1203 | D1, D2, D3, D4 | ||
1 | PEC09 | ENC2 | Rotary Encoder | PEC09-2320F-S0015 |
1 | "-15V/GND/+15V" | PIN HEADER | ||
5 | ADC, AREF, OUT_ANALOG, POWER, PWM | PIN HEADER | ||
1 | DIGITAL | PIN HEADER | ||
2 | SPI, SPI1 | PIN HEADER |
-
Move JR1(0R) from the 3.3 position to the EXT position select as analog reference the high precision voltage provided by the shield board instead of the 3.3 V rail.
-
The shield board powers the Arduino due applying 5 V to the 5V pin instead of the Vin. This keeps the Arduino Due's switching regulator off preventing ripple noise on the analog ports. To prevent current from flowing to the USB host computer is suggested to remove the polyfuse attached to the programming USB port.
We used a Thorlabs SA201 driver to drive the PZT of your scanned Fabry-Perot cavity. To allow for a wide dynamic range we disconnected the Voffset potentiometer and we apply the DC offset provided by the Arduino's shield directly where the wiper terminal would be connected. The picture below shows where ground and signal have to be connected for the particular revision of PCB we modified.
We provide this information to illustrate our particular method of adding an offset to our piezo actuator however we do not endorse the use of a particular commercial product nor the modification of it.
- First align the master and slave lasers into the scanned FP cavity. The Photodiode voltage signals for the peaks that is to be sent to the Arduino Due ADC must not exceed 3.3 V.
- Each FP cavity scan should be larger than 1 FSR to yield two master peaks in one cavity scan.
- You are now ready to lock the cavity to the Master laser. You can choose your desired value for the CAVITY_REFERENCE. Set laser_K_i=laser_K_p=0 in the PIOC_Handler(). Pressing the switch should lock the cavity. One can check if the cavity is locked if changing the trimpot does not change the position of the peak, but changes the cavity control signal being printed out in the Serial Monitor of the Arduino interface.
- You can change the values for cavity_K_i and cavity_K_p in the PIOC_Handler() to optimize the lock of the cavity to the Master laser.
- Now that the cavity is locked, you can proceed to find the slave laser setpoint(LASER_RERFERENCE). First bring the slave laser close to the desired frequency. With the laser_K_i=laser_K_p=0 in the PIOC_Handler() and LASER_REFERNCE=0, ask the code to spit out laser_error_signal_current. You can acquire this signal using the software Putty and post process it by averaging to determine the average laser_error_signal_current (lr). Now set LASER_REFERNCE=-lr. This is your slave laser setpoint.
- With the LASER_REFERENCE found, now find the appropriate laser_K_i, laser_K_p. You can find this by playing around with these values in the PIOC_Handler().