当涉及液体时,浊度是一个重要术语。因为它在液体动力学中起着重要的作用,还用于测量 水质。因此,在本教程中,让我们讨论什么是浊度,如何使用Arduino测量液体的浊度。如果您想使该项目更进一步,您还可以考虑将pH计与Arduino接口,还可以读取水的pH值以更好地评估水的质量。以前我们还使用ESP8266搭建了基于IoT的水质监测设备,如果有兴趣的话也可以检查一下。话虽如此,让我们开始吧
什么是液体浊度?
浊度是液体浑浊或浑浊的程度或水平。这是由于存在大量类似于空气中白烟的不可见颗粒(肉眼可见)而发生的。当光通过液体时,由于这些微小颗粒的存在,光波会散射。液体的浊度与游离的悬浮颗粒成正比,也就是说,如果颗粒数量增加,浊度也会增加。
如何使用Arduino测量浊度?
正如我前面提到的,浊度是由于光波的散射而产生的,为了测量浊度,我们应该测量光的散射。浊度通常以浊度浊度单位(NTU)或杰克逊浊度单位(JTLJ)进行测量,具体取决于测量方法。这两个单位大致相等。
现在让我们看一下浊度传感器的工作原理,它有两个部分, 发射器和接收器。发射器由通常为led的光源和驱动器电路组成。在接收器端,有一个光检测器,如光电二极管或LDR。我们将解决方案放在发射器和接收器之间。
发射器简单地透射光,光波通过溶液,接收器接收光。通常(没有溶液存在),透射光在接收器侧完全接收。但是在存在混浊溶液的情况下,透射光的量非常低。也就是说,在接收器一侧,我们仅得到低强度的光,并且该强度与浊度成反比。因此,如果光强度高,溶液的浊度较小,而光强度非常低,则溶液的浊度更高,我们可以通过测量光强度来测量浊度。
制作浊度仪所需的组件
- 浊度模块
- Arduino的
- 16 * 2 I2C液晶屏
- 共阴极RGB LED
- 面包板
- 跳线
浊度传感器概述
该项目中使用的浊度传感器如下所示。
如您所见,该浊度传感器模块包括3个部分。防水导线,驱动器电路和连接线。测试探针由发射器和接收器组成。
上图显示,这种类型的模块使用IR二极管作为光源,使用IR接收器作为检测器。但工作原理与以前相同。驱动器部分(如下所示)由一个运算放大器和一些放大检测到的光信号的组件组成。
可以使用JST XH连接器将实际传感器连接到该模块。它具有三个引脚:VCC,接地和输出。Vcc连接到5v,并接地。该模块的输出是一个模拟值,它会根据光强度而变化。
浊度模块的主要特点
- 工作电压:5VDC。
- 电流:30mA(MAX)。
- 工作温度:-30°C至80°C。
- 与Arduino,Raspberry Pi,AVR,PIC等兼容
浊度传感器与Arduino的接口-电路图
将浊度传感器连接到Arduino的完整原理图如下所示,该电路是使用EasyEDA设计的。
这是一个非常简单的电路图。浊度传感器的输出是模拟的,因此连接到Arduino的A0引脚,I2C LCD连接到Arduino的I2C引脚,即SCL至A5和SDA至A4。然后,RGB LED连接到数字引脚D2,D3和D4。连接完成后,我的硬件设置如下所示。
将传感器的VCC连接到Arduino 5v,然后接地。传感器的输出引脚连接到Arduino的模拟0。接下来,将VCC和LCD模块的接地连接到5v和Arduino的接地。然后是SDA到A4,SCL到A5,这两个引脚是Arduino的I2C引脚。最终将RGB LED的接地端连接到Arduino的接地端,并将绿色连接到D3,蓝色连接到D4,红色连接到D5。
编程Arduino以测量水中的浊度
计划显示的浊度值为0到100。也就是说,对于纯液体,仪表应该显示0,对于高浊度的仪表应该显示100。这个Arduino代码也非常简单,完整的代码可以在本页底部找到。
首先,我包括I2C液晶库,因为我们使用I2C LCD来最大程度地减少连接。
# 包括
然后,我为传感器输入设置整数。
int sensorPin = A0;
在设置部分,我定义了引脚。
pinMode(3,OUTPUT); pinMode(4,输出); pinMode(5,输出);
在循环部分中,正如我之前提到的,传感器的输出是一个模拟值。因此,我们需要读取这些值。借助Arduino AnalogRead 函数,我们可以在循环部分读取输出值。
int sensorValue = analogRead(sensorPin);
首先,我们需要了解传感器的行为,这意味着我们需要读取浊度传感器的最小值和最大值。我们可以使用 serial.println 函数在串行监视器上读取该值。
要获得这些值,首先,自由地读取传感器,没有任何解决方案。我得到一个大约640的值,然后在发射器和接收器之间放置一个黑色物质,我们得到的是最小值,通常该值为零。因此,我们得到的最大值为640,最小值为零。现在我们需要将这些值转换为0-100
为此,我使用了Arduino的 map函数。
浊度= map(sensorValue,0,640,100,0);
然后,我在LCD显示屏上显示了这些值。
lcd.setCursor(0,0); lcd.print(“ turbidity:”); lcd.print(“”); lcd.setCursor(10,0); lcd.print(浊度);
之后,在 if 条件的帮助下,我给出了不同的条件。
if(浊度<20) { digitalWrite(2,HIGH); digitalWrite(3,LOW); digitalWrite(4,LOW); lcd.setCursor(0,1); lcd.print(“其CLEAR”); }
如果浊度值低于20,这将激活绿色LED并在LCD上显示“其清除”。
if((浊度> 20)&&(浊度<50)) { digitalWrite(2,LOW); digitalWrite(3,HIGH); digitalWrite(4,LOW); lcd.setCursor(0,1); lcd.print(“ CLOUDY”); }
如果浊度值在20到50之间,这将激活蓝色LED并在LCD上显示“多云”。
if((浊度> 50) { digitalWrite(2,LOW); digitalWrite(3,HIGH); digitalWrite(4,LOW); lcd.setCursor(0,1); lcd.print(“它的脏污”); }
如果浊度值大于50,将激活红色LED并在LCD上显示“脏”,如下所示。
只需按照电路图并上传代码,如果一切都正确,则应该能够测量水的浊度,并且LCD应当显示水质,如上所示。
请注意,此浊度计显示的是浊度百分比,可能不是准确的工业价值,但仍可用于比较两种水的水质。可以在下面的视频中找到该项目的完整工作。希望您喜欢本教程并从中学到有用的东西,如果有任何疑问,可以将其留在下面的评论部分,或使用CircuitDigest论坛发布技术问题或开始相关讨论。