风筝
发表于: 2022-4-14 10:45:01 | 显示全部楼层

在本篇文章中,我们将学习如何使用DfRobot公司的模拟溶解氧传感器和Arduino制作一个溶解氧计。溶解氧是指水或其他液体中存在的游离子、非复合氧的程度。由于它对生活在水体中的生物体的重要影响力,它是评估水质时最重要的参数之一。溶解氧值过高或过低都会损害水生生物并影响水质。


由于测量水质参数是一项复杂的工作,因此测量水中的溶解氧也不是一件容易的事。这就是为什么市场上可用的溶解氧计(DO Meter)非常昂贵的原因。DfRobot公司的Gravity模拟溶解氧传感器是市场上最受欢迎和最好的溶解氧传感器之一。DfRobot的模拟溶解氧传感器套件与Arduino、ESP8266、ESP32、STM32微控制器以及Raspberry Pi兼容。该产品用于测量水中的溶解氧,以用来测量水质。广泛应用于水产养殖、环境监测、自然科学等诸多水质应用领域。

DO-Meter-Arduino.jpg


在本文中,我们将重力模拟溶解氧传感器与Arduino开发板和0.96寸OLED显示屏连接。首先通过填充0.5N氢氧化钠溶液来准备DO传感器。然后我们将准备传感器进行测试。传感器准备好后,我们将通过Arduino溶解氧传感器校准代码校准传感器。最后我们将制作自己的溶解氧计并在OLED显示屏上显示溶解氧值。


所需的组件

●    Arduino Nano开发板

●    DfRobot 重力模拟溶解氧传感器

●    0.96寸I2C OLED显示屏

●    连接跳线

●    面包板

●    0.5N氢氧化钠溶液和量瓶


水中溶解氧简介

什么是溶解氧?

溶解氧(Dissolved Oxygen)是指水或任何其他液体中存在的游离、非复合氧的值。非复合氧或游离氧 (O2) 是不与任何其他元素结合的氧。溶解氧是水中存在的游离氧分子。水中的键合氧分子 (H2O) 存在于化合物中,不计入溶解氧值。可以想象,游离氧分子在水中溶解的方式与盐或糖在搅拌时的溶解方式大致相同。

Dissolved-Oxygen.jpg


溶解氧通过空气或作为植物光合作用的作用进入水中。从空气中,氧气可以从周围的大气中缓慢地扩散到水的表面,或者通过曝气快速混合。溶解氧也作为浮游植物、藻类、海藻和其他水生植物光合作用的废物产生。

oxygen-in-river.jpg


溶解氧值可能受到多种自然因素的影响,其中一些包括:

1. 水生生物(更多的水生生物=更少的溶解氧)

2. 分解水平(分解过程消耗氧气,导致溶解氧减少)

3. 水体类型(流动的溪流比静止的水溶解更多的氧气)

4. 海拔(高海拔=少溶解氧)


什么是溶解氧计?

溶解氧计(Dissolved Oxygen Meter,DO计)测量溶解在水溶液中的氧气量。溶解氧计有3种不同类型,并使用以下传感器制造。

1. 原电池溶解氧传感器

2. 极谱溶解氧传感器

3. 光学溶解氧传感器


溶解氧的计算方式

溶解氧可以表示为每单位体积的浓度或百分比。在水生环境中,氧饱和度是在构成稳定平衡条件的温度和压力下,溶解氧 (O2) 的浓度与将溶解在该水体中的最大氧量之比。


溶解氧浓度值可以表示为毫克每升 (mg/L) 或百万分之几 (ppm)。 1 mg/L 等于 1 ppm。溶解氧饱和度以百分比表示。


Gravity模拟溶解氧传感器

DfRobot-Dissolved-Oxygen-Sensor-1.jpg

DfRobot公司的Gravity模拟溶解氧传感器套件可以轻松与Arduino和任何其他微控制器连接。该传感器用于测量水中的溶解氧,以便了解水质。广泛应用于水产养殖、渔业、环境监测、自然科学、实验室等水质应用领域。

DfRobot-Dissolved-Oxygen-Sensor.jpg


