Measuring Turbidity by Light Intensity




Introduction: Measuring Turbidity by Light Intensity


a school project (TU Delft) we have made a sensor which can measure turbidity in water. One can imagine that when less light is being reflected by sediment the turbidity of a fluid is lower. To do this we used an Arduino setup, which we will discuss later.

By: Simon Schilder

Nils Damian Kok


Step 1:

Step 2: Building the Device

List of requirements:

  1. Arduino
  2. Plexiglass (10x10 cm)
  3. wood ( 2 30x10, 1 30x9, 1 30x11, 1 9x9, 1 11x11 cm)
  4. hollow cable
  5. water proof (flash)light
  6. 4 light sensors
  7. Arduino lcd screen

First make little notches at approximately 1 cm of the end for the plexiglass to fit in. The next step is to drill 4 holes in the piece of wood of 9x9 cm, this is where the light sensors will be installed. In the other piece of wood 11x11 cm only one hole needs to be drilled, this is for the cable to enter the inside of the sensor. Make sure this hole is more or less the same diameter of the cable since the sensor needs to be water proof. When the sensor and cables are constructed the sides of the sensor can be assembled. We used glue and nails. To make sure the construction is water proof one can fill holes with glue ore wrap it up in tape. The wires which are connected to the light sensors and Arduino should be long enough to cover the distance(depth) you want to measure in.

Now that the sensor is finished it is time to look at the Arduino. The idea is that when less light enters the sensors (high turbidity) a red light turns on and when a lot of light enters a green light turns on, etc. The set up to accomplish this is shown in the pictures.

For the set up of the lcd light we refer to

Step 3: Arduino Code

In order to measure anything the following code needs to be implemented.


LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {

// open the serial connection at

// 9600 BAUD


pinMode(10, OUTPUT);

pinMode(9, OUTPUT);

pinMode(8, OUTPUT);


lcd.print("Licht in %:");


void loop() {

// store the value read from pins 1,2,3 and 4

// into a variable

int x;

int sensorValue1 = analogRead(A0);

int sensorValue2 = analogRead(A1);

int sensorValue3 = analogRead(A2);

int sensorValue4 = analogRead(A3);

// print that variable over the serial connection


Serial.print(' ');


Serial.print(' ');


Serial.print(' ');


Serial.print(' ');



x = sensorValue1+sensorValue2+sensorValue3+sensorValue4;

if (0 <= x < 30)

digitalWrite(10, HIGH); /* turn on red light

if (x >= 30)

digitalWrite(10, LOW); /* turn of red light

if (30 <= x < 80)

digitalWrite(9, HIGH); /* turn on orange light

if (x < 30)

digitalWrite(9, LOW); /*turn of orange light

if (x >= 80)

digitalWrite(9, LOW); /* turn of orange light

digitalWrite(8, HIGH); /* turn on green light

if (x < 80)

digitalWrite(8, LOW); /* turn of green light




Step 4: How to Measure?

Now that everything is in place we can start measuring. First place the light in front of the sensor, we used a distance of 25 cm between the light and the plexiglass.

We used calciumcarbonate (CaCO3) as sediment and a tub filled with 70 liters of water. We found that only a small amount (25 grams) is needed to get a high turbidity and a low reading of the light sensors. So steps of 5 grams were added to the water.

When the sensor is placed in clear water the green light should turn on. When the calciumcarbonate is added it should switch to orange and eventually to red.

Step 5:

Be the First to Share


    • Anything Goes Contest 2021

      Anything Goes Contest 2021
    • Jewelry Challenge

      Jewelry Challenge
    • New Year, New Skill Student Design Challenge

      New Year, New Skill Student Design Challenge



    4 years ago


    I was wondering if we can get a numeric value instead of the color light output from this setup. A value to compare if the turbidity if increased twice of reduced half between different time points. I want to make this as a science project for my lab. I work at Max-Planck Institute, Marburg, as a biologist.

    Thanks for sharing!