Tutorial easy menggunakan sensor TDS dengan Arduino

Tutorial easy menggunakan sensor TDS dengan Arduino

Ingin mengukur kualitas air dengan akurasi tinggi? Sensor TDS adalah alat yang sempurna untuk mendeteksi total padatan terlarut dalam air. Di tutorial ini, kita akan bahas cara easy menghubungkan dan menggunakan sensor TDS dengan Arduino. Siap untuk mulai eksperimenmu?

untuk codenya kalian bisa gunakan code dibawah ini :

#include <Arduino.h>


#define TdsSensorPin 13
#define VREF 3.3   // analog reference voltage(Volt) of the ADC
#define SCOUNT 30  // sum of sample point
 
int analogBuffer[SCOUNT];  // store the analog value in the array, read from ADC
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)  //every 40 milliseconds,read the analog value from the ADC
    {
      analogSampleTimepoint = millis();
      analogBuffer[analogBufferIndex] = a;  //read the analog value and store into the buffer
      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;                                                                                                   // read the analog value more stable by the median filtering algorithm, and convert to voltage value
      float compensationCoefficient = 1.0 + 0.02 * (temperature - 25.0);                                                                                                                //temperature compensation formula: fFinalResult(25^C) = fFinalResult(current)/(1.0+0.02*(fTP-25.0));
      float compensationVolatge = averageVoltage / compensationCoefficient;                                                                                                             //temperature compensation
      tdsValue = (133.42 * compensationVolatge * compensationVolatge * compensationVolatge - 255.86 * compensationVolatge * compensationVolatge + 857.39 * compensationVolatge) * 0.5;  //convert voltage value to tds value
 
      Serial.print("TDS:");
      Serial.print(tdsValue, 0);
      Serial.println("ppm");
      // d
    }
  }
}
 
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);
Serial.begin(9600);
  pinMode(TdsSensorPin, INPUT);

}
void loop(){
proses_analog_tds();


}


Untuk skematik, kamu bisa ikuti skematick di bawah ini

Kabel Hitam : GND
Kabel Merah : VCC
Kabel Hijau : A0

selamat mencoba, salam labrobotika

Jika anda berminat menggunakan jasa labrobotika, silahkan hubungi admin: WHATSAPP