Hey! This thing is still a Work in Progress. Files, instructions, and other stuff might change!

Colorimeter V0.0

by chowderhead, published

Colorimeter V0.0 by chowderhead Jan 30, 2013

Featured Thing!

0 Share
Download All Files

Thing Apps Enabled

Order This Printed View All Apps


Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

18435Views 1951Downloads Found in Tools


Build your own colorimeter! More details can (will eventually) be found at http://www.appropedia.org/Open-source_colorimeter. Note that present firmware only reports absorbance and transmittance; a calibration protocol is forthcoming.

More and better to come...

The STLs will build a case for a colorimeter and the electronics BOM will yield a device designed for performing high range Chemical Oxygen Demand (COD) determination, measuring absorbance at 606 nm, an absorbance peak for the chromic ion. The cuvette holder is designed for Hach COD digestion vials.

The light source was specifically chosen for chromic ion determination; it can be altered to measure other ions (aquarist: think nitrates, ammonia and pH). We're working on other designs and useful applications and invite you to join us and share your designs.

Colorimeters are exceptionally handy items used for determining the concentration of dissolved species typically in aqueous solutions. The principles of operation are simple and form the backbone of several other analytic methods.
This is part of a larger project to reduce the cost of scientific
equipment using open-source hardware at Michigan Tech. Read a short
piece published by Science talking about it:
http://mtu.academia.edu/JoshuaPearce/Papers/1935580/Building_Research_Equipment_with_Free_Open-Source_Hardware. More open-source research tools:


01.31.13 - If I'm understanding Git, I successfully uploaded the firmware. (I sure wish you linux folks would learn to speak colloquially). http://github.com/Chowderhead/colorimeter

