3A Constant Current Driver for DPSSL+SHG experiment

This CC driver is designed for DPSSL+SHG experiment


This is a very simple current source, I just use it to safely drive a common high power C-mount laser diode. Do not use this driver to drive any expensive diode because there isn’t any protection circuit in this schematic. And do not expect great drift and noise performance of this circuit. If you are looking for some precision choice, you may keep a look at my design specified for precision lasers.

The left part buffers the output from TL431A (a very cheap voltage standard), to give a stable voltage about 0.041V.

The center part charge a large capacitor through 10K resistor to form a RC circuit, providing soft start function to the driver.

The right part is a simple PI controlled constant current circuit, receive voltage signal from the potentiometer which set the current we want, get the feedback from 5 parallel current sensing resistors, drive a MOSFET to control the current.

In order to reduce the heat dissipate on the MOSFET, I use a DC-DC module to provide power a little bit higher than the Vf of the diode. This  method is not practical in precision driver because the DC-DC module will bring in terrible noise to the system.

Here are photos of the driver under test and the final PCB version.






Measurement of Electron Drift in Gas

This project aims at measuring the velocity of drifting electrons triggered by UV laser, which can be considered as a prototype of the TPC (Time Projection Chamber) laser calibration system. The introduction includes the following aspects: the design of the system, data collection, data analysis and preliminary results.

Whole System

High voltage is applied to the MPC (Multiwire Proportional Chamber) to generate a uniform electric field. Treated as a point-like particle, the laser-stimulated electrons in the field will reach a constant velocity in the working gas soon after their appearance. Since the accelerating time is short, we can assume the drifting time is approximately proportional to the drifting distance. Through a linear fit, we can get the drifting velocity of certain kind of working gas.

The Drift Chamber

The system is designed under the principle of automatic control. The motion of MPC is dominated by a stepper motor, which is controlled by computer. The theoretical precision of motion is approximately 1 μm. The amplified signals of Laser and MPC are sampled and shown on oscilloscope. The connection between computer and oscilloscope ensures the arbitrariness of data collection. We write a LabView program to manage both of these. Abundant data are collected on each position and then exports to a file.

Apparatus Sketch
Data Acquisition based on LabVIEW

In order to calculate the drifting velocity from amplitude varied data, special strategy should be applied. For each group, we find the average of maximum and minimum. Then we fit the data (either ascending or descending slope) to obtain its linear regression equation and solve for the time on that average level. The average of these time spots can be considered as the drifting time of the point. Linear fit these drifting time points to derive the drifting velocity.

Signal Analysis & Fitting

The working gas we adopted was 9.97% Methane in Argon. We sampled 20 times for each point, with total 10 sampling points in all. The drifting velocity we find is  u=(4.840±0.053)×10^4 m/s and is also supported by other researches.

Drift Time vs Drift Distance
Results from other sources


FPGA based high speed real time data recorder

This project builds a FPGA controlled analog card that can transfer sampled analog data to computer through USB 2.0 interface. I have achieved over 30MB/s stable real time data recording using this device. Data are received by a libusb based python script and written into hard drive. So the recording length is totally limited by the free space of your hard drive.

This is the device itself.

Analog Device: AD8023 40MS/s 10bit ADC, Xilinx: Spartan-6 XC6SLX25 FPGA, Cypress: CY7C68013 USB 2.0 controller


A hertz level sine wave recorded by this device. The data file is 200MB in size and I use mmap to speed up the reading process and prevent memory overflow. I have tested to record for more than a minute, it did not lose any packet!fpga_analog_recorder