Arduino를 사용한 간단한 디지털 유량계 회로

문제를 제거하기 위해 도구를 사용해보십시오





이 게시물에서는 Arduino 및 16 x 2 LCD 디스플레이를 사용하여 디지털 유량계를 구성 할 것입니다. 우리는 YF-S201 수류 센서, 그 구조 및 작동, 그리고 몇 가지 유용한 판독 값을 추출하기 위해 Arduino와 인터페이스하는 방법을 살펴볼 것입니다.

제안 된 프로젝트는 리터 / 분 단위의 물 흐름 속도와 리터 단위의 총 물 흐름 속도를 측정 할 수 있습니다.



YF-S201 수류 센서를 살펴 보겠습니다.

YF-S201 그림 :

YF-S201은 홀 효과 기반 물 센서. 3 개의 단자 5V (공칭 작동 전압), GND 및 출력이 있습니다. + 5V는 빨간색 와이어, 검정색은 GND, 노란색은 출력됩니다.



센서는 물의 흐름에 정비례하는 주파수를 제공합니다. YF-S201 센서는 1 리터 / 분에서 30 리터 / 분까지 측정 할 수 있습니다. 수압은 1.75 MPa 이하 여야합니다.

물은 한쪽 끝에서 주입되고 물은 다른 쪽 끝으로 흐릅니다.

센서는 수도관 네트워크의 물 흐름을 측정하려는 경우 탱크의 메인 게이트 밸브 뒤에 배치하거나 수도꼭지 바로 앞에 배치하여 단일 탭의 물 흐름을 측정 할 수 있습니다.

센서의 위치는 사용자의 필요에 따라 어디에나 배치 할 수 있지만 누수가되지 않도록주의해야합니다.

센서에는 자석 및 홀 효과 센서 물 흐름 센서의 측면을 살펴보면 물 흐름 경로에 플라스틱 터빈을 볼 수 있습니다.

둥근 모양의 자석이 터빈 중앙에 내장되어 있으며 홀 효과 센서는 밀봉되고 습기로부터 보호되며 자석 위에 배치됩니다. 홀 효과 센서는 터빈의 모든 회전에 대해 펄스를 생성합니다.

직렬 플로터의 물 흐름 파형

아래 그림과 같이 arduino IDE의 직렬 플로터에서 수류 센서에 의해 생성 된 펄스를 볼 수 있습니다 (Arduino 단일 채널 오실로스코프 사용).

센서를 통해 공기를 불어 넣어 터빈 회전 테스트로 생성 된 파형이 위에 나와 있습니다. 왼쪽의 밀도가 높은 파형은 터빈의 더 높은 주파수와 빠른 회전을 나타내며 오른쪽의 밀도가 낮은 파형은 그 반대를 나타냅니다.

일관된 물 흐름은 일관된 주파수 출력을 제공합니다.

우리는 주파수를 변환 리터 / 분 단위로. 이를 위해 제조업체는 다음 공식을 제공했습니다.

물 유량 (리터 / 분) = 주파수 /7.5

따라서 생성 된 주파수를 측정하고 위의 공식을 프로그램 코드에 적용해야합니다.

YF-S201의 기술 사양 :

· 정확도 : +/- 10 %, 더 나은 정밀도가 필요한 경우 보정해야합니다.

· 작동 온도 : -25 ~ + 80 섭씨.

· 작동 습도 : 35 % ~ 80 % RH.

· 출력 듀티 사이클 : 50 % +/- 10 %.

· 최대 수압 : 1.75 MPa.

· 리터당 펄스 : 450.

· 최대 전류 소비 : 5V에서 15mA

이것으로 YF-S201 수류 센서를 마칩니다.

이제 회로도로 이동하겠습니다.

개략도:

수류 센서의 출력 핀은 Arduino의 A0에 연결됩니다. 사용 10K 전위차계 디스플레이 대비를 조정합니다. Arduino를 연결하고 LCD 디스플레이 위의 다이어그램에 따라.

프로그램 코드 :

//-----Program Developed by R.Girish-----//
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2)
int X
int Y
float Time = 0
float frequency = 0
float waterFlow = 0
float total = 0
float LS = 0
const int input = A0
const int test = 9
void setup()
{
Serial.begin(9600)
lcd.begin(16, 2)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Water Flow Meter')
lcd.setCursor(0,1)
lcd.print('****************')
delay(2000)
pinMode(input,INPUT)
pinMode(test, OUTPUT)
analogWrite(test,100)
}
void loop()
{
X = pulseIn(input, HIGH)
Y = pulseIn(input, LOW)
Time = X + Y
frequency = 1000000/Time
waterFlow = frequency/7.5
LS = waterFlow/60
if(frequency >= 0)
{
if(isinf(frequency))
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('L/Min: 0.00')
lcd.setCursor(0,1)
lcd.print('Total: ')
lcd.print(total)
lcd.print(' L')
}
else
{
total = total + LS
Serial.println(frequency)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('L/Min: ')
lcd.print(waterFlow)
lcd.setCursor(0,1)
lcd.print('Total: ')
lcd.print(total)
lcd.print(' L')
}
}
delay(1000)
}
//-----Program Developed by R.Girish-----//

저자의 프로토 타입 :

“L / Min”은 현재의 물 유량을 나타내고“Total”은 회로가 켜진 이후의 총 물을 나타냅니다.

점도 값이 물에 가까운 액체를 흘릴 수도 있습니다.

Arduino를 사용하는이 디지털 유량계에 대해 궁금한 점이 있으면 의견란에 자유롭게 표현해 주시면 빠른 답변을 받으실 수 있습니다.




이전 : Arduino를 사용하여 조이스틱 제어 2.4GHz RC 자동차 다음 : Arduino를 사용하여이 벅 컨버터 만들기