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

[아두이노][센서] 수질 모니터링의 핵심! SKU DFR0300 전기전도도 센서로 EC 값 측정하기

by 로니킴 2024. 10. 25.


이 프로젝트는 아두이노와 SKU DFR0300 전기전도도 센서를 활용하여 초보자도 쉽게 따라 할 수 있도록 구성되었습니다. 단계별 설명을 통해 하드웨어 연결부터 소프트웨어 코딩, 동작 확인까지 모든 과정을 다룹니다. 이제 아두이노 세계로 한 걸음 나아가 보세요!

 

목차

     

     

     


    [아두이노][센서] 수질 모니터링의 핵심! SKU DFR0300 전기전도도 센서로 EC 값 측정하기

    SKU DFR0300 전기전도도 센서는 물 속의 전기전도도를 측정하여 수질을 모니터링할 수 있는 아두이노 모듈입니다. 센서는 물 속 이온 농도를 측정하는 방식으로 동작하며, 이를 통해 물의 순도를 간편하게 파악할 수 있습니다. 전압을 읽어 전기전도도로 변환하는 과정에서 아두이노의 아날로그 핀을 사용하며, 보정 기능을 통해 온도나 환경 변화에 따른 정확도를 유지할 수 있습니다.

     

    아두이노와 간단한 하드웨어 연결 후, 적절한 코드를 통해 센서 데이터를 처리하고 출력할 수 있습니다. 초보자들도 쉽게 따라할 수 있도록 기본적인 예제 코드가 제공되며, 이를 바탕으로 다양한 프로젝트에 응용할 수 있습니다. 특히 수질 모니터링, 수족관 관리, 농업용 수경재배 시스템에서 유용하게 사용할 수 있는 모듈입니다.

     


     

    1. SKU DFR0300 전기전도도 아두이노 센서란?

    SKU DFR0300 전기전도도 센서는 물 속의 전기전도도를 측정하는 센서로, 아두이노와 결합하여 다양한 환경에서 수질 상태를 모니터링하는 데 유용합니다. 전기전도도(EC)는 물이 전류를 얼마나 잘 통과시키는지를 나타내며, 이를 통해 물 속의 이온 농도와 물의 순도를 평가할 수 있습니다. 이 센서는 주로 수질 모니터링, 수족관 관리, 농업 분야에서 자주 사용되며, 수경재배와 같은 분야에서도 중요한 역할을 합니다.

     

     

    SKU DFR0300 전기전도도 센서는 측정된 전압을 전기전도도 값으로 변환하여 출력하며, 아두이노를 사용하여 손쉽게 데이터를 처리할 수 있습니다. 또한 센서에는 보정 기능이 내장되어 있어 측정 정확도를 높일 수 있습니다. 이 모듈을 통해 초보자들도 손쉽게 수질 관리를 할 수 있으며, 다양한 프로젝트로 확장할 수 있습니다.

     

     


     

     

    2. SKU DFR0300 전기전도도 센서의 동작 원리

    SKU DFR0300 전기전도도 센서는 물 속의 이온이 전류를 얼마나 잘 전달하는지 측정하는 방식으로 동작합니다. 센서의 S(EC) 핀을 통해 물 속의 전압을 측정하고, 이 전압을 아두이노가 읽어들여 수식을 통해 전기전도도 값을 계산합니다. 일반적으로 물의 전기전도도는 온도에 따라 달라지므로, 온도 보정이 필요합니다. 기본적으로 센서는 아두이노의 아날로그 입력 핀을 통해 전압 값을 읽고, 이를 전기전도도로 변환하여 출력합니다.

     

     

    센서와 아두이노 간의 통신은 아날로그 신호를 기반으로 이루어집니다. 센서에서 측정된 아날로그 전압 신호는 아두이노의 ADC(아날로그-디지털 변환기)를 통해 디지털 값으로 변환되고, 이후 이 값은 전기전도도 공식에 적용되어 최종 결과를 얻습니다.

     

     

    DFR0300-H_Web.pdf
    0.48MB

     

    전압 측정과 아두이노의 역할

    1. 전압 측정 방식:


    센서에는 두 개의 전극이 물 속에 잠겨 있으며, 이 전극들 사이에 작은 전압이 인가됩니다. 물 속의 이온이 전극 사이에서 전류를 흐르게 하며, 이 전류는 전압에 비례합니다. 전기전도도는 이 전류가 얼마나 잘 흐르는지를 측정함으로써 계산됩니다.

    예를 들어, 물 속의 이온이 많을수록 전류가 더 잘 흐르고, 그에 따라 전기전도도 값도 높아집니다. 반면, 순수한 물(증류수)과 같이 이온이 거의 없는 경우에는 전류가 거의 흐르지 않으므로 전기전도도 값이 낮습니다.

     


    2. 아날로그 신호의 읽기:


    센서에서 발생한 전압 값은 아날로그 신호로 표현됩니다. 이 신호는 아두이노의 아날로그 핀(A1)을 통해 읽어들입니다. 아두이노의 아날로그-디지털 변환기(ADC)는 0V에서 5V 사이의 아날로그 신호를 0에서 1023까지의 디지털 값으로 변환합니다.

    • 예를 들어, 만약 센서에서 2.5V의 신호가 발생하면, 아두이노는 이를 약 512(1023의 절반)에 해당하는 값으로 변환합니다.
    • 코드에서는 analogRead(EC_PIN) 명령어를 사용하여 이 값을 읽고, 이를 다시 전압 값으로 변환합니다. 아두이노의 기본 전압은 5V이므로, 이를 통해 전압을 계산할 수 있습니다. 예를 들어, analogRead 값이 512일 경우, 실제 전압은 (512 / 1024) * 5000 = 2500mV로 계산됩니다.

     

     

    3. 전기전도도 계산 과정:

    센서에서 읽은 전압 값은 전기전도도 값을 계산하는 데 사용됩니다. 전기전도도는 주로 다음과 같은 수식을 통해 계산됩니다: 

    • 센서 상수(K): 각 센서마다 고유한 상수값이 있으며, 이는 센서의 물리적 특성에 따라 달라집니다. 이 상수는 센서의 데이터시트에서 제공되거나, 실험적으로 구할 수 있습니다.
    • 온도 보정: 물의 전기전도도는 온도에 따라 달라지므로, 정확한 측정을 위해서는 온도 보정이 필요합니다. 일반적으로 물 온도가 25°C에서 멀어질수록 전기전도도가 변화하므로, ec.readEC(voltage, temperature) 함수에서 온도를 고려한 전도도 값을 계산하게 됩니다.
    예를 들어, 물 속에서 전압이 2.5V로 측정되고, 센서 상수가 1.0이라고 가정하면, 다음과 같은 방식으로 전기전도도 값이 계산됩니다:




    이 값은 센서가 물의 전기전도도를 얼마나 잘 측정했는지 나타냅니다. 이후, 보정 과정에서 물의 온도에 따른 변화까지 반영하여 최종 EC 값을 얻을 수 있습니다.

     

    예시 코드 설명

    코드에서는 다음과 같이 전기전도도 값을 계산합니다:

    voltage = analogRead(EC_PIN) / 1024.0 * 5000;  // 아날로그 값을 전압으로 변환
    ecValue = ec.readEC(voltage, temperature);     // 전압과 온도를 기반으로 EC 값 계산
    • analogRead(EC_PIN)을 통해 아두이노는 센서로부터 읽은 아날로그 값을 디지털로 변환합니다.
    • 이 값을 전압으로 변환한 후, ec.readEC(voltage, temperature) 함수가 전기전도도(EC) 값을 계산합니다. 이때, 온도 보정이 포함되어 더 정확한 EC 값을 도출합니다.

     

    전기전도도 값의 판단

    전기전도도 값은 물의 상태를 파악하는 데 중요한 역할을 합니다.

    • 낮은 EC 값: 전기전도도가 낮을 경우, 물 속에 있는 이온 농도가 적다는 것을 의미합니다. 예를 들어, 순수한 물이나 증류수에서는 EC 값이 거의 0에 가깝습니다.
    • 높은 EC 값: 반대로 전기전도도가 높으면 물 속의 이온 농도가 많다는 의미입니다. 농업용 물이나 바닷물에서는 EC 값이 매우 높게 측정될 수 있습니다.

     

    이처럼 SKU DFR0300 전기전도도 센서를 통해 물 속의 이온 농도를 정밀하게 파악할 수 있으며, 이를 기반으로 수질을 모니터링하고 개선하는 다양한 응용 프로젝트를 진행할 수 있습니다.

     

     

     


     

     

     

    3. SKU DFR0300 전기전도도 센서 구입하기

     

    SKU DFR0300 전기전도도 센서를 구입할 때 주의해야 할 점은 정확도와 가격입니다. 이 센서는 아두이노와 호환이 가능하며, 일반적으로 네이버 쇼핑이나 알리익스프레스와 같은 곳에서 구매할 수 있습니다. 가격대는 보통 2~5만 원 사이이며, 배송비가 추가될 수 있습니다. 이 센서를 선택할 때는 보정이 가능한지, 온도 보정 기능이 포함되어 있는지 확인하는 것이 중요합니다. 이를 통해 더 정확한 측정을 할 수 있기 때문입니다.

     

    또한, 저렴한 가격에 판매하는 판매처가 많으므로 신뢰할 수 있는 판매처에서 구매하는 것이 좋습니다. 센서의 정확도와 내구성을 고려하여 선택해야 하며, 수질 측정의 일관성을 유지할 수 있도록 보정 기능이 있는 제품을 추천합니다.

     

     

     

     


     

    4. SKU DFR0300 전기전도도 센서 하드웨어 연결하기 

     

    SKU DFR0300 전기전도도 센서를 아두이노와 연결하는 과정에서 중요한 것은 각 핀의 역할과 신호 흐름을 이해하는 것입니다. 센서에서 측정된 값을 아두이노가 읽어들이고, 이를 처리하여 전기전도도 값을 계산하는데, 올바른 핀 연결이 필수적입니다. 이제, 각 핀을 어떻게 연결하고, 왜 그렇게 연결하는지 구체적으로 설명하겠습니다.

     

     

     

    1. 아두이노와 SKU DFR0300 전기전도도 센서 연결

    사용된 핀:

    • S(EC) 핀: 전기전도도 값을 아날로그 전압 값으로 출력하는 핀입니다.
    • VCC 핀: 센서에 전원을 공급하는 핀입니다.
    • GND 핀: 센서와 아두이노 간에 공통 기준 전압을 제공하는 핀입니다.

    연결 방법:

    • 아두이노 A1 핀 → 센서 S(EC) 핀
      • 아두이노의 A1 핀은 아날로그 입력 핀으로 사용됩니다. S(EC) 핀은 센서가 물 속의 전기전도도를 측정하고 그에 따른 전압 값을 출력하는 핀입니다. 이 값을 아두이노의 아날로그 핀에서 읽을 수 있도록, S(EC) 핀을 A1 핀에 연결합니다.
      • 아두이노는 이 아날로그 신호를 읽고, 이를 디지털 값으로 변환하여 후속 처리를 하게 됩니다.
    • 아두이노 5V 핀 → 센서 VCC 핀
      • 5V 핀은 아두이노에서 센서로 전원을 공급합니다. SKU DFR0300 센서는 5V 전원으로 작동하므로, VCC 핀에 아두이노의 5V 핀을 연결하여 안정적인 전원을 공급해야 합니다. 이 연결을 통해 센서가 정상적으로 작동할 수 있게 됩니다.
    • 아두이노 GND 핀 → 센서 GND 핀
      • GND 핀은 아두이노와 센서 사이에 공통 접지(기준 전압)를 맞추기 위한 연결입니다. 모든 전자 장치의 기준 전압을 통일시켜 주는 것이 매우 중요한데, 이를 통해 센서가 생성한 신호를 아두이노가 올바르게 해석할 수 있게 됩니다.

    2. 왜 이렇게 연결하는가?

    이 연결 방법은 전압을 측정하고 데이터를 정확하게 처리하기 위한 표준적인 연결 방식입니다.

    • S(EC) 핀과 아두이노 A1 핀 연결:
      SKU DFR0300 센서는 물 속의 전기전도도를 측정하고, 그 값을 전압으로 변환하여 S(EC) 핀을 통해 출력합니다. 이 전압은 아날로그 신호이기 때문에 아두이노의 **아날로그 핀(A1)**에 연결하여 신호를 읽습니다. 아두이노의 아날로그-디지털 변환기(ADC)를 통해 이 아날로그 값을 디지털 값으로 변환한 후, 전기전도도를 계산하는 데 사용합니다.
      • 예를 들어, 센서에서 물의 이온 농도가 높아지면 전압이 증가하고, 그 전압 값이 아두이노에 전달되어 전기전도도 값이 높게 계산됩니다.
    • VCC와 5V 연결:
      VCC 핀은 센서에 전원을 공급하기 위한 핀입니다. 아두이노의 5V 핀은 안정적인 전원을 제공하기 때문에 VCC 핀에 연결하여 센서가 정상적으로 작동하도록 전원을 공급합니다.
      • 이 연결이 없으면 센서는 전원을 공급받지 못하고 동작하지 않습니다.
    • GND와 GND 연결:
      아두이노와 센서 간의 전기 신호를 동일한 기준 전압에서 처리하기 위해 GND 핀을 연결합니다. 이는 모든 전자 장치에서 필수적인 요소로, 기준 전압이 달라지면 신호 해석에 오류가 발생할 수 있습니다.
      • GND가 올바르게 연결되지 않으면 센서의 출력 값이 왜곡되거나 아두이노가 신호를 정확하게 읽지 못할 수 있습니다.

    3. 연결 동작의 구체적인 흐름

    이제 센서와 아두이노 간의 연결이 완료된 후, 데이터가 어떻게 흐르고 처리되는지 설명하겠습니다.

    1. 센서 측정:
      센서가 물 속에 삽입되면, 물 속의 이온 농도를 측정하기 위해 두 개의 전극 사이에 전압을 가합니다. 전극 사이에 전류가 흐르면, 그 전류의 크기를 통해 물의 전기전도도를 판단합니다. 이 값은 전압 값으로 변환되어 센서의 S(EC) 핀을 통해 아두이노로 전달됩니다.
    2. 아날로그 값 읽기:
      아두이노의 A1 핀은 이 전압 값을 읽고, 이를 아날로그-디지털 변환기(ADC)를 통해 디지털 값으로 변환합니다. 이 디지털 값은 아두이노에서 처리되어 전기전도도 값을 계산하는 데 사용됩니다.
    3. 전기전도도 계산:
      아두이노는 입력받은 전압 값을 수식을 통해 전기전도도 값으로 변환합니다. 이 과정에서 온도 보정도 이루어져, 최종적으로 물의 전기전도도(EC) 값이 출력됩니다. 이 값은 아두이노의 시리얼 모니터를 통해 실시간으로 확인할 수 있습니다.
    4. 결과 출력:
      최종적으로 계산된 전기전도도 값은 시리얼 모니터에 출력되며, 1초 간격으로 갱신됩니다. 물의 상태에 따라 전기전도도 값이 변동되므로, 이를 통해 물의 이온 농도나 수질 상태를 실시간으로 모니터링할 수 있습니다.

    4. 연결 과정 요약

    SKU DFR0300 센서와 아두이노의 연결은 간단하지만, 매우 중요한 과정입니다. S(EC) 핀을 A1에 연결하여 아날로그 데이터를 읽고, VCCGND를 통해 전원을 안정적으로 공급하여 센서가 정확하게 동작할 수 있게 합니다. 이를 통해 아두이노가 센서 데이터를 수집하고, 전기전도도를 계산하여 수질 상태를 판단할 수 있습니다.

     

     

     

     

     


     

    5. SKU DFR0300 전기전도도 센서 소프트웨어 코딩하기

     

    작성한 코드가 제대로 작동하는지 확인하려면 다음 단계를 따르세요.

     

     

    01 연결

    1. 아두이노와 PC 연결: 아두이노 보드를 USB 케이블을 통해 PC에 연결합니다.
    2. 아두이노 IDE 실행: 컴퓨터에서 아두이노 IDE를 실행합니다.
    3. 메뉴 → 툴 → 보드: 아두이노 UNO 확인: 아두이노 IDE의 상단 메뉴에서 '툴'을 선택하고, 보드가 'Arduino UNO'로 설정되어 있는지 확인합니다.
    4. 메뉴 → 스케치 → 확인/컴파일: 스케치 메뉴에서 '확인/컴파일'을 선택하여 코드를 컴파일합니다.

    02 컴파일 확인

    • **스케치 > 확인/컴파일 (CTRL + R)**를 선택하여 컴파일을 진행합니다. 이 과정에서 오류가 없으면, 다음 단계로 넘어갈 수 있습니다.

    03 아두이노 우노 업로드

    • 컴파일이 완료되면, **스케치 > 업로드 (CTRL + U)**를 선택하여 작성한 코드를 아두이노에 업로드합니다. 업로드가 성공하면, 아두이노와 센서가 함께 동작할 준비가 된 것입니다.

    04 동작 확인

    • 센서의 동작을 확인할 수 있습니다. 아두이노가 센서의 데이터를 읽어 시리얼 모니터에 출력하기 시작할 것입니다.

     

    #include "DFRobot_EC.h"  // DFRobot 전기전도도 라이브러리 포함
    #include <EEPROM.h>      // EEPROM 라이브러리 포함 (보정값 저장)
    
    #define EC_PIN A1        // 전기전도도 센서가 연결된 핀 정의
    float voltage, ecValue, temperature = 25;  // 전압, EC 값, 온도 변수 선언
    DFRobot_EC ec;  // DFRobot_EC 클래스 인스턴스 생성
    
    void setup()
    {
      Serial.begin(115200);  // 시리얼 통신 시작 (115200 baud rate)
      ec.begin();  // 전기전도도 센서 초기화
    }
    
    void loop()
    {
      static unsigned long timepoint = millis();  // 시간 측정 변수
      if (millis() - timepoint > 1000U)  // 1초마다 데이터 업데이트
      {
        timepoint = millis();  // 현재 시간 갱신
        voltage = analogRead(EC_PIN) / 1024.0 * 5000;  // 아날로그 입력값을 전압으로 변환
        //temperature = readTemperature();  // 온도 읽는 함수 (추가 필요)
        ecValue =  ec.readEC(voltage, temperature);  // EC 값 계산
        Serial.print("temperature:");  // 온도 출력
        Serial.print(temperature, 1);
        Serial.print("^C  EC:");  // 전기전도도 출력
        Serial.print(ecValue, 2);
        Serial.println("ms/cm");  // 단위 출력
      }
      ec.calibration(voltage, temperature);  // 전압과 온도에 따른 보정 수행
    }
    
    // 온도 측정 함수 (구현 필요)
    float readTemperature()
    {
      // 온도 센서 구현 필요
    }

     

     

    코드 설명:

    • DFRobot_EC 라이브러리는 전기전도도 센서의 값을 쉽게 읽고 보정할 수 있도록 도와줍니다.
    • analogRead(EC_PIN)을 통해 아두이노의 A1 핀으로 들어오는 전압 값을 읽고, 이를 전기전도도 값으로 변환합니다.
    • ec.calibration(voltage, temperature)을 통해 센서의 값을 보정하여 더 정확한 측정을 할 수 있습니다.
    • 코드에서 온도는 25도로 고정되어 있지만, readTemperature() 함수를 통해 실제 온도를 측정하여 사용할 수 있습니다.

     

     


     

     

     

    6. SKU DFR0300 전기전도도 센서 동작 확인 

    작성한 코드가 제대로 작동하는지 확인하기 위해서는 먼저 센서가 올바르게 연결되었는지 확인해야 합니다. 그 후, 아두이노를 컴퓨터에 연결하고 시리얼 모니터를 열어 전기전도도 값이 출력되는지 확인합니다.

    1. 센서가 물 속에 잠겨 있어야 합니다.
    2. 시리얼 모니터에 온도와 EC 값이 1초 간격으로 출력됩니다.
    3. 값이 지속적으로 변하지 않거나, 너무 높거나 낮게 나타난다면, 센서가 올바르게 보정되지 않았을 수 있습니다. 이 경우, 센서 보정을 다시 진행해야 합니다.

     


     

     

     

    7. 마무리

    SKU DFR0300 전기전도도 센서를 이용한 프로젝트는 수질 모니터링과 같은 환경 모니터링 프로젝트에 매우 유용합니다. 이 센서를 통해 물 속의 전기전도도를 측정하여 수질 상태를 실시간으로 확인할 수 있습니다. 초보자들이 이 프로젝트를 통해 배울 수 있는 주요 개념은 아날로그 신호 처리와 보정 작업이며, 이를 확장하여 다양한 수질 모니터링 시스템을 구축할 수 있습니다.

     

     

    https://youtu.be/DbCfY_Q8fQ4

     

    반응형


    댓글