溶解氧传感器

简介

这是一款arduino兼容的溶解氧传感器,用于测量水中的溶解氧含量,反应水质状况。可应用于水产养殖、环境检测、自然科学等领域的水质检测。
俗话说,“养鱼先养水,好水养好鱼。”良好的水质,对水生物非常重要。溶解氧 (Dissolved Oxygen) 就是反应水质好坏的重要参数之一。水中的溶解氧值一旦过低,会造成水生物呼吸困难,对其生存造成威胁。
我们推出了一款arduino兼容的溶解氧传感器,用于测量水中的溶解氧含量,反应水质状况,可应用于水产养殖、环境检测、自然科学等领域的水质检测。本产品简单易用,因此DIY一套溶解氧检测仪不再是有难度的门槛。
本产品的溶解氧电极为原电池型电极,无需极化时间,随用随测。填充液与感应膜可更换,维护成本低;信号转接板具有工作电压宽、连线方便、即插即用等特点,可方便的接入到现成的控制系统中使用。
该产品简单易用、兼容性强、代码开源、配套资料详细,可快速应用到所需场景中,为你的水生物守住“生命之源”!

技术规格

溶解氧电极

  • 电极类型:原电池
  • 检测范围:0~20mg/L
  • 温度范围:0~40℃
  • 响应时间:90秒达到98%全响应(25℃)
  • 压力范围:0~50PSI
  • 流动条件:0.3 mL/s
  • 电极芯寿命:1年(正常使用情况下)
  • 维护时间:视水质状况,对于浑水,通常1~2个月需更换膜帽;对于清水,通常4~5个月需更换膜帽。电极填充液建议每个月更换一次。
  • 线缆长度:2米
  • 连线接口:BNC

信号转接板

  • 供电电压:3.3~5.5V
  • 输出电压:0~3.0V
  • 电极接口:BNC
  • 信号接口:Gravity接口 (PH2.0-3P)
  • 板子尺寸:42mm * 32mm

引脚说明

溶解氧传感器信号转接板管脚定义

标号 名称 功能描述
1 A 模拟信号输出端(0~3.0V)
2 + 电源输入正极(3.3~5.5V)
3 - 电源输入负极
4 BNC 溶解氧电极连线接口

使用教程

本教程将演示如何使用这款溶解氧传感器。配套的电极处于精密电化学传感器,请仔细阅读本教程,注意步骤与细节。

⚠警告

  • 使用新的溶解氧电极前,位于电极头部的膜帽需要加入0.5mol/L氢氧化钠溶液作为电极的填充液。该溶液碱性较强,请带好防水手套后操作。如不慎滴到皮肤上,请用大量清水冲洗。
  • 膜帽上透明的氧渗透膜为敏感元件,请注意保护,不能用指甲或者其他尖锐物体碰触。
  • 溶解氧电极在测量过程中需要耗氧,故测量的时候,需要轻轻搅拌液体,使得溶解氧均匀分布在液体中。但不能剧烈搅拌,以免产生气泡影响测量!

准备材料

  • 硬件
    • 溶解氧电极(含膜帽) x1
    • 0.5mol/L氢氧化钠溶液 x1
    • Arduino UNO控制板 x1
    • 溶解氧传感器信号转接板 x1
    • Gravity 3P模拟连接线 x1
  • 软件

准备电极

使用全新的溶解氧电极之前,需要在膜帽(位于电极头部)中加入0.5mol/L氢氧化钠溶液,作为电极的填充液。如果电极使用有一段时间后,误差明显增大时,需要更换填充液。下面将详细说明如何给溶解氧电极添加填充液。

拧开电极的膜帽盖,倒入0.5mol/L氢氧化钠溶液到膜帽盖中,倒入量大概为膜帽内部容积的三分之二,然后使电极方向与水平面方向垂直,把膜帽套到电极上再拧紧,以溢出一点氢氧化钠溶液为佳。

  • 在套上加有填充液的膜帽并拧紧时,电极尽量与水平面垂直,否则会出现不均匀,导致气泡产生。
  • 加入填充液时,不能把膜帽加满,否则套到电极上时,会溢出很多填充液;也不可太少,没加够填充液会导致膜帽内部产生气泡。故倒入三分之二左右,膜帽拧紧后,以溢出一点氢氧化钠溶液- 为佳。
  • 膜帽上溢出的氢氧化钠溶液,请用吸水纸吸干。
  • 开封过的氢氧化钠溶液瓶,需尽快密封好,防止空气中的二氧化碳对其产生影响。


接线图

电极的填充液加入完毕后,需要进行一次校准。在校准前,请按照下图所示的接线图连接:电极接到信号转接板的BNC接口上,信号转接板接到arduino主控板的模拟口上。

校准电极

