SRF04 기반 자동 수위 제어기: 가정용 및 상업용 구축 가이드
SRF04, L293D & PIC16F84A를 이용한 완전 자동 수위 제어기
자동 수위 제어기 소개
물탱크의 수위 모니터링 및 제어는 거의 모든 주거 및 상업 지역에서 가장 중요한 작업 중 하나입니다. 대부분의 경우, 특히 주거용 건물에서는 자동 수단이 없어 물탱크의 수위를 자주 확인하는 것이 번거롭고 불편합니다. 사실, 물 부족 지역에서는 물 넘침이 꽤 큰 비용을 초래할 수 있습니다.
위 문제의 유일한 해결책은 수위를 자동으로 모니터링하고 제어하는 방법을 갖는 것입니다. 거리 센서, 전류 프로브, 초음파 레인저 등 많은 기술이 있지만, 여기서는 초음파 레인저 사용에 초점을 맞춥니다.

- 관련 프로젝트: 비 감지 회로 – 눈, 물, 비 감지기 프로젝트
수위 제어기 시스템 개요
시스템은 물탱크 상단에 초음파 거리 센서를 배치하여, 트리거되면 초음파 신호를 보냅니다. 탱크 안의 물이 신호를 반사합니다. 센서는 이 반사 신호를 수신하고, 두 신호 사이의 시간 차이를 통해 신호가 이동한 거리를 추정하여 상단부터의 수위를 파악합니다.
여기서 마이크로컨트롤러는 초음파 레인저에 트리거 신호를 보냅니다. 에코가 수신되면 두 펄스 사이의 시간 지연을 계산하는데, 이는 수위에 정비례합니다. 시간 지연은 타이머를 통해 계산되며, 타이머의 계수 펄스 수가 신호가 이동한 거리, 즉 수위를 나타냅니다.
레인저가 탱크 상단에 배치되어 있으므로, 탱크 상단부터의 수위를 고려하여 물 흐름을 제어합니다. 예를 들어, 측정된 거리가 0~1cm이면 탱크가 넘치는 상태이므로 마이크로컨트롤러는 모터를 역방향으로 회전시켜 여분의 물을 배출하는 제어 신호를 보냅니다.
거리가 2~5cm이면 탱크가 가득 찬 상태이므로 마이크로컨트롤러는 모터를 끄는 제어 신호를 보냅니다. 거리가 5cm 이상이면 탱크가 거의 빈 상태이므로 마이크로컨트롤러는 모터를 정방향으로 회전시키는 제어 신호를 보냅니다.
자동 수위 제어기 회로도
이미지 클릭 시 확대

