风筝
发表于: 2020-4-8 22:08:31 | 显示全部楼层

在本篇文章中,我们将把霍尔效应水流传感器YFS201与Arduino开发板连接,以测量水或任何其他液体的流量和流速。这是一个非常出色的项目,可用于工业、家庭或水龙头、隧道、河流等水流测量应用中。下面介绍使用Arduino和水流传感器进行流量和流速测量的代码以及电路图。


该项目可用于测量流经管道或容器的液体,或基于水的流速或水量创建控制系统。例如,您可以在园艺时使用它来测量用于浇灌植物的水量,以防止浪费。


所需的组件:

●    YFS201霍尔效应水流传感器

●    Arduino Uno开发板

●    1602 LCD显示屏

●    面包板

●    连接导线


电路图

circuit-Diagram.jpg

将LCD引脚1、3、5、16连接到GND,将LCD的引脚2和15连接到5V VCC。然后将LCD引脚4、6、11、12、13、14连接到Arduino数字引脚D7、D6、D5、D4、D3、D2。


将YFS201霍尔效应水流传感器的VCC引脚连接至5V电源,并将GND连接至GND。由于它是一个模拟传感器,因此将其模拟引脚连接到Arduino的A0,如上图所示。


YFS201霍尔效应水流传感器简介

该传感器与您的供水管线成一直线,并包含一个风车传感器,以测量流过其中的液体量。有一个集成的磁性霍尔效应传感器,每旋转一圈就会输出一个电脉冲。霍尔效应传感器与水管密封,可保持传感器安全干燥。

water-flow-sensor.jpg


传感器带有三根线:红色(5-24VDC电源)、黑色(接地)和黄色(霍尔效应脉冲输出)。通过计算来自传感器输出的脉冲,您可以轻松计算出水流量。每个脉冲约为2.25毫米。请注意,这不是精密传感器,脉冲率的确会有所变化,具体取决于流速、流体压力和传感器方向。如果要求精度高于10%,则需要仔细校准。但是,它非常适合基本的测量任务!


流量传感器的特点:

●    型号:YF-S201

●    传感器类型:霍尔效应

●    工作电压:5至18V DC(最低测试工作电压4.5V)

●    最大电流消耗:15mA @ 5V

●    输出类型:5V TTL

●    工作流量:1至30升/分钟

●    工作温度范围:-25至+ 80℃

●    工作湿度范围:35%-80%RH

●    准确度:±10%

●    最大水压:2.0 MPa

●    输出占空比:50%+ -10%

●    输出上升时间:0.04us

●    输出下降时间:0.18us

●    流量脉冲特性:频率(Hz)= 7.5 *流量(L / min)

●    每升脉冲数:450

●    耐用性:最少300,000次周期


YFS201霍尔效应水流传感器的工作原理:

使用Arduino进行流量和体积测量的水流传感器基于霍尔效应原理工作。根据霍尔效应,在垂直于电流和垂直于电流的磁场的导体中会感应出电压差。在此,霍尔效应在流量计中利用了一个小型风扇/螺旋桨形转子,该转子置于液体流动的路径中。

how-water-flow-sensor-works.png


液体推压转子的页片,使其旋转。转子的轴连接到霍尔效应传感器。它是一个电流线圈和一个连接到转子轴上的磁体的装置,因此当该转子旋转时会感应出电压/脉冲。在该流量计中,每分钟每升通过的液体输出约4.5个脉冲。这是由于安装在转子轴上的磁铁引起的磁场变化。我们使用Arduino测量脉冲数,然后使用简单的转换公式以升/小时(L / hr)为单位计算流速,以升为单位计算总流量。


源代码/程序:

  1. #include <LiquidCrystal.h>
  2. LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
  3. int X;
  4. int Y;
  5. float TIME = 0;
  6. float FREQUENCY = 0;
  7. float WATER = 0;
  8. float TOTAL = 0;
  9. float LS = 0;
  10. const int input = A0;
  11. void setup()
  12. {
  13. Serial.begin(9600);
  14. lcd.begin(16, 2);
  15. lcd.clear();
  16. lcd.setCursor(0,0);
  17. lcd.print("Water Flow Meter");
  18. lcd.setCursor(0,1);
  19. lcd.print("****************");
  20. delay(2000);
  21. pinMode(input,INPUT);
  22. }
  23. void loop()
  24. {
  25. X = pulseIn(input, HIGH);
  26. Y = pulseIn(input, LOW);
  27. TIME = X + Y;
  28. FREQUENCY = 1000000/TIME;
  29. WATER = FREQUENCY/7.5;
  30. LS = WATER/60;
  31. if(FREQUENCY >= 0)
  32. {
  33. if(isinf(FREQUENCY))
  34. {
  35. lcd.clear();
  36. lcd.setCursor(0,0);
  37. lcd.print("VOL. :0.00");
  38. lcd.setCursor(0,1);
  39. lcd.print("TOTAL:");
  40. lcd.print( TOTAL);
  41. lcd.print(" L");
  42. }
  43. else
  44. {
  45. TOTAL = TOTAL + LS;
  46. Serial.println(FREQUENCY);
  47. lcd.clear();
  48. lcd.setCursor(0,0);
  49. lcd.print("VOL.: ");
  50. lcd.print(WATER);
  51. lcd.print(" L/M");
  52. lcd.setCursor(0,1);
  53. lcd.print("TOTAL:");
  54. lcd.print( TOTAL);
  55. lcd.print(" L");
  56. }
  57. }
  58. delay(1000);
  59. }
复制代码

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-26 06:05 , Processed in 0.037309 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表