아두이노 - 물 센서 | Arduino - Water Sensor
수위 센서 또는 수위 감지기는 물의 누출, 강우, 탱크 넘침 또는 물의 수위를 측정하는 데 사용됩니다. 이 튜토리얼에서는 다음을 배울 것입니다:
- 아두이노와 수분 센서를 사용하는 방법
- 수분 센서를 아두이노에 연결하는 방법
- 아두이노를 프로그래밍하여 수분 센서에서 상태를 읽는 방법
- 수분 누출, 강수량, 탱크 오버플로를 감지하는 방법
- 수위를 측정하는 방법
- 수분 센서를 보정하는 방법
준비물
1 | × | Arduino Uno | Amazon | |
1 | × | USB 2.0 cable type A/B | 쿠팡 | Amazon | |
1 | × | Water level sensor | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) 9V Power Adapter for Arduino | Amazon | |
1 | × | (Recommended) Screw Terminal Block Shield for Arduino Uno | 쿠팡 | Amazon | |
1 | × | (Recommended) Breadboard Shield For Arduino Uno | 쿠팡 | Amazon | |
1 | × | (Recommended) Enclosure For Arduino Uno | Amazon |
수위 센서에 관하여
물 수위 센서 핀배열
물 수위 센서에는 3개의 핀이 있습니다:
- S (신호) 핀: 아날로그 출력으로 아두이노의 아날로그 입력 중 하나에 연결됩니다.
- + (VCC) 핀: 센서에 전력을 공급합니다. 3.3V – 5V 사이로 센서에 전력을 공급하는 것이 권장됩니다.
- - (GND) 핀: 접지 연결입니다.
※ NOTE THAT:
센서의 VCC 핀에 공급되는 전압에 따라 신호 핀의 아날로그 출력 값이 변합니다.
수위 센서가 작동하는 방식
단순히 말해서, 센서가 물에 더 많이 잠길수록 신호 핀의 출력 전압이 더 높아집니다.
더 깊이 살펴보자.
센서에는 노출된 구리 트레이스가 열 개 있습니다. 다섯 개는 전원 트레이스이고 다섯 개는 센스 트레이스입니다. 이 트레이스들은 서로 교차하도록 병렬로 배치되어 있어서, 두 개의 전원 트레이스 사이마다 하나의 센스 트레이스가 있습니다. 이 트레이스들은 물에 잠겼을 때 물이 다리를 형성할 때만 연결됩니다.
물의 높이에 따라 저항이 변하는 가변 저항기(포텐쇼미터와 같이)처럼 흔적이 작용합니다.
- 저항의 변화는 센서 상단부터 물 표면까지의 거리에 해당합니다.
- 저항은 물의 높이에 반비례합니다:
- 센서가 잠긴 물의 양이 많을수록 전도성이 좋아지고, 저항은 낮아집니다.
- 센서가 잠긴 물의 양이 적을수록 전도성이 나빠지고, 저항은 높아집니다.
- 센서는 저항에 따라 출력 전압을 생산합니다.
전압을 측정함으로써 우리는 수위를 결정할 수 있습니다.
선연결
이론적으로 센서에 전력을 공급하기 위해 센서의 VCC와 GND 핀을 아두이노의 5v와 GND 핀에 각각 연결할 수 있습니다.
실제로는 그 방법이 권장되지 않습니다. 습한 환경에서 센서에 지속적으로 전력을 공급하면, 센서가 전기화학적으로 더 빨리 부식되어 센서의 수명이 단축됩니다. 이 문제를 해결하기 위해, 센서의 값을 읽을 때만 센서에 전원을 공급하고, 그 외의 시간에는 센서에 전원을 공급하지 않는 것이 좋습니다. 이는 아두이노의 디지털 핀에 센서의 VCC 핀을 연결하고, 읽기 전후로 아두이노의 핀을 각각 HIGH와 LOW로 설정함으로써 수행할 수 있습니다.
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
아두이노 코드 - 수위 센서에서 값 읽기
사용 방법
- 위 코드를 복사하고 Arduino IDE로 엽니다.
- Arduino IDE에서 Upload 버튼을 클릭하여 코드를 Arduino로 업로드합니다.
- 센서를 천천히 물에 담그세요(한 잔의 물).
- 시리얼 모니터에서 결과를 확인하세요. 센서가 아무것도 만지지 않을 때 값은 0입니다.
※ NOTE THAT:
센서는 완전히 잠기도록 설계되지 않았으며, PCB의 노출된 트레이스만이 물과 접촉할 수 있습니다. 설치 시 주의해 주십시오.
물 새는 것을 탐지하는 방법
누수, 강우 및 탱크 오버플로를 감지하기 위해, 우리는 단지 측정값을 임계값과 비교하면 됩니다. 임계값은 이 튜토리얼의 보정 부분에서 결정됩니다.
구체적인 예를 들어 봅시다. 아두이노는 물이 감지되면 LED를 켭니다.
배선도
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
아두이노 코드 - 물 새는 것 감지
수위 측정 방법
만약 최대 수위를 몇 단계로 나누어 현재의 높이를 측정하고 싶다면, 아래 코드에 있는 방법을 사용할 수 있습니다. 최대 수위는 센서의 높이와 동일하다는 점을 유의하세요. 아래 코드는 최대 높이를 4단계로 나눕니다.
※ NOTE THAT:
- SENSOR_MIN 및 SENSOR_MAX는 보정 과정을 통해 결정됩니다.
- 위의 매핑 방법은 정확하지 않습니다. 그러나 많은 응용 프로그램에서는 받아들일 수 있습니다. 정확하게 하고 싶다면 각 레벨에 대한 임계값을 측정할 수 있습니다. 보정 부분을 참조하십시오.
수위 센서 교정
센서의 출력 값은 물의 수위뿐만 아니라 물의 전도성에도 달려 있습니다. 순수한 물은 전도성이 없습니다. 물속에 미네랄과 불순물이 포함되어 있으면 전도성이 있습니다. 물의 전도성이 클수록 센서는 더 민감합니다. 한편, 출력 값은 센서의 VCC 핀에 공급된 전압에 따라서도 달라집니다.
물 센서의 정확한 판독 값을 얻기 위해, 모니터링할 특정 유형의 물에 대해 센서를 보정할 것을 권장합니다.
액션을 촉발하는 임계값을 결정하기 전에, 테스트를 수행하여 센서에서 읽은 실제 값을 측정해야 합니다.
테스트하는 방법:
- 위의 스케치를 센서 값을 읽기 위해 사용하세요.
- 원하는 수준을 임계값으로 설정하려면 센서를 물에 담그세요.
- 센서가 시리얼 모니터에 출력하는 값을 기록하세요.
- 그 값을 트리거할 동작의 임계값으로 사용하세요.
이 테스트는 몇 번의 시행착오가 필요할 수 있습니다.
이 검사는 또한 다음을 찾는 데 사용될 수 있습니다:
- 센서가 물에 잠기지 않았을 때 SENSOR_MIN 값
- 센서가 완전히 물에 잠겼을 때의 SENSOR_MAX 값
- 누수 감지를 위한 임계값
- 당신의 정도 척도 각 레벨에 대한 임계값
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.
자신에게 도전하세요
- 물 샘을 감지하면 이메일을 보내세요.
- 물 샘을 감지하면 문자 메시지를 보내세요.
- 물 샘을 감지하면 소리 알람을 울리세요.