ERU2 – Winter 2015: Andrew’s Progress

Making Science Accessible

Fluorescence and Absorbance Spectroscopy

The composition and interactions of molecules can be difficult to understand. Spectroscopy, “the study of radiation absorption and emission by matter,” offers a window into the composition and dynamics of matter on a molecular scale (Encyclopedia Britannica). The costs of spectroscopy equipment are extremely high and are a major roadblock to conducting scientific research in many instances. Often the measurements that need to be made are not high precision, extremely sensitive measures, but rather quick checks. For example, to check if a fluorescent tag has made it’s way into a sample, it may be required that the sample is put through an absorbance and emission spectrometer to check if the expected bands are present. While this can be done on a multi-thousand dollar rig, it is unnecessary and overly costly for a quick validation that something worked. What is presented here is the design for a UV/Vis and fluorescence emission spectrometer that can be had for less than $100 and is user friendly.

The DIY Multi-Purpose Spectrometer

Research is demanding and spending time learning to use overly complicated devices is not ideal. The idea behind my project is to produce a single spectrometer that can take absorbance and emission spectras all with the same software and a minimalistic, small footprint hardware solution. The system structure will be produced using a 3D printer and requires very few parts. The parts needed and potential sources are listed below:

Raspberry Pi B+ Board (~$50)

Pi Camera Module (~$40)

Bright Violet and White LEDs (~$10)

Construction of the Device and Software

The device itself will be controlled using Python and various libraries. Essentially, the instrument will have 3 functions to calibrate the device and acquire a spectrum (either absorbance or fluorescence emission). The device is very simple as is the code controlling it, so the construction will take a week at most. Below is the sudo code for how the system will work.

Function calibrate() {

// Set exposure time
exposureTime = startValue

while maxIntensity =< 255{ exposureTime = exposureTime + more exposure(exposureTime) imageMatrix = takeImage() spectrum = columnAverage(imageMatrix) maxIntensity = max(spectrum) } absorbanceSource(OFF) background = spectrum save(background, /programDirectory/background.csv) } Function acquireAbsorbance() { //Collect spectrum spectrum = columnAverage(takeImage()) //Calculate absorbance spectrum absorbance = background – spectrum //Normalize to 1 absorbance = 1/max(absorbance) * absorbance //return it return(absorbance) } Function acquireEmission() { //Integrate several spectrums until a good threshold is reached (maximizes non source wavelength peaks) while spectrum[>410 nm] =< desiredThreshold { spectrum = spectrum + columnAverage(takeImage()) } //Normalize to 1 emission = 1/max(spectrum) * spectrum //return it return(spectrum) }


Concluding Remarks

The simple design of the system should ensure that an attainable and low cost solution for teaching and simple lab purposes can be produced. Some challenges I expect are the obvious debugging and control issues which will likely arise, but my main concern will be in calibrating the device. Doing this will require pigments of known spectra to be produced so I can produce a mapping function that brings the collected intensity on the CMOS sensor to wavelengths for analysis of the matter being probed. What I intend to use for this are just food colourings whose spectrums I have collected using a calibrated instrument. At the end of constructing the spectrometer, I hope to be able to take the absorbance and fluorescence spectrums of algae, which absorb blue and red light and emit near infra red wavelengths. The results from my spectrometer will be compared to those from “real” spectrometers.

Image of Absorbance Spectroscopy of Algae

Posted in Blog, Electronics for the Rest of Us! Tagged with:

Leave a Reply

Your email address will not be published. Required fields are marked *