Arduino溶液检测传感器-Analog ORP Meter 模拟ORP计
概述
- 想DIY一个ORP计吗?还在为没有一款价格低廉、使用方便的ORP计而烦恼吗?我们推出了一款专为Arduino控制器设计的模拟ORP计,具有连线简单、方便实用等特点。按照示意图连线后,再通过程序控制,就可以非常方便的测量溶液的ORP。
- ORP是英文Oxidation-Reduction Potential的缩写,即氧化还原电位。ORP是氧化还原能力的测量指标,表征氧化性或还原性的相对程度,其单位是mV。氧化还原电位越高,氧化性越强;氧化还原电位越低,氧化性越弱。电位为正表示介质显示出一定的氧化性,电位为负则说明介质显示出一定的还原性。
- ORP是水质检测中一个重要的指标,它虽然不能独立反应水质的好坏,但是能够综合其他水质指标来反映水族系统中的生态环境。
- 测量元件是ORP复合电极,由金或铂电极与参比电极组合成复合电极,用以测量溶液的氧化还原电位。
技术指标
- 模块电源:+5.00V
- 模块尺寸:40mmX27mm
- 测量范围:-2000mV—2000mV
- 适用温度:5-70℃
- 精度:±10mV(25℃)
- 响应时间:≤20sec
- BNC接口型ORP电极
- PH2.0接口(3脚贴片)
- 零点校准按钮
- 电源指示灯
ORP标准溶液温度系数特性
ORP计的使用
连接图
使用步骤
注意:
- 请使用高品质开关电源,电压尽量接近+5.00V,电压越准,精度越高!
- ORP电极使用时无需标定,直接使用即可。只有对ORP电极的品质或测试结果有疑问时,可用ORP标准溶液检查电极电位,以判断ORP电极或仪器的好坏。
- ORP电极每测一种溶液,都需要使用清水清洗,建议使用去离子水清洗。
- ORP电极连接到ORP meter电路板上时,严禁按下calibration按键,否则会损坏ORP电极!
(1)用模拟连接线,把ORP meter电路板右边的接口连接到Arduino主控器的模拟口1,对Arduino主控器供电后,可以看到ORP meter电路板的蓝色指示灯变亮。
(2)对Arduino主控器烧写样例代码(注意:此时样例程序中应该是#define OFFSET 0)。
(3)打开Arduino IDE的串口监视器,可以看到当前打印出的ORP值。按下ORP meter电路板上的calibration按键保持不放,应该能看到打印出的值是一个很小的值,然后根据这个打印值,修改样例程序中的偏移量。比如,串口打印出:“ORP: 8mV”,那么把样例程序中的“#define OFFSET 0”修改成“#define OFFSET 8”即可。修改偏移量的目的是为了消除运算放大器产生的零漂电压,提高测量精度。修改完样例程序后,重新编译下载即可,这样便完成了校准。
(4)把ORP电极连接到ORP meter电路板的BNC接口。完整的连线图请对照连接示意图。经过校准后,ORP电极就能测量溶液的ORP值了,通过串口监视器,能很方便的查看当前溶液的ORP值。
样例代码
下载样例代码后,打开Arduino IDE的串口监视器,即可看到结果。
/*
# This sample codes is for testing the ORP meter V1.0.
# Editor : YouYou
# Date : 2013.11.26
# Product: ORP meter V1.0
# SKU : SEN0165
*/
#define VOLTAGE 5.00 //system voltage
#define OFFSET 0 //zero drift voltage
#define LED 13 //operating instructions
double orpValue;
#define ArrayLenth 40 //times of collection
#define orpPin 1 //orp meter output,connect to Arduino controller ADC pin
int orpArray[ArrayLenth];
int orpArrayIndex=0;
double avergearray(int* arr, int number){
int i;
int max,min;
double avg;
long amount=0;
if(number<=0){
printf("Error number for the array to avraging!/n");
return 0;
}
if(number<5){ //less than 5, calculated directly statistics
for(i=0;i<number;i++){
amount+=arr[i];
}
avg = amount/number;
return avg;
}else{
if(arr[0]<arr[1]){
min = arr[0];max=arr[1];
}
else{
min=arr[1];max=arr[0];
}
for(i=2;i<number;i++){
if(arr[i]<min){
amount+=min; //arr<min
min=arr[i];
}else {
if(arr[i]>max){
amount+=max; //arr>max
max=arr[i];
}else{
amount+=arr[i]; //min<=arr<=max
}
}//if
}//for
avg = (double)amount/(number-2);
}//if
return avg;
}
void setup(void) {
Serial.begin(9600);
pinMode(LED,OUTPUT);
}
void loop(void) {
static unsigned long orpTimer=millis(); //analog sampling interval
static unsigned long printTime=millis();
if(millis() >= orpTimer)
{
orpTimer=millis()+20;
orpArray[orpArrayIndex++]=analogRead(orpPin); //read an analog value every 20ms
if (orpArrayIndex==ArrayLenth) {
orpArrayIndex=0;
}
orpValue=((30*(double)VOLTAGE*1000)-(75*avergearray(orpArray, ArrayLenth)*VOLTAGE*1000/1024))/75-OFFSET; //convert the analog value to orp according the circuit
}
if(millis() >= printTime) //Every 800 milliseconds, print a numerical, convert the state of the LED indicator
{
printTime=millis()+800;
Serial.print("ORP: ");
Serial.print((int)orpValue);
Serial.println("mV");
digitalWrite(LED,1-digitalRead(LED));
}
}
维护及注意事项
- 测量前和测量后,都应用去离子水清洗电极,以保证测量精度,在粘稠试样中测定时,电极需用热去离子水反复冲洗几次,以除去黏在铂金片上的试样,或先用适宜的溶剂清洗,再用去离子水洗去溶剂。
- 电极经长期使用后会发生钝化,其现象是敏感梯度降低,响应变慢,读数不准,此时可将电极下端铂金片用0.1M稀盐酸浸泡24小时。
- 电极污染或者液接面堵塞,也会使电极钝化,此时,应根据污染物的性质选择适当溶液清洗,如下(仅供参考):
- 电极使用周期为一年左右,老化后应及时更换新的电极。
相关文档
资料包(原理图、布局图、样例代码、ORP复合电极使用说明书)
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号