这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【Let'sdo第四期-液体流量检测仪DIY】-过程帖:霍尔水流量传感器的工作原

共1条 1/1 1 跳转至

【Let'sdo第四期-液体流量检测仪DIY】-过程帖:霍尔水流量传感器的工作原理及计算方法

菜鸟
2025-01-25 21:02:22     打赏

在这篇文章中,我们研究一下水流量传感器的工作原理,包括:

  • 水流传感器的简短说明。

  • 霍尔水流量传感器的工作原理。

  • 如何使用水流传感器(硬件和代码)。

  • 有关计算公式的详细信息

1. 什么是水流传感器(仪表)?

我们使用水流传感器来测量水流速。水流速是每单位时间通过的流体体积。人们经常使用水流传感器进行热水器自动控制、DIY 咖啡机、自动售货机等。

原理各异的流量传感器种类繁多,最常见的流量传感器是基于霍尔器件的。例如,最经典的水流传感器 YF-S401和 YF-S201 都依赖于霍尔传感器。

那么,霍尔水流量传感器是如何工作的呢?

2. 水流量传感器是如何工作的?

为了解释水流是如何工作的,我们打开盖子看一看。

YF-S401 的所有组件

image.png

水流量传感器工作原理

image.png

里面很简单。主要组件是霍尔效应传感器、涡轮和磁体。水从进水口流入,从出水口流出。水流驱动轮子转动,轮子上的磁铁也随之转动。磁场旋转会触发霍尔传感器,霍尔传感器输出高低电平方波(脉冲)。

水流量传感器工作原理

image.png

对于轮子的每一轮,流经的水量是一定量的,输出的方波数量也是如此。因此,我们可以通过计算方波(脉冲)的数量来计算水的流动。

3. 如何将水流传感器与stm32F10RB 一起使用。3.1 硬件连接

对于 YF 系列,有 3 根电线:

  • 红色代表 Vcc

  • 黑色 GND

  • 黄色表示脉冲输出。

我们使用 一个引脚通过外部中断来检测水流量传感器输出的脉冲。

3.2 软件代码

当然,我们可以在 循环中中使用来读取水流量传感器的输出。每当读取高电平时,计数数字加 1。但是,这种方法不是实时的,并且程序每次执行都需要一定的等待时间,在此期间不会检测到新的脉冲。对于这种实时要求苛刻的应用程序,我们通常使用 interrupt。每当检测到脉冲的上升沿时,就会触发一次中断,计数加 1。

image.png

 void FlowSetup(void) //初始化数据
 {
   if(StrFlow.Ctr_Relay == 1)
	 {
		   currentTime = StrFlow.Cnt;
		   cloopTime = currentTime;
		   StrFlow.TotalmL = 0;	
		  
	 }
   
   
}

 void Flowloop (void)
{
  
   currentTime = StrFlow.Cnt;
   // 每S计算流量,流速
    if((StrFlow.SetmL) > 10 && (StrFlow.TotalmL> StrFlow.SetmL )  )
    {
		 GPIO_PinWrite    (GPIOA, 8,  Switch_Relay(false));
		 StrFlow.step = 1;
		 return;
    }
   if(currentTime >= (cloopTime + 1000))
   {
		   
      cloopTime = currentTime; // Updates cloopTime
      StrFlow.QmL = (uint32_t)(StrFlow.Flow_freq *1000/(4*7990));
      StrFlow.Flow_freq = 0; // Reset Counter
      StrFlow.TotalmL +=StrFlow.QmL;  
		 
		 
 
   }
}

我们可以通过串口调试工具在水流过时,将流量值打印到相应的窗口,

或者用OLED来显示。

水流传感器的计算公式

  在代码部分,我们使用了下面的公式,那么这个公式是怎么来的呢?

YF 系列使用具有六个交替磁极的环形磁铁,因此每转一圈,都会产生三个低电平和三个高电平,即三个脉冲。

  假设 YF-S401,每流出一升水,霍尔传感器就会输出 1450 个脉冲。

因此每次脉冲意味着 1/1450 升水流过。

我们将一定时间t(unit s)流经水流传感器的液体总体积取为(单位 L),检测到的脉冲总数为N。然后我们得到:

V_total(L) = N* 1/1450(L)

此外,流经水流传感器的流体总体积等于流速乘以时间(单位 s):

V_total(L) = Q(L/s)*t(s)

因此,我们得到:

N* 1/1450 = Q(L/s)*t(s)
N/t = 1450 * Q(L/s)

N/t恰好是 frequency ,所以:

f = 1450*Q(L/s); 

Q(L/s) = f/1450; 





关键词: 液体     霍尔传感器     stm32F103RB     液体流量    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]