DfRobot溶解氧传感器有一个电流型探头。电流型探头不需要极化时间,随时可用。电流型溶解氧传感器的工作原理如下所述。

sgc-board.jpg


信号转换板有一个BNC连接器,可以直接连接到Galvanic Probe。信号转换器电路板将微小的电压差放大为可被Arduino检测到的可读信号。信号转换板即插即用,兼容性好。


传感器探头由填充溶液的膜帽覆盖。膜帽中的透氧膜敏感且易碎。处理时要小心。应避免使用指甲和其他尖锐物体。它可以很容易地集成到任何控制或检测系统中。如果您想了解更多关于传感器的规格特性和寿命,您可以访问官网网站:DfRobot Gravity模拟溶解氧传感器


溶解氧传感器的工作原理

电溶氧传感器由两个电极组成:阳极和阴极。这两个电极都浸入电解质中(传感器主体内部)。透氧膜将阳极和阴极与被测水隔开。

working-of-dissolved-Oxygen-Sensor.png


渗透膜允许样品水中的氧气扩散到传感器中,并在阴极处被还原。这种化学反应产生一个电信号,该信号从阴极传输到阳极,然后进入溶解氧测量仪。在阴极消耗氧气会在膜上产生一个压力差,该压力差会根据样品中氧气的分压而变化。因此,随着氧气浓度的增加,分压和扩散速率也会增加,仪器的电流也会成比例增加。


准备0.5 mol/L的氢氧化钠溶液

在使溶解氧传感器探头工作之前,您需要准备探头。为了准备探头,您需要准备0.5 mol/L氢氧化钠(NaOH)溶液。您需要氢氧化钠 (NaOH) 晶体。 NaOH 晶体可以在化学商店轻松获得。

Naoh.jpg


要制备0.5M的氢氧化钠溶液,量取20g氢氧化钠晶体并将其溶解在1000ml水中。将氢氧化钠晶体与水混合时,溶液会因化学反应而产生热量。所以混合溶液时,让其溶解并冷却大约30分钟。

o.5n-naoh-solution.jpg


准备传感器探头

对于新的溶解氧探头,应首先将0.5 mol/L的氢氧化钠溶液添加到膜帽中作为填充溶液。为此,请按照以下步骤操作。


从探头上拧下膜帽,用0.5 mol/L氢氧化钠溶液填充约2/3体积的膜帽。确保探头相对于水平面处于垂直位置。小心地将盖子拧回探头。如果有一点溶液从盖子溢出,确保探头完全充满NaOH溶液。

AddSolution2.png


将盖子拧回探头时,探头应相对于水平面处于垂直位置,以避免在填充溶液中产生气泡。

filling-solution.jpg


如果盖子完全充满 NaOH 溶液,将盖子拧回探头时会溢出过多的溶液。如果填充溶液太少,瓶盖内可能会产生气泡。总之,最好的方法是填充大约2/3体积的盖子。


溶解氧传感器和Arduino的连接原理图

以下是将溶解氧传感器与Arduino开发板连接的电路图。首先,将探头连接到信号转换板上的BNC连接器。

Dissolved-Oxygen-Sensor-Arduino (1).jpg


传感器工作在3.3V至5V。因此,将其VCC引脚连接到Arduino开发板的3.3V。将GND连接到GND。同样,将输出模拟引脚连接到Arduino开发板的A1引脚。


校准溶解氧传感器

如果您是第一次使用传感器或长时间未使用传感器,则需要校准探头以确保准确度。


校准传感器有两种方法:

●    单点校准:只校准固定温度下的饱和溶解氧,适合温度稳定时使用

●    两点校准:校准不同温度下的饱和溶解氧,可以计算温度补偿,在温度变化时使用

但我更喜欢第一种方法,即单点校准,因为它是最简单的方法。


溶解氧传感器的Arduino校准代码

复制以下代码并将其上传到Arduino开发板。

  1. #include <Arduino.h>

  2. #define VREF    5000//VREF(mv)
  3. #define ADC_RES 1024//ADC Resolution

  4. uint32_t raw;

  5. void setup()
  6. {
  7.     Serial.begin(115200);
  8. }

  9. void loop()
  10. {
  11.     raw=analogRead(A1);
  12.     Serial.println("raw:\t"+String(raw)+"\tVoltage(mv)"+String(raw*VREF/ADC_RES));
  13.     delay(1000);
  14. }
