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
Komponen | Spesifikasi |
---|---|
Tegangan Input | 3.3 – 5.5 V |
Sinyal Keluaran | 0 – 2.3 V (analog) |
Arus Operasi | 3 – 6 mA |
Rentang Pengukuran TDS | 0 – 1000 ppm |
Akurasi Pengukuran TDS | ±10% F.S. (pada suhu 25°C) |
Ukuran Modul | 42 x 32 mm |
Antarmuka Modul | XH2.54-3P |
Antarmuka Probe | XH2.54-2P |
Spesifikasi Probe Sensor TDS Meter Analog
Komponen | Spesifikasi |
---|---|
Jumlah Elektroda | 2 buah |
Panjang Kabel | 83 cm |
Tipe Konektor | XH2.54-2P |
Warna | Putih |
Lainnya | Probe 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.0 | Fungsi | Pin Arduino UNO |
---|---|---|
VCC | Tegangan input | 5V |
GND | Ground (negatif) | GND |
AOUT | Output sinyal analog | A0 |
#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.0 | Fungsi | Pin Arduino Mega 2560 |
---|---|---|
VCC | Tegangan input | 5V |
GND | Ground (negatif) | GND |
AOUT | Output sinyal analog | A0 |
#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.0 | Fungsi | Pin ESP32 |
---|---|---|
VCC | Tegangan input | 5V |
GND | Ground (negatif) | GND |
AOUT | Output sinyal analog | 36 (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
}