Transmissometry Extended

Note: This project was originally hosted at, but I realized that a fragrance website isn’t really the best place for heavy duty science info, so I moved the transmissometry discussion, source code, and schematics here.

Below is the original post:

Open source hardware saved Campfire #1

I know there are case studies of Open Source Software helping businesses with their day-to-day tasks, but how many case studies are there of Open Source Hardware helping a business solve problems?

Here is my example of how the Open Source Hardware community saved the launch of my company’s first product.

I’ve also included all the theory, technical schematics, and details towards the end.

Here is the video we did for Pumping Station: One and Element 14:

Transmissometer from Pumping Station: One on Vimeo.

How did I get here:

My idea for a campfire scented cologne won the business plan competition at barcamp Chicago 2010, and on May 10, 2011, nearly a year later, I’m ready to launch my product-RuggedScents’ Campfire. Unfortunately, less than four weeks to launch, I discovered a major process flaw: gigantic inconsistencies between the longevity of the fragrance’s smell on the user’s skin from batch to batch-some batches lasted three to four hours, some barely made it past 30 minutes!

<pictures, schematics, and video after the jump>

After some experimenting, I discovered that longevity is directly proportional to concentration of my main ingredient, but I didn’t have a good way of measuring concentration.

Luckily, my main ingredient has a very strong color, so I thought about using transmissivity.

Transmissivity is a measure of the light that passes (is transmitted) through a sample.  This is pretty easily seen visually. In the photo below are samples of the fragrance concentrate in 2.5%, 5%, 7.5%, and 10% concentrations from left to right.

My plan: pass a laser through the sample and measure the amount of light that makes it through the sample with an optical sensor and display the results on some 7-segment LED displays.

This is where the open source community’s love of sharing information rescued me and completely saved my launch timetable:

Using open source hardware and freely available code and tutorials, I was able to interface an optical sensor with an arduino, and send the data to a display of three 7-segment LED units.

To get the device to it’s current finished state took about $40 in parts and about 16 hours of soldering, fabricating, and coding. I was able to create the data I needed to proceed with my product launch in about four days in my spare time.

The alternative to using open source hardware would have been to purchase a UV-Vis spectrometer (in the $3,000 range).

By using Open Source Hardware, not only did I save money and time, I have exactly the device I need – a rugged, portable tool I can use during production, not a sensitive piece of lab equipment that requires tethering to a computer and gives me more information than is I need to continue with my launch.

A little grounding in theory:

Just by looking at these vials you can visually tell that concentration and transmissivity are related, but how are they related? Here is the Beer-Lambert law for absorbance of light in a sample:

  • Io = the intensity when I use a vial filled with alcohol only
  • I = the intensity when passing through a sample of fragrance in alcohol
  • c = concentration
  • epsilon is a constant, so we’ll ingore it
  • L = distance the light travels through the sample – also a constant (all my samples are in the same kind of sample vial), so we’ll ignore it
  • When you actually use the transmissometer, you get data in the form of I, in volts (explained in the electronics section), which on its own is a meaningless value, so I record all the data as the dimensionless %Transmissivity (%T) which is IIo.

If you rearrange the Beer-Lambert law, you’ll see that %T is proportional to 10^-c.

If you graph %T versus c, you’ll see the following relationship:

(Image from reference 1)

Note: I know the graph says %Transmittance versus Absorbance, but if you look back at Beer-Lambert’s law, Absorbance is directly proportional to Concentration.

The important thing to see here is that when %T is between 30% and 60%, you get a linear behavior.  Below 30%, large changes in c have a nonlinear effect on %T, and above 60%, huge changes in c cause little changes in %T.

Here is a graph of some actual data I gathered (yes, it’s a little sparse). You can see that between 30% and 60%, the relationship between %T and concentration is linear. However, below that region, the relationship between %T and concentration is much less useful.


How I actually made this thing:


  • (1) red laser pointer (5v)
  • (1) CdS optical sensor
  • (1) 10k ohm resistor
  • (3) common ground 7-segment displays
  • (7) 220 ohm resistors
  • (1) arduino
  • rigid foam
  • aluminum tape
  • aluminum foil
  • hot glue + hot glue gun
  • lots of wire
  • some solder
  • heat shrink tubing
  • project box for the electronics
  • battery holder/batteries
  • spst switch (I used a nice red on/off push button)


  • Soldering iron
  • Multimeter
  • Various knives for cutting and shaping the foam

Below is a basic schematic of how the transmissometer was wired together – you can see that it is a pretty simple device:

If you’re interested, the arduino code for reading the optocell and displaying to the 7-segment displays is here.

I’m releasing my transmissometer schematic and software code under the Creative Commons 3.0 attribution license.

Thanks to Limor Fried and Adafruit for the extremely useful and detailed photocell tutorial, thanks to the Arduino forum community for 7-segment tips and tricks, and thanks to my friends Steve Finklestein, Ishmael Rufus, Nathan Witt, Jordan Bunker, Dan Dumitrescu, and everyone at Pumping Station: One for helping me.


3 Responses to “Transmissometry Extended”

  1. Chad says:

    This is really neat device. I wonder if one could be built for making %T measurements within a lake at various depths. The challenge would be making the device waterproof. Instead of a laser could you use a LED’s with precise wavelenthgs. I made a light sensor based on plans at this site:

    It is really nice because you can adjust the gain and make really sensitive light measurements. The problem is the output is in volts. Getting lux or %T would be the next challenge.

    Thanks for the post. This is really cool.


    • Sacha says:

      Hey Chad, getting %T is really easy – just measure a clear sample (that’s Io) then take your measurement (I) and %T=I/Io.

      Also, to make this work in a lake, I’d consider using two fiber optic cables to carry the light towards and away from the electronics.

  2. Chad says:

    Hello Sacha. That makes sense for %T calculations. That’s a great idea to use fiber optic cables. I would like to sample as deep as 30 meters or more. I imagine a cable like this might be expensive.