为保证精度,初次使用的电极,或者使用了一段时间的电极,需要进行校准。

  • 单点校准:只校准单一温度下饱和溶解氧,适用于温度变化不大时测量
  • 两点校准:校准不同温度下饱和溶解氧,可以进行温度补偿计算,适用于宽温度范围测量

校准程序

将示例程序复制到Arduino IDE中,选择对应的开发板和端口上传
上传成功后打开串口监视器,设置波特率为115200,进行后续校准步骤

#include <Arduino.h>

#define VREF    5000//若ADC参考电压不为5V,请根据实际情况修改VREF
#define ADC_RES 1024//若ADC分辨率不为1024,请根据实际情况修改ADC_RES

uint32_t raw;

void setup()
{
    Serial.begin(115200);
}

void loop()
{
    raw=analogRead(A1);
    Serial.println("raw:\t"+String(raw)+"\tVoltage(mv)"+String(raw*VREF/ADC_RES));
    delay(1000);
}

单点校准

只校准单一温度下饱和溶解氧对应电压,适用于温度变化不大的测量。

获得饱和溶解氧电压有两种方法,将润湿的探头暴露在空气中,操作方便,精度较低;或将探头浸入饱和氧水中,操作复杂,精度较高。

暴露空气法
  1. 按步骤准备好电极
  2. 将探头在纯净水中润湿,并抖落多余的水珠
  3. 把探头暴露在空气中,保持适当空气流动(不要使用电风扇吹)
  4. 待输出电压稳定后,记录电压,即为当前温度下的饱和电压
饱和氧水法
  1. 按步骤准备电极
  2. 准备一杯纯净水,使用下列其中一种方法制作饱和氧水。
    • 方法A:使用搅拌器、打蛋器,连续高速搅拌10分钟,使溶解氧达到饱和
    • 方法B:使用气泵向水中连续充气十分钟,使溶解氧达到饱和
  3. 停止搅拌或充气,待气泡散尽后将溶解氧探头放入
  4. 放入探头后,保持均匀慢速搅拌,避免产生任何气泡。
  5. 待输出电压稳定后,记录温度和电压

两点校准

  1. 准备两杯纯净水,一杯放入冰箱中冷藏,一杯加热至稍温热,温度应控制在0-40℃之间,否则可能损坏探头。
  2. 取其中一杯,使用下列其中一种方法制作饱和氧水
    • 方法A:使用搅拌器、打蛋器,连续高速搅拌10分钟,使溶解氧达到饱和
    • 方法B:使用气泵向水中连续充气十分钟,使溶解氧达到饱和
  3. 停止搅拌或充气,待气泡散尽后将溶解氧探头放入
  4. 放入探头后,保持均匀慢速搅拌,避免产生任何气泡。
  5. 待输出电压稳定后,记录温度和电压
  6. 对另一杯水进行同样的测量,记录温度和电压

示例程序

请先进行校准,根据校准结果修改程序再上传

#include <Arduino.h>

#define DO_PIN A1

#define VREF 5000    //若ADC参考电压不为5V,请根据实际情况修改VREF
#define ADC_RES 1024 //若ADC分辨率不为1024,请根据实际情况修改ADC_RES

#define TWO_POINT_CALIBRATION 0 //单点校准设置为0,两点校准设置为1

#define READ_TEMP (25) //填写当前水温℃,如果有温度传感器可以填相应获取温度的函数

//单点校准只需要填写CAL1_V和CAL1_T
#define CAL1_V (1600) //单位为mv
#define CAL1_T (25)   //单位℃
//两点校准需要填写CAL2_V与CAL2_T,CAL1是高温校准点,CAL2是低温校准点
#define CAL2_V (1300) //单位为mv
#define CAL2_T (15)   //单位℃

const uint16_t DO_Table[41] = {
  14460, 14220, 13820, 13440, 13090, 12740, 12420, 12110, 11810, 11530,
  11260, 11010, 10770, 10530, 10300, 10080, 9860, 9660, 9460, 9270,
  9080, 8900, 8730, 8570, 8410, 8250, 8110, 7960, 7820, 7690,
  7560, 7430, 7300, 7180, 7070, 6950, 6840, 6730, 6630, 6530, 6410
};

uint8_t Temperaturet;
uint16_t ADC_Raw;
uint16_t ADC_Voltage;
uint16_t DO;

int16_t readDO(uint32_t voltage_mv, uint8_t temperature_c)
{
#if TWO_POINT_CALIBRATION == 0
  uint16_t V_saturation = (uint32_t)CAL1_V + (uint32_t)35 * temperature_c - (uint32_t)CAL1_T * 35;
  return (voltage_mv * DO_Table[temperature_c] / V_saturation);
#else
  uint16_t V_saturation = (int16_t)((int8_t)temperature_c - CAL2_T) * ((uint16_t)CAL1_V - CAL2_V) / ((uint8_t)CAL1_T - CAL2_T) + CAL2_V;
  return (voltage_mv * DO_Table[temperature_c] / V_saturation);
#endif
}

