Tutorial Menggunakan Sensor TDS Meter Analog dengan Arduino UNO, Arduino MEGA dan ESP32

Prinsip kerja sensor TDS (Total Dissolved Solids)

Sensor ini didasarkan pada kemampuan zat terlarut dalam air untuk menghantarkan arus listrik. Sensor ini memiliki dua elektroda yang dicelupkan ke dalam larutan air, kemudian dialiri arus listrik kecil. Sensor akan mengukur resistansi larutan tersebut, lalu mengonversinya menjadi nilai konduktivitas listrik. Nilai konduktivitas ini selanjutnya dikalibrasi menggunakan faktor tertentu untuk menghasilkan nilai TDS dalam satuan ppm (parts per million). Semakin tinggi jumlah zat padat terlarut dalam air, maka semakin besar pula nilai TDS yang terbaca.

Penggunaan sensor TDS banyak dijumpai dalam berbagai bidang, terutama yang berkaitan dengan pengendalian kualitas air. Sensor ini digunakan dalam sistem pemurnian air seperti reverse osmosis, budidaya ikan, pertanian dan hidroponik, pengolahan air limbah, serta industri makanan dan farmasi. Selain itu, sensor TDS juga sering dimanfaatkan dalam proyek-proyek mikrokontroler seperti Arduino dan ESP32 untuk sistem monitoring otomatis berbasis IoT.

Kelebihan dan Kekurangan Sensor TDS

Kelebihan dari sensor TDS antara lain adalah kemudahan penggunaan dan integrasi, harga yang terjangkau, serta waktu respon yang cepat dalam memberikan hasil pengukuran. Sensor ini juga bersifat fleksibel dan dapat diterapkan pada berbagai sistem pengukuran air baik untuk skala rumah tangga maupun industri. Karena sifatnya yang sederhana, sensor ini juga cocok untuk aplikasi pembelajaran maupun penelitian awal.

Namun, kekurangan sensor TDS juga perlu diperhatikan. Sensor ini tidak dapat membedakan jenis zat terlarut, hanya mengukur total jumlahnya. Akurasinya dapat terganggu oleh suhu air, sehingga sering kali memerlukan kompensasi suhu untuk hasil yang lebih tepat. Selain itu, elektroda sensor rentan terhadap korosi jika digunakan secara terus-menerus tanpa perawatan yang baik, dan sensor perlu dikalibrasi secara berkala agar tetap memberikan hasil yang akurat. Penggunaan pada air dengan kontaminasi berat atau larutan non-air juga dapat menurunkan keakuratan pembacaan.

Spesifikasi Sensor TDS Meter Analog

KomponenSpesifikasi
Tegangan Input3.3 – 5.5 V
Sinyal Keluaran0 – 2.3 V (analog)
Arus Operasi3 – 6 mA
Rentang Pengukuran TDS0 – 1000 ppm
Akurasi Pengukuran TDS±10% F.S. (pada suhu 25°C)
Ukuran Modul42 x 32 mm
Antarmuka ModulXH2.54-3P
Antarmuka ProbeXH2.54-2P

Spesifikasi Probe Sensor TDS Meter Analog

KomponenSpesifikasi
Jumlah Elektroda2 buah
Panjang Kabel83 cm
Tipe KonektorXH2.54-2P
WarnaPutih
LainnyaProbe tahan air (waterproof)

Dalam melakukan pengukuran sensor dengan sistem nilai analog, dapat disesuaikan dengan nilai ADC yang didapat oleh modul sensor. Perhitungan output sensor dapat disesuaikan dengan melakukan sistem kalibrasi sensor TDS menggunakan alat ukur TDS agar dapat lebih akurat sesuai dengan acuan alat ukur yang diterapkan.

Wiring Diagram Sensor TDS dengan Arduino UNO

Sensor TDS Analog V1.0FungsiPin Arduino UNO
VCCTegangan input5V
GNDGround (negatif)GND
AOUTOutput sinyal analogA0
#define TdsSensorPin A0  // Pin analog yang digunakan
float voltage = 0;
float tdsValue = 0;
float temperature = 25; // Default suhu 25°C jika tanpa sensor suhu

