대규모 제조 회사를 방문한 적이 있다면 가장 먼저 눈에 띄는 것은 모두 자동화되어 있다는 것입니다. 청량 음료 산업 및 화학 산업은이 자동화 프로세스 중에 처리하는 액체를 지속적으로 측정하고 정량화해야하며 액체의 흐름을 측정하는 데 사용되는 가장 일반적인 센서는 Flow Sensor입니다.. 아두 이노와 같은 마이크로 컨트롤러와 함께 유량 센서를 사용하여 유량을 계산하고 파이프를 통과 한 액체의 양을 확인하고 필요에 따라 제어 할 수 있습니다. 제조 산업 외에도 유량 센서는 농업 부문, 식품 가공, 물 관리, 광업, 물 재활용, 커피 머신 등에서도 찾을 수 있습니다. 또한 물 유량 센서는 자동 물 디스펜서와 같은 프로젝트에 좋은 추가 기능이 될 것입니다. 액체의 흐름을 모니터링하고 제어해야하는 스마트 관개 시스템.
이 프로젝트에서는 Arduino를 사용하여 수류 센서 를 구축 할 것 입니다. 수류 센서를 Arduino 및 LCD와 인터페이스하고 밸브를 통과 한 물의 양을 표시하도록 프로그래밍합니다. 이 특정 프로젝트 에서는 홀 효과를 사용하여 액체의 유량을 감지하는 YF-S201 수류 센서 를 사용할 것 입니다.
필요한 구성 요소
- 물 흐름 센서
- Arduino UNO
- LCD (16x2)
- 내부 나사산이있는 커넥터
- 전선 연결
- 파이프
YFS201 물 흐름 센서
센서에는 아래 그림과 같이 RED, YELLOW 및 BLACK 3 개의 와이어가 있습니다. 빨간색 와이어는 5V ~ 18V 범위의 공급 전압에 사용되며 검은 색 와이어는 GND에 연결됩니다. 노란색 선은 출력 (펄스)에 사용되며 MCU에서 읽을 수 있습니다. 물 흐름 센서는 통과 한 액체의 양을 측정하는 바람개비 센서로 구성됩니다.
YFS201 수류 센서 의 작동은 이해하기 쉽습니다. 물 흐름 센서는 홀 효과의 원리로 작동합니다. 홀 효과는 전류 흐름에 수직 인 방향으로 자기장이 적용될 때 전기 전도체에 걸쳐 전위차가 생성되는 것입니다. 물 흐름 센서는 자기 홀 효과 센서와 통합되어 회전 할 때마다 전기 펄스를 생성합니다. 그 디자인은 홀 효과 센서가 물에서 밀봉되어 센서가 안전하고 건조하게 유지되도록하는 방식입니다.
YFS201 센서 모듈의 그림 만 아래에 나와 있습니다.
파이프와 수류 센서를 연결하기 위해 아래 그림과 같이 암나사가있는 두 개의 커넥터를 사용했습니다.
YFS201 사양 에 따르면 5V에서 소비하는 최대 전류는 15mA이고 작동 유량은 1 ~ 30 리터 / 분입니다. 액체가 센서를 통해 흐르면 흐르는 액체의 경로에있는 터빈 휠의 핀과 접촉합니다. 터빈 휠의 샤프트는 홀 효과 센서에 연결됩니다. 이로 인해 물이 밸브를 통해 흐를 때마다 펄스가 발생합니다. 이제 우리가해야 할 일은 플러스에 대한 시간을 측정하거나 1 초에 펄스 수를 계산 한 다음 시간당 리터 (L / Hr)로 유량을 계산 한 다음 간단한 변환 공식을 사용하여 부피를 찾는 것입니다. 그것을 통과 한 물의. 펄스를 측정하기 위해 Arduino UNO를 사용할 것입니다. 아래 그림은 수류 센서의 핀아웃을 보여줍니다.
회로도
수류 센서 회로도 의 Arduino와 수류 센서와 LCD (16 × 2)를 인터페이스하기 위해 아래와 같다. Arduino 및 LCD를 처음 사용하는 경우이 Arduino 및 LCD 인터페이스 기사를 읽어 볼 수 있습니다.
수류 센서와 LCD (16x2)와 아두 이노의 연결은 아래와 같습니다. 포트는 5V와 GND 사이에 연결되고 포트의 핀 2는 LCD의 V0 핀에 연결됩니다.
S.NO |
물 흐름 센서 핀 |
Arduino 핀 |
1 |
레드 와이어 |
5V |
2 |
검정 |
GND |
삼 |
노랑 |
A0 |
S. 아니 |
LCD |
Arduino |
1 |
대 |
GND (브레드 보드의 접지 레일) |
2 |
VDD |
5V (브레드 보드의 포지티브 레일) |
삼 |
V0과 연결하려면 위의 참고 사항을 확인하십시오. |
|
4 |
RS |
12 |
5 |
RW |
GND |
6 |
이자형 |
11 |
7 |
D7 |
9 |
8 |
D6에서 D3 |
3에서 5 |
저는 브레드 보드를 사용했고 위에 표시된 회로도에 따라 연결이 완료되면 테스트 설정이 다음과 같이 보입니다.
Arduino 유량 센서 코드
전체 수류 센서 Arduino 코드 는 페이지 하단에 있습니다. 코드에 대한 설명은 다음과 같습니다.
우리는 LCD의 헤더 파일을 사용하여 LCD를 Arduino와 쉽게 연결하고 핀 12,11,5,4,3,9는 LCD와 Arduino 간의 데이터 전송을 위해 할당됩니다. 센서의 출력 핀은 Arduino UNO의 핀 2에 연결됩니다.
휘발성 int flow_frequency; // 유량 센서 펄스 측정 // 계산 된 리터 / 시간 float vol = 0.0, l_minute; unsigned char flowsensor = 2; // 센서 입력 부호없는 long currentTime; unsigned long cloopTime; #포함
이 함수는 인터럽트 서비스 루틴으로 Arduino UNO의 pin2에 인터럽트 신호가있을 때마다 호출됩니다. 모든 인터럽트 신호에 대해 가변 flow_frequency의 수는 1 씩 증가합니다. 인터럽트 및 작동에 대한 자세한 내용은 Arduino 인터럽트에 대한이 기사를 읽을 수 있습니다.
void flow () // 인터럽트 함수 { flow_frequency ++; }
void 설정에서는 pinMode (pin, OUTPUT) 명령을 내림으로써 Arduino UNO의 핀 2가 INPUT으로 사용됨을 MCU에 알립니다. attachInterrupt 명령을 사용하면 핀 2에서 신호가 상승 할 때마다 흐름 함수가 호출됩니다. 이렇게하면 flow_frequency 변수의 개수가 1 씩 증가합니다. 현재 시간과 cloopTime은 코드가 1 초마다 실행되는 데 사용됩니다.
void setup () { pinMode (flowsensor, INPUT); digitalWrite (유량 센서, HIGH); Serial.begin (9600); lcd.begin (16, 2); attachInterrupt (digitalPinToInterrupt (flowsensor), 흐름, RISING); // 인터럽트 설정 lcd.clear (); lcd.setCursor (0,0); lcd.print ("물 유량계"); lcd.setCursor (0,1); lcd.print ("회로 다이제스트"); currentTime = millis (); cloopTime = currentTime; }
if 함수는 1 초마다 내부의 코드가 실행되도록합니다. 이런 식으로 우리는 초당 수류 센서가 생성하는 주파수 수를 계산할 수 있습니다. 데이터 시트의 유량 펄스 특성은 주파수에 7.5를 곱한 유량입니다. 따라서 유량은 주파수 /7.5입니다. 리터 / 분 단위의 유량을 찾은 후이를 60으로 나누어 리터 / 초로 변환합니다. 이 값은 1 초마다 vol 변수에 추가됩니다.
무효 루프 () { currentTime = millis (); // 1 초마다 시간당 리터를 계산하고 인쇄합니다. if (currentTime> = (cloopTime + 1000)) { cloopTime = currentTime; // cloopTime 업데이트 if (flow_frequency! = 0) { // 펄스 주파수 (Hz) = 7.5Q, Q는 L / min 단위의 유량입니다. l_ 분 = (흐름 _ 빈도 / 7.5); // (펄스 주파수 x 60 분) / 7.5Q = L / 시간 단위의 유량 lcd.clear (); lcd.setCursor (0,0); lcd.print ("요율:"); lcd.print (l_minute); lcd.print ("L / M"); l_ 분 = l_ 분 / 60; lcd.setCursor (0,1); vol = vol + l_minute; lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); flow_frequency = 0; // 카운터 재설정 Serial.print (l_minute, DEC); // 시간당 리터 인쇄 Serial.println ("L / Sec"); }
else 기능은 주어진 시간 내에 물 흐름 센서에서 출력이 없을 때 작동합니다.
else { lcd.clear (); lcd.setCursor (0,0); lcd.print ("요율:"); lcd.print (흐름 _ 주파수); lcd.print ("L / M"); lcd.setCursor (0,1); lcd.print ("Vol:"); lcd.print (vol); lcd.print ("L"); }
Arduino 유량 센서 작동
프로젝트에서 우리는 수류 센서를 파이프에 연결했습니다. 파이프의 출력 밸브가 닫혀 있으면 수류 센서의 출력이 0이됩니다 (펄스 없음). Arduino의 핀 2에는 인터럽트 신호가 표시되지 않으며 flow_frequency의 개수는 0이됩니다. 이 조건에서 else 루프 내부에 작성된 코드가 작동합니다.
파이프의 출력 밸브가 열린 경우. 물이 센서를 통해 흐르고 센서 내부의 바퀴가 회전합니다. 이 상태에서 센서에서 생성되는 펄스를 관찰 할 수 있습니다. 이 펄스는 Arduino UNO에 대한 인터럽트 신호 역할을합니다. 모든 인터럽트 신호 (상승 에지)에 대해 flow_frequency 변수의 개수가 1 씩 증가합니다. 현재 시간 및 cloopTIme 변수는 1 초마다 flow_frequency 값이 유량 및 부피 계산에 사용되도록합니다. 계산이 완료되면 flow_frequency 변수가 0으로 설정되고 전체 절차가 처음부터 시작됩니다.
완전한 작업은이 페이지 하단에 링크 된 비디오에서도 찾을 수 있습니다. 튜토리얼을 즐기고 유용한 것을 즐기 셨기를 바랍니다. 문제가있는 경우 댓글 섹션에 남겨 두거나 다른 기술적 인 질문에 대해서는 포럼을 사용하십시오.