在这篇文章中,我们将使用 Arduino 和 16 x 2 LCD显示屏构建一个数字水流量计。我们将看看YF-S201水流量传感器,其结构和工作原理以及如何与Arduino接口以提取一些有用的读数。 拟议的项目可以测量以升/分钟为单位的水流量和以升为单位的总水流量。 让我们来看看YF-S201水流量传感器。 YF-S201是一款基于霍尔效应的水传感器。它具有三个端子5V(标称工作电压),GND和输出。+5V为红色线,黑色为接地线,黄色为输出。 传感器发出的频率与水流量成正比。YF-S201传感器的测量范围从1升/分钟到30升/分钟。水压应小于或等于1.75MPa。 水可以从一端注入,水流过另一端。 传感器可以放置在罐体的主闸阀之后;如果要测量水管网络中的水流量,或者可以放置在水龙头之前以测量单个水龙头的水流量。 传感器的位置可以根据用户的需要放在任何地方,但必须注意避免漏水。 传感器具有磁铁和霍尔效应传感器;如果我们看一下水流传感器的侧面,我们可以看到水流路径中的塑料涡轮机。 一个圆形磁铁嵌入在涡轮机的中心,霍尔效应传感器被密封并防止潮湿,并放置在磁铁上方。霍尔效应传感器为涡轮机的每一圈产生一个脉冲。 串行绘图仪上的水流波形 我们可以看到水流量传感器在arduino IDE的串行绘图仪上产生的脉冲,如下所示(使用Arduino单通道示波器)。 我们将空气吹过传感器以旋转涡轮机作为测试,生成的波形如上所示。左侧密度较高的波形表示涡轮机的频率更高,旋转速度更快,右侧密度较低的波形表示反之亦然。 一致的水流提供一致的频率输出。 我们必须将频率转换为升/分钟刻度。为此,制造商给出了一个公式: 水流量(升/分钟)= 频率 / 7.5 因此,我们需要测量生成的频率并在程序代码中应用上述公式。 YF-S201技术规格: ·精度:+/- 10%,如果您需要更好的精度,我们需要校准。 ·工作温度:-25至+ 80摄氏度。 ·工作湿度:35% 至 80% 相对湿度。 ·输出占空比:50% +/- 10%。 ·最大水压:1.75兆帕。 ·每升豆类:450。 ·最大电流消耗:15V 时为 5 mA YF-S201水流量传感器到此结束。 现在让我们转到原理图。 示意图: 水流量传感器的输出引脚连接到 Arduino 的 A0。使用 10K 电位计调整显示对比度。按照上图连接Arduino和LCD显示屏。 程序代码: //-----Program Developed by R.Girish-----// #include 《LiquidCrystal.h》 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”表示当前水流量,“总计”表示自电路打开以来的总流量。 您还可以流动粘度值接近水的任何液体。 |
|Archiver|手机版|家电维修论坛 ( 蜀ICP备19011473号-4 )
GMT+8, 2024-12-6 02:41 , Processed in 0.110076 second(s), 16 queries .
Powered by Discuz! X3.5
© 2001-2024 Discuz! Team.