Cara Menggunakan Sensor TDS dengan Arduino Uno

Cara Menggunakan Sensor TDS dengan Arduino Uno

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

KomponenJumlahKeterangan
Arduino Uno1Mikrokontroler utama
Sensor TDS1Untuk deteksi partikel padat dalam air
Kabel jumper3Koneksi sensor ke board Arduino
Air bersih/air uji1 wadahUntuk 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

  1. Hubungkan sensor ke air yang ingin diuji.
  2. Upload kode ke Arduino menggunakan Arduino IDE.
  3. Buka Serial Monitor (9600 baud).
  4. 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