Handheld VNIR Spectrometer

A small portable spectrometer that can be used in the field to collect spectral data.

Similar projects worth following
This is a project that I have been working on for about a year and a half. It started out as just a small spectrometer that I wanted to build for myself to better understand how spectrometers work. At this point with work, school and other projects what I envision as being the final product is at least two years away but I wanted to share the progress I have made thus far so that others may benefit from any of the work I have done so far.

The current version of the spectrometer is contained within a wooden box but here are the core components.

1. Concave holographic diffraction grating.

2. Printed acetate slit from Public Labs.

3. Sony ILX511B CCD

4. Custom made circuit controlled by an Arduino Nano to operate the CCD and transmit data to a computer for display.

There is ALOT more to be added about the project in its current state and future progress but for the time being I am investing most of the free time I have to another project, PULSE: Profiler Underwater Light SEnsor., for the Hackaday 2016 prize.

  • 1 × Sony ILX511B CCD
  • 1 × Arduino Nano

  • Toshiba TCD1304

    Adam02/26/2018 at 15:15 2 comments

    For a number of reasons including product availability and cost I decided to swap out the Sony ILX11B CCD in my spectrometer for a Toshiba TCD1304. Additionally there are a number of other DIY spectrometer projects that use this part making it easier to develop code to drive and read from the CCD. Because of timing requirements on the TCD1304 I can no longer use an Arduino Nano to drive the CCD and plan on using a Teensy 3.6.  

  • 3D printed enclosure prototype

    Adam04/24/2017 at 02:57 2 comments

    I finally got around to printing an enclosure for the spectrometer this weekend. To cut down in print time I removed most of the walls and will use aluminum sheeting instead. Depending on how that works out in the long run I may stick with it or switch to a fully plastic enclosure.

    Spectrometer components. Both the grating base and the CCD hold are removable, for now. This allows me to rotate the grating to test out different configurations.

    Hand for scale, its more handheld now than before. I plan on cutting down on the footprint in future versions by changing the placement of the CCD circuit and fixing the grating holder in place. Right now the grating holder is on a rotating circular base to allow for adjustments.

    Grating, slit and CCD installed and illuminated with and LED flashlight.

    Spectrometer walls. I cut these out of ~0.5mm aluminum sheeting and spray painted them black.

    Enclosure with walls installed.

    Assembled spectrometer, sans cover.

    Next up I need to design a cover and drill a hole to allow for USB connection to the CCD controller.

  • CCD

    Adam07/22/2016 at 01:15 0 comments

    CCD Board Evolution

    The picture below shows the evolution of the CCD controller board from perf board to etched PCB to OSH Park PCB.

    Perf Board

    Etched PCB

    Etching in progress..........

    OSH Park PCB

    While the etched board was nice because it reduced the size of the board compared to the perf board design it still was too large for my design. So I went ahead and designed a CCD shield for the Arduino nano and sent the design off to OSH Park to get made. Initially I had designed the board with SMDs, however after multiple attempts and redesigns I was not able to get the board working. I went back to the drawing board and redesigned it using through hole components like the etched board, and had success. I also figured that it would be easier to other to replicate my design with through hole components rather than SMDs.

    As you can see from the picture I used two different type of header for the shield, for the Arduino I use run of the mill square headers, however for the CCD I used round pin headers (here). I did this because I found that the square headers did not full come into contact with the CCD pins and because the round pins reduced the profile of the board a bit.

  • Enclosure

    Adam07/20/2016 at 23:45 0 comments

    Although the spectrometer in its current enclosure can be held in a single hand it is not handheld in the sense that I would eventually like it to be. I envision the spectrometer being operated with one hand and the ability to view spectra in realtime and capture spectra with the press of a trigger. I'm working on modeling a prototype and hope to share it soon.

    Right now the spectrometer is enclosed in a plywood box approximately 9in X 7in x 4in. The diffraction grating and CCD circuit are both held in place with wooden brackets that are hot glued to the floor of the box.

    The interior of the box is spray painted black to reduce stray light reflections. However I still need to install baffles because there is still a lot of light from the higher orders diffractions that are reflected back at the CCD. I'm using a fiber optic cable I got off Ebay to shine light on the slit, this makes it easier to "look" at different things as opposed to moving the entire spectrometer.

    At one end of the fiber is a circular bundle and the other end rectangular. I have the rectangular end pointing at and aligned with the slit so that more light is hitting the slit as opposed to the "walls' of the slit.

    Circular bundle

    Rectangular bundle

    The slit I am currently used is a Public Labs actetate printed slit which I have taped to the interiror enclosure wall. For the price it works well but I found that the black ink is not completely opaque and transmits a little light. I am working on designing an adjustable slit that will eliminate this problem.

    Slit from inside the spectrometer

    Slit from outside the spectrometer

  • Diffraction Grating

    Adam07/19/2016 at 16:01 0 comments

    For the diffraction grating I used a 600 l/mm holographic concave diffraction grating that I bought off of Alibaba for around $90. The concave surface of the grating serves to both collimate and focus the light eliminating the need for mirrors. This grating was design for use in a monochromator, measuring a single wavelength at a time using an exit slit, where the grating would be rotated about its central axis to change the wavelength of light impinging on the exit slit. However I found it does a fine job as a polychromator even though it is not flat field corrected.

    Below you can see the highly detailed technical drawing and specs that came with the grating describing it's optical properties.

    Zooming in on the drawing scribbled on the masking tape is the proper setup for the entrance and exits slits and the angle between them.

    From what I can decipher, the entrance slit should be placed 94mm from the center axis of the grating while the exit slit, or in my case the CCD, should be placed 100mm from the grating at a 61.6 angle from the entrance slit arm.

    As you can see from the images below the surface of the grating isn't in perfect condition, but it still does the job.

  • Pictures

    Adam07/16/2016 at 22:58 0 comments

    This log is just a bunch of pictures with short descriptions.

    Spectrometer in wooden box enclosure.

    Close up of the CCD with diffracted white LED light.

    Evolution of the CCD controller circuit Perfboard ---> Etched PCB ---> Arduino Nano CCD shield.

    Close up shots of the etched CCD controller PCB.

    Red laser spectra

    Green LED

    CFL Bulb

