안녕하세요. 오늘은 수위 센서를 사용하는 방법에 대해 알아보고자 합니다.
앞에서 배웠던 다른 센서들과 마찬가지로 수위 센서도 굉장히 간단한 센서에 속합니다.

그림 1 : 수위 센서
[그림 1 : 수위 센서]

그림 1에서 볼 수 있듯이 수위 센서에는 3개의 핀이 있습니다.
먼저 S라고 적혀있는 핀은 물의 높이를 입력으로 보내주는 핀입니다.
그 옆에 있는 + 핀은 전원(5V)을 연결하는 핀입니다.
가장 오른쪽에 있는 - 핀은 그라운드(GND)에 연결하는 핀입니다.

아래의 표 1에 아두이노 보드와 수위 센서에 연결되는 각 핀의 대응 관계를 나타냈습니다.

아두이노 보드 핀 수위 센서 핀
아날로그 0번 핀 신호 입력 핀(S)
5V +
GND -

[표 1 : 아두이노 보드와 연결되는 수위 센서 핀]

1. 회로 연결

표 1에 적혀 있듯이 각 핀을 연결해줍니다. 이 정도는 너무 간단하니 빵판(bread board)없이 작업하겠습니다.

그림 2 : 아두이노 보드와 수위 센서 연결
[그림 2 : 아두이노 보드와 수위 센서 연결]

2. 스케치

수위 센서의 값을 입력으로 받아서, 시리얼 모니터로 출력하는 스케치를 작성해보겠습니다.
시리얼 모니터가 생소하다면, 이 글을 참조하시기 바랍니다.

const int WATER_SENSOR_PIN = A0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorVal = analogRead(WATER_SENSOR_PIN);

  Serial.print("sensor value = ");
  Serial.println(sensorVal);

  delay(500);
}
  • 1 줄 : 수위 센서 핀을 A0 핀으로 설정합니다. 디지털 핀의 경우는 1, 2같은 숫자를 썼지만, 아날로그 핀은 A0, A1과 같이 앞에 ‘A’를 붙여 줍니다.
  • 3~5 줄 : 수위 센서의 값을 시리얼 모니터로 확인하기 위해서 9600 baud rate로 Serial.begin()을 사용합니다. 디지털 핀의 경우, 입력모드인지 출력모드인지 설정해주기 위해 pinMode()함수를 사용했던 것과 다르게, 아날로그 입력은 pinMode()설정이 필요없습니다.
  • 8 줄 : analogRead()함수를 이용해서 수위 센서의 값을 받아옵니다.
  • 10~11 줄 : 8줄에서 입력받은 센서 값을 시리얼 모니터에 출력합니다.
  • 13 줄 : 500ms 동안 쉽니다.

3. 결과

이번 실험은 수위 센서를 물에 담궈야합니다.
이때 핀이 있는 위쪽에 물이 닿게 되면 어떤 일이 벌어질지 모르니, 아래쪽의 센서 부분에만 물이 닿도록 합니다.

그림 3 : 수위 센서를 물에 담근 모습
[그림 3 : 수위 센서를 물에 담근 모습]

그림 3과 같이 수위 센서를 물에 담그고, 시리얼 모니터를 열어보면 수위에 대한 값이 출력 됨을 확인할 수 있습니다.
물을 더 넣어보면 값이 증가하는 것도 확인할 수 있을 것 입니다.

그림 4 : 시리얼 모니터 결과
[그림 4 : 시리얼 모니터 결과]

+ Recent posts