void setup()
{
  Serial.begin(115200);
}

void loop()
{
  Temperaturet = (uint8_t)READ_TEMP;
  ADC_Raw = analogRead(DO_PIN);
  ADC_Voltage = uint32_t(VREF) * ADC_Raw / ADC_RES;

  Serial.print("Temperaturet:\t" + String(Temperaturet) + "\t");
  Serial.print("ADC RAW:\t" + String(ADC_Raw) + "\t");
  Serial.print("ADC Voltage:\t" + String(ADC_Voltage) + "\t");
  Serial.println("DO:\t" + String(readDO(ADC_Voltage, Temperaturet)) + "\t");

  delay(1000);
}

上传完成后,打开串口监视器,设置波特率为115200,可以看到如下输出结果

Temperaturet:	25	ADC RAW:	215	ADC Voltage:	1049	DO:	5413	
Temperaturet:	25	ADC RAW:	214	ADC Voltage:	1044	DO:	5387	
Temperaturet:	25	ADC RAW:	214	ADC Voltage:	1044	DO:	5387	
Temperaturet:	25	ADC RAW:	213	ADC Voltage:	1040	DO:	5362	
Temperaturet:	25	ADC RAW:	213	ADC Voltage:	1040	DO:	5362	
  • Temperaturet 温度
  • ADC RAW ADC原始读数
  • ADC Voltage ADC原始数据转换为电压值,单位mv
  • DO 溶解氧读数,单位μg/L,转换为常见的mg/L单位需要除以1000

校准原理

当温度固定时,电压与溶解氧浓度成线性关系。由于电极生产时的细微差异,需要先校准饱和溶解氧对应的电压,即可获得准确的数据。

但是饱和溶解氧受温度变化影响大,实际测量中也不可能长时间保持温度不变,因此需要考虑温度变化导致的溶解氧和饱和电压变化,并进行相应计算,提高精度。

饱和电压与温度大致关系如下图所示,需要测量两个不同温度下的饱和溶解氧电压,得到温度补偿曲线。
标准大气压下温度与饱和溶解氧对应关系已知,即可通过测量温度确定当前温度饱和溶解氧浓度和对应电压,进而计算溶解氧。

Mind+(基于Scratch3.0)图形化编程

  1. 下载及安装软件。下载地址:https://www.mindplus.cc 详细教程:Mind+基础wiki教程-软件下载安装
  2. 切换到“上传模式”。 详细教程:Mind+基础wiki教程-上传模式编程流程
  3. “扩展”中选择“主控板”中的“Arduino Uno”。 "扩展"“传感器”中搜索选择“模拟DO计”。详细教程:Mind+基础wiki教程-加载扩展库流程
  4. 进行编程,程序如下图:
  5. 菜单“连接设备”,“上传到设备”
  6. 程序上传完毕后,打开串口即可看到数据输出。详细教程:Mind+基础wiki教程-串口打印

常见问题

Q1. 如何配制饱和氧水?

  • A. 一般情况下,往蒸馏水里充空气冒泡20分钟。这样就会使空气与氧气在水中达到饱和,从而制出了100%的溶氧校准标液。

Q2. 如何配置无氧水?

  • A. 一般情况下,往蒸馏水里加亚硫酸钠直至亚硫酸钠饱和,消耗掉水中的氧气,从而制得无氧水。

Q3. 电极不使用了,如何保存?

  • A.
  • 短期(过夜或者一周): 装配好的电极应该存放在去离子水或蒸馏水中,防止填充液蒸发。任何不用的时候需要把它从仪器设备上拔下来。
  • **长期:**将电极的膜帽拧下来,用去离子水或蒸馏水冲洗电极芯(阴极:白金,阳极:铅)和膜帽组件。再用吸水纸将所有部件吸干。膜帽也可以放置电极上,但是它必须被存放在无填充液的状况下,以防止电极正极的消耗。把所有部件安全地保存在原有的电极盒里。

Q4. 如何配制电极填充液(氢氧化钠溶液(NaOH),浓度为0.5mol/L)?

  • A. 在使用本传感器前,可能需要配置氢氧化钠溶液(NaOH), 浓度为0.5mol/L,且每100mL氢氧化钠溶液中,添加1~2滴甘油。此溶液作为电极填充液,需要加入电极中,电极才能使用。如无法购买或配置好氢氧化钠溶液,本产品将不能正常使用!

Q5. 常见的故障有哪些?怎么处理? |

  • A. 如果电极在无氧水中的读数不在零或不是非常接近零,请对电极芯头部(阴极)抛光。如果电极读数不在正常读数范围,或者电极读数漂移,请检测膜帽上的薄膜。如果膜帽上的薄膜有可看得见的破裂、穿孔、或污染,请更换膜帽。

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

温度 饱和溶解氧 对照表

更多资料

DFshopping_car1.png DFRobot商城购买链接