Angle Resolved Raman Spectrometer

back to home page

This page introduces my project to upgrade the Raman Spectrometer in Yuanbo's Laboratory to an angle resolved Raman Spectrometer.

Figure1 schametic diagram for angle-resolved Raman system

The key to construct the angle resolved Raman spectrometer is to change the polarization of the incident beam while keep the intensity of the incident beam unchanged.

I first tried to use a polarizer and a half quarter plate to create a circularly polarized light and then use a rotatable polarizer to create the linearly polarized light to act with the sample.However in practical I found this configuration had several problems. For instance, the circularly-polarized light is hard both to produce and to maintain; the reflected light from the incident beam have to pass the polarizer inevitably due to the back scattering geometry of our device.

Following Professor Wang's suggestion, I used one polarizer and a rotatable half wave plate(HWP) to substitute the polarizer in the older setup. The direction of the polarizer is set to be parallel to the beam splitter, so after reflection its polarization is still well-defined. Compared with the former one, this configuration has two advantages

  1. Using the HWP to change the polarization direction will give you a more stable intensity as well as changeable polarization direction;
  2. The polarization of the beam entering the spectrum won’t change. For that when incident beam passed the HWP, the polarization direction changed for 2θ (assume the angle between the axis of the polarizer and the fast axis of the HWP is θ). And when the scattered beam passed, a -2θ rotation was induced. That is to say the HWP will change the polarization back before the beam enter the spectrometer, so nothing should be worried about the possible anisotropy of the spectrometer’s response.

I used Agilis™ Piezo Motor Driven Rotation Stages AG-PR100 produced by Newport corporation to rotate the HWP. Official controlling software can be downloaded from the website. Besides they also offer toolkits for LabVIEW and C enabling customers to control it through homemade program. Since the software only support some basic functions. I decided to write a program in LabVIEW myself.

Figure2: this panel is the kernel part of the LabVIEW program

Here is the program and the manuseript for the contorlling program of the rotation stage. Use LabVIEW 2013 or later version to open it. This program calls dll file and sub VIs, which is included in the folder and can also be found on the Newport Website

The spectrum is Shamrock 750 produced by Andor. Users can control it through both software and homemade programs since it offer toolkits for LabVIEW and C. After a short try, I feel it formidable and arduous to develop a complete controlling program form zero, so at last I decided to use the software combined with scripts written by Andor Basic(A programming language similar to C developed by Andor ), which can achieve basic programming functions.

basic manual version 3.2 printers copy Here is the manuscript For Andor Basic provided by Anodr.

The following is the kernel part of the script which executes the function of taking spectrum and remove random cosmic ray automatically

...

:rem initialize the spectrometer setting 
Num=3
expTime=15
Degree=5
s=0
j=0


while (j<(180/Degree))
  	print(str$(j+1)+"of"+str$(180/Degree))
    
	s=s+Degree
	print(str$(time())+"waiting for rotation...")
	delay(20000*Degree)	:rem to be modified according to the degrees
	print(str$(time())+"rotation finished")
	print(str$(time())+"acquisiting data...")

	for i=1 to Num step 1
		SetFVB()
		SetSingleScan(expTime) :rem SetSingleScan(expTime)
		Run()
		:rem the data will be stored in the sharp'0 set
		copy(#0,#i)
		copyxcal(#0_sig,#i_sig):rem copy the X calibration of #0_sig to #i_sig
		print(str$(time())+"#"+str$(i)+"is finished")
	next
	#(Num+1)_sig=#1_sig*0
	copyxcal(#0_sig,#(Num+1)_sig)
	
	for i=1 to Num step 1
		rayremove2(#(i-1),#i,1)
		#(Num+1)_sig=#(Num+1)_sig+#i_sig
		:rem add three sets of data up
	next
	:rem correct these abnormal values due to the cosmic ray

...

	j=j+1
wend

...

Here is the complete version of the program.

Here comes the critical step - we need to make two programs run synchronously. Since they are two programs runned by different software, the only method comes to me is to exchange information through a text file in the disk. For example, at the very beginning, the Andor program takes the spectrum, after it finishes it will create a text file named “communication.txt” contains the following words: “Hey guy, you can rotate now.” to inform the rotation stage to work. The LabVIEW program is searching for this sentence every second, soon as it detected the order, it will rotate the rotation stage by 5 degrees. Then it leaves a message: “I have finished, you can take the spectrum now.” Then it will go into a cycle like this until the HWP has rotated by 180 degrees.

In practice I found the I/O function of the C based script to be terribly weak, so I gave up to make it searching for orders form LabVIEW program. Instead I set the script to cycle in its own pace and leave enough time for the rotation stage to rotate. LabVIEW, which has a better I/O function, is searching for the information given by the script once a second. Every time the spectrometer has finished taking the spectrum, the rotation stage will get the information and rotate the HWP to prepare for the next measurement.

Another tough problem encountered is that the step length of the rotation stage is not reproducible. This was admitted officially by Newport.

Figure3: screenshot from the manuscript of AG-PR100

This has brought us with great trouble, because the step length is changing frequently and sometimes the error is quite large. For instance, One day I found for the rotation stage to rotate one cycle, it will require about 160000 steps and the next day I found the number changed to 155000 steps. So we need to calibrate it from time to time. I am now trying to fix it by installing a magnetic ruler on the stage and try to control its motion through exterior signal generated by the magnetic ruler. Before that I can only calibrate it frequently to ensure that it will rotate as I required.

After running the program I will get many text files in the fold I assign. Each records the Raman spectrum with incident beam polarized at corresponding direction. It is convenient to process these files by Matlab.

the first step is to correct the background. According to my experience Si/SiO2 substrate will bring little background while polymer substrate will introduce a obvious background to the signal. In order to get the intensity we need to subtract the background. I have found a very good matlab code for doing this job. Please refer here for source code and demo macro.

The next step is to fit the peak, I also find a good Matlab code online to finish this task. please refer the website and the manuscript.

After these two steps finished, there are only trivial work remains. My codes are attached. You can also write a program yourself if you are familiar with Matlab. One more thing to mention as some experience of using the second code, that is preprocessing the data to make the center of the peak precise. The more precise you set the center of the peak, the better result you will get. That is usage of the file named “temp.m” included in the package.

Here is the complete set of my program.

Here I post some of the results I get as examples

Figure4: The angle resolved Raman spectrum of silicon, graphite and black phosphorus.

The system is initially designed to Identify the crystal orientation of the black phosphorus.

Here is my report.Identifying the crystal orientation of the black phosphorus

  • angle_resolved_raman_spectrometer.txt
  • 最后更改: 2015/11/10 16:19
  • (外部编辑)