본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 탁도 센서를 사용해서 액체의 탁도 변화를 측정해 보고 LCD에 출력해 보기

by 오마이엔지니어 2020. 4. 29.
반응형

 

Arduino Uno 로 탁도 센서를 사용하는 방법을 알아보고 탁도 센서를 사용해서
액체의 탁도 변화를 확인해 보고 LCD에 출력해 보는 프로젝트 입니다

탁도란 물의 흐림정도를 나타내는 것으로 투시도와 같은 목적으로 사용되는 지표로 사용됩니다
탁(濁)하다는 말은 빛의 통과를 방해하거나 가시심도(Visual Depth)를 제한하는 부유물질을 포함하고 있다는 뜻입니다
수질 지표로서의 탁도는 보통 빛을 입사시켜 부유 물질에 의해 산란된 정도를 광학적으로 측정하여 나타냅니다


탁도의 측정 방법은 기기분석법과 육안법이 있습니다
기기 분석법은 혼탁 입자들에 의하여 빛의 산란도를 측정하는 네펠로법(Nephelometry)을 이용하는 것으로
네팰로법 - 혼탁도 - 단위(Nephelometry - Turbidity - Unit : NTU)를 사용합니다

육안법의 경우 혼탁도에 의해 빛의 통과가 방해받는 정도를 측정하는 방법으로

잭슨 - 혼탁도 - 단위(Jackson - Turbidity - Unit : JTU)를 사용합니다

<내용 출처 : 세양 인스트루먼트, 네이버 백과>


<AZDM01 탁도센서 이미지>

탁도 측정을 위해서 AZDM01 아날로그 탁도센서를 사용합니다
AZDM01 탁도센서는 아날로그 타입이며 어댑터 보드를 통해서 디지털&아날로그 출력이 가능합니다
어댑터 보드에는 감도를 조정할 수 있는 가변 저항이 달려 있습니다

DataSheet AZDM01.pdf
0.34MB

 

<AZDM01 탁도센서 상세 사양>

사용된 부품
아두이노 우노
AZDM01 아두이노 탁도 센서 모듈
I2C / IIC 1602 캐릭터 LCD 모듈

점퍼케이블
미니 브래드보드
막대저항 220Ohm
5mm LED 블루

사용된 키트
아두이노 탁도 센서 키트

구성 배선도-탁도 변화시 시리얼 모니터로 출력값 확인해 보기



구성 배선도-탁도 변화시 LED 점등시키기

 

구성 배선도-탁도 변화시 I2C 1602 LCD로 출력값 확인해 보기

 

 

사용된 예제파일

시리얼 모니터로 탁도 출력값 확인.txt
0.00MB
탁도 변화시 LED 점등시켜 보기.txt
0.00MB
1602 캐릭터 LCD로 탁도 출력값 확인.txt
0.00MB


사용된 라이브러리

LiquidCrystal.zip


주의사항
위 첨부된 LiquidCrystal_I2C 라이브러리를 사용해서 테스트 하도록 합니다
PC에 기존에 다른 LiquidCrystal_I2C 라이브러리가 사전에 설치되어 있다면 충돌해서 컴파일 에러가 날수 있으니 주의 하도록 합니다
또는 LiquidCrystal 라이브러리 중복 에러 발생시 아두이노 기본 설치시 설치되는

LiquidCrystal 라이브러리를 다른곳에 백업해 놓고 일단 삭제한 다음 위 첨부 된 라이브러리를 설치해 주고
테스트 하면 해결할 수 있습니다

전압은 꼭 5V를 사용 하도록 합니다, LCD를 사용하기 때문에 A(전류)가 충분히 공급되지 않는다면 화면 출력이 안될수도 있습니다
위 첨부 된 3개의 예제파일을 차례대로 다운 받아서 복사해서 아두이노 IDE 에 붙여넣고 스케치 업로드 해 주면 됩니다 
5mm LED 배선시 다리가 긴쪽이 (+) 짧은쪽이 (-) 입니다
I2C 1602 캐릭터 LCD 배선시 SCL (아두이노 우노 A5에 연결) 과 SDA (아두이노 우노 A4에 연결) 핀이

