模拟电导率计

简介

DFRobot Gravity: 模拟电导率计(K=10)专用于测量高电导率的液体,如海水、浓盐水等,量程达100ms/cm,可用于海洋渔场、海洋水族馆等海产养殖领域的水质检测。

本产品支持3~5V的宽电压输入,兼容5V和3.3V主控板;激励源采用交流信号,有效降低了极化效应,延长了电极的寿命,也提高了测量的精度;配套软件库采用单点校准,自动识别标准液,简单方便。

本产品配合主控板(如Arduino)与配套的软件库,就可迅速搭建出一套电导率检测仪,即插即用,无需焊接,为创客们提供了一套即插即用的电导率测量方案。

DFRobot提供多种水质检测传感器产品,尺寸与接口统一,满足各类水质检测的需求,也适合搭建多参数水质检测仪。

1.电极为实验室级,请勿长时间放在液体中测量,否则会缩短电极的使用寿命。

2.电极的铂金片表面附着有铂黑层,应避免任何物体与其触碰,只能用蒸馏水冲洗,否则会损伤铂黑层,导致电极测量不准确。

技术规格

  • 信号转换板(变送板):
    • 供电电压:3.0~5.0V
    • 输出电压:0~3.2V
    • 电极接口:BNC
    • 信号接口:PH2.0-3Pin
    • 测量精度:±5% F.S.
    • 板子尺寸:42mm*32mm
  • 电导率电极:
    • 电极类型:实验室级电极
    • 电极常数:10±2
    • 检测范围:10~100ms/cm
    • 温度范围:0~40℃
    • 电极寿命:>0.5年(实际寿命与使用频率、场景有关)
    • 线缆长度:100±2cm

引脚说明

DFR0300-H 模拟电导率计(K=10)信号转换板

标号 名称 功能描述
1 - 供电电源负极(0V)
2 + 供电电源正极(3.0~5.0V)
3 A 模拟量输出(0~3.2V)
4 BNC 电导率电极接口

使用教程

本教程将演示如何使用这款电导率计进行校准和测量。请仔细阅读每个步骤。

  1. 为保证测量精度,强烈建议添加温度传感器,测量溶液温度,实现自动温补。可采用DS18B20防水温度传感器

  2. 测量另一种溶液之前,务必清洗好电导率电极并用吸纸吸干残余水滴,防止溶液间的交叉污染。可用蒸馏水冲洗电极。

  3. Arduino主板建议外接电源,读数更精确稳定。

准备

  • 硬件
    • 1 x Arduino UNO主控板(或类似主控板)
    • 1 x 电导率计(K=10)信号转换板(变送板)
    • 1 x 电导率电极(K=10)
    • 1 x 12.88ms/cm电导率标准液
    • 1 x 模拟传感器连接线(或杜邦线)
    • 1 x 被测溶液

接线图

DFR0300-H_SVG.png

校准

为保证精度,初次使用的电极,或者使用了一段时间的电极,需要进行校准。
本教程采用单点校准,需要12.88ms/cm的电导率标准液。
下面将详细说明如何进行单点校准。

  • 1.上传样例代码至Arduino主控板中,上传完毕后,打开串口监视器,即可看到温度与电导率值。如自行添加了温度传感器,务必写好相应功能函数的代码并调用。

  • 2.用蒸馏水清洗电极,然后用吸水纸吸干残余水滴。将电导率电极插入到12.88ms/cm标准液中,轻轻搅拌,等待数值稳定。

  • 3.待数值稳定后,即可进行校准。具体步骤如下:

1.在串口监视器中输入enterec指令,进入校准模式。

DFR0300-H_s1.png

2.输入calec指令进行校准,校准成功与否会有相应的提示。程序会自动识别12.88ms/cm的标准液。

DFR0300-H_s2.png

3.校准完毕后,输入exitec指令,保存好相关参数并退出校准模式。必须输入exitec指令后,相关参数才能保存下来。

DFR0300-H_s3.png

4.经过上述步骤,单点校准就完成了,之后就可用于实际的测量。校准过程中的相关参数已经保存至主控板的EEPROM中。

样例代码

请先下载DFRobot_EC10库文件,然后安装。如何安装库?



    /*
     * file DFRobot_EC10.ino
     * @ https://github.com/DFRobot/DFRobot_EC10
     *
     * This is the sample code for Gravity: Analog Electrical Conductivity Sensor / Meter Kit(K=10), SKU: DFR0300-H.
     * In order to guarantee precision, a temperature sensor such as DS18B20 is needed, to execute automatic temperature compensation.
     * You can send commands in the serial monitor to execute the calibration.
     * Serial Commands:
     *   enterec -> enter the calibration mode
     *   calec -> calibrate with the standard buffer solution, one buffer solutions(12.88ms/cm) will be automaticlly recognized
     *   exitec -> save the calibrated parameters and exit from calibration mode
     *
     * Copyright   [DFRobot](https://www.dfrobot.com), 2018
     * Copyright   GNU Lesser General Public License
     *
     * version  V1.0
     * date  2018-11
     */

    #include "DFRobot_EC10.h"
    #include <EEPROM.h>

    #define EC_PIN A1
    float voltage,ecValue,temperature = 25;
    DFRobot_EC10 ec;

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

    void loop()
    {
        static unsigned long timepoint = millis();
        if(millis()-timepoint>1000U)  //time interval: 1s
        {
          timepoint = millis();
          voltage = analogRead(EC_PIN)/1024.0*5000;  // read the voltage
          Serial.print("voltage:");
          Serial.print(voltage);
          //temperature = readTemperature();  // read your temperature sensor to execute temperature compensation
          ecValue =  ec.readEC(voltage,temperature);  // convert voltage to EC with temperature compensation
          Serial.print("  temperature:");
          Serial.print(temperature,1);
          Serial.print("^C  EC:");
          Serial.print(ecValue,1);
          Serial.println("ms/cm");
        }
        ec.calibration(voltage,temperature);  // calibration process by Serail CMD
    }

    float readTemperature()
    {
      //add your code here to get the temperature from your temperature sensor
    }

常见问题

Q1. 电导率电极使用多长时间后需要校准?

A. 校准的间隔和使用频率有关。通常情况下,一个月校准一次即可。如使用频繁,可一个星期校准一次。校准时,尽量使用新鲜的电导率标准液。

**Q2.**自动温补如何实现?

 A. DFRobot_EC10软件库中,已经集成了温补算法,你只需将电压值和温度值同时传入 float readEC(float voltage, float temperature) 函数中,即可获得温补后的电导率值。因此,为保证精度,强烈建议你添加温度传感器,读取溶液的温度值,以执行自动温补。

**Q3.**第一次校准时,总是校准失败,可能是什么原因?

 A. 校准时,相关的参数是保存在EEPROM中指定的位置的。如果之前恰好有保存过其他参数到EEPROM中的这个地址,可能会有冲突,导致不能正常校准。可用下述代码,擦除EEPROM中指定位置的内容。运行一次即可,然后重新上传样例代码,再进行校准操作。
    #include <EEPROM.h>
    #define KVALUEADDR 0x0F
    void setup(){
        for(byte i = 0;i< 8; i++ ){
          EEPROM.write(KVALUEADDR+i, 0xFF);
        }
    }
    void loop(){
    }

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

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

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

更多

DFshopping_car1.png DFRobot商城购买链接