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

SEN0244 TDS 아두이노 센서

by 로니킴 2021. 5. 15.


본 절은 [SEN0244 TDS] 아두이노 센서를 사용하기 위해 알아야 할 내용과 실습 방법에 대해 설명한다. 아두이노 센서의 특징, 동작원리, 사양, 연결 핀 배열, 출력 값, 주의사항을 알아본다. 아두이노와 센서를 연결하고, 간단한 코딩으로 센서를 쉽게 실습할 수 있다. 

 

목차

     

     

     


    SEN0244 TDS 아두이노 센서

     

    TDS (Total Dissolved Solids)는 1 리터의 물에 몇 밀리그램의 가용성 고체가 용해되었는지를 나타낸다. 일반적으로 TDS 값이 높을수록 물에 용해되는 고형물이 더 많이 용해되고 물이 덜 깨끗하다.  따라서 TDS 값은 물의 청정도를 반영하는 기준 중 하나로 사용할 수 있다.

     

    TDS (Total Dissolved Solids) 란 활동성을 가진 충전된 이온의 총량이다. 이것은 물에 녹아있는 미네랄, 염분, 금속 등도 포함된다. 측정단위는 mg/L로 표시하거나, ppm(Parts Per Million) 단위로 표시되기도 한다. TDS  물의 순수성과 정수 시트 메의 품질과도 밀접히 연관되어 있다.


    ​ TSD 값은 물에 함유되어 있는 광물, 염, 금속, 양이온, 음이온 등을 말한다.  
    순수한 물 이외의 모든 물질을 나타내는 값이며 이는 수질을 나타내는 지표로 볼 수 있다.  
    일반적으로 TDS 값이 낮을수록 
    중금속이나 가용성 염류, 이온 등이 적어 순수한 물(수질)에 가깝다. 

    ​ * 가용성 염류 : 칼슘, 마그네슘, 이온등 
    * 이온성 유기물질 : 암모늄, 아세트산나트륨 등 
    * 중금석 이온 : 크롬, 납, 아연, 구리 등

     


    EC (Eelectrical Conductivity-전도성) 

    TDS는 물의 전기전도도 값에 기초를 둔다. 순수한 물은 실제로 전도도 값이 0이 된다. TDS는 정도에 따라서 EC (전기 전도도) 값에 일정한 상수를 곱해서 계산한다. 대체적으로 EC의 값이 높으면 TDS를 결정하는 변환상수의 값도 커진다. 

    TDS와 EC의 관계 
    * EC = TDS * 640 
    * TDS = EC / 640



     

     


    SEN0244 TDS 센서란?

    Gravity SEN0244 센서는 물의 TDS를 측정하는 센서이다. 


     

     

     

     

     

     

    SEN0244_Web.pdf
    0.33MB

     


    TDS 펜은 TDS 값을 측정하는 데 널리 사용되는 장비이다. 가격이 저렴하고 사용하기 쉽지만 온라인 모니터링을 위한 제어 시스템으로 데이터를 전송하여 일부 수질 분석을 수행할 수 없는 단점이 있다. 전문 기기는 정확도가 높고 제어 시스템에 데이터를 보낼 수 있지만 일반인에게는 가격이 비싸다. 


    가격이 비싼 종래의 TDS 센서를 보편적으로 사용할 수 있도록 SEN0244 제품이 출시되었다. 이 제품은 Arduino와 호환되며 사용하기 쉬운 아날로그 TDS 센서 키트인 SEN0224 제품이다.

     

     

     

     

     

     

    SEN0244 TDS 아두이노 센서 특징

    SEN0244 TDS 센서의 특징은 다음과 같다. SEN0244의 TDS 측정 범위는 0~1000ppm이다.   Arduino와 연결하여 사용할 수 있으며 TDS 검출기를 쉽게 구축하여 액체의 TDS 값을 측정할 수 있다. 

    이 제품은 3.3 ~ 5.5V 폭의 전압 입력과 0 ~ 2.3V 아날로그 전압 출력을 지원하여 5V 또는 3.3V 제어 시스템이나 보드와 호환된다.

     

    Signal Transmitter Board

    • Input Voltage: 3.3 ~ 5.5V
    • Output Voltage: 0 ~ 2.3V
    • Working Current: 3 ~ 6mA
    • TDS Measurement Range: 0 ~ 1000ppm
    • TDS Measurement Accuracy: ± 10% F.S. (25C)
    • Module Size: 42 * 32mm
    • Module Interface: PH2.0-3P
    • Electrode Interface: XH2.54-2P

     

    TDS probe

    • Number of Needle: 2
    • Total Length: 83cm
    • Connection Interface: XH2.54-2P
    • Colour: Black
    • Other: Waterproof Probe

     

     


    SEN0244 TDS 센서 동작 원리

    SEN0244 TDS 센서의 원리는 다음과 같다. 

     

    식물에 적당한 양액의 농도를 유지해 주기 위해서 적당한 TDS 범위를 확인해야 한다.  
    예를 들어, 양배추 1750~2100,  당근 1120~1400 정도의 값을 가진다. 즉 SEN0244로는 측정할 수 없다.
    상추 1000ppm 이하에 측정이 가능한 560~840 정도에서 활용이 가능하다.

     

    주의:
    1. 프로브는 섭씨 55도 이상의 물에서는 사용할 수 없다.
    2. 프로브는 용기의 가장자리에 너무 가깝게 둘 수 없다. 그렇지 않으면 판독 값에 영향을 미친다
    3. 프로브의 헤드와 케이블은 방수가 되지만 커넥터와 신호는 송신기 보드는 방수가 되지 않는다. 조심해야 한다.

     

     

     

     

     


    센서 구입하기

    [SEN0244 TDS 센서]는 알리익스프레스, 네이버 쇼핑몰, 아마존 등에서 센서를 구입할 수 있다

     

     

     

     

     


     

    SEN0244 TDS 하드웨어 연결

    다음과 같이 아두이노 센서를 연결할 수 있다. 

     

     

     

     

    [핀 배열]

    Num Label Description
    1 - Power GND(0V)
    2 + Power VCC(3.3 ~ 5.5V)
    3 A Analog Signal Output(0 ~ 2.3V)
    4 TDS TDS Probe Connector
    5 LED Power Indicator

     

     


     

    SEN0244 TDS 소프트웨어 코딩

    하드웨어 연결이 완료되면, 아두이노 IDE를 이용해 아두이노 센서 소스코드를 코딩할 수 있다. 

     

    여기 소스는 AC 신호로, 프로브의 분극을 효과적으로 방지하고 프로브의 수명을 연장하고 출력 신호의 안정성을 높일 수 있다. TDS 프로브는 방수 처리가 되어있어 장시간 측정을 위해 물에 담글 수 있다.

     

    센서 코드는 다음과 같다. 

    
    #define TdsSensorPin A1
    #define VREF 5.0
    #define SCOUNT  30
    int analogBuffer[SCOUNT];
    int analogBufferTemp[SCOUNT];
    int analogBufferIndex = 0, copyIndex = 0;
    float averageVoltage = 0, tdsValue = 0, temperature = 25;
    
    void setup()
    {
      Serial.begin(115200);
      pinMode(TdsSensorPin, INPUT);
    }
    
    void loop()
    {
      static unsigned long analogSampleTimepoint = millis();
      if (millis() - analogSampleTimepoint > 40U)
      {
        analogSampleTimepoint = millis();
        analogBuffer[analogBufferIndex] = analogRead(TdsSensorPin);
        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 / 1024.0;
        float compensationCoefficient = 1.0 + 0.02 * (temperature - 25.0);
        float compensationVolatge = averageVoltage / compensationCoefficient;
        tdsValue = (133.42 * compensationVolatge * compensationVolatge * compensationVolatge - 255.86 * compensationVolatge * compensationVolatge + 857.39 * compensationVolatge) * 0.5;
        //Serial.print("voltage:");
        //Serial.print(averageVoltage,2);
        //Serial.print("V   ");
        Serial.print("TDS Value:");
        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;
    }

     

     

     


     

    SEN0244 TDS 센서 동작확인

    하드웨어 연결, 소프트웨어 코딩이 완료되면 다음과 같이 동작 화면을 확인할 수 있다. 

     

     

    ------------------------------------------------------ 
    개발환경 : WINDOWS 10 
    아두이노 IDE : 1.8.13 
    ------------------------------------------------------ 
    01 연결
     - 아두이노와 PC 연결 
     - 아두이노 IDE 실행 
     - 메뉴 → 툴 → 보드:아두이노 UNO 확인 
      - 메뉴 → 스케치 → 확인/컴파일 

    02 컴파일 확인 

    스케치> 확인/컴파일(CTRL+R)을 선택해서 컴파일을 진행한다.

     


    03 아두이노 우노 업로드 

    컴파일이 이상 없이 완료되면 스케치> 업로드(CTRL+U)를 선택해서 컴파일 파일을 업로드한다. 

     


    04 동작 확인

    샘플 코드를 업로드 한 후 아두 이노 IDE의 시리얼 모니터를 열고 TDS 프로브를 물에 넣고 부드럽게 저어 주면 판독 값이 안정 될 때까지 기다리면 물의 TDS 값을 얻을 수 있다.

     

     

     

     


     

    마무리

    아두이노와 SEN0244 TDS 센서를 연결하고, 간단한 코딩으로 센서를 쉽게 실습할 수 있다.

     

    일반적으로 센서는 액체의 TDS 값을 쉽게 측정할 수 있지만, 서로 다른 TDS 프로브의 차이, 메인 컨트롤 보드(아두이노 우노, 아두이노 나노, 아두이노 메가 등)의 차이, 온보드 온도 보상이 없기 때문에 측정값에 약간의 오차가 있을 수 있다. 보다 정확한 TDS 값을 얻으려면 측정 전에 보정이 필요하다. 또한 정확도 향상을 위해 온도 보상 용 온도 센서를 연결하는 것이 좋다.

     

    참고로 일반적으로 TDS 값은 전기 전도도 값의 절반이다. 즉, TDS = EC / 2. 배선도는 기본 튜토리얼과 동일하며, 교정 중에는 1413us / cm 표준 완충액과 같은 알려진 전기 전도도 또는 TDS 값의 액체 용액이 필요하다. TDS 값으로 환산하면 약 707 ppm. 표준 완충액이 없는 경우 TDS 펜을 사용하여 TDS 값을 측정할 수도 있다.  

     

     

     

    [응용분야]

    스마트팜 시스템 구축 시 온도, 습도, 수경재배 양액 측정 센서(양액농도 EC, 산도 pH, TDS), 토양을 배지로 하는 토경 측정 센서(수분, EC, 지온, 산도 pH), 풍향/풍속, 감우, 일사량 , CO2, 공기질 센서 등 분야별로 다양한 센서가 필요하다. 

    수경재배를 할 때에는 양액 내의 영양분의 농도, TDS를 측정해서 관리해야 한다.  양액내의 염류(영양분)의 농도가 증가하면 이 용액의 정기 전도도 값도 증가한다. 
    수구의 양액의  TDS 값을 측정하면 영양분이 얼마나 남아 있는지 알 수 있고,  이것을 이용해 언제 어느 정도의 영양분을 넣어 주어야 할지를 결정할 수 있다. 

    * 맛 / 건강 : TDS값이 높으면 물이 짜거나, 쓰거나 금속성 맛이 난다. 
    * 필터 성능 : 정수기에서 나오는 물의 TDS값을 측정해서 필터나 막의 교환 시기를 알 수 있다. 
    * 물의 경도 : TDS 가 높은 경수는 파이프네에 스케일을 유발시킬 수 있다. 
    * 수족관 / 양식 : 수중 생활을 하는 동식물에게는 일정한 수준의 광물이 필요하다. 동/식물의 원래 서식지와 비슷한 정도의 pH와 TDS값을 유지시켜야 한다. 
    * 수경재배 : TDS는 양액 내의 영양분 측정에 최적이다. 
    * 수영장 / 온천 : 유지상의 문제를 막지 위해 반드시 측정해야 한다.

     

     

     

     

     

     

     

     


     

    모두의 아두이노 환경 센서 책

    [모두의 아두이노 환경 센서] 책은 예스24, 인터넷 교보문고, 알라딘, 인터파크도서, 영풍문고, 반디앤루니스 , 도서11번가 등에서 구입할 수 있다. 이 책에서는 PMS7003, GP2Y1010AU0F, PPD42NS, SDS011 미세먼지 센서, DHT22 온습도 센서, MH-Z19B 이산화탄소 센서, ZE08-CH2O 포름알데히드 센서, CCS811 총휘발성유기화합물 TVOC, GDK101 방사선(감마선) 센서, MQ-131 오존(O3) 센서, MQ-7 일산화탄소, MICS-4514 이산화질소 센서, MICS-6814 암모니아 센서, DGS-SO2 아황산가스(SO2) 센서, BME280 기압 센서, GUVA-S12SD 자외선(UV) 센서, MD0550 기류 센서, QS-FS01 풍속 센서(Wind speed) 를 사용한다.  

     

    모두의 아두이노 환경 센서

    아두이노와 센서로 내 건강을 지킬 수 있다!다양한 환경 센서를 실생활 프로젝트에 응용해보자!시중에 판매되고 있는 간이측정기도 센서로 값을 측정합니다. 똑같은 센서를 아두이노에 연결하

    book.naver.com

     

     

     

     



    댓글