View all 6 project logs

Enjoy this project?



George wrote 04/15/2022 at 14:20 point

Did you abandon the ILX511B because the other CCD (TCD1304) because it has built in logic controller to simplify the overall design? Would have been interesting to see the usage of the ILX511B which could controlled for other functions.

  Are you sure? yes | no

Martin wrote 06/19/2018 at 17:24 point

Hi Adam, thank you for charing your ideas and work! Since several years I own 2 Horiba mirrors (532 00 570, ~42.5mm square). So your case would be great for them. What size is your used grating? How do I have to scale your housing to match my mirrors. Do you know these models? I did not find any specification. Best regards from Bavaria, Martin

  Are you sure? yes | no

Adam wrote 06/20/2018 at 15:04 point

The size of the grating I used is 32mm X 32mm. I'm not familiar with the grating models you are using but in terms of scaling the housing you would have to take into account the focal lengths of the grating and the angle between in input and output legs, which likely differ from my grating. With all those differences between the gratings it would likely be easiest for you to design a custom housing from scratch which is optimized for the grating you are using. 

  Are you sure? yes | no

ivan003003 wrote 05/14/2018 at 01:52 point

Sorry for my poor English,but i wish to ask you something.

Can this spectrometer be used as Hg (Mercury) detector ?

I need an Open-source portable device to detect mercury in close and open environments.

The commercial solutions are way far from my wallet,so for this reason im seeking for this kind of Open-source device .

Thanks :)

  Are you sure? yes | no

Adam wrote 06/20/2018 at 14:51 point

I'm not too familiar with mercury detection, so I can't say for sure, but if there are some absorption features of mercury in the visible through near infrared it may be possible.

  Are you sure? yes | no

zied wrote 08/27/2017 at 22:39 point

very good idea! have you tried reading the analog signal using arduino ADC instead of an oscilloscope?

  Are you sure? yes | no

Adam wrote 10/03/2017 at 19:17 point

I have and had success early on, but I ran into some issues with storing and transmitting the ADC values over serial, I had been using the scope to try and diagnose the problem but I haven't solved it yet.

  Are you sure? yes | no

Volkan wrote 12/04/2016 at 14:19 point

Nice Project. Did you think about the spectral order superimposition in your spectrum? If yes, how do you seperate them?

  Are you sure? yes | no

Adam wrote 12/15/2016 at 01:23 point

Thanks.  For now I'm not thinking much about it, at least visually there does not seem to be much overlap between the first order difraction and higher orders.

  Are you sure? yes | no

David H Haffner Sr wrote 12/01/2016 at 22:03 point

Very nicely done here, I like it!

  Are you sure? yes | no

zakqwy wrote 07/16/2016 at 22:51 point

Very cool! Would love to know about the setup--sensor array, physical design, etc. What did you use as a diffraction grating?

  Are you sure? yes | no

Adam wrote 07/16/2016 at 23:23 point

Thanks! Right how I'm using a circuit taken straight from the Sony ILX511b datasheet, that circuit is connected to an Arduino Nano which generates the timing signals and reads from the CCD. Since there is interest I'll upload the eagle files and code soon for others to use.  I'll also try to add some better pictures in the next week or so and a better description of the project so far.
I bought a concave diffraction grating from Alibaba, it wasn't cheap ~$90 plus shipping but it eliminates the need for collimating and focusing mirrors. I also wanted something better than a CD/DVD. The grating itself designed for a monochromator and is not flat field corrected, which is super expensive even from China (>$700 last time I checked). But using it in a flat field/polychromator like configuration seems to work fine so far. 
In future designs I'm thinking of using a crossed Czerny-Turner design like, the Raman Pi, as it should cut down on the footprint. Its more complex but but the cost of optics would be about the same as my current grating.

  Are you sure? yes | no

zakqwy wrote 07/16/2016 at 23:41 point

I've seen a few DVD-based designs out there but a concave diffraction grating is a new one, I didn't know those existed. Your laser line is quite sharp, well done!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates