简介

电导率是电阻率的倒数,与物质传送电流能力的大小有关,在液体中常以电阻的倒数电导来衡量其导电能力的大小。水的电导是衡量水质的一个重要指标,它能反映出水中存在的电解质的程度。

DFRobot Gravity: 模拟电导率计 工业版 K=1 专门用于测量水溶液的电导率值,评估水质状况,常用于水培、水产养殖、环境水检测等领域。

作为模拟电导率计的升级版,工业版极大的改善了探头耐用度,可以实现 7x24 小时全天候监测电导率变化;集成PT1000铂热电阻,测量温度补偿读数更简单。支持 3~5V 宽电压输入,兼容 5V 和 3.3V 主控板;输出信号经硬件滤波,抖动小;交流激励源,有效降低了极化效应,提高精度的同时延长电极的寿命;配套软件库自带校准程序,简单方便;还附赠校准液、隔离柱螺丝零件包、防水航空插头等实用配件,助您快速搭建电导率监测平台

本产品配合主控板 (如Arduino) 与配套的软件库,就可迅速搭建出一套电导率检测仪,即插即用,无需焊接。DFRobot提供多种水质检测传感器产品,尺寸与接口统一,满足各类水质检测的需求,也适合搭建多参数水质检测仪。

本产品配套的电极为工业级电极,可以长时间浸泡在液体中测量,如需更高精度或更大量程的电导率探头请选购实验室电极

技术规格

  • 信号转换板:

    • 供电电压:3.3~5.0V
    • 输出电压:0~3V
    • 电极接口:接线端子
    • 信号接口:PH2.0-3Pin
    • 测量精度:±5% F.S.
    • 外形尺寸:42mm*32mm
  • 电导率电极:

    • 电极类型:工业级光亮电极
    • 电极常数:K=1
    • 温度探头:PT1000 铂热电阻
    • 最大量程:1~2200 μs/cm
    • 推荐量程:100~2000 μs/cm
    • 工作温度:0~50℃ (不结冰)
    • 工作耐压:0.5MPa
    • 防水等级:IP68
    • 线缆长度:5m

引脚说明

工业电导率探头引线定义

工业级电导率引线示意图

标签 说明
S+ (EC) 电导率探头正极
S- (EC) 电导率探头负极
TEMP PT1000热电阻,不区分正负极

电导率变送板引脚定义

丝印 名称 说明
- 接地 接地
+ 电源正极 支持 3.3V~5V 供电
A 模拟输出 输出范围 0V~3V
S+ 电极正极 接电导率探头正极
S- 电极负极 接电导率探头负极

PT1000 温度变送板引脚定义

丝印 名称 说明
- 接地 接地
+ 电源正极 支持3.3V~5V供电
A 模拟输出 输出范围0V~3V
T+ 热电阻正极 接PT1000热电阻,不分正负极
T- 热电阻负极 接PT1000热电阻,不分正负极

Arduino 使用教程

准备

硬件连接

探头 - 信号变送板

探头引线 信号变送板
S+ (EC) 电导率变送板 S+
S- (EC) 电导率变送板 S-
TEMP 热电阻变送板 T+
TEMP 热电阻变送板 T-

信号变送板 - Arduino

信号变送板 Arduino UNO
电导率变送板 A1
热电阻变送板 A2

第一次测量

将各零部件连接,上传以下代码

#include "DFRobot_ECPRO.h"

#define EC_PIN A1

DFRobot_ECPRO ec;

uint16_t InputVoltage;
float Conductivity;

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

  ec.setCalibration(1); //若已经过校准,将此处1替换为校准K值
  Serial.println("Default Calibration K=" + String(ec.getCalibration()));
}

void loop()
{
  InputVoltage = (uint32_t)analogRead(EC_PIN) * 5000 / 1024;
  Conductivity = ec.getEC_us_cm(InputVoltage);

  Serial.print("InputVoltage: " + String(InputVoltage) + " mV\t");
  Serial.println("Conductivity: " + String(Conductivity) + " us/cm");

  delay(1000);
}

上传程序后即可通过串口监视器查看测试数据,此时探头未经过校准。
默认参数为校准系数K=1.0,温度25℃。

Default Calibration K=1.00
InputVoltage:	1547 mV	Conductivity:	943.29 us/cm
InputVoltage:	1547 mV	Conductivity:	943.29 us/cm
InputVoltage:	1547 mV	Conductivity:	943.29 us/cm
InputVoltage:	1547 mV	Conductivity:	943.29 us/cm
InputVoltage:	1547 mV	Conductivity:	943.29 us/cm
InputVoltage:	1542 mV	Conductivity:	940.24 us/cm
InputVoltage:	1542 mV	Conductivity:	940.24 us/cm
InputVoltage:	1542 mV	Conductivity:	940.24 us/cm
InputVoltage:	1542 mV	Conductivity:	940.24 us/cm

加入温度修正

工业级电导率探头中集成了PT1000热电阻,可以方便地用来测量液体温度并进行校准,下面的程序在基础测量的基础上添加了温度校准

如果你有其它型号的温度传感器,或计划使用其它温度数据源,也可以直接获取温度值后填入getEC_us_cm(EC_Voltage, Temp)中,单位为摄氏度(℃)。

#include "DFRobot_ECPRO.h"

#define EC_PIN A1
#define TE_PIN A2

DFRobot_ECPRO ec;
DFRobot_ECPRO_PT1000 ecpt;

uint16_t EC_Voltage, TE_Voltage;
float Conductivity, Temp;

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

  ec.setCalibration(1); //若已经过校准,将此处1替换为校准K值
  Serial.println("Default Calibration K=" + String(ec.getCalibration()));
}

void loop()
{
  EC_Voltage = (uint32_t)analogRead(EC_PIN) * 5000 / 1024;
  TE_Voltage = (uint32_t)analogRead(TE_PIN) * 5000 / 1024;

  Temp = ecpt.convVoltagetoTemperature_C((float)TE_Voltage/1000);
  Conductivity = ec.getEC_us_cm(EC_Voltage, Temp);

  Serial.print("EC_Voltage: " + String(EC_Voltage) + " mV\t");
  Serial.print("Conductivity: " + String(Conductivity) + " us/cm\t");
  Serial.print("TE_Voltage: " + String(TE_Voltage) + " mV\t");
  Serial.println("Temp: " + String(Temp) + " ℃");

  delay(1000);
}

上传程序后即可通过串口监视器查看测试数据,此时默认参数为校准系数K=1.0,温度根据传感器实测数据补偿。

Default Calibration K=1.00
EC_Voltage: 1538 mV	Conductivity: 976.46 us/cm	TE_Voltage: 783 mV	Temp: 23.02 ℃
EC_Voltage: 1538 mV	Conductivity: 976.46 us/cm	TE_Voltage: 783 mV	Temp: 23.02 ℃
EC_Voltage: 1538 mV	Conductivity: 976.46 us/cm	TE_Voltage: 783 mV	Temp: 23.02 ℃
EC_Voltage: 1538 mV	Conductivity: 976.46 us/cm	TE_Voltage: 783 mV	Temp: 23.02 ℃
EC_Voltage: 1533 mV	Conductivity: 973.29 us/cm	TE_Voltage: 783 mV	Temp: 23.02 ℃
EC_Voltage: 1533 mV	Conductivity: 973.29 us/cm	TE_Voltage: 783 mV	Temp: 23.02 ℃
EC_Voltage: 1533 mV	Conductivity: 973.29 us/cm	TE_Voltage: 783 mV	Temp: 23.02 ℃
EC_Voltage: 1533 mV	Conductivity: 973.29 us/cm	TE_Voltage: 783 mV	Temp: 23.02 ℃
EC_Voltage: 1533 mV	Conductivity: 973.29 us/cm	TE_Voltage: 783 mV	Temp: 23.02 ℃

校准提高精度

由于探头体质各异,实际使用中一般需要校准来进一步提高测量精度,校准步骤如下

  1. 连接好EC探头与Arduino、上传校准程序
  2. 将EC探头浸入电导率已知的校准液中,推荐使用 1413 us/cm 电导率标准液进行校准。
    若附赠的校准夜用尽,可自行购买或参考附录自行配制 1413us/cm 电导率校准液,配置方法见附录
  3. 检查探头,适当晃动清除气泡避免干扰
  4. 在串口监视器中,输入C 校准液电导率进行校准。如C 1413即为在1413 us/cm电导率标准液中校准
  5. 记录下串口监视器中返回的校准值K。K值应接近1.0,若偏差过大清检查校准步骤是否有误。
  6. ec.setCalibration(K值)中将K值替换为实际校准记录数据,重新上传程序,即可使测量结果更精确。

当更换更换探头、ADC 参考电压变化时,建议重新校准以保持高精度测量。

在实际应用中,建议编写程序,利用Arduino内置EEPROM或外部SD卡储存校准值,并在上电时自动读取。

校准程序

#include "DFRobot_ECPRO.h"

#define EC_PIN A1
#define TE_PIN A2

DFRobot_ECPRO ec;
DFRobot_ECPRO_PT1000 ecpt;

uint16_t EC_Voltage, TE_Voltage;
float Conductivity, Temp;

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

  ec.setCalibration(1);
  Serial.println("Default Calibration K=" + String(ec.getCalibration()));
  Serial.println("Immerse the probe in the calibration solution and enter \"C + conductivity\" to calibrate");
  Serial.println("e.g. \"C 1413\"");

  delay(2000);
}

void loop()
{
  EC_Voltage = (uint32_t)analogRead(EC_PIN) * 5000 / 1024;
  //TE_Voltage = (uint32_t)analogRead(TE_PIN) * 5000 / 1024;
  TE_Voltage = 783;

  Temp = ecpt.convVoltagetoTemperature_C((float)TE_Voltage / 1000);
  Conductivity = ec.getEC_us_cm(EC_Voltage, Temp);

  Serial.print("EC_Voltage: " + String(EC_Voltage) + " mV\t");
  Serial.print("Conductivity: " + String(Conductivity) + " us/cm\t");
  Serial.print("TE_Voltage: " + String(TE_Voltage) + " mV\t");
  Serial.println("Temp: " + String(Temp) + " ℃");

  delay(1000);
}

void serialEvent()
{
  String args = Serial.readStringUntil('\n');
  if (args[0] == 'C')
  {
    args.remove(0, 2);
    float calSoluion=args.toFloat();
    ec.setCalibration(ec.calibrate(EC_Voltage,calSoluion));
    Serial.print("calSoluion: " + String(calSoluion)+"\t");
    Serial.println("calK: "+ String(ec.getCalibration(),6));
    delay(5000);
  }
  else
    Serial.println("command error");
}

精度提升建议

  • 在不同测量液体之间切换时,使用纯净水洗净探头并擦干,避免测量溶液相互污染。

  • 电导率探头头部容易聚集气泡,确认完全排除气泡后再进行校准和读数

  • 使用低纹波的线性电源或电池为连接传感器的 Arduino 或外置 ADC 供电。电脑 USB 接口供电的电压波动可能导致测量结果不稳定。

附录

配置电导率校准液

1413us/cm 电导率校准液为 0.0100mol/L KCl 标准溶液,以下以 1000ml 容量瓶为例说明配置步骤

  1. 根据计算,配置 1000ml 0.01mol/L KCl 标准液需要 KCl 0.74551g
  2. 使用分析天平称量经过干燥的分析纯 KCl 0.74551g
  3. 将称量好的 KCl 溶质倒入烧杯中,加入适量蒸馏水使 KCl 完全溶解
  4. 将溶液使用玻璃棒转移至容量瓶中,并多次加入蒸馏水洗涤烧杯,将洗涤溶液也转移至容量瓶中
  5. 向容量瓶内加入的液体液面离标线1~2厘米左右时,应改用滴管小心滴加,最后使液体的凹液面与刻度线正好相切
  6. 盖紧瓶塞,用倒转和摇动的方法使瓶内的液体混合均匀

该溶液即为在 25℃ 一般情况时,电导率为 1413us/cm 的标准溶液

标准溶液应使用分析天平和容量瓶配制。不要使用量杯、量筒等非精密工具。不精确的校准液会严重影响校准精度。

更多

🛒DFRobot商城购买链接