Pelajari cara membaca partikel padat terlarut (TDS) menggunakan sensor TDS dan Arduino Uno. Disertai wiring, kode, dan penjelasan lengkap.
Sensor TDS (Total Dissolved Solids) adalah perangkat penting untuk mengukur kandungan partikel padat terlarut dalam air, seperti garam, mineral, dan logam. Sensor ini biasa digunakan dalam proyek monitoring kualitas air seperti hidroponik, akuarium, dan pengolahan air bersih.
Alat dan Bahan
| Komponen | Jumlah | Keterangan |
|---|---|---|
| Arduino Uno | 1 | Mikrokontroler utama |
| Sensor TDS | 1 | Untuk deteksi partikel padat dalam air |
| Kabel jumper | 3 | Koneksi sensor ke board Arduino |
| Air bersih/air uji | 1 wadah | Untuk menguji nilai TDS |
Wiring Diagram

Berikut adalah diagram koneksi antara TDS Module dan Arduino Uno:
- VCC (Merah) → 5V Arduino
- GND (Hitam) → GND Arduino
- AO (Hijau) → A0 Arduino
Catatan: Modul TDS memiliki output analog (AO) yang mengeluarkan tegangan sesuai konsentrasi partikel larut.
Kode Program Arduino
Gunakan kode berikut untuk membaca nilai TDS dari sensor dan menampilkannya dalam satuan ppm (part per million).
#include <Arduino.h>
#define TdsSensorPin A0
#define VREF 5.0
#define SCOUNT 30
int analogBuffer[SCOUNT];
int analogBufferTemp[SCOUNT];
int analogBufferIndex = 0, copyIndex = 0;
float averageVoltage = 0, tdsValue = 0, temperature = 29;
void proses_analog_tds() {
int a = analogRead(TdsSensorPin);
if (a != 0) {
static unsigned long analogSampleTimepoint = millis();
if (millis() - analogSampleTimepoint > 40U) {
analogSampleTimepoint = millis();
analogBuffer[analogBufferIndex] = a;
analogBufferIndex++;
if (analogBufferIndex == SCOUNT)
analogBufferIndex = 0;
}
static unsigned long printTimepoint = millis();
if (millis() - printTimepoint > 800U) {
printTimepoint = millis();
for (copyIndex = 0; copyIndex < SCOUNT; copyIndex++)
analogBufferTemp[copyIndex] = analogBuffer[copyIndex];
averageVoltage = getMedianNum(analogBufferTemp, SCOUNT) * (float)VREF / 4096.0;
float compensationCoefficient = 1.0 + 0.02 * (temperature - 25.0);
float compensationVolatge = averageVoltage / compensationCoefficient;
tdsValue = (133.42 * pow(compensationVolatge, 3)
- 255.86 * pow(compensationVolatge, 2)
+ 857.39 * compensationVolatge) * 0.5;
Serial.print("TDS: ");
Serial.print(tdsValue, 0);
Serial.println(" ppm");
}
}
}
int getMedianNum(int bArray[], int iFilterLen) {
int bTab[iFilterLen];
for (byte i = 0; i < iFilterLen; i++)
bTab[i] = bArray[i];
int i, j, bTemp;
for (j = 0; j < iFilterLen - 1; j++) {
for (i = 0; i < iFilterLen - j - 1; i++) {
if (bTab[i] > bTab[i + 1]) {
bTemp = bTab[i];
bTab[i] = bTab[i + 1];
bTab[i + 1] = bTemp;
}
}
}
if ((iFilterLen & 1) > 0)
bTemp = bTab[(iFilterLen - 1) / 2];
else
bTemp = (bTab[iFilterLen / 2] + bTab[iFilterLen / 2 - 1]) / 2;
return bTemp;
}
void setup() {
Serial.begin(9600);
pinMode(TdsSensorPin, INPUT);
}
void loop() {
proses_analog_tds();
}
Penjelasan Kode
- Pin analog yang digunakan adalah A0, sesuai dengan wiring diagram.
- Tegangan referensi (VREF) disesuaikan ke 5.0V, default Arduino Uno.
- Data dibaca sebanyak 30 kali dan difilter menggunakan median filter untuk menghindari noise.
- Rumus TDS diambil dari DFRobot TDS Sensor Wiki menggunakan metode kompensasi suhu.
Langkah Pengujian
- Hubungkan sensor ke air yang ingin diuji.
- Upload kode ke Arduino menggunakan Arduino IDE.
- Buka Serial Monitor (9600 baud).
- Amati nilai TDS (ppm) yang akan tampil setiap 0.8 detik.
Kesimpulan
Sensor TDS sangat cocok digunakan untuk proyek-proyek monitoring kualitas air. Dengan Arduino Uno dan sedikit kalibrasi suhu, kamu bisa membaca nilai partikel padat terlarut (ppm) secara akurat. Hasil pembacaan ini bisa digunakan untuk sistem otomatisasi seperti pengurasan air, penyaringan, atau monitoring air minum.
Diskusi lebih lanjut kontak di bawah :

Media sosial lainnya :
Baca juga :
Kontrol Rotary Encoder dengan Arduino Uno
Cara Menggunakan Sensor Ampere Voltage PZEM-004T dengan Arduino Uno




