Introduction: Measuring Salt Concentration With AC

Measuring the salt concentration with AC based on the conductivity

For the course Measurements for water at the TU Delft, a device is made to measure the salt concentration based on the conductivity of the water using an Arduino UNO R3. This article provides background theory of the principle of electrical conductivity measurement and also a step-by-step scheme how to build a similar device.


Background theory

A salt is a chemical binding between positive and negative ions. Ions are positive or negative loaded molecules. Ions are needed to conduct electricity in water. This means that pure water (H2­­O) does not conduct electricity. In the other way it means that the more salt is dissolved, the better the water conducts, thus the water delivers a lower resistant. This device uses the variation of the resistance of the water to determine the dissolved concentration of salt.

The device

This device uses alternating current (AC) in 2 bars which are connected to the water. AC is used to reduce the redox reaction occurring on the bars to gain more reliable results. Furthermore the measurement is exerted by 2 other bars which are also in contact with the water but not in direct contact with the bars with AC for more continuous and reliable measurement.

Due to the fact that AC is used there is a diode bridge introduced as shown in figure 1. This diode bridge gets AC as input and converts it to a direct current (DC) as output. The conversion is necessary for the measurements. Without the conversion the device will measure complementary. For example when 5 volt is supplied in the first direction 3 volt will be measured. In the other direction 5 – 3 = 2 volt will be measured.

To show the measurement on the Arduino one can use a RGB-LED to show in which interval the measurement lies. In this example 3 intervals are used. These can be calibrated using 4 measurement. First measure with demineralised water. Then measure 3 times with known concentrations. This is your calibration.


Building the device

The requirements to build this device are listed below.

· Arduino UNO R3

· Breadboard

· 1x 35v 470μf Rubycon capacitor

· 4x 1N007 Diodes

· 1x 100 kΩ Resistance

· 1x 100 Ω Resistance

· 3x 220 Ω Resistance

· 1x RGB-LED

· 10x male jumper wires

· 4x 120 mm Ø 5 mm stainless steel

· 4x cable 5 mm2 with connector

· 12x Nut Ø 5 mm

· 1x 180 mL jar

Bars - Once you have the requirements you can start building the part that has contact with the water. One has to attach the bars to the cover as shown in figure 2.

Bars 1 and 2 are connected to AC. Bar 1 is connected to the breadboard and in series with a 100 Ω resistance. After the resistance a jumper wire goes to digital port 13. Bar 2 is directly connected to digital port 12. This is the AC circuit.

Diode bridge – The diode bridge is shown in figure 3. The points A en B in figure 1 and 3 are consistent. At these points respectively the jumping wires of bars 3 and 4 are connected to the breadboard.

Measurement – Like said the jumping wires are connected in points A and B. From point C the current travels to the capacitor. At this point the current is converted to direct current. That is why the measurement is done here. To make this measurement the positive pole is connected to the Analog port (A0) on the Arduino with a jumping wire.

Ground - After the measurement the current travels through the capacitor to point D. From point D it travels to point A or B, dependent of the situation, and back to port 12 or 13, dependent of which one is the ground at that moment.

Both the situation A, in which port 13 is LOW and B, in which 12 is LOW thus the ground, is shown in figure 4.

RGB-LED – The RGB-LED is separately connected on the Arduino as shown in figure 5 and 6. The anodes are connected to Digital ports5,6 and 7. The cathode is connected to ground.

The Arduino code

The code is based on Arduino examples > 01.basics>ReadAnalogVoltage but is extended to realize AC, to measure after 2 seconds and to show the result as a specific color. These 3 parts are separated in the script.

boolean flipFlop=true;

int tw = 10.0;

int tm = 2000.0;

int RED = 7;

int GREEN =6;

int BLUE =5;

void setup () {

pinMode(13, OUTPUT);

pinMode(12, OUTPUT);

pinMode(RED,OUTPUT);

pinMode(GREEN,OUTPUT);

pinMode(BLUE,OUTPUT);

Serial.begin(9600);

}

void loop() {

//Alternating Current

if (flipFlop==true){

digitalWrite(13, HIGH);

digitalWrite(12, LOW);

flipFlop=false;

}

else{

digitalWrite(13, LOW);

digitalWrite(12, HIGH);

flipFlop=true;

}

//Measure after 2 seconds

if ((millis() % tm) < 20){

int sensorValue = analogRead(A0);

float voltage = sensorValue * (5.0 / 1023.0);

Serial.println(voltage);

delay(20);

//Show the result as a specific color

if (voltage< 2.5){// concentration < 1 gr/100ml Red

digitalWrite(RED,HIGH);

digitalWrite(GREEN,LOW);

digitalWrite(BLUE,LOW);

}

if (voltage>2.5 and voltage<3.9 ){

// concentration between 1 and 2 gr/100mL (tap water in the Netherlands) Green

digitalWrite(RED,LOW);

digitalWrite(GREEN,HIGH);

digitalWrite(BLUE,LOW);

}

if (voltage>3.9 ){// concentration > 2 gr/100ml Blue

digitalWrite(RED,LOW);

digitalWrite(GREEN,LOW);

digitalWrite(BLUE,HIGH);

}

}

}

Date: 28-11-2014

Authors: Jef Vleugels & Grigor Ayvazyan