复制代码

现在按照以下步骤校准探头:

●    准备探头

●    在纯水中弄湿探头并抖掉多余的水滴

●    将探头暴露在空气中并保持适当的气流(不要使用风扇吹)

●    输出电压稳定后,记录电压,即当前温度下的饱和溶氧电压


当读数变得稳定时,记下电压读数。最终代码中需要此电压读数。我已经在25摄氏度的温度下进行了校准。因此,默认情况下,代码中指定了25°C。

Dissolved-Oxygen-Sensor-Calibration.png


如果您想了解有关溶解氧传感器校准方法的更多信息并按照其他方式进行校准,您可以在此处阅读这篇文章:DO传感器校准


当温度固定时,电压与溶解氧浓度呈线性关系。饱和溶解氧受温度变化的影响很大。为了提高精度,需要考虑温度变化引起的溶解氧和饱和电压的变化。下表显示了浓度随温度的变化。

temp-do-change.jpg

跳转到指定楼层
风筝
发表于: 2022-4-14 10:59:19 | 显示全部楼层

溶解氧传感器与Arduino连接的代码

溶解氧传感器校准系数完成后,就可以制作自己的溶解氧计。

Arduino-Dissolved-Oxygen-Meter.jpg


将下面的代码上传到Arduino开发板,就可以实现自己的溶解氧计。更改代码中的以下行,例如温度和校准电压。校准在25°C下进行,最好在此温度下进行校准。

  1. #define CAL1_V (131) //mv
  2. #define CAL1_T (25)   //℃
复制代码

由于我们使用的是单点校准方法,因此我们定义了这两行代码。

  1. #define TWO_POINT_CALIBRATION 0
复制代码

如果要进行两点校准,则将该代码定义为

  1. #define TWO_POINT_CALIBRATION 1
复制代码

如果要进行两点校准,还可以在以下代码更改电压和温度参数。

  1. #define CAL1_V (131) //mv
  2. #define CAL1_T (25)   //℃
  3. #define CAL2_V (1300) //mv
  4. #define CAL2_T (15)   //℃
复制代码

以下是完整的最终代码,您可以将其直接上传到Arduino开发板。 Final Code.rar (896 Bytes, 下载次数: 11)


上传代码后,打开串口监视器,您将在串口监视器中看到以下记录值。

rawvaluedosensor.jpg


自制溶解氧计

现在,如果您想制作自己的溶解氧计(Dissolved Oxygen Meter),还可以在电路中添加一个显示屏。0.96寸I2C OLED显示屏是该应用的最佳显示屏,因为它具有4针I2C接口并且代码很简单。与OLED显示屏的连接图如下所示。

Dissolved-Oxygen-Meter-Arduino (1).jpg


现在下载以下代码并将其上传到Arduino开发板。 do meter.rar (1.18 KB, 下载次数: 7)


现在,如果您想测试传感器,可以将探头浸入水中并开始检查读数。

Dissolved-Oxygen-Meter-Arduino.jpg


如果要制作零溶氧水,可以在水中加入亚硫酸钠(Na2SO3)直至饱和。 这样可以消耗水中的所有氧气,获得零溶氧液。


溶解氧值可能因水生生物、海拔、盐度(盐度)、温度、湍流和植被等参数而异。 为了测量水质,您还可以测量水的pH值、浊度、TDS和温度。 您可以在此电路中添加pH传感器、浊度传感器、TDS和温度传感器。以上就是本文的全部内容。如果有任何疑问,请随时在本帖下面回复。

回复

使用道具 举报

地瓜patch
发表于: 2024-1-16 12:08:31 | 显示全部楼层

V_saturation = (uint32_t)CAL1_V + (uint32_t)35 * temperature_c - (uint32_t)CAL1_T * 35;请问式中的35代表什么意义?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-22 11:33 , Processed in 0.053184 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表