Arduino Uno
Adafruit LCD shield (www.adafruit.com/products/772)
LED having peak around 606nm (like: http://www.jameco.com/1/1/3120-lef3833-led-orange-620nm-t-1-3-4-1700mcd-1-7v-v-a12-irled.html)
A suitable resistor for the LED you choose
TSL230R light-to-frequency sensor
Proto board (like: http://www.radioshack.com/product/index.jsp?productId=2102845&znt_campaign=Category_CMS&znt_source=CAT&znt_medium=RSCOM&znt_content=CT2032230)
Coductors (Cat 5 cable works great)
Black ABS or PLA filament
12 M3 screws (just about any length; 10-12mm is good)
12 M3 nuts
20 M3 washers

Print the parts and clean them up so everything fits together nicely. Push M3 nuts into their appropriate slots at each corner of the case body - slots open to interior.
Cut the proto board down to size (about 27mm x 46mm) and drill holes to match those in the sides of the case.
Loosely attach the boards to the interior of the case with a couple screws each and push the cuvette holder into place (no cover) and mark the approximate locations where the sensor and LED must be placed on the boards to align with the windows in the cuvette holder.
Remove the boards from the case and solder the components to their respective boards at the points marked. Leave the LED leads a bit long so it can be moved to aim the beam through the hole.
Solder the conductors per the schematic. (The io pins can be soldered to directly on the LCD shield if you're careful, otherwise different means will be required, like not using the shield as a shield.)
Fit the boards back into the case, this time firmly.
Download and install the firmware on the Aurduino.
Fit the LCD shield and power the device (surplus wall wart of appropriate voltage or USB power will work).
Place the cuvette holder back into position (no cover) and use the menu system to select "Calibrate". The LED will illuminate for a few seconds - make sure that the majority of light passes as straight as possible through the cuvette holder windows and impinges upon the sensor. If the LED/sensor are high or low, reshape the cuvette windows with a small rat tail file or suitably sized drill bit.
After the LED is properly aimed, remove the cuvette holder and align and affix the cover to the case with four M3 screws and washers.
Push the cuvette holder through the opening in the cover and check that the lid fits nicely into recess.
Follow the appropriate protocol for calibration (yet to be built into the firmware - forthcoming).

More from Tools

view more

All Apps

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Print through a distributed network of 3D printing enthusiasts from across the US, at a fraction of the cost of the competitors. We want to change the world for the better through technology, an...

App Info Launch App

Quickly Scale, Mirror or Cut your 3D Models

App Info Launch App

Treatstock is an online platform that offers decentralized manufacturing services such as 3D printing and CNC machining for clients all over the world. We offer free and instant access to comparati...

App Info Launch App

3D print your favourite design with NinjaPrototype, a professional 3D manufacture with consistent quality and speed.

App Info Launch App

Please note this system is out of date -- much better to build this mobile version with turbidity measurements as well http://www.appropedia.org/Open-source_mobile_water_quality_testing_platform

[EDIT: code now compiles, the coder posted an update. However, it does not work with this hardware/schematic; it requires different I/O and three of the TSL235R sensors, as opposed to the original design which used a single TSL230R. See this related project for the hardware and I/O the code referenced on this page actually goes with: https://www.thingiverse.com/thing:336212 . Just don't do what I did and build the thing on this page before checking for valid firmware!]

I printed and assembled this version of the colorimeter, but the code linked below (https://github.com/mtu-most/colorimeter) refuses to compile. I made sure to include the Adafruit, duplex frequency counter, and LCDMenu libraries. It keeps telling me 'waitForButton was not declared in this scope'. There's also a lot of stuff about nephalometry(?) in that file, so I was wondering if the current code in that repository is actually intended for the expanded version of this (water quality monitor). I need the basic original code for this colorimeter, with a single LED. Has anyone reading this actually built this exact version and tested it, and if so, can you please share the firmware? Thanks!

Open source water testing platform
by jpearce

From the coder: The code used to work, but then I changed the interface of the Menu library. I
updated the colorimeter code some time ago, but forgot to push it to github. I
did that now, so it should at least compile again.

I'm not sure if the code works on the pure colorimeter; I think it should, but
the menu also allows the nephalometry measurement, which will not work without
the second sensor.

The code requires the sensors to be on the pins they are on, because those are
the inputs for the hardware counters.

I don't have my thingiverse credentials ready (if I even have them), so feel
free to pass this on to there.

Hello, thanks for the response! I actually got in touch with the coder (after posting here), and he was super helpful and responsive. Definitely a great example of folks in the open source science community, I didn't necessarily even expect a reply given how old the project is now, but I got multiple replies, AND he updated the code!

That said, the code as it currently exists will not work with the "pure" colorimeter -- there is currently no available code for the model described on this Thingiverse page. With Bas's update (plus one additional "include" fix to a library file), it will compile, but the result indeed applies to the open source water quality monitoring platform. So, what I'm going to do is just modify my hardware, since I actually do have all the parts already, and since it will basically be like a "colorimeter plus". (I'm building it for work, my coworkers won't complain about extra functionality). Thanks again for responding here, you guys are awesome.

Can this be used for paint matching?

I've seen some comercial colorimeters for aquariums that use reagents. It is probably to make it easier for the color sensor.

Has the schematic been removed from the github zip? Can't find it anywhere

This software does not work (as of trying it in Jan 2018) with the colorimeter model described on this page. As far as I can tell, it is assuming multiple TSL235R sensors, vs a single TSL230/R module, and 3 LEDs, vs 1 LED. The I/O assignments are all wrong for the TSL230 version of the project. I'm trying to either find an older version of the code that works with this hardware build, or modify the currently available code.

Any progress on calibration? I have built a similar device using a phototransistor and found that not only does the calibration vary with the battery charge level, but also with what kind of cuvette you use and how full it is. I think it has something to do with how the light refracts on the inside of the cuvette. That said, your cuvettes appear to be pretty large (I was using 1cm cuvettes) so maybe the refraction is less of an issue.

We've rewritten firmware and will make it available shortly. A proper calibration will require standard solution (or a solution with a known concentration).

We've found that a diffuser is required in the light path to reduce issues with internal reflection by the vial. We've also added a reference light sensor at the LED.

Please elaborate on the diffuser. What did you use, exactly? What kind of reference light sensor did you use?

We're going with the TSL235 light-to-frequency sensor for all intensity measurements. As for diffuser, wait for it...

...Scotch tape. Really, any translucent material in the light path will work. In the case of the cuvette holder in this thing and it's big brother, it was simplest just to stick tape over the slits.

No need buy that expensive TSL230R - you can just use another LED of the same kind and hook it from ground to one of the ADC inputs of the Arduino. When you shine light into an LED, it will generate a voltage that increases with the light's intensity, which is much easier to use with a microcontroller than a varying frequency, but it will need calibration to give some accuracy.

Yeah, that was considered, and the issue with measuring frequency is non trivial. I worried about the spectral response of an LED as compared to the sensor since one of my goals was to make this sensitive over a relatively broad spectrum. The newer TSL235R is only $2.35 at Sparkfun...

I've seen some comercial colorimeters for aquariums that use reagents. It is probably to make it easier for the color sensor. Do you know if it is possible to test nitrate, phosphate, etc without reagents?

I do Cl2, Phosphates, Iron, and Manganese testing daily with a colorimeter and they all require a reagent. There are alternative methods for CL2 but none that I know of for the others.

Usually you need some sort of colorimetric reagent. If you think about it, you're talking about chemicals that are for the most part colorless in water/saltwater at the concentrations in aquariums. A visible light spectrometer isn't going to detect them if they have no color. A few compounds that fluoresce can be detected by using a specific wavelength and measuring the resulting glow, but those are pretty specific applications. Keep in mind to that the colorimetric reagents are chosen to give the largest change in color over the range you're hoping to measure and to usually be pretty specific as to the compound they react with, making measurement with a spectrometer much easier.

Makes sense, a lot of sense. In other words, we can get the electronics right, but we also need to get the reagents right. Any ideas on how to start researching about DIY reagents? thanks

All of the common ones use well-established chemistry and some can be found on expired patents at http://patft.uspto.gov/netahtml/PTO/search-bool.htmlhttp://patft.uspto.gov/netahtm...

It is not possible to test for any of these without reagents, with the exception of pH, which you can use a pH meter/probe to test.

What about a white light and a diffraction grating (plus the usual curved mirrors etc)?



I know a white LED doesn't really have a nice flat spectrum over the visible range, but if you're comparing spectra between two samples, or a sample and a blank, it could work OK, depending on how much light you can get out of your LED.

It's a good suggestion and we're intending to play with an OS spectrometer that's built around a line camera (spectruino is the project). The issue is keeping the thing calibrated; as the optical bench is PLA or ABS, there is (relatively speaking) a terrific amount of movement with every little change in environment. But, applying the KISS principle, if we collect a spectrum from the light source, we can do a good enough calibration by aligning peaks.

The allure of this approach is that we can then analyze pretty much anything absorbing a wavelength falling in the LED emission spectrum. The line camera is a shockingly cheap sensor, too.

Most spectrometer light sources don't have very flat spectrums either, you always need a blank, and should have a known absorption sample near the range you're measuring to set up a calibration curve. The only area he might get in trouble would be if his absorption wavelength he wants to measure is at the lowest output point of the LED, which would lead to issues of low light like you pointed out, at 606nm he should be fine.

nice thing, but some easy improvements: the LED needs constant current, easily done by e.g. a lm317. Also, I would add a precise temperature sensor to both the LED and the sensor, e.g pt1000 and a reference 1k resistor driven by a precise dual constant current source. The LED spectrum changes with temperature. The aging of the the LED is however not so easily to compensate. Also, a cap covering the epruvette is probably needed, so that there is no stray light from the top.

Actually, there is a cover for the cuvette, just not pictured.

Do you think that more frequent calibration of the device during use will offset some of the T variability and LED aging? I'm not terribly proficient on the electronics front, can you steer me to a schematic for incorporation of a lm317?

Thanks for the suggestions!

I don't know how important LED aging will be for a spectrometer. Your sensor only measures at one wavelength, so that part doesn't need calibration. As long as the LED gets constant current, and is allowed to warm to a stable temperature (check that the sensor values stop changing) it should be okay. Every spectrometer like this that I've ever used has to be zeroed with an appropriate blank- same type of tube, same solution without color development on every run, so changes in LED spectrum and output shouldn't be a huge problem. Ideally you'd want to have a tube with a known concentration as well to calculate your samples concentration, again so that changes in light source don't matter much. Light sources in regular spectrometer always fade and change over time, usually they include a timer to let you know when the number of hours reach a point you need to replace the bulb.

The LED used in this instrument costs about 25 cents. The cheapest COD-only instrument I've found so far costs about $400 more than this thing, so I can afford a few replacement LEDs and a couple bottles of good wine:)

This is very cool. Although the expense in this instrument is in filters and lamps. It would be interesting to measure the spectrum coming from LEDs and see what kinds of filters can be got on the cheap.

Isn't it annoying how "real" lab equipment costs way too much and then you end up troubleshooting everything anyway?

Actually, there is a cover for the cuvette, just not pictured.

Do you think that more frequent calibration of the device during use will offset some of the T variability and LED aging? I'm not terribly proficient on the electronics front, can you steer me to a schematic for incorporation of a lm317?

Thanks for the suggestions!

As to the latter: emphatically yes. Troubleshooting followed by shoving in a drawer until the next lab supervisor comes along and cleans house...

As to spectrum of LED, my approach was to find an LED with an emission peak as near the absorption peak as possible. As long as there is measurable and predictable attenuation, a meaningful absorbance can be determined. I'm all for improving performance, though!

Nice design, but how do you measure pH with a colorimeter?

I dunno. That's why I'm Chowderhead!

I'm also a budding aquarist and those three parameters tend to issue from my brain in unison. If there is a colorimetric method, then I would be happy to explore possibilities...

A pH indicator like o-cresolphthalein goes from colorless to red from pH 8.2 to 9.8. I'd imagine that would be one way. http://www.sigmaaldrich.com/catalog/product/aldrich/C85778?lang=enhttp://www.sigmaaldrich.com/ca...®ion=US

You're right, there are a range of indicators which would work for a setup like this. I keep a pH probe in the sump of the reef tank so it never occurred to me to try to measure it spectrochemically.

Ok this rocks! I can't wait till you get the calibration protocol setup for it. :)