Analog_ORP_Meter_SKU_SEN0165_-DFRobot

 Analog ORP Sensor Meter For Arduino

Introduction

Applications

Specification

ORP Standard Solution Temperature Characteristics

Use the ORP Meter

Connecting Diagram

Step to Use the ORP Meter

Cautions:

  1. Using the analog connection lines, connect the ORP meter board to analog port 1 of your Arduino controller. When the Arduino controller gets power,you will see the blue LED on board is on.
  2. Upload the sample code to the Arduino controller.(Note: At this time, a sentence in the sample program should be "#define OFFSET 0").
  3. Open the serial monitor of Arduino IDE , you will see the current ORP value.Press the calibration button and keep it pressed,you will see a small ORP vlaue printed on the serial monitor.Then according to this value, modify the offset in the sample program.For example,the serial print: "ORP: 8mV", then you should modify the sentence "#define OFFSET 0" to "#define OFFSET 8" in the sample code,then recompile the code and upload. At this time,you have completed the calibration.
  4. According to the graphic,the ORP electrode is connected to the BNC connector on the pH meter board.. After the calibration, the ORP electrode can measure the ORP value of the solution, through the serial monitor, you can see the current ORP value of the solution conveniently.

Sample Code

Sample code for testing the ORP meter and get the sensor feedback from the Arduino Serial Monitor.

/*
# This sample codes is for testing the ORP meter V1.0.
 # Editor : YouYou
 # Date   : 2013.11.26
 # Product: ORP meter
 # 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));
  }
}

Precautions

More Documents