在本篇文章中,我们学习通过使用DfRobot浊度传感器与Arduino开发板连接来DIY制作一个浊度计。浊度是液体相对透明度的量度。它是水的光学特性,是当光线穿过水样时被水中物质散射的光量的量度。
Arduino浊度传感器应用于涉及监测河流、溪流、湖泊、水体、集水区和研究场所、实验室、液体罐等的水浊度的项目。因此,通过将此传感器与Arduino连接,我们可以制作水质监测系统设备。水质测量还包括其他一些传感器,例如用于测量液体pH值的pH传感器,用于测量水中总溶解溶质的TDS传感器和用于测量水中溶解氧的DO传感器。
在本文中,我们将介绍浊度传感器的基础知识及其在水质监测中测量水浊度的实际示例。浊度值以NTU为单位测量,称为比浊法浊度单位(Nephelometric Turbidity Units)。我们将在LCD显示屏上显示Arduino浊度传感器值。
所需的组件 ● Arduino UNO开发板 ● 1602 LCD显示屏 ● DfRobot浊度传感器 ● 连接跳线 ● 面包板
水的浊度 什么是浊度? 浊度(Turbidity)是由大量肉眼通常看不见的单个颗粒引起的流体混浊或浑浊,类似于空气中的烟雾。浊度的测量是水质的关键测试。
混浊是由悬浮或溶解在水中的颗粒引起的,这些颗粒会散射光,使水看起来浑浊。颗粒物可以包括沉积物,尤其是粘土和淤泥、精细的有机和无机物质、可溶的有色有机化合物、藻类和其他微生物。
浊度的影响 高浊度会显着降低湖泊和溪流的美感。它会增加饮用水和食品加工的水处理成本。它可以通过减少食物供应、退化产卵床和影响鳃功能来伤害鱼类和其他水生生物。
浊度源 沉积物通常位居导致浑浊的物质或污染物的首位。自然资源可能包括来自高地、河岸、河岸和河道地区的侵蚀。通过叶子分解或其他自然发生的分解过程进入溪流的营养物质,据此营养生长的藻类也可能是浑浊的来源。
河道运动也可以释放泥沙。污水排放中的有机物,特别是在处理厂附近,会导致浑浊。扰乱土地的人类活动,如建筑、采矿和农业,可能会在暴雨期间由于雨水径流而导致大量沉积物进入水体。
测量浊度 浊度是在实验室或现场使用专门的光学设备测量的。光被引导通过水样,并测量散射的光量。
测量单位称为比浊法浊度单位 (Nephelometric Turbidity Unit,NTU)。光的散射越大,浊度越高。低浊度值表示高水透明度;高值表示低水透明度。
DfRobot浊度传感器
DfRobot公司提供的Gravity Arduino浊度传感器通过测量浊度值来检测水质。它通过测量光透射率和散射率来检测水中的悬浮颗粒,光的透射率和散射率随水中总悬浮固体(TSS)的量而变化。随着TTS增加,液体浊度水平增加。
该传感器提供模拟和数字信号输出模式。在数字信号模式下,阈值是可调的。您可以根据您的微控制器应用程序选择模式。
浊度传感器的工作原理
该传感器的工作原理是,当光线穿过水样时,透过水样的光量取决于水中的土壤量。随着土壤量的增加,透射光的量减少。浊度传感器测量透射光量以确定水的浊度。
传感器的主要规格参数 1. 工作电压:5V DC 2. 工作电流:40mA (MAX) 3. 响应时间:<500ms 4. 绝缘电阻:100M(Min) 5. 输出方式:模拟 6. 模拟输出:0-4.5V 7. 数字输出:高/低电平信号(可以通过调节电位器来调节阈值)
传感器的结构和电路
前端传感器是一种光学器件,包括一个LED(光发送器)和一个光电晶体管(光接收器)。浊度传感器内板示意图如下。它有一个三线接口:VCC (+5 V)、GND (0 V) & OUT/SIGNAL。
浊度传感器也有一个信号连接板。信号连接板直接连接到上述电路。
模块基于LMV358,提供了一个三针接口与Arduino连接,模块上还有一个模拟/数字选择开关,可以在模拟和数字输出模式之间切换。
浊度与传感器电压的关系 从DfRobot这篇文章中,我得到了这张图表,其中包含一个将传感器电压与浊度相关联的方程。
从这张图中可以看出,在基于微控制器的项目进行编码时,关系图中包含的方程仅适用于传感器在零浊度(清水)下大致给出4.2V 的情况,并且仅在2.5V至4.2V(3,000 至 0 浊度)范围内才是正确的。
因此,如果您没有得到正确的值,则需要进行校准。这可以通过旋转浊度传感器内部的电位器来完成。
将浊度传感器与Arduino连接 现在让我们使用Arduino开发板制作一个简单的浊度计(Turbidity Meter)。您可以通过将浊度传感器与Arduino板直接连接。
如上图所示,将浊度传感器的VCC和GND分别连接至Arduino开发板的5V和GND引脚,模拟输出连接到Arduino的A0引脚。
以下是Arduino连接浊度传感器的基础代码。此代码将从传感器读取模拟值并将其显示在串口监视器上。 - void setup() {
- Serial.begin(9600);
-
- }
- void loop() {
- int sensorValue = analogRead(A0);
- float voltage = sensorValue * (5.0 / 1024.0);
-
- Serial.println ("Sensor Output (V):");
- Serial.println (voltage);
- Serial.println();
- delay(1000);
- }
复制代码
使用LCD显示屏的Arduino浊度计 现在让我们添加一个1602 LCD显示器来显示浊度值。连接图如下。
我们可以使用I2C接口的LCD来减少布线数量。将I2C LCD显示屏的SDA和SCL引脚分别连接到Arduino开发板的A4 (SDA)和A5(SCL)引脚。
Arduino浊度计的代码 现在让我们编写浊度计的Arduino代码。您需要将I2C LCD库添加到Arduino IDE中。从此链接下载库:I2C LCD库。完整代码:
Arduino Turbidity Meter.rar
(595 Bytes, 下载次数: 6)
代码说明 - #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x27, 16, 2);
复制代码首先,我们声明了用于1602 LCD显示屏库,I2C地址为0x27。 - volt = 0;
- for(int i=0; i<800; i++)
- {
- volt += ((float)analogRead(sensorPin)/1023)*5;
- }
- volt = volt/800;
复制代码传感器的输出模拟电压变化很大,而且噪声太大而无法测量。因此,我们取了800个读数,然后取平均值进行读数。 - ntu = -1120.4*square(volt)+5742.3*volt-4352.9;
复制代码使用这个公式,我们将模拟电压值转换为 NTU。 - if(volt < 2.5)
- {
- ntu = 3000;
- }
复制代码如果模拟电压读数低于2.5 V,则NTU设置为 3000。因为3000是项目的最大NTU值。
观察运行结果 要检查项目的工作情况,您可以将传感器浸入不同类型的水源中。您可以混合泥浆或粘土并检查水浊度NTU。
例如在清水中,电压将保持为4.2V。如果没有显示4.2,那么您需要通过旋转传感器中的电位器来调整校准。
以上就是使用DfRobot浊度传感器与Arduino开发板制作浊度计的方法,可用于水质监测。如果有任何疑问,请随时在本帖下面回复。
|