hlxldb

简单DIY制作——分光计(三)

0
阅读(3418)

 

Step 3Diffraction

Diffraction

Diffraction

Diffraction

Diffraction

Diffraction

Diffraction

Diffraction

Splitting the light

To be able to select a certain wavelength (the color of light depends on its wavelength) we first need to split the light into a spectrum.

This can be accomplished by a diffraction grating. Since most people don't have diffraction gratings lying around the house, a CD can be used as well.
Take a look here for some background information. 

Note that a CD does not exactly produce an even spectrum, so it'll give nowhere near as accurate results as with a "real" diffraction grating.


Selecting the wavelength

Since we want to measure the absorbance of the sample at a certain wavelength (or in this case, range of wavelengths) we need to be able to select a certain part of  the spectrum.

This can be accomplished with a "slit", i.e. a sheet of cardboard or metal with a narrow slit in it. 

To choose which part of the spectrum passes through the slit we can vary the angle with which the light hits the CD.

I chose to use a stepper motor because it can be turned in discrete steps.


Driving the stepper

The stepper motor can easily be driven with an Arduino board. Construct the bipolar stepper driving circuit found here and use the included Arduino-code "spectrostepper.pde", the motor can be controlled by two pushbuttons.

Construct the driver circuit. Then, add pushbuttons by connecting one leg of a 2k2 resistor (pull-down resistor) to ground, connect the other leg to one leg of the pushbutton AND to a digital input on the Arduino.
Then, connect the other leg of the pushbutton to +5V from the Arduino.

Connect the motor itself to a power source, load the sketch in the Arduino and drive the stepper!

If everything went right, the motor should turn 1 step when you push a button; direction depending on which button you press.

Bringing it together

Once you got the stepper going, connect the CD to the motor. (I, once again, used hot glue) 

spectrostepper.pde1006 bytes