使用Arduino与水位传感器测量水位:一次成功的连接

水位传感器与 Arduino 连接测量水位

  • 前言
  • 水位传感器引脚
  • 水位传感器如何工作?
  • 水位传感器模块组成
  • 关于水位传感器模块的常见问题
  • 水位传感器模块电路图
  • Arduino水位传感器电路 – 连接图
  • Arduino 代码
  • Arduino水位传感器的工作
  • 前言

    水箱溢出是导致水浪费的常见问题,令人惊讶的是,许多家庭甚至不考虑它。虽然有很多解决方案,比如球阀,当达到一定水位时会自动切断水流,但作为电子工程师,我更喜欢包含传感器和自动化的解决方案。因此,在本教程中,我们将使用 Arduino 连接水位传感器来测量水位,在此过程中,我们将让您了解有关此传感器及其工作的详细信息。

    水位传感器引脚

    水位传感器模块的工作原理与雨量传感器非常相似。

    水位传感器有 3 个引脚,使用 5V 电源运行,并以模拟格式输出数据。水位传感器的引脚分配如下:
    VCC ==》 是雨水检测传感器的电源引脚,可连接到 5V 电源。

    GND==》是电路板的接地引脚,它应该连接到 Arduino 的接地引脚。

    OUT==》是电路板的模拟输出引脚,它将在 VCC 和地之间为我们提供模拟信号。

    水位传感器如何工作?

    水位传感器的工作非常简单易懂。PCB由长导电板制成。当水达到一定水平时,两个板之间的电导率会发生变化,通过测量变化,我们可以测量水位。

    上面的 Gif 显示了水位传感器的工作情况。正如您所看到的,当水滴落入玻璃时,水位上升,输出引脚上的电压也上升。这种现象与输出电压成正比。发生这种情况是因为 PCB 上的传感器部分由 10 个导电板制成,其中 5 个是电源轨道,另外 5 个是传感器轨道。

    水位传感器模块组成

    该传感器非常简单,因此可以用很少的零件制成。该传感器产生水位并以模拟格式输出数据。传感器的零件标记如下所示。
    传感器模块有三个引脚,其中两个是电源引脚,需要连接到 Arduino 的 5V 和接地引脚。正如您在上图中看到的,该模块有一个电源 LED,当电路板通电时会打开,除此之外,我们还有一个晶体管和一堆电阻器,它们共同构成了水位传感器模块。

    关于水位传感器模块的常见问题

    水位传感器有哪些类型?

    商用水位指示器有六种基本类型:电阻式、电容式、超声波式、频率式、导波 GWR 和压力传感器。这些常用指标中的每一个都有好处,也都有其缺点。

    液位传感器有什么用途?

    水位传感器检测液体和其他流体以及流化固体的液位,包括具有上部自由表面的浆料、粒状材料和粉末。

    家里可以做水位计吗?

    如果您可以积累所有基本用品,例如 LED、蜂鸣器和感应线。那么构建一个基本的水位指示器就不难了。

    超声波传感器可以检测水位吗?

    使用超声波传感器,我们可以通过查找收发器与水面之间的距离来计算水深。传感器将发射一个短超声波脉冲,我们可以测量该脉冲(回波)到液体和返回的传播时间。

    水位传感器模块电路图

    水位传感器的示意图如下所示,您可以看到它很容易理解。
    在原理图中,晶体管的集电极连接到 5V 的电源电压,发射极通过一个 100 欧姆的电阻接地。在模块中,一组5个导电板与vcc串联一个100欧姆的电阻,另外5组连接到NPN晶体管的基极。现在,当水接触到这些导电上颚时,电流开始从 5V 电源流向晶体管的基极,晶体管就会开启。传感器浸入的越深,它产生的输出电压就越大。

    Arduino水位传感器电路 – 连接图

    现在我们完全了解了水位传感器的工作原理,我们可以将所有需要的电线连接到 Arduino UNO 板,在本文的这一部分,我们将讨论这一点!


    在上图中,显示了水位传感器与 Arduino 的连接图。我们已经将一个 LED 连接到 Arduino 板的 PWM 引脚 6,传感器的模拟输出引脚连接到 A0 引脚。模块和 LED 之间的接地引脚是通用的,VCC 取自 Arduino 的 5V 引脚。我们将对 Arduino 进行编程,以便 LED 的亮度将根据传感器感应到的水位而变化。

    Arduino 代码

    Arduino水位传感器代码解释如下。代码非常简单易懂。我们只需要从传感器中读取模拟数据,我们就可以用 Arduino 的 ADC 来近似平均水位

    我们通过声明两个宏来初始化我们的代码,第一个是用于 LED,我们将在其中连接一个 LED,第二个是sensorPin,我们通过它读取来自传感器的数据。

    // Sensor pins pin D6 LED output, pin A0 analog Input
    #define ledPin 6
    #define sensorPin A0
    

    接下来,我们有我们的setup()函数。在 setup 函数中,我们用 9600 波特初始化串口。我们还将ledPin设置为输出,并将引脚设为低电平。这样,引脚将不会浮动并打开 LED。

    void setup() {
      Serial.begin(9600);
      pinMode(ledPin, OUTPUT);
      digitalWrite(ledPin, LOW);
    }
    

    接下来,我们有我们的循环功能;在循环函数中,我们读取传感器引脚并将其存储在名为sensorValue 的局部变量中。 然后,我们定义了一个if条件,我们检查来自传感器的输入值是否大于 570,如果是,我们在 Arduino 的内置映射函数的帮助下映射该值,最后,我们生成 PWM 信号在analogWrite函数的帮助下,最终的serial.print函数用于调试。

    void loop() {
      int sensorValue = analogRead(sensorPin);
      if (sensorValue > 570)  {
        int outputValue = map(sensorValue, 570, 800, 0, 255);
        Serial.println(outputValue);
        analogWrite(ledPin, outputValue); // generate PWM signal
      }
    }
    

    Arduino水位传感器的工作

    下面的GIF显示了水位传感器的工作。起初,您可以看到面包板上的 LED 是关闭的,但是当我们在玻璃上放一些水时,LED 的亮度开始增加,当玻璃中的水充满时,LED 会以最大亮度发光。

    我们在使用该传感器时遇到的一个问题是该传感器的底部非常敏感,而顶部则不那么敏感。如果水位越过底部,灵敏度几乎达到最大值并饱和。

    物联沃分享整理
    物联沃-IOTWORD物联网 » 使用Arduino与水位传感器测量水位:一次成功的连接

    发表评论