An Integrated System for Measuring Spectra of Electronic Flash Sources by Jessica Y.A. Wong Submitted to the Department of Electrical Engineering and Computer Science in partial fulfillment of the requirements for the degrees of Bachelor of Science in Computer Science and Engineering and Master of Engineering in Electrical Engineering and Computer Science at the MASSACHUSETTS INSTITUTE OF TECHNOLOGY February 2000 Copyright @2000 Jessica Y.A. Wong. All rights reserved. The author hereby grants to M.I.T. permission to reproduce and distribute publicly paper and electronic copies of this thesis and to grant others the right to do so. Author........................................ ......... ....... . Department of Electrical Engineerin and Computer IScience February 2, 2000 C ertified by ............................. Dr. James Bales Instructor Thesis Supervisor A ccepted by ............ .......... Arthur C. Smith Chairman, Department Committee on Graduate Theses MASSACHUSE FTS INSTITUTE OF TECH NOLOGY ENG JUL 2 7 2000 LIBRARIES An Integrated System for Measuring Spectra of Electronic Flash Sources by Jessica Y.A. Wong Submitted to the Department of Electrical Engineering and Computer Science on February 2, 2000, in partial fulfillment of the requirements for the degrees of Bachelor of Science in Computer Science and Engineering and Master of Engineering in Electrical Engineering and Computer Science Abstract This paper describes work done in designing a system aiding in learning about the output of different strobe light sources. The main component of this system is a program written in Visual Basic to control an EG&G spectral analyzer. The final product delivers to the user accurate data regarding spectral makeup of light sources. Thesis Supervisor: Dr. James Bales Title: Instructor 2 Acknowledgements Thanks to the waves for momentum, and to the lighthouses for guidance. I would like to thank Marc for the Tech support and vacations, Justin for graphical support and patience, Dominic, Judy, and Darrell Wong for moral support and for everything else that has brought me here. 3 Contents 1 Purpose 8 2 Strobe Project Laboratory 2.1 Current system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Improvements with new system . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 9 3 Theory of light exposure 3.1 Emission and Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Role of Spectral Qualities in Exposure . . . . . . . . . . . . . . . . . . . . . 10 10 10 4 Equipment 4.1 Electronic Flash Sources . 4.2 Spectrograph . . . . . . . 4.2.1 Diffraction Grating 4.2.2 Optical fiber . . . 4.2.3 Detector Array . . 4.3 Computer . . . . . . . . . 4.3.1 Hardware . . . . . 4.3.2 Software. . . . . . . . . . . . . . 12 12 12 12 13 13 14 14 14 5 Scope 5.1 Scope of this Effort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 15 6 Methods 6.1 Data connection to PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 6.1.1 6.1.2 6.2 6.3 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GPIB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Serial port. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 6.1.3 Terminal program 18 6.1.4 Verifying the Serial Link. . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 18 Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Synchronization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 19 6.3.1 6.3.2 Trigger On . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Trigger Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 19 Implementation 7.1 Program Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 20 7.2 Alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 7.3 Plotting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4 7.4 7.5 7.6 8 21 22 22 23 23 23 . . . . 24 24 24 24 25 Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Results 8.1 Program Executable . . . . . . . 8.2 Calibration . . . . . . . . . . . . 8.2.1 Helium Neon Laser. . . . 8.2.2 Helium Emission . . . . . 8.2.3 9 . . . . . . Scaling the Plot 7.3.1 7.3.2 Replot . . . . . . Loading and Saving . . Manual Control. . . . . 7.5.1 Displaying data. Port Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Conclusions 28 A Sample Code A .1 R un . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Draw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 29 29 A .3 P lot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.4 Plot Axes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.5 Plot Graph . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 32 33 B Detector Commands B.1 Data Acquisition Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 34 B.1.1 B.1.2 DATA ACQUISITION MODE 1 . . . . . . . . . . . . . . . . . . . . DATA ACQUISITION MODE 2 . . . . . . . . . . . . . . . . . . . . B.2 Manual Mode Commands 34 34 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 C Supplementary Figures C.1 Measured Spectra of Line Emission Tubes . . . . . . . . . . . . . . . . . . . 36 36 D Sample Data File 40 E List of Equipment 42 5 List of Figures 3-1 Eye Response Curve. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 4-1 Diffraction of White Light into Different Order Bands. . . . . . . . . . . . . 13 8-1 8-2 Least Squares Normal Distribution for plot of Helium Neon Laser. . . . . . Linear Fit of Calibration Points. . . . . . . . . . . . . . . . . . . . . . . . . 25 26 C-1 C-2 C-3 C-4 C-5 C-6 Spectrum Discharge Discharge Discharge Discharge Discharge of a Helium Neon Laser. . . Spectrum of Helium Gas. . Spectrum of Hydrogen Gas. Spectrum of Argon Gas. . . Spectrum of Mercury Gas. . Spectrum of Krypton Gas. . 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 37 38 38 39 39 List of Tables 8.1 8.2 8.3 8.4 Comparison of Bin and Wavelength Values of Calibration Points . . Observed and Known Emissions of Argon Gas. . . . . . . . . . . . . Observed and Known Emissions of Mercury Gas. . . . . . . . . . . . Observed and Known Emissions of Krypton Gas. . . . . . . . . . . . 7 . . . . . . . . . . . . . . . . 25 27 27 27 Chapter 1 Purpose The purpose of this research was to design and implement a self-contained system which allows an end user to measure the intensity and spectral composition of an electronic flash. The goal was to take existing components and integrate them into a single functioning system. Upon completion, this system may be used in a new lab assignment for Strobe Project Laboratory. The purpose of the assignment will be to give students insight into the significance of the spectral output of strobe flash. 8 Chapter 2 Strobe Project Laboratory Strobe Project Laboratory ("Strobe Lab") is a subject taught by the MIT Department of Electrical Engineering and Computer Science. It introduces the use of electronic flash to measure and document high-speed events. Students complete several lab assignments during the semester which are designed to train them to solve problems using stroboscopic techniques. 2.1 Current system The subject needs an integrated device to directly measure spectral content of light sources. Such measurements are needed as the response of the eye or photographic film depends upon the spectral characteristics of incident light. Thus, the students currently have no hands-on experience with spectral measurements and their significance. 2.2 Improvements with new system The new system should provide a new topic for laboratory work, allowing Strobe Lab to incorporate the use of spectral information in its lab assignments. This addition allows for a deeper understanding of light and its perception. 9 Chapter 3 Theory of light exposure 3.1 Emission and Response When we discuss the "exposure" of a light source we are referring to the ability of some medium to respond to light. The magnitude of the response depends upon the intensity of the incident light energy at each particular wavelength and the characteristics of the medium. For example, a piece of film emulsion reacts chemically to light particles by creating tiny clusters of silver ions, giving the film a certain characteristic response. 3.2 Role of Spectral Qualities in Exposure The purpose of an off-the-shelf light meter (such as those already used in Strobe Lab) is to determine the light output of some emission source. Such a device works by recording cumulative light intensity calibrated to a standard eye response. However, such a device does not measure spectral content; this information is lost as the device simply sums up its response to light energy. In reality, flash sources differ not only in cumulative intensity, but in intensity over time, duration of flash, and in spectral content. Fine distinctions in these characteristics are impossible for the eye to perceive. If we were to compare the output levels of two common types of flash, Xenon and Argon, we would see that while Xenon flash typically produces a light which the human eye perceives as "white", Argon outputs a "reddish" light[3](52). It follows that for the same total energy level, the Xenon flash would look brighter than the Argon flash, because it is better matched to the response curve of the human eye. 10 10 J:: ft'TOMiC 7F.MM m. 2 it It~ 20WIN 3AVLEGT 3" d as Figure 3-1: Eye response curve, after [2] (57). 11 Chapter 4 Equipment 4.1 Electronic Flash Sources The typical flash source which we will measure consists of a gas-filled glass tube with electrodes at each end. The electrodes apply the voltage on a charging capacitor into the gas medium. When capacitor voltage reaches a certain threshold, the ionized gas momentarily transmits a current which gives off a brief intense burst of light (which can last from a microsecond to milliseconds) [1]. Physical properties of the flash tube as well as the type and pressure of the gas will determine this threshold voltage. The design of this system is highly specific to the use of electronic flash sources which are commonly used in strobe visualization. The process of collecting light energy is specifically designed for strobe flash sources and not necessarily appropriate for general light sources. 4.2 Spectrograph A spectrograph is a device which separates incoming light into bands of spectral components. Once separated, it measures the intensity of individual bands. Plotting the intensity as a function of each band gives a "spectral curve." 4.2.1 Diffraction Grating Much like a prism separates white light to create "rainbow" patterns, the diffraction grating in a spectrograph spreads a light source into a spectral band with a well-defined area. The diffraction grating consists of many thin parallel grooves covered with a reflective surface. 12 WHITE LIGHT m=0 SHORTEST WAVELENGTH m=-1 TRANSMITTED. (-180 nm FOR MOST SYSTEMS.) INCREASING WAVELENGTHS m=-2 360 nm. 1st ORDER AND 180 nm. 2nd ORDER ORDERS OVERLAP. UNLESS A\ SHORT WAVE CUT-OFF FILTER IS INSERTED IN BEAM Figure 4-1: Diffraction of white light into different order bands, after [6] (2-4). As polychromatic light (light composed of multiple wavelengths) hits the grating, light components of different wavelengths reflect off of grooves in the grating. The light reflected from the different grooves interferes, usually destructively. At certain distinct angles, however, the interference is constructive. These angles depend upon the wavelength of the incident light. The set of angles for a given wavelength are known as "orders of diffraction."' 4.2.2 Optical fiber The efficiency and accuracy of the spectrograph is largely dependent on the qualities of the input beam, so the manner of getting light into the spectrograph is an important consideration. Light conducted through an optical fiber enters the spectrograph through an opening slit opposite the diffraction grating. The fiber acts as the entrance slit to the spectrograph, and the diameter of its core determines the resolution. 4.2.3 Detector Array The detector is an array of photodiodes. They measure the intensity of light falling upon each of the detector's individual sections. The diodes convert light energy into electrical energy which is then measured and transmitted as data. 'See Figure 4-1. 13 Properties When a photodiode is exposed to light with a given spectral content, it gen- erates a short-circuit current between its terminals that is linearly proportional to the light intensity. Therefore, by measuring this current flow, we have a measure of the total light response of the photodiode. 4.3 Computer The computer dictates controlled interactions between the various components. It also provides a graphical user interface, without which the user would be faced with a tedious task of sorting through the raw data from the measurement devices. 4.3.1 Hardware The computer used is an IBM-compatible PC with a serial port connection to the spectrograph. 4.3.2 Software The computer runs the Windows 98 operating system. Additionally, it has a high-level programming language to write a simple step-through program. This program allows users to control the measurement devices to take readings and to analyze the results. 14 Chapter 5 Scope 5.1 Scope of this Effort Completion of this system depends upon constructing a set of three interfaces between the three hardware components and writing a user guide. Requirements of each interface are detailed below. The design and implementation process is roughly as follows: 1. Preliminary design of these interfaces. 2. Gathering and assembling materials. 3. Basic prototype for each interface. 4. Analysis and modification of design. 5. Reimplementation and refinements. 6. Ongoing testing and documentation. The interfaces are: 1. User to Computer The user interface is a program which controls the interactions between the spectrograph and the end user. The program prompts the user for a flash input and displays its spectral or intensity information. Additionally the user may repeat readings to generate statistics or print out results. 15 2. Computer to Spectrograph Complying with the I/O specification of the spectrograph, the program initiates the spectrograph and collects the data. 3. Spectrograph to flash The optical train that brings light from the strobe to the spectrograph is a simple optical fiber. 4. User Guide The User Guide is sole documentation for future use of the system, and should include methods of normal operation as well as calibration or adjustment. An addendum includes design and implementation specifications to aid in future modifications to the system. This effort completed the three interfaces. The User Guide has been left for future work. 16 Chapter 6 Methods 6.1 6.1.1 Data connection to PC GPIB A GPIB is a IEEE standard parallel port. It is an option on both the 1471A Detector Interface and the PC. It requires unique addressing of each GPIB port. The advantage using this port is speed when transmitting data. We started the process of creating a connection by trying to use prepackaged software from EG&G and OmaVision over the GPIB port. A connection could not be established over many trials. We decided to instead use a simpler RS-232 serial port interface. It is a more common (albeit slower) connection because there is only one pin of communication in each direction. 6.1.2 Serial port The serial (RS232) port proved to present far fewer communication problems, since it is a simpler interface. For example, the RS232 port doesn't require addressing, which was a major problem to establish with GPIB. Another advantage is the widespread availability of serial ports, such that the program may be portable to other PCs. Additional cabling swaps the read and write pins 2 and 3 such that the correct pins are accessed. 17 6.1.3 Terminal program PC to Detector Interface A terminal program on the PC was the first interface to the detector. From here it was possible to send simple read/write or read/output commands. For example the command "FREQ 50" could change state in the interface, after which the "FREQ" command would return the updated value "50." At this stage it was possible to check whether commands had gotten through and were understood by the detector. Detector Interface to PC After this stage, it was necessary to figure out how to interpret the data returned from the interface. The interface sent out its results over the serial port, which the terminal program sometimes had trouble identifying. At this stage the "read" command was added to the program. It sends the command "DC 1 1 1024" which is a command to read all 1024 values from memory location 1, the default location for a RUN command. This was added as a shortcut in the software so that the user would not have to enter a cumbersome command. 6.1.4 Verifying the Serial Link First, the program had to initialize the serial port for communications. Once this was established, we started by trying to send simple commands to the device. This would cause errors, which were debugged by connecting the PC via its serial port to another computer and watching the transmission between them. Once the link was verified, we implemented the transmission protocol expected by the detector interface interface. It places a carriage return (CR) character after each transmission, and expects to receive the same protocol. 6.2 Calibration Slight variations in the detector array may account for measurement error. Specifications state that the range of the detector is between 200 and 1100 nm, but since there are actually 1024 data points, they do not lie exactly between these values. Our object then is 18 to transform the observed spectra of known sources to match the known properties of the sources. We began by using a Helium Neon laser, which emits at a single specific known wavelength (632.8 nm). This gives us a grounding point in the scale. Next we took gases with simple emission patterns, and used the observed values as further calibration points. Finally, we tested our calibration by looking at observed emissions of new sources, and compared them with their "known" spectra. If the observed and the known spectra match, then we have a good indication of the accuracy of the system. 6.3 Synchronization Because we may be dealing with strobe sources, synchronization between the source and the measurement may be necessary. By setting the correct Data Acquisition model and hooking our flash up to the back of the detector interface, we will be able to automatically synchronize our emission source with the reading. 6.3.1 Trigger On This mode allows the strobe to control the triggering. First the interface is started in data acquisition mode. Setting off the flash sends a pulse to the "Trigger On" input to the interface, which thereby ends the reading. 6.3.2 Trigger Out This mode allows the strobe to be fired in conjunction with taking a reading. The signal from the "Trigger Out" output from the interface sends a signal for the strobe to fire as the detector interface takes a reading. 'See Appendix B.1. 19 Chapter 7 Implementation With a serial connection established, we started writing a program in Microsoft VisualBasic 6.0 (a standard tool for making Windows interfaces). This is appropriate for a program which will run off of a single Windows PC. The interface handles all of the manual terminal functions. In addition, it provides a clean and simple interface which can also plot, load, and store, all in the Windows environment. 7.1 Program Structure The program is split up into five VisualBasic forms, each of which performs a primary function in the program. 1. Startup This is the initial window, which links to all other functions in the program. This portion also controls the remaining forms. It allows the user to align, take a reading, load a file, use manual controls, or quit the program. 2. Plot Displays a plot of the current dataset, including the owner and the name and date of creation of the file. It also allows the user to replot the data. 3. Load File Gives the user a menu from which to pick a file to load. It will give an error if the file is invalid. 20 4. Save File Saves the current data set to a file specified by the user. 5. Manual Control Allows the user to give commands manually to the detector interface.1 7.2 Alignment When taking readings it is important to consider the alignment of the light source, as misalignment leads to a weak reading, resulting in a plot that is difficult to interpret. We would also like to view the brightest part of the strobe at a fixed distance, in order to be able to measure relative intensity with other sources. To display brightness of the reading, we could simply take successive readings and output the results on the screen. The plot with the highest values would indicate when the fiber was aligned to the brightest part of the light source. In practice, this procedure is too slow because of transmission time over the serial cable (five seconds between successive transmissions). The modified alignment procedure repeatedly calls a data acquisition ("run") followed by the "minmaZ" procedure 2 . This call to the detector interface returns the minimum and maximum value in the current dataset. When the fiber is aligned, the reading on the screen shows a maximal value; the user may adjust the fiber until this value is reached. 7.3 Plotting The plotting portion of the program first takes in data from the spectrograph, then scales it to the available window in order to make the data easy to view and interpret. 7.3.1 Scaling the Plot In order to best fit the graph to the window, the program first determines the window size and either stretches or compresses the plot. Compression results in fewer displayed data points, though the actual data remains intact. 3 'A partial list of commands and their syntax can be found in Appendix B.2. 2 See Appendix B.2. 3 See A.2 lines 35-39. 21 Using the window width and height and the number of data points requested by the user, the program then calculates a separate constant scaling factor for each axis. 7.3.2 Replot Furthermore, the user may replot the data (e.g. to focus in on some smaller portion of the data) by picking minimum and maximum x and y values to include in the plot. Drawing Axes The program uses the number of tick marks and the requested number of data values to determine the spacing of the ticks, then draws them at even whole number intervals. If necessary, the range is expanded in order to make the spacing even. Numbering Axes Numbering the axes is subject to the same compression or stretching. The values of the ticks are determined by the number of ticks specified for each axis. 7.4 Loading and Saving The program saves data as ASCII characters in order to make the resulting file easily readable by other programs and users. The form of the file is a set of three informational fields (name, run-time, and comments) followed by pairs of data points separated by a comma. Each line begins and ends with a pound sign (#), in order to make the file easy to load. Loads and saves are handled by their respective forms, which browse the folders in the C: drive of the PC. This format is designed to be like most Windows applications, for greatest familiarity. Saving requires the user to specify a name (any string) to act as an identifier. It also stores the date and timestamp associated with the time of the plot. (The default comment of "none" may later be replaced by the user's comments.) The program then asks for a filename, and if the file exists, asks to overwrite it. Any overwritten files will have a backup created in the form of a tilde file. 22 Loading a file requires simply browsing and clicking on the name of a file. Once the file is loaded, it is automatically plotted with y values between zero and the maximum value in the data. 7.5 Manual Control The first step of creating the interface was to reproduce the capability of the terminal program, i.e. to be able to manually type commands to the interface. Additionally, error handling was needed in order to make the program more robust. An invalid command would cause the terminal and the detector interface to crash, and both devices would have to be reset manually. It is not desirable to require the user to have to know how the program or the interface works in great detail. 7.5.1 Displaying data When the data eventually came back in a readable format, it was first simply displayed in a textbox, much like one might view it with a terminal program. This made it easy to see whether the readings from the spectrograph were coming through. Eventually the data read portion of the interface was supplemented by a graphical plotting function which allows the user to easily get an overview of the data. However data read is still possible with ASCII characters via Manual Control. 7.6 Port Control There are times during execution of the program when two different portions of the program may try to access the I/O port. This should not be allowed because we want the program to access the interface serially. In other words, competing commands should have to wait until the last command is finished. Such commands are disabled until communication ceases with the controlling function. For example, when the Align button in the Startup form is clicked, all of the other buttons except for Stop and Quit become disabled ("greyed out"). This insures that the user cannot start a data read while the port is open to perform alignment, which would otherwise cause an error. 23 Chapter 8 Results 8.1 Program Executable The final version of the program has been demonstrated to control and plot data from the spectrograph. It is a Windows executable which starts by double-clicking on an icon. The program guides the user through taking a reading, saving, and loading in a simple user interface. The resulting data is easy to browse through and plot using any spreadsheet program such as Excel or Xess. 8.2 8.2.1 Calibration Helium Neon Laser Determining the peak Our goal is to match our data with the known emission line at 632.8 nm. By assigning the largest value in our data as this calibration value, we may be missing the actual peak. We account for this by fitting the curve to a Gaussian and looking at the mean value. The form of the Gaussian or "bell curve" is y = a + be-c(xd) We perform a least squares fit on the data and obtain a mean (for d) of 445.1 and standard deviation (for -) of 1.176.1 From this calculation we correspond 632.8 nanometers with bin number 445.1. 'See Figure 8-1. 24 10000 9000 8000 7000 .0 Cu - - 6000 5000 CO C 4000 3000 2000 1000 0 430 435 440 445 450 455 460 Bin Number Figure 8-1: Least squares normal distribution for plot of Helium Neon laser. 8.2.2 Helium Emission Repeating the process with the line emission tube for Helium gas gives us an additional three calibration points. These points are pairs of numbers mapping a bin value to a wavelength in nanometers. A Mathematica program then does a best-fit line through these four points to produce the calibration equation. These data values fit the linear equation Wavelength = 502.0 + 0.2937 - Bin, as shown in Figure 8-2. Table 8.1: Comparison of Bin (measured) and Wavelength (known) Values of Calibration Points, after [5]. Bin No. Wavelength (nm) Helium Neon 445.1 632.8 25 291.68 587.5 Helium 564.53 667.8 696.41 706.5 700 675 C 650 625 600 575 300 500 400 600 700 Bin Number Figure 8-2: Linear fit of calibration points. The line of best fit is Wavelength = 502.0 + 0.2937 Bin. 8.2.3 Verification Finally, we verified the calibration by looking at line emissions of Hydrogen, Argon, Krypton, and Mercury. The actual line for Hydrogen at 525.26 nm was measured at 525.31 nm with our calibration scheme, a difference of .05 nm.2 For Argon and Krypton, 3 the observed emission lines match within 0.5 nm of their actual value for wavelenths above 587 nm. Below this point, the detector failed to show any peaks. The Mercury emission exhibits an unusual pattern that matches at only one value. Its emission curve is also very similar to that of Argon. 4 This may be due to some kind of contamination of the Mercury tube with another gas, or the effect of UV emission from the gas. 2 See Figure C-3. See Tables 8.2, 8.4. 4 See Figures C-4, C-5. 3 26 Table 8.2: Observed and Known Emissions of Argon Gas. Observed Wavelength(nm) Known Wavelength(nm) 696.68 706.84 727.34 738.70 750.81 763.85 772.88 795.43 802.11 696.54 706.72 727.29 738.40 751.47 763.51 772.42 794.81 800.15 Table 8.3: Observed and Known Emissions of Mercury Gas. (Not all wavelengths are listed.) Observed Wavelength(nm) Known Wavelength(nm) 546.34 696.71 707.02 763.88 546.07 614.95 - Table 8.4: Observed and Known Emissions of Krypton Gas. Observed Wavelength(nm) Known Wavelength(nm) 758.97 760.16 557.03 587.09 758.74 760.15 769.53 769.45 785.84 785.48 27 Chapter 9 Conclusions Strobe flash units are the core of the Strobe Project Laboratory curriculum. The system described in this paper introduces a new area to explore in this popular lab class. The functionality of the system creates a range of possible uses. It can stand alone as a simple demonstration of line spectra, or may be used as part of an experiment centered around light emission and response (such as to identify line emission sources based on a table of known emissions). As students begin to work with this system, they will find new applications or desired features which may be the topic of further work. One such topic may be to allow multiple datasets to be visible in the same window. Such a feature would allow for a relative comparison between spectral readings. As it currently stands, the interface is flexible and effectively gives the user a fast and clear overview of the spectral output of a light source. If desired, the user also has access to the raw data, in order to be able to analyze any part of the reading in further detail. Furthermore, the interface is designed to be easy to use and maintain, allowing the user to focus on interpreting the data presented to them. The ability for future Strobe Lab classes to continue to use this system will determine its success in the long run. 28 Appendix A Sample Code A.1 Run 1 Private Sub RunClick() 2 ' Take a reading from the spectrograph and plot results in plot window 3 ' Disable Startup buttons 4 align.Enabled = False 5 Load.Enabled = False 6 StopAlign.Enabled = False 7 Run.Enabled = False 8 Manual.Enabled = False 9 Call Man.process-command("run") 10 d = Date 11 t = time 11 12 13 14 15 16 17 18 19 20 21 22 23 datetime = Date$ & & time$ ' Read data values from interface and plot the results Call Man.process-command("read") Call DisplayPlotlWindow plotl.newrun = True Call plotl.Plot(0, 0) ' Re-enable Startup buttons align.Enabled = True StopAlign.Enabled = True Run.Enabled = True Manual.Enabled = True Load.Enabled = True End Sub A.2 Draw 1 Private Sub draw(l, topi, num-stepx, x-min, x_max, numnstepy, y-min, y-max) 29 2 'Calculates scaling of the plot and displays axes, labels, and data points in plot window 3 Dim compress As Boolean 4 Dim horiz-step, vert-step, size-stepx, size-stepy As Integer 5 Dim wd, ht, bottom As Integer 6 wd = Startup.plotl.Width 7 ht = Startup.plotl.Height 8 9 ' Compute size of x step 10 If ((xmax - x-min) Mod (num-stepx - 1)) = 0 Then 11 size-stepx = (x-max - x-min) / (num-stepx - 1) 12 Else size-stepx = (x-max - x-min) \ (num-stepx - 1) + 1 13 14 End If 15 16 ' Compute size of y step 17 sizestepy = (y-max - y-min) \ (num-stepy - 1) 18 If Not ((y-max - y-min) Mod (num-stepy - 1)) = 0 Then 19 20 21 22 23 24 25 26 27 28 29 30 31 32 size-stepy = sizestepy + 1 End If If Not (size-stepy Mod 5 = 0) Then size-stepy = sizestepy \ 5 size-stepy = sizestepy * 5 + 5 End If If size.stepx < 1 Then size-stepx = 1 End If If size-stepy < 1 Then sizestepy = 1 End If ' Compute compression or stretching factor 33 horizstep = (wd - 1 - 500) \ (xmax - x-min) 34 vertstep = (ht - topi - 1500) \ (y-max - y-min) 35 compress = False 36 If vert-step <= 1 Then 37 vert-step = (y-max - y-min) 38 compress = True \ (ht - topi - 1500) 39 End If 40 ' Adjust compression factor to fit plot to window 41 If compress Then Do While (size.stepy * (num-stepy - 1)) > vert-step * 42 (ht - topi 43 - 1050) vert-step = vertstep + 1 44 Loop 45 Else 46 Do While (size-stepy * (num-stepy - 1)) * vert-step + topi + 1050 > ht 30 vert-step = vertstep 47 - 1 48 Loop 49 End If 50 51 If * (numnstepx Do While (size.stepx * 52 53 54 55 56 57 58 59 69 (sizestepx - 1)) * horizstep + 1 > wd Then (num-stepx - 1)) * horiz-step + 1 > wd horiz-step = horiz-step - 1 Loop End If ' Display the plot window Startup.plotl.Show If compress Then 1)) \ vert-step bottom = topi + (size-stepy * (num-stepy - Else 70 bottom = topi + (size-stepy * (numxstepy - 1)) * vertstep 71 End If 72 ' Plot the axes in the plot window 73 Call plot-axes(l, topi, horizstep, vert-step, compress, num-stepx, x-min, x-max, sizestepx, num_stepy, ymin, y-max, sizestepy, bottom) 74 ' Plot the data points in the plot window 75 Call Plot-graph(l, topi, horiz-step, vert-step, compress, xmin, x-max, y-min, y-max, bottom) 76 End Sub A.3 Plot 1 Function Plot(ldmin, ldmax) 2 ' Plot graph in plot window, showing the max y value as the max value over all data points of graph. 3 Dim data-min%, datamax, iX 4 Dim minmax, place-min, place-max As String 5 ' Display user and file info in the plot window 6 Call Fileinfo 7 'Convert new reading to graph() 8 If Startup.plotl.newrun = True Then 9 StrtoArray (Startup.plotl.plot-string) 10 Else 11 StrtoArray (Startup.Ldfile.load-string) 12 End If 13 ' Get max data value of the plot 14 If newrun = True Then 15 minmax = Startup.Man.process-command("min.max") 18 i% = InStr(minmax, ",") dataminX = Left(minmax, i% - 1) minmax = Left(minmax, Len(minmax) - 19 datamaxX = Right(minmax, Len(minmax) - i%) 16 17 31 2) Ymin.Text = data_min 0 20 Ymax.Text = datamax% 21 Call draw(l, topi, 5, 0, 1023, 5, data-min%, data-max%) 22 23 Else Ymin.Text = ldmin 24 Ymax.Text = ldmax 25 ' Plot the data in plot window 26 27 Call draw(l, topi, 5, 0, 1023, 5, ldmin, ldmax) 28 End If 29 End Function A.4 Plot Axes 1 Private Sub plot-axes(l, topi, horizstep, vert-step, compress, 2 numstepx, min-x , max-x, size-stepx, num-stepy, miny, max-y, 3 size-stepy, bottom) 4 ' Calculates and draws x and y axes with labels in plot window 5 6 Dim r, i As Integer 7 Dim y-tick%, x-tick%, j% 8 Dim num As Single 9 Startup.plotl.FontSize = 8 10 1 Calculate number spacing between tick marks 11 r = 1 + horizstep * (maxx - min-x) 12 If compress Then y-tickX = sizestepy \ vert-step 13 14 Else y-tick% = sizestepy * vertstep 15 16 End If 17 x_tick% = size-stepx * horiz-step 18 19 j% = num-stepy 20 'Number Y axis 21 For i = 0 To j% - 1 Startup.plotl.Line 22 (1 - 50, bottom - i * y-tick%)-(l, bottom - i * ytick%) 23 Startup.plotl.CurrentX = 1 - 600 24 Startup.plotl.CurrentY = bottom - 80 - i * y-tick% 25 num = (min-y + i * size-stepy) \ 10 num = num * 10 26 Startup.plotl.Print num 27 28 Next i 29 'Draw y axis line 30 Startup.plotl.Line (1, bottom - (i - 1) * y-tick%)-(l, bottom) 31 32 'Number X Axis 33 j% = num-stepx 32 34 For i = 0 To j% - 1 35 Startup.plotl.Line 36 37 38 (1 + i * x-tick%, bottom)-(1 + i * x-tick%, bottom + 50) Startup.plotl.CurrentY = bottom + 100 num = BinToWl(min-x + i * size-stepx) \ 1 Startup.plotl.CurrentX = 1 + i * xtick% - 170 Startup.plotl.Print num Next i 'Draw x axis line Startup.plotl.Line (1, bottom)-(l + (i - 1) * x-tick%, bottom) 39 40 41 42 43 44 'label axes 45 Startup.plotl.CurrentX = 0.5 * (1 + r) - 350 46 Startup.plotl.CurrentY = bottom + 350 47 Startup.plot1.Print 48 49 End Sub A.5 1 2 3 4 5 6 7 "Wavelength (nm)" Plot Graph Private Sub Plot-graph(l, topi, horizstep, vertstep, compress, x-min, x-max, y-min, y-max, bottom) ' Plots the data points in graph in the plot window Dim curr-length, num, i, temp As Integer Dim offset As Long ' start plot at a multiple of 10 that is less than the requested x min value temp = CInt(x-min / 10) num = CInt(temp * 10) 8 ' calculate number of pixels from x axis 9 For i = x_min To xmax 10 If i > - 1 And i < 1024 And i > num - 1 Then 11 If compress Then 12 offset = (graph(i) - (y-min \ 10) * 10) \ vertstep 13 Else 14 offset = (graph(i) - (y-min \ 10) * 10) * vertstep 15 End If 16 ' if the point is inside the plot area, make a dot at that pixel 17 If offset > 0 And (bottom - offset) > topi Then 18 Startup.plotl.PSet (i * horizstep + Startup.plotl.l - num * horizstep, bottom - offset) 19 End If 20 End If 21 Next i 22 End Sub 33 Appendix B Detector Commands B.1 Data Acquisition Modes As described in [4](69). B.1.1 DATA ACQUISITION MODE 1 Each set of scans is preceded by a Trigger Output (TOUT) pulse generated in the detector controller. B.1.2 DATA ACQUISITION MODE 2 Each set of scans is preceded by a Trigger Out (TOUT) and an On Trigger (ON.TRIG). Mode (2) is identical to Mode (1), except that the instrument must wait for an incoming On Trigger signal before beginning each set of scans. B.2 Manual Mode Commands As described in [4](145-153). 34 COMMAND COMMAND TYPE TYPE AREA nl,n2,n3 FUNCTION FUNCTION DEFAULT DEFAULT Calculates the area under the curve specified by n1, n2, and n3: n1 = memory no. n2 = first channel n3 = no. of channels DA n R/W Sets/Returns current Data Acquisition Mode 1 MIN.MAX R/O Returns min and max of all points in specified range of memories. na RUN W/O Initiates the acquisition of data, using the current D.A. mode setting na SYNC R/O Specifies current syncrohization: 0 = Normal 1 = Line 0 TOUT DAD Generates main trigger output at start of exposure time. na TRIG.OFF W/O Turns OFF the Main Trigger Output. na TRIG.ON W/O Turns ON the Main Trigger Output. na 35 Appendix C Supplementary Figures C.1 Measured Spectra of Line Emission Tubes 36 3000 2500 I .0 (U 0 C 1500 - 1000 - 500 - a) C 0 4 500 550 600 650 700 750 800 Wavelength (nm) Figure C-1: Spectrum of a Helium Neon Laser. The line at 632.8 nm is used to create the calibration equation. Note a small bump at 595.5 nm. 1800 1600 1400 1200 .0 (U 0 C a) C 1000 800 600 400 200 0 50 0 550 600 650 700 750 800 Wavelength (nm) Figure C-2: Discharge Spectrum of Helium Gas. The emission lines at 587.5 nm, 667.8 nm, and 706.5nm are used to create the calibration equation. 37 3000 2500 2000 .0 . 1500 1000-- 500 -4M 500 Ow- - -IM- M owl- No- OA 650 600 550 800 750 700 Wavelength (nm) Figure C-3: Discharge Spectrum of Hydrogen Gas. The single peak observed is the 525.26 nm line, which the calibration equation places at 525.31 nm. Note the same bump at 595.5 nm as in Figure C-1. 1400 1200 1000 .0 A 800 - - - -- - - - 600 400 200 0 690 710 750 730 770 790 Wavelength (nm) Figure C-4: Discharge Spectrum of Argon Gas. All observed and expected wavelengths match within .62 nm. (See Table 8.2.) 38 900 800 -700 600 500 e 400 - - VI. 300 200 100 0 + 500 550 600 650 700 750 800 Wavelength (nm) Figure C-5: Discharge Spectrum of Mercury Gas. Note many emission lines that are not known to be characteristic of Mercury. (See Table 8.3.) - 1200 1000 8001 - .0 (U (0 600 - S 400 . -% . . 200 0 740 750 760 770 780 790 800 Wavelength (nm) Figure C-6: Discharge Spectrum of Krypton Gas. appear in the reading. (See Table 8.4.) 39 Emission lines below 758 nm did not Appendix D Sample Data File #Jessica.# #1/31/00 2:39:06 PM# #Comments: Note line near 550.# #501.98 , 81# #502.27 ,0# #502.57 ,0# #502.86 , 209# #503.16 , 186# #503.45 , 199# #503.74 , 230# #504.04 , 218# #504.33 , 182# #504.62 , 195# #504.92 , 222# #505.21 #505.51 , 207# 184# , #544.57 , 223# #544.87 , 243# #545.16 , 243# #545.45 , 193# #545.75 , 220# #546.04 , 287# #546.34 , 407# #546.63 , 376# #546.92 , 388# #547.22 , 271# #547.51 , 252# #547.8 , 193# 40 #548.1 , 215# #548.39 , 240# #548.69 , 245# #548.98 , 205# #549.27 , 221# #549.57 , 236# #549.86 , 240# #793.08 #793.37 #793.66 #793.96 #794.25 #794.54 #794.84 , , 287# 238# 246# 257# 280# 239# 279# #795.13 , 370# , , , , , #795.43 , 433# #795.72 , 384# #796.01 , 316# #796.31 , 268# #796.6 , 289# #796.89 , 232# #797.19 , 238# #797.48 , 248# #797.78 , 280# #798.07 , 236# #798.36 , 237# #798.66 , 240# #798.95 , 278# #799.24 , 232# #799.54 , 227# #799.83 , 240# #800.13 , 276# #800.42 , 231# #800.71 , 253# #801.01 , 323# #801.3 , 381# #801.59 , 373# #801.89 , 408# #802.18 , 425# #802.47 . 442# 41 Appendix E List of Equipment 1. EG&G PARC 1471A Detector Interface, Ser. No. 19108 2. EG&G PARC 1235 Triple Grating Spectrograph, Ser. No. 2AG1791 Grating 1: 300 g/mm Blaze 500 nm ruled Grating 2: 1200 g/mm Blaze 500 nm ruled slit width 25-75 p 3. EG&G PARC 1453A Detector Array, Ser. No. 62104 1024-element detector 4. Thorlabs M19L02 Optical Fiber 5. Electro-Technic Products Inc. Model SP200 Spectrum Tube Power Supply (115 V), gas tubes 6. Spectra-Physics Laser Exciter, Model 248, Ser. No. 1194 7. Spectra-Physics Helium-Neon Laser Model 142P, Ser. No. 636 42 Bibliography [1] James Bales. Personal communication. January 1999. [2] Electro-Optics Handbook. Burle Industries, Inc., 1974. [3] Harold E. Edgerton. Electronic Flash, Strobe. McGraw-Hill Book Company, New York, 1980. [4] Model 1471A Detector Interface Instruction Manual. EG&G Princeton Applied Research, 1991. [5] David R. Lide, editor. CRC Handbook of Chemistry and Physics, 75th Edition. CRC Press, Inc., Ann Arbor, 1994. [6] Light Sources, Monochromators & Spectrographs, Detectors & Detection Systems, Fiber Optics, vol II. Oriel Corporation, Stratford, CT, 1994. 43