有许多不同的方法来测量水位。使用超声波传感器可以轻松完成,但也有这些用于 arduino 的红色传感器模块,专门设计用于测量水位。
在下面的文章中,我们将自己构建一个并学习它们的工作原理。
需要零件:
- 3D打印机
- Arduino
- 0,8 毫米线
- 跨接电缆
- 电阻器
- 烙铁
- 万用表
- 连接到 Arduino 的计算机和电缆
第 1 步:工作原理
首先我们需要了解传感器的工作原理。
如您所见,PCB 上有几个平行的铜线。它们交替连接到 VCC 和 GND。当传感器干燥时,它们之间没有电气连接,但随着水位上升,它们会连接起来。我们可以将它们视为可变电阻器。
水位上升越高,阻力下降越低。
可以使用分压器测量电阻,如上图所示。这是一个非常简单的电路,R1 是一个固定电阻,R2 是我们的可变电阻。由于通过连续所有电阻器的电流相同,因此每个电阻器的电压降取决于其电阻 - 或者它占电路总电阻的比例。因此,随着水位的增加,在“模拟输入”处测得的电压会增加,直到整个传感器都被水覆盖。
通过传感器的总高度以及“模拟输入”处的最大值和最小值,我们可以计算水位。
第 2 步:构建测量网格
首先,打印附件。
然后如图所示将电线穿过侧面的孔,将其切断并为所有其他孔重复该过程。始终让左右两侧交替伸出几厘米。
现在弯曲伸出的电线,如图所示,并将两端焊接在一起。现在在每一端焊接一根跨接电缆。
第 3 步:测量电阻
使用万用表测量网格的电阻,而它仍然是干燥的。
根据该值,选择您的固定电阻器 - 它的值应该与您的网格之一在同一范围内。我的网格为 eample 有几百万欧姆的电阻,所以我选择了一个 1M 欧姆的电阻器。
第 4 步:构建电路并上传代码
现在在面包板上构建电路并将附加的代码上传到 arduino。
请取消注释第 25 行 'Serial.println(sensorVal);'
现在打开串行监视器(在 Arduino IDE 的右上角)并查看打印了哪些值。Arduino 的模拟输入接受 0 - 5 V 的电压并将它们转换为 0 - 1024 的值。因为我们自制的传感器直接连接到 Arduino ,但是没有电路来稳定这些值,所以它的数值可能会变得非常不稳定。
您的上限应该大约是您可以从串行监视器读取的值。就我而言,它在 550 左右。将变量“upperLimit”更改为该值。
现在将传感器完全放入水中,看看串行输出如何变化。将变量“lowerLimit”更改为您在串行监视器中看到的值。
请注意,为了获得相当可靠的输出,在上限和下限之间设置更大的差异是有益的。如果它们真的靠得很近,由于漂移或不稳定而引起的很小的值变化就会大大改变输出。您希望上限和下限相距几分之一。
要增加差异,请为您的固定电阻器尝试不同的电阻值。你做的越小,传感器值就应该越高。始终检查串行监视器以查看值如何变化以及它们是否在有用范围内。
第 5 步:测试
现在我们完成了。你可以拿一个玻璃杯,装满水来测试传感器是否工作正常。如果没有,请返回上一步并重复校准过程。如果您将传感器从水中拉出,固定网格上仍有一些水滴,因此上限值可能与之前传感器完全干燥时的值不同。
请注意,传感器相当不准确,大约有 +/-1 厘米,因为它没有稳定电路。
也有可能它不适用于不同种类的水,因为水的导电性在很大程度上取决于其中的成分(矿物质、污垢等)。您可能需要再次拨入它或构建一个电路来解决该问题,例如使用晶体管。