void setup() {
  Serial.begin(9600);
  pinMode(TdsSensorPin, INPUT);
}

void loop() {
  int sensorValue = analogRead(TdsSensorPin);
  voltage = sensorValue * (5.0 / 1024.0); // Konversi ADC ke tegangan (5V untuk Arduino Uno)

  // Rumus konversi dari datasheet DFRobot TDS Analog Sensor
  float compensationCoefficient = 1.0 + 0.02 * (temperature - 25.0); // Kompensasi suhu
  float compensationVolatge = voltage / compensationCoefficient;
  tdsValue = (133.42 * pow(compensationVolatge, 3)) 
             - (255.86 * pow(compensationVolatge, 2)) 
             + (857.39 * compensationVolatge); // hasil dalam ppm

  Serial.print("Tegangan: ");
  Serial.print(voltage, 2);
  Serial.print(" V\tTDS: ");
  Serial.print(tdsValue, 0);
  Serial.println(" ppm");

  delay(1000); // Delay 1 detik
}

Wiring Diagram Sensor TDS dengan Arduino MEGA

Sensor TDS Analog V1.0FungsiPin Arduino Mega 2560
VCCTegangan input5V
GNDGround (negatif)GND
AOUTOutput sinyal analogA0
#define TdsSensorPin A0  // Gunakan pin analog A0
float voltage = 0;
float tdsValue = 0;
float temperature = 25; // Suhu default, bisa diganti jika menggunakan sensor suhu

void setup() {
  Serial.begin(9600);
  pinMode(TdsSensorPin, INPUT);
}

void loop() {
  int sensorValue = analogRead(TdsSensorPin);
  voltage = sensorValue * (5.0 / 1024.0); // Konversi ADC 10-bit ke tegangan (Arduino Mega: 0–5V)

  // Kompensasi suhu (bisa dilewati jika tidak pakai sensor suhu)
  float compensationCoefficient = 1.0 + 0.02 * (temperature - 25.0);
  float compensationVoltage = voltage / compensationCoefficient;

  // Rumus konversi dari tegangan ke nilai TDS (ppm)
  tdsValue = (133.42 * pow(compensationVoltage, 3)) 
             - (255.86 * pow(compensationVoltage, 2)) 
             + (857.39 * compensationVoltage);

  Serial.print("Tegangan: ");
  Serial.print(voltage, 2);
  Serial.print(" V\tTDS: ");
  Serial.print(tdsValue, 0);
  Serial.println(" ppm");

  delay(1000); // Pembacaan setiap 1 detik
}

Wiring Diagram Sensor TDS dengan ESP32

Sensor TDS Analog V1.0FungsiPin ESP32
VCCTegangan input5V
GNDGround (negatif)GND
AOUTOutput sinyal analog36 (VP)
#define TdsSensorPin 36  // Pin ADC ESP32 yang digunakan
float voltage = 0;
float tdsValue = 0;
float temperature = 25; // Default suhu (bisa diganti jika pakai sensor suhu)

void setup() {
  Serial.begin(115200);
  analogReadResolution(12); // Resolusi ADC ESP32 (0 - 4095)
}

void loop() {
  int sensorValue = analogRead(TdsSensorPin);
  voltage = sensorValue * (3.3 / 4095.0); // Tegangan berdasarkan ADC ESP32 (3.3V)

  // Kompensasi suhu (jika tidak pakai sensor suhu, default 25°C)
  float compensationCoefficient = 1.0 + 0.02 * (temperature - 25.0);
  float compensationVoltage = voltage / compensationCoefficient;

  // Rumus dari DFRobot TDS sensor analog
  tdsValue = (133.42 * pow(compensationVoltage, 3)) 
             - (255.86 * pow(compensationVoltage, 2)) 
             + (857.39 * compensationVoltage);

  Serial.print("Tegangan: ");
  Serial.print(voltage, 2);
  Serial.print(" V\tTDS: ");
  Serial.print(tdsValue, 0);
  Serial.println(" ppm");

  delay(1000); // Delay 1 detik
}

Leave a Reply

Your email address will not be published. Required fields are marked *