배선이 정확하게 잘 되어 있는지 주의 하도록 합니다



첫번째 "시리얼 모니터로 탁도 출력값 확인" 예제코드는 아날로그 출력 테스트 입니다

 

void setup() {
  Serial.begin(9600); //Baud rate: 9600
}
void loop() {
  int sensorValue = analogRead(A0);// read the input on analog pin 0:
  float voltage = sensorValue * (5.0 / 1024.0); // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
  Serial.println(voltage); // print out the value you read:
  delay(500);
}


시리얼통신 보드레이트는 9600이고 A0번 핀을 통해서 아날로그 출력값을 확인 합니다
0~5V 까지 0~1023 수치로 아날로그 변화값을 출력합니다 


두번째 "탁도 변화시 LED 점등시켜 보기" 예제코드는 디지털 출력 테스트 입니다

int ledPin = 13;                // Connect an LED on pin 13, or use the onboard one
int sensor_in = 2;                 // Connect turbidity sensor to Digital Pin 2

void setup(){
  pinMode(ledPin, OUTPUT);      // Set ledPin to output mode
  pinMode(sensor_in, INPUT);       //Set the turbidity sensor pin to input mode
}

void loop(){
  if(digitalRead(sensor_in)==LOW){       //read sensor signal
    digitalWrite(ledPin, HIGH);   // if sensor is LOW, then turn on
  }
  else{
    digitalWrite(ledPin, LOW);    // if sensor is HIGH, then turn off the led
  }
}

LED 핀 13번, 센서 핀 디지털 2번 설정입니다
AZDM01 탁도 센서는 테스트 동영상에서도 확인할 수 있듯이 수질이 좋아 탁도가 없으면 HIGH 이고 수질이 좋지 않아 탁도가 감지되면 전압이 줄어들어 LOW가 되는 타입 입니다

때문에 예제코드는 센서가 LOW 면 LED는 HIGH (점등), 센서가 HIGH 면 LED는 LOW (소등) 입니다

세번째 "1602 캐릭터 LCD로 탁도 출력값 확인" 예제코드는 아날로그 출력 테스트로 탁도 변화값을 1602 LCD에 출력합니다

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
위 2가지 라이브러리를 사용합니다, Wire.h 는 기본 설치되어 있는 라이브러리입니다

LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);
기본 I2C 주소 세팅 0x27 입니다, 테스트 전에 I2C 1602 LCD의 정확한 I2C 주소를 확인하는게 좋습니다

I2C 스캐너 예제 테스트는 아래 포스팅을 참조해 주세요
Arduino Uno 로 I2C 1602/2004 캐릭터 LCD 를 사용해보고 I2C 주소 확인해 보기

int sensorPin = A0;
아날로그 A0번 핀 세팅입니다

void setup()
{
  Serial.begin(9600);
  lcd.begin(16,2);
시리얼통신 보드레이트 9600으로 16X2 LCD를 동작시킵니다

 void loop()
{
   
    volt = 0;
    for(int i=0; i<800; i++)
    {
        volt += ((float)analogRead(sensorPin)/1023)*5;
    }
    volt = volt/800;
    volt = round_to_dp(volt,1);
    if(volt < 2.5){
      ntu = 3000;
    }else{
      ntu = -1120.4*square(volt)+5742.3*volt-4353.8;
    }
ntu 값 설정 부분으로 아래 탁도센서 탁도와 전압의 비례표에서도 확인할 수 있듯이
기본적으로 전압이 4.2V 이상일때 출력값은 0 , 2.5V 이하일때 출력값은 3000 입니다 

 

아주 정밀한 센서는 아니지만 이렇게 아두이노로 간단하게 탁도센서를 사용해서 수질을 측정하는
기본적인 방법에 대해 알아
볼수 있습니다

프로젝트 동영상-탁도 변화시 시리얼 모니터로 출력값 확인해 보기

프로젝트 동영상-탁도 변화시 LED 점등시키기

프로젝트 동영상-탁도 변화시 I2C 1602 LCD로 출력값 확인해 보기

 

반응형

댓글