Analog Turbidity Sensor For Arduino


The gravity arduino turbidity sensor detects water quality by measuring the levels of turbidity, or the opaqueness. It uses light to detect suspended particles in water by measuring the light transmittance and scattering rate, which changes with the amount of total suspended solids (TSS) in water. As the TTS increases, the liquid turbidity level increases. Turbidity sensors are used to measure water quality in rivers and streams, wastewater and effluent measurements, control instrumentation for settling ponds, sediment transport research and laboratory measurements. This liquid sensor provides analog and digital signal output modes. The threshold is adjustable when in digital signal mode. You can select the mode according to your MCU.

warning_yellow.png NOTE: The top of probe is not waterproof.


Connection Diagram

Interface Description:

  1. "D/A" Output Signal Switch
    1. "A": Analog Signal Output, the output value will decrease when in liquids with a high turbidity
    2. "D": Digital Signal Output, high and low levels, which can be adjusted by the threshold potentiometer
  2. Threshold Potentiometer: you can change the trigger condition by adjusting the threshold potentiometer in digital signal mode.


Here are two examples: Example 1 uses Analog output mode Example 2 uses Digital output mode

Example 1

void setup() {
  Serial.begin(9600); //Baud rate: 9600
void loop() {
  int sensorValue = analogRead(A0);// read the input on analog pin 0:
  float voltage = sensorValue * (5.0 / 1024.0); // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
  Serial.println(voltage); // print out the value you read:

Example 2

int ledPin = 13;                // Connect an LED on pin 13, or use the onboard one
int sensor_in = 2;                 // Connect turbidity sensor to Digital Pin 2

void setup(){
  pinMode(ledPin, OUTPUT);      // Set ledPin to output mode
  pinMode(sensor_in, INPUT);       //Set the turbidity sensor pin to input mode

void loop(){
  if(digitalRead(sensor_in)==LOW){       //read sensor signal
    digitalWrite(ledPin, HIGH);   // if sensor is LOW, then turn on
    digitalWrite(ledPin, LOW);    // if sensor is HIGH, then turn off the led

This is a reference chart for the mapping from the output voltage to the NTU according to different temperature. e.g. If you leave the sensor in the pure water, that is NTU < 0.5, it should output “4.1±0.3V” when temperature is 10~50℃.

characteristic curve “Voltage ----Temperature

warning_yellow.png NOTE: In the diagram, the unit measuring turbidity is shown as NTU, also it is known as JTU (Jackson Turbidity Unit), 1JTU = 1NTU = 1 mg/L. Refer to Turbidity wikipedia


Q&A: Some general Arduino Problems/FAQ/Tips

Q1: Hi, I always get 0.04 in the serial port, and there is no change, even I block the transmit tube.

A:Hi, please check the probe connection cable, if you plug it with a wrong side, it won't work.

Q2:The relationship between turbidity and voltage


For any questions, advice or cool ideas to share, please visit the DFRobot Forum.


DFshopping_car1.png Get it from Gravity: Analog Turbidity Sensor For Arduino

Category: DFRobot > Sensors & Modules >Sensors > Liquid Sensors