그림 1: 수위 제어기
부품 설명
회로 설계에 사용되는 구성 요소는 다음과 같습니다.
- 초음파 거리 측정기 SRF04
- PIC 마이크로컨트롤러 PIC16F84A
- 모터 드라이버 L293D
- DC 모터
- 1K 저항 2개
각 구성 요소에 대해 간략히 알아보겠습니다
초음파 거리 측정기 SRF04:
SRF04는 로봇 애플리케이션에서 장애물 감지에 널리 사용되는 고품질 초음파 레인저입니다. 트리거를 위해 10마이크로초 신호가 필요합니다.
그림 2: SRF04 초음파 거리 측정기
트리거되면 40kHz 주파수로 8펄스의 초음파를 발사하고 동시에 에코 라인을 HIGH로 올립니다. 반사된 신호나 에코를 수신하면 에코 라인을 LOW로 내립니다.
따라서 에코 펄스의 폭은 신호가 이동한 거리, 즉 레인저부터 물체까지의 거리를 나타냅니다. 에코 라인은 따라서 물체까지 거리에 비례하는 펄스 폭을 가집니다. 1cm의 경우 에코 펄스 폭은 58마이크로초입니다.
그림 3: SRF04 타이밍 다이어그램
PIC 마이크로컨트롤러 PIC16F84A:
그림 4: PIC 마이크로컨트롤러 PIC16F84A
CMOS 호환, 8비트, 18핀 플래시 마이크로컨트롤러로 단일 8비트 타이머(8비트 프로그래머블 프리스케일러 포함)를 가집니다. 타이머 동작은 다음 레지스터로 제어됩니다 – OPTION_REG, TMR0, INTCON. OPTION_REG는 8비트 레지스터로 5번째 비트(T0CS)가 타이머 또는 카운터 동작을 선택합니다.
비트 설정 시 카운터 동작, 클리어 시 타이머 동작을 선택합니다. TMR0는 타이머 레지스터이고, INTCON은 인터럽트 레지스터로 5번째 비트(T0IE)가 타이머 플래그를 나타내며, 타이머 오버플로 시 설정됩니다.
모터 드라이버 L293D:
그림 5: 모터 드라이버 IC L293D
16핀, H-브리지 기반 DC 모터 드라이버 IC입니다. 두 개의 모터를 양방향으로 구동할 수 있습니다. 두 개의 인에이블 핀(핀 1과 9)을 가지고 있으며, HIGH로 설정하면 IC 동작이 활성화됩니다. 기본적으로 마이크로컨트롤러와 DC 모터 사이의 인터페이스 역할을 합니다. 각 H-브리지 회로당 두 개씩 총 네 개의 입력 핀으로 구성됩니다. 아래 표는 모터 제어를 나타냅니다.
| IN1(핀 2) |
IN2 (핀 7) |
EN1 (핀 1) |
모터 동작 |
| HIGH |
HIGH |
HIGH |
OFF |
| LOW |
LOW |
HIGH |
OFF |
| HIGH |
LOW |
HIGH |
ON (시계방향) |
| LOW |
HIGH |
HIGH |
ON (반시계방향) |
| X |
X |
LOW |
OFF |
참고: SRF04는 TTL 호환 장치이고 PIC16F84A는 CMOS 호환이므로, 전압 레벨 변환을 보상하기 위해 1K 풀업 저항을 사용합니다.
자동 수위 제어기 작동 및 동작
프로그램은 마이크로컨트롤러에서 10마이크로초 펄스를 초음파 레인저로 보내 트리거하는 방식으로 작성됩니다. 이는 지연 함수를 사용하여 작성됩니다. 타이머 레지스터 TMR0에 10진수 200을 로드하여 55카운트를 만듭니다.
SRF04의 출력인 에코 신호는 핀 RA4(타이머 클록 핀, 따라서 타이머에 외부 클록 펄스 제공)에서 수신됩니다. 에코 신호가 HIGH에서 LOW로 천이하면 타이머가 활성화됩니다. 타이머가 카운트하면 인터럽트 플래그 비트 T0IE를 모니터링합니다. 설정되면 타이머를 비활성화합니다.
이 절차를 다른 에코 펄스에 대해 반복합니다. 타이머가 동작한 횟수를 계산하면 에코 펄스 수가 됩니다. 각 에코 펄스는 58마이크로초로 1cm를 나타냅니다. 따라서 5개 에코 펄스는 5cm를 의미합니다. 이 카운트 값은 정수에 저장되어 DC 모터를 제어하는 데 사용됩니다.
값이 2~5 사이이면 마이크로컨트롤러는 RB0과 RB1 핀(L293D의 IN1, IN2에 연결)에 HIGH 신호를 보내 모터를 끕니다. 값이 5~20 사이이면 IN1에 HIGH, IN2에 LOW 신호를 보내 모터를 켜고 시계 방향으로 회전시킵니다. 값이 0~1 사이이면 IN1에 LOW, IN2에 HIGH 신호를 보내 모터를 켜고 반시계 방향으로 회전시킵니다.
SRF04를 이용한 자동 수위 제어기의 장점
- 단순하고 편리한 시스템입니다.
- 저렴한 부품 사용으로 저비용 시스템입니다.
- 자동 기술을 사용하여 수동 수위 제어의 어려움을 해소합니다.
- 기계적 부품을 사용하지 않아 기계적 마모나 부식 위험을 제거합니다.
자동 수위 제어기의 단점
- 초음파 거리 측정기 SRF04는 많은 전자 부품 사용으로 댐핑 현상이 발생할 수 있으므로 적절히 절연해야 합니다.
- 이 시스템은 센서와 액추에이터가 서로 근접한 곳에 배치되도록 설계되었습니다. 쉽게 말해, 물탱크가 워터 펌프 근처에 있는 장소용 제어 시스템입니다. 따라서 수중 펌프를 사용하고 물탱크가 옥상에 있는 많은 건물에서는 이 자동 수위 제어기 시스템을 사용할 수 없습니다. 그러나 통신 회로를 사용하여 수정할 수 있습니다.