Skip to content

Arduino Due based Scanning Transfer Cavity Lock Code and Shield Schematic and Board Files

License

Notifications You must be signed in to change notification settings

JQIamo/Scanning-Transfer-Cavity-Lock

Repository files navigation

Scanning-Transfer-Cavity-Lock

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.

Bill of materials

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

Modifications to the Arduino Due Board

  1. 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.

  2. 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.

Modifications in Arduino Due

Modifications to the Thorlabs SA201 Driver

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.

Modifications in Arduino Due

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.

Setting up the code for STCL

  1. 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.
  2. Each FP cavity scan should be larger than 1 FSR to yield two master peaks in one cavity scan.
  3. 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.
  4. 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.
  5. 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.
  6. 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().

About

Arduino Due based Scanning Transfer Cavity Lock Code and Shield Schematic and Board Files

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages