简介
电导率是电阻率的倒数,与物质传送电流能力的大小有关,在液体中常以电阻的倒数电导来衡量其导电能力的大小。水的电导是衡量水质的一个重要指标,它能反映出水中存在的电解质的程度。
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 使用教程
准备
-
硬件
- 1x Arduino UNO R3
- 1x 电导率电极
- 1x 电导率信号转换板
- 1x PT1000信号转换板
- 1x 1413us/cm电导率标准液
- 连接线若干
- 被测溶液
-
软件
- Arduino IDE(1.8.x或更高版本)
- DFRobot_ECPRO 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 ℃
校准提高精度
由于探头体质各异,实际使用中一般需要校准来进一步提高测量精度,校准步骤如下
- 连接好EC探头与Arduino、上传校准程序
- 将EC探头浸入电导率已知的校准液中,推荐使用 1413 us/cm 电导率标准液进行校准。
若附赠的校准夜用尽,可自行购买或参考附录自行配制 1413us/cm 电导率校准液,配置方法见附录。 - 检查探头,适当晃动清除气泡避免干扰
- 在串口监视器中,输入
C 校准液电导率
进行校准。如C 1413
即为在1413 us/cm电导率标准液中校准 - 记录下串口监视器中返回的校准值K。K值应接近1.0,若偏差过大清检查校准步骤是否有误。
- 在
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 容量瓶为例说明配置步骤
- 根据计算,配置 1000ml 0.01mol/L KCl 标准液需要 KCl 0.74551g
- 使用分析天平称量经过干燥的分析纯 KCl 0.74551g
- 将称量好的 KCl 溶质倒入烧杯中,加入适量蒸馏水使 KCl 完全溶解
- 将溶液使用玻璃棒转移至容量瓶中,并多次加入蒸馏水洗涤烧杯,将洗涤溶液也转移至容量瓶中
- 向容量瓶内加入的液体液面离标线1~2厘米左右时,应改用滴管小心滴加,最后使液体的凹液面与刻度线正好相切
- 盖紧瓶塞,用倒转和摇动的方法使瓶内的液体混合均匀
该溶液即为在 25℃ 一般情况时,电导率为 1413us/cm 的标准溶液
标准溶液应使用分析天平和容量瓶配制。不要使用量杯、量筒等非精密工具。不精确的校准液会严重影响校准精度。
更多
🛒DFRobot商城购买链接