본문 바로가기
모두의 아두이노/아두이노 센서

[아두이노][센서] 물의 품질을 한눈에! TDS 센서(SEN0244)로 수질 측정하기

by 로니킴 2024. 10. 3.


이번 프로젝트는 아두이노와 TDS 센서(SEN0244)를 이용해 물의 오염도를 측정하는 과정을 다룹니다. 초보자도 쉽게 따라 할 수 있도록 단계별로 하드웨어 연결 방법부터 소프트웨어 코딩, 센서 값을 확인하는 방법까지 자세히 설명했습니다. 이 프로젝트를 통해 수질 모니터링에 대한 기초적인 지식을 쌓을 수 있으며, 더 나아가 다양한 센서를 추가하여 확장 가능한 프로젝트로 발전시킬 수 있습니다.

 

목차

     


    TDS 센서(SEN0244)를 사용한 아두이노 수질 모니터링 프로젝트: 간단하고 효과적인 TDS 측정 방법

     

    TDS 센서(SEN0244)는 물에 녹아 있는 총 용존 고형물(TDS)의 양을 측정하는 아두이노와 호환 가능한 센서입니다. 이 센서는 간단한 연결과 코딩을 통해 물의 TDS 값을 측정하고, 그 결과를 시리얼 모니터를 통해 출력할 수 있습니다. 아두이노 보드를 이용하여 센서와의 통신이 이루어지며, 측정된 값은 실시간으로 출력됩니다.

     

    프로젝트는 아두이노와 TDS 센서의 기본적인 하드웨어 연결에서 시작하여 소프트웨어 코딩, 센서 값을 읽고 처리하는 과정까지 포함됩니다. 물의 TDS 값을 쉽게 측정할 수 있으며, 다양한 수질 관리 프로젝트에 활용할 수 있는 중요한 도구로 작용할 수 있습니다. 또한, 코드를 통해 온도 보정까지 지원하므로, 물의 온도에 따라 TDS 값이 자동으로 조정됩니다.

     

    이 센서는 간편하면서도 매우 실용적이며, 수질 모니터링, 수경재배, 가정용 수질 관리 등 다양한 분야에서 응용 가능합니다.

     


     

    1. TDS 센서(SEN0244) 란?

    TDS(Total Dissolved Solids) 센서는 물에 녹아 있는 총 고형물(Total Dissolved Solids)의 양을 측정하는 장치입니다. TDS 값이 높을수록 물에 더 많은 미네랄, 염분, 금속 등이 포함되어 있다는 것을 의미하며, 물의 오염도를 간접적으로 알 수 있습니다.

     

    SEN0244는 아두이노와 호환 가능한 아날로그 TDS 센서로, 쉽게 연결하여 물의 TDS 값을 측정할 수 있습니다. 물속에 녹아 있는 고형물들의 양을 측정하고, 그 수치를 시리얼 모니터로 출력해 물의 상태를 모니터링할 수 있습니다. 특히 이 센서는 가정용 수질 검사, 수경 재배 등 다양한 응용 분야에서 활용할 수 있습니다.


     

    2. TDS 센서(SEN0244)의 동작 원리

    TDS 센서의 동작 원리는 물 속에 포함된 미세 고형물들이 전기 전도성에 영향을 미친다는 점을 이용합니다. 전도성은 물에 녹아 있는 미네랄과 같은 이온성 물질의 농도에 따라 달라지며, 센서가 물의 전도성을 측정해 TDS 값을 계산합니다.

     

    이 센서는 아날로그 신호를 생성하며, 아두이노의 아날로그 입력 핀을 통해 데이터를 읽어냅니다. SEN0244는 방수 프로브를 사용하여 물속에 장기간 측정할 수 있으며, 온도 보정 알고리즘을 포함해 더욱 정확한 측정 결과를 제공합니다. 이를 통해 다양한 온도에서의 수질을 정확히 측정할 수 있습니다.

     


     

    3. TDS 센서(SEN0244) 구입하기

    TDS 센서(SEN0244)는 여러 온라인 마켓에서 쉽게 구할 수 있습니다. 네이버 쇼핑에서 약 2만원에서 3만 원 사이, 알리익스프레스에서는 약 10~15달러에 판매되고 있습니다. 구매 시, 판매처의 신뢰도와 리뷰를 확인하는 것이 중요합니다.

     

    특히 아두이노와의 호환성이나 구성품이 제대로 제공되는지 확인해야 합니다. 또한, 방수 프로브와 센서 모듈의 보호를 위해 추가적인 방수 케이스가 제공되는지도 살펴보는 것이 좋습니다.


     

    4. TDS 센서(SEN0244) 하드웨어 연결하기

    TDS 센서를 아두이노에 연결하는 방법은 다음과 같습니다:

    아두이노 A1 핀을 모듈의 A 핀에 연결합니다.
    아두이노 5V 핀을 모듈의 VCC 핀에 연결합니다.
    아두이노 GND 핀을 모듈의 GND 핀에 연결합니다.

     

     

    이 연결 방식은 아날로그 센서를 아두이노에 연결하는 일반적인 방식입니다. 아두이노는 아날로그 핀(A1)을 통해 센서로부터 아날로그 신호를 읽어 들여 TDS 값을 계산할 수 있습니다. 또한, 전원을 안정적으로 공급하기 위해 5V 및 GND 핀을 사용하여 전원을 제공합니다.

     

     

     

     


     

    5. TDS 센서(SEN0244) 소프트웨어 코딩하기

    다음은 사용자가 입력한 TDS 센서를 위한 최적화된 코드입니다. 이 코드는 물 속의 TDS 값을 측정하고, 시리얼 모니터를 통해 출력합니다.

    #define TdsSensorPin A1     // TDS 센서가 연결된 아두이노 아날로그 핀
    #define VREF 5.0            // 아날로그 레퍼런스 전압(5V)
    #define SCOUNT  30          // 샘플링할 데이터 개수 (중앙값 필터링에 사용)
    
    // 전역 변수 선언
    int analogBuffer[SCOUNT];   // 아날로그 값을 저장할 배열
    int analogBufferTemp[SCOUNT];  // 중앙값 필터링용 임시 배열
    int analogBufferIndex = 0;  // 아날로그 배열의 인덱스
    float averageVoltage = 0;   // 평균 전압 계산을 위한 변수
    float tdsValue = 0;         // 계산된 TDS 값
    float temperature = 25;     // 기본 온도 설정(25도)
    
    void setup()
    {
      Serial.begin(115200);      // 시리얼 통신을 115200bps로 설정
      pinMode(TdsSensorPin, INPUT); // TDS 센서 핀을 입력 모드로 설정
    }
    
    void loop()
    {
      // 40밀리초마다 아날로그 값을 읽고 배열에 저장
      static unsigned long analogSampleTimepoint = millis(); 
      if (millis() - analogSampleTimepoint > 40U) 
      {
        analogSampleTimepoint = millis();  // 타이머 업데이트
        analogBuffer[analogBufferIndex] = analogRead(TdsSensorPin); // 센서값 읽기
        analogBufferIndex++;  // 배열 인덱스 증가
        if (analogBufferIndex == SCOUNT)   // 배열이 다 찼으면
          analogBufferIndex = 0;           // 인덱스를 다시 0으로 리셋
      }
    
      // 800밀리초마다 측정된 값을 계산하여 출력
      static unsigned long printTimepoint = millis();
      if (millis() - printTimepoint > 800U)
      {
        printTimepoint = millis();  // 타이머 업데이트
        
        // 측정된 아날로그 값을 임시 배열로 복사
        for (int copyIndex = 0; copyIndex < SCOUNT; copyIndex++)
          analogBufferTemp[copyIndex] = analogBuffer[copyIndex];
        
        // 중앙값 필터링을 사용해 평균 전압 계산
        averageVoltage = getMedianNum(analogBufferTemp, SCOUNT) * VREF / 1024.0;
        
        // 온도 보정 계산 (기본 온도 25도에서의 보정)
        float compensationCoefficient = 1.0 + 0.02 * (temperature - 25.0);
        float compensationVolatge = averageVoltage / compensationCoefficient;
        
        // 전압을 TDS 값으로 변환 (보정된 전압을 사용)
        tdsValue = (133.42 * compensationVolatge * compensationVolatge * compensationVolatge 
                   - 255.86 * compensationVolatge * compensationVolatge 
                   + 857.39 * compensationVolatge) * 0.5;
        
        // 시리얼 모니터에 TDS 값을 출력 (ppm 단위)
        Serial.print("TDS Value: ");
        Serial.print(tdsValue, 0);  // 소수점 없이 출력
        Serial.println("ppm");      // 단위 ppm 추가
      }
    }
    
    // 중앙값 필터링 함수: 노이즈 제거를 위해 사용
    int getMedianNum(int bArray[], int iFilterLen)
    {
      int bTab[iFilterLen];  // 임시 배열
      // 배열 복사
      for (byte i = 0; i < iFilterLen; i++)
        bTab[i] = bArray[i];
      
      // 버블 정렬 알고리즘을 사용하여 배열을 정렬
      for (int j = 0; j < iFilterLen - 1; j++)
      {
        for (int i = 0; i < iFilterLen - j - 1; i++)
        {
          if (bTab[i] > bTab[i + 1])
          {
            int bTemp = bTab[i];   // 두 값을 교환
            bTab[i] = bTab[i + 1];
            bTab[i + 1] = bTemp;
          }
        }
      }
      
      // 중앙값을 반환 (샘플 개수가 홀수면 중간 값, 짝수면 두 중간 값의 평균)
      if ((iFilterLen & 1) > 0)
        return bTab[(iFilterLen - 1) / 2];
      else
        return (bTab[iFilterLen / 2] + bTab[iFilterLen / 2 - 1]) / 2;
    }
    

     

    코드 동작 흐름 설명

    이 코드는 초기 설정, 아날로그 값 수집, TDS 값 계산 및 출력이라는 세 가지 주요 흐름으로 구성됩니다. 각 부분을 상세히 설명하면 다음과 같습니다.

     

     

    1. 초기 설정 (setup 함수)

    먼저, 시리얼 통신 속도를 설정하고 TDS 센서가 연결된 핀을 입력 모드로 설정합니다. 시리얼 통신을 통해 센서에서 얻은 값을 컴퓨터로 전송하여 시리얼 모니터에 출력할 수 있습니다. 이를 통해 TDS 값을 확인하게 됩니다.

     

    2. 아날로그 값 수집 (센서 데이터 수집)

    코드의 두 번째 부분에서는 40밀리초마다 TDS 센서로부터 아날로그 데이터를 읽습니다. 이 값은 아두이노의 아날로그 입력 핀에서 읽혀 배열에 저장됩니다. 이때, 데이터를 연속으로 읽고 그 값을 배열에 저장하여 여러 샘플을 기반으로 데이터를 안정화할 수 있습니다. 이렇게 함으로써 센서의 일시적인 변동 값을 최소화하고 더 정확한 평균값을 구할 수 있습니다.

    배열이 다 차면, 다시 처음부터 값을 저장하도록 설정하여 최신 데이터를 지속적으로 업데이트합니다.

     

    3. TDS 값 계산 및 출력

    800밀리초마다 배열에 저장된 아날로그 데이터를 기반으로 TDS 값을 계산하고 출력하는 부분입니다.

    1. 데이터 필터링: 먼저, 읽어들인 아날로그 데이터를 복사하여 필터링합니다. 이 과정에서는 중앙값 필터링을 사용하여 데이터를 안정화합니다. 중앙값 필터링은 측정된 값들 중에서 중간값을 선택해 노이즈를 제거하는 효과적인 방법입니다.

    2. 전압 변환: 필터링된 아날로그 값을 전압으로 변환합니다. 아날로그 신호는 0~1023 범위의 값을 가지며, 이를 실제 전압 값으로 바꾸기 위해 아두이노의 기준 전압(5V)을 사용합니다.

    3. 온도 보정: 물의 온도에 따라 TDS 값이 변할 수 있으므로, 기본 온도(25도)를 기준으로 온도 보정 계산을 적용합니다. 이 보정 계산은 물의 온도 변화에 맞춰 측정된 값을 더욱 정확하게 만드는 역할을 합니다.

    4. TDS 값 계산: 온도 보정된 전압 값을 바탕으로 TDS 값을 계산합니다. 이때, 센서 제조사에서 제공한 수식을 사용하여 전압과 TDS 값 사이의 비선형 관계를 계산합니다. 이 수식은 전압 값을 ppm 단위의 TDS 값으로 변환하는 데 사용됩니다.

    5. 결과 출력: 계산된 TDS 값은 시리얼 모니터로 출력됩니다. TDS 값은 ppm(백만 분율)의 단위로 표현되며, 이를 통해 물속에 녹아 있는 고형물의 양을 알 수 있습니다.

     

    4. 중앙값 필터링 함수

    이 함수는 측정된 아날로그 데이터의 중앙값을 추출하여 데이터의 신뢰성을 높이는 역할을 합니다. 버블 정렬을 사용하여 데이터를 정렬한 후, 그 중간값을 반환합니다. 이를 통해 데이터의 노이즈를 줄이고, 더 안정적인 TDS 값을 계산할 수 있습니다.

     

     

    코드 동작 흐름 요약

    1. 시리얼 통신 및 센서 핀 설정.

    2. 40밀리초 주기로 TDS 센서로부터 데이터를 수집.

    3. 800밀리초 주기로 수집된 데이터를 중앙값 필터링하여 안정화.

    4. 필터링된 값을 전압으로 변환하고 온도 보정을 적용.

    5. TDS 값을 계산한 후, 시리얼 모니터에 출력.

    이와 같은 흐름으로 코드는 센서에서 정확한 데이터를 읽고, 이를 처리한 후 출력합니다.

     

     

    5. TDS 센서(SEN0244) 소프트웨어 코딩하기 (LCD)

    다음은 사용자가 입력한 TDS 센서를 위한 최적화된 코드입니다. 이 코드는 물 속의 TDS 값을 측정하고, 시리얼 모니터를 통해 출력합니다.

     


    코드 흐름 요약
    1. 초기화: LCD를 설정하고 TDS 센서를 준비합니다.
    2. 주기적 샘플 수집: 일정 주기(40ms)마다 TDS 센서에서 데이터를 수집합니다.
    3. TDS 및 EC 계산: 수집한 샘플 데이터를 바탕으로 중간값 필터링을 통해 노이즈를 제거한 후 TDS 값을 계산합니다. 온도에 따른 보정을 거친 후, TDS와 EC 값을 구합니다.
    4. LCD 출력: 800ms마다 TDS와 EC 값을 LCD에 출력합니다.

    이러한 흐름을 통해 실시간으로 센서에서 데이터를 읽고 가공한 뒤, LCD 화면에 값을 출력할 수 있습니다.

     

    #include <LiquidCrystal.h>
    
    // LCD 핀 설정
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
    
    // TDS 센서 핀 설정 및 상수 정의
    #define TdsSensorPin A1   // TDS 센서 아날로그 핀
    #define VREF 5.0          // 기준 전압
    #define SCOUNT 30         // 측정 샘플 수
    
    // 전역 변수
    int analogBuffer[SCOUNT];           // 아날로그 값을 저장할 배열
    int analogBufferTemp[SCOUNT];       // 복사본 배열
    int analogBufferIndex = 0;          // 현재 배열 인덱스
    float averageVoltage = 0;           // 평균 전압
    float temperature = 25;             // 온도 (기본값: 25도)
    
    float tdsValue = 0;                 // TDS 값
    float ecValue = 0;                  // EC 값
    
    // 초기 설정
    void setup() {
      Serial.begin(115200);           // 시리얼 통신 시작
      initLCD();                      // LCD 초기화
      pinMode(TdsSensorPin, INPUT);   // TDS 센서 핀을 입력 모드로 설정
    }
    
    // 메인 루프
    void loop() {
      TDS_read();   // TDS 값을 읽어오기
      TDS_print();  // 값을 출력하기
    }
    
    // TDS 값을 읽는 함수
    void TDS_read() {
      static unsigned long analogSampleTimepoint = millis();
      
      // 일정 주기마다 센서 값을 읽어옴
      if (millis() - analogSampleTimepoint > 40U) {
        analogSampleTimepoint = millis();
        analogBuffer[analogBufferIndex] = analogRead(TdsSensorPin);  // 아날로그 값 읽기
        analogBufferIndex = (analogBufferIndex + 1) % SCOUNT;        // 인덱스 순환
      }
    }
    
    // TDS와 EC 값을 계산하고 출력하는 함수
    void TDS_print() {
      static unsigned long printTimepoint = millis();
      
      // 일정 주기마다 출력
      if (millis() - printTimepoint > 800U) {
        printTimepoint = millis();
    
        // 배열 복사
        for (int i = 0; i < SCOUNT; i++) {
          analogBufferTemp[i] = analogBuffer[i];
        }
    
        // 중간값 필터로 노이즈 제거
        averageVoltage = getMedianNum(analogBufferTemp, SCOUNT) * VREF / 1024.0;
    
        // 온도 보정
        float compensationCoefficient = 1.0 + 0.02 * (temperature - 25.0);
        float compensationVoltage = averageVoltage / compensationCoefficient;
    
        // TDS 값 계산 (단위: ppm)
        tdsValue = (133.42 * compensationVoltage * compensationVoltage * compensationVoltage 
                  - 255.86 * compensationVoltage * compensationVoltage 
                  + 857.39 * compensationVoltage) * 0.5;
    
        // EC 값 계산 (단위: ms/cm)
        ecValue = tdsValue / 640;
    
        // LCD에 출력
        displayLCD();
      }
    }
    
    // 중간값 필터 함수 (노이즈 제거)
    int getMedianNum(int bArray[], int iFilterLen) {
      int bTab[iFilterLen];
    
      // 배열 복사
      for (byte i = 0; i < iFilterLen; i++) {
        bTab[i] = bArray[i];
      }
    
      // 배열 정렬 (버블 정렬)
      for (int i = 0; i < iFilterLen - 1; i++) {
        for (int j = 0; j < iFilterLen - i - 1; j++) {
          if (bTab[j] > bTab[j + 1]) {
            int bTemp = bTab[j];
            bTab[j] = bTab[j + 1];
            bTab[j + 1] = bTemp;
          }
        }
      }
    
      // 중간값 반환
      if (iFilterLen % 2 == 0) {
        return (bTab[iFilterLen / 2] + bTab[iFilterLen / 2 - 1]) / 2;
      } else {
        return bTab[iFilterLen / 2];
      }
    }
    
    //----------------------- LCD 관련 함수 -------------------------------------------
    // LCD 초기화 함수
    void initLCD() {
      lcd.begin(16, 2);  // 16x2 크기의 LCD 초기화
    
      lcd.setCursor(0, 0);  // 첫 줄 첫 번째 칸에 커서 설정
      lcd.print("TDS SEN0244");
    
      lcd.setCursor(0, 1);  // 두 번째 줄 첫 번째 칸에 커서 설정
      lcd.print("TDS init...");
      delay(1000);  // 1초 대기
      lcd.clear();  // LCD 화면 지우기
    }
    
    // LCD에 값 출력 함수
    void displayLCD() {
      lcd.clear();
      lcd.setCursor(0, 0);  // 첫 줄 첫 번째 칸
      lcd.print("TDS:");
      lcd.print(tdsValue, 0);  // TDS 값 출력 (소수점 이하 생략)
      lcd.print("ppm");
    
      lcd.setCursor(0, 1);  // 두 번째 줄 첫 번째 칸
      lcd.print("EC :");
      lcd.print(ecValue);  // EC 값 출력
      lcd.print("ms/cm");
    }

     

    이 코드는 아두이노와 TDS(총용존고형물) 센서(SEN02244)를 사용하여 물의 TDS 값과 전도도(EC, 전기전도도)를 측정하고, 측정된 값을 LCD에 출력하는 기능을 구현합니다. 코드의 동작 흐름을 단계별로 설명하면 다음과 같습니다:

    1. 초기 설정 (setup 함수)

    * 시리얼 통신 시작: Serial.begin(115200);

      - 시리얼 모니터에 출력할 수 있도록 115200 baud rate로 통신을 설정합니다.

     

    * LCD 초기화: initLCD();

      - 16x2 크기의 LCD를 초기화하고, TDS 센서가 준비 중임을 표시합니다.

      - LCD 화면 첫 줄에 "TDS SEN0244", 둘째 줄에 "TDS init..."이 표시된 후, 1초 동안 대기한 뒤 화면을 지웁니다.

    * TDS 센서 핀 설정: pinMode(TdsSensorPin, INPUT);

      - TDS 센서가 연결된 핀을 입력 모드로 설정하여 아날로그 값을 읽을 준비를 합니다.

     

    2. 메인 루프 (loop 함수)

    * TDS 값 읽기: TDS_read();

      - 일정한 주기(40ms)마다 TDS 센서의 아날로그 값을 읽어서 analogBuffer[] 배열에 저장합니다.

     - 이 배열은 30개의 샘플을 보유하며, 일정 시간마다 최신 값을 덮어쓰는 순환 방식으로 관리됩니다.

    * TDS 값 계산 및 출력: TDS_print();

      - TDS 값을 측정한 후 800ms마다 LCD에 출력하는 과정을 담당합니다.

      - 아래에서 더 자세히 설명합니다.

     

    3. TDS 값 읽기 (TDS_read 함수)

    * 샘플 주기마다 아날로그 값 읽기

      - analogSampleTimepoint 변수를 이용해 마지막으로 값을 읽은 시간과 현재 시간을 비교하여, 40ms가 지났을 경우 센서에서 새로운 아날로그 값을 읽습니다.

      - 읽은 값을 analogBuffer[analogBufferIndex]에 저장하고, 인덱스를 순환시키며 배열을 갱신합니다.

      - 이 과정은 센서에서 일정 주기로 값을 읽어들이기 위해서 필요합니다.

     

    4. TDS 값 계산 및 출력 (TDS_print 함수)

    * 800ms마다 출력 주기 확인

      - printTimepoint 변수를 사용하여 마지막으로 값을 출력한 시점과 현재 시간을 비교해, 800ms가 경과했을 때 TDS와 EC 값을 계산하고 LCD에 표시합니다.

     

    * 중간값 필터를 통한 노이즈 제거

      - analogBuffer[] 배열의 값을 analogBufferTemp[]에 복사한 후, getMedianNum() 함수를 사용하여 배열 내 중간값을 추출합니다. 이 중간값 필터는 노이즈 제거를 목적으로 합니다. 

     

    * 평균 전압 계산

      - 중간값을 이용해 아날로그 값을 전압 값으로 변환합니다. 변환식은 (중간값 * 기준 전압) / 1024로, 이는 아날로그 값(0~1023)을 기준 전압(5V)으로 변환하는 과정입니다.

     

    * 온도 보정 계산

      - 온도 보정을 위한 보정 계수를 계산합니다. 기본적으로 센서는 25도를 기준으로 동작하므로, 25도에서 벗어나는 경우를 보정하기 위해 compensationCoefficient를 계산합니다. 온도 보정된 전압 값은 compensationVoltage로 저장됩니다.

     

    * TDS 값 계산

      - 보정된 전압 값을 이용해 TDS 값을 계산합니다. 식은 다음과 같습니다:

     tdsValue = (133.42 * compensationVoltage^3 - 255.86 * compensationVoltage^2 + 857.39 * compensationVoltage) * 0.5; 

      - 이 식은 TDS 센서에서 얻은 전압을 ppm(Parts Per Million) 단위의 TDS 값으로 변환하는 공식입니다.

     

    * EC 값 계산

      - TDS 값에서 전도도(EC) 값을 계산합니다. EC 값은 일반적으로 TDS 값의 1/640이므로, 이를 나눠서 구합니다.

     

    * LCD에 출력

      - 최종적으로 계산된 TDS 값과 EC 값을 displayLCD() 함수를 통해 LCD 화면에 출력합니다.

      - 첫 번째 줄에는 TDS 값(ppm 단위), 두 번째 줄에는 EC 값(ms/cm 단위)을 출력합니다.

     

    5. 중간값 필터 (getMedianNum 함수)

    * 배열 정렬

      - 주어진 배열의 값을 오름차순으로 정렬하여 중간값을 계산합니다.

      - 배열의 길이가 홀수일 경우, 배열의 중간 인덱스 값을 반환하고, 짝수일 경우 중간 두 값의 평균을 반환합니다.

      - 이 중간값 필터는 노이즈에 강한 데이터를 얻기 위한 필터링 기법으로, 센서 측정값의 신뢰성을 높입니다.

     

    6. LCD 초기화 및 출력 함수

    * initLCD() 함수

      - LCD 화면의 초기화를 담당하며, 센서 시작 시 "TDS init..." 메시지를 출력합니다.

    * displayLCD() 함수

      - lcd.clear()를 통해 LCD 화면을 초기화한 후, lcd.setCursor()로 출력할 위치를 지정하여 TDS와 EC 값을 출력합니다.

     


     

    6. TDS 센서(SEN0244) 동작 확인

    작성한 코드를 업로드한 후, 아두이노 시리얼 모니터를 열어야 합니다. TDS 센서의 프로브를 물에 넣고 천천히 저어 안정적인 값을 얻습니다. 시리얼 모니터에 "TDS Value"라는 문구와 함께 ppm 단위의 값이 나타납니다. 센서가 제대로 동작하고 있음을 확인할 수 있으며, 물의 TDS 값이 오염도를 나타내기 때문에 값이 높으면 물의 상태가 나쁘다는 것을 알 수 있습니다.

     

    만약 값이 너무 불안정하거나 일관되지 않는다면, 센서의 연결 상태를 다시 확인하고 물의 온도가 25도에 가까운지 확인하는 것이 좋습니다.

     

     

     


     

    7. 마무리

    이번 프로젝트는 TDS 센서를 사용하여 물의 오염도를 측정하는 과정을 다루었습니다. TDS 값은 물에 포함된 고형물의 양을 나타내며, 이를 통해 물의 청결 상태를 알 수 있습니다. 이 센서는 가정에서 간단하게 물의 상태를 모니터링하거나, 수경 재배와 같은 분야에서도 활용할 수 있습니다. 센서를 아두이노와 함께 사용하는 기본적인 방법을 익힘으로써, 다양한 프로젝트에 적용할 수 있는 가능성이 열립니다.

     

    https://youtu.be/oALjOW-h0f4

     

    반응형


    댓글