YF-S201水流传感器怎么接线?Arduino测水流量和流速的方法

2026-10-19 23:02:26 34阅读

想监测水管里有没有水在流、流速快不快、累计用了多少水,YF-S201霍尔水流传感器是最常用的方案。它靠内部一个带磁片的叶轮转动,配合霍尔元件输出一串脉冲——流量越大脉冲越密,Arduino数一数脉冲数就能算出流量。这篇讲透它的原理、怎么接、代码怎么写、标定的坑在哪。

YF-S201的原理和霍尔脉冲输出

YF-S201的管体里装了一个叶轮,叶轮上嵌着一块小磁铁,管子外面贴着一颗霍尔传感器。水从进水口冲进去带动叶轮转,磁铁每转过霍尔元件一次就输出一个脉冲信号。它有三根线:红/VCC接5V、黑/GND接地、黄/OUT是脉冲输出脚,接Arduino任意一个数字或中断脚。

图中清晰展示了管体结构——Y型透明管、内置叶轮和磁铁,以及三根引出线。脉冲频率和流量近似成正比,典型模块满量程在1~30L/min,每升水大概对应450个脉冲(不同批次的模块参数略有差异,所以标定很关键)。

Arduino读脉冲算流量的思路

最简单的方式是配一个脉冲计数器库,或者直接用中断:把OUT接在支持中断的引脚(UNO上是D2/D3),在中断回调里给一个计数变量加1。规定一个时间窗口(比如1秒),数这一秒里有多少个脉冲,除以每升的脉冲数就得到瞬时流量(升/秒),再换算成升每分钟。

累计用水量更直观:每秒把瞬时流量累加进总和一个变量,跑完就得到这段时间流过的总水量。要注意浮点精度,积累大水量时用double或分档存储,别让小误差滚雪球。

标定的坑和实际接线要点

最大的坑是模块的“每升脉冲数”不固定,不同批次差异能有几十个趴。想测准,就接一个已知容积的容器,用一个固定水压放水,看实际数到多少脉冲,反推出真实的每升脉冲数再写进代码。水压不同脉冲标定也会偏,日常演示用厂家给的450左右就够,做精确计量就按实测值来。

另外它只能测水流经过时的实时流量,做“有没有漏水、水龙头有没有关”这类开关类判断很灵敏。接线注意共地,别把VCC和OUT接反。把YF-S201串在净水器、滴灌系统或智能水表上,再配个小OLED显示,一套家用流量监测就出来了。


作者:云台四足控
链接:https://www.aiddithome.com/p/161c1b5da52a5.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
阿伟不emo
1楼 · 2026-10-19 23:02:27

串在净水器前测流量很实用,水流有没在跑一眼就知道

锡点
2楼 · 2026-10-19 23:02:27

想测累计用水量就用浮点累积,别用整型放久了误差会放大

电烙铁爱好者
3楼 · 2026-10-19 23:02:26

接的时候红黑白三根线别搞混,黄线OUT接中断脚脉冲才数的准

拆机党
4楼 · 2026-10-19 23:02:26

标定那步一定要做,不同批次的脉冲数差挺多,直接用人家的数计出来的量是估的