en esta oportunidad veremos como utilizar el modulo PH-4502C utilizando un arduino que en este caso se uso un Arduino mega, aunque los mismos pasos sirven para cualquier otro Arduino.


uno de los problemas que se encontró a la hora de de hacer el tutorial es la poca información que hay respecto al dispositivo, esperamos que con esto se pueda solucionar las dudas.


características de la placa: 

pines:

VCC: alimentación de 5v dc

GND: tierra para la placa

GND: tierra para el PH

PO: salida analogica de pH

Do: disparador de limite de ph

To: salida de temperatura

BNC Conector de la sonda.

 

POTENCIOMETRO DE OFFSET: es el potenciómetro que esta mas cerca al conector BNC

especificaciones: 

Module Power : 5.00V 

Module Size : 43mm×32mm 

Measuring Range:0­-14PH

Measuring Temperature :0­-60 ℃ 

Accuracy : ± 0.1pH (25 ℃) 

Response Time : ≤ 1min 

pH Sensor with BNC Connector

Gain Adjustment Potentiometer 

Power Indicator LED 

Cable Length from sensor to BNC connector:660mm


esquematico: 


coneccion con el arduino:



Calibracion:

esta placa tiene una salida analogica. que variara segun detecte el valor de PH.


el rango que puede medir el sensor de PH es de 0 a 14

esta es la tabla para una sonda similar, puede variar un poco entre modelos de sondas.

como se puede observar los voltajes son positivos para el PH entre el 0 a 7 y para valores entre 7 y 14 son valores negativos,

el Arduino obviamente no puede interpretar los voltajes negativos, por ende tendremos  usar el potenciómetro de offset, para mover el valor de 0  para  desplazar el valor de las lecturas en un rango  que pueda trabajar el Arduino.


como es de esperar con un Arduino no podremos leer todo el rango de valores del sensor per si tendremos una buena aproximación.


para poder  interpretar el voltaje  que arroja el sensor al Arduino hay que calibrarlo, lo que implica crear una ecuación con  para ponerla en el código de Arduino.

primero hacemos un programa donde nos leerá el valor del voltaje que arroja el sensor y que ingresa al Arduino por el pin A0 luego el sensor lo sumergimos el un liquido con un ph fijo y sacar un valor de voltaje para el pH( se necesitan por lo menos dos valores, aunque seria mejor  y mas preciso si son mas.)


cargamos el siguiente código y metemos la sonda del  sensor en dos líquidos con ph definido para esta prueba se uso los valores de ph4.01 y de 7.01


nota: es necesario limpiar con agua destilada el sensor  al cambiar de fluido para evitar contaminar la muestra(retirar los residuos de la sonda). 


const int analogInPin = A0; 
int buf[10];
int temp=0;
unsigned long int inValue; 
void setup() {
 // usaremos el puerto serial para enviar los datos
  Serial.begin(9600); 
  
}

void loop() {
  /*para evitar demasiadas variaciones lecturaremos 
   unos varios valores y luego sacaremos el promedio*/
   for(int i=0; i<10;i++){
    /*realizamos 10 lecturasy almacenamos en buff*/
      buf[i]= analogRead(analogInPin);
      delay(10);
   }
   /*luego realizamos un barrido de los valores lecturados
    * y descartamos los valores demasiado elevados y los 
    * valoresdemasiado vajos*/
    for(int i=0; i<9; i++){
      for(int j=i+1;j<10;j++){
        temp= buf[i];
        buf[i]=buf[j];
        buf[j]=temp;
      }  
    }
    /*realicamos el calculo del promedio y la conversion
    a voltaje en mv*/
    inValue=0;
    for(int i=2; i<8; i++){
        inValue= inValue + buf[i];
    }
    float PHVol= (float)inValue*100*5/1024/6;

    Serial.print("Voltaje mv =");
    Serial.println(PHVol);
    delay(100);
}


en mi caso me dio las siguientes lecturas en la entrada A0. y visualice en en el monitor serie del IDE de arduino.

nota: otra cosa que tomar en cuenta es que los valores pueden tardar hasta un minuto para poder estabilisarse, que es el valor que nos da en  las especificaciones del sensor. 



PH 4.01 ---------------- 329 mv

PH 7.5 ---------------- 266  mv

con estos datos nos vamos a una hoja de excel y lo graficamos y sacamos su ecuacion.

en mi caso la ecuacion que obtuve es la siguiente:

PH = -0.0554*PHVOLmv + 22.236;



donde el voltaje PHVOLmv  esta expresado en milivoltios(mv).

con eso nos vamos al IDE arduino y agregamos este calculo al codigo anterior


const int analogInPin = A0; 
int buf[10];
int temp=0;
unsigned long int inValue; 
void setup() {
 // usaremos el puerto serial para enviar los datos
  Serial.begin(9600); 
  
}

void loop() {
  /*para evitar demasiadas variaciones lecturaremos 
   unos varios valores y luego sacaremos el promedio*/
   for(int i=0; i<10;i++){
    /*realizamos 10 lecturasy almacenamos en buff*/
      buf[i]= analogRead(analogInPin);
      delay(10);
   }
   /*luego realizamos un barrido de los valores lecturados
    * y descartamos los valores demasiado elevados y los 
    * valoresdemasiado vajos*/
    for(int i=0; i<9; i++){
      for(int j=i+1;j<10;j++){
        temp= buf[i];
        buf[i]=buf[j];
        buf[j]=temp;
      }  
    }
    /*realicamos el calculo del promedio y la conversion
    a voltaje en mv*/
    inValue=0;
    for(int i=2; i<8; i++){
        inValue= inValue + buf[i];
    }
    float PHVol= (float)inValue*100*5/1024/6;
   
    
    Serial.print("Voltaje mv =");
    Serial.println(PHVol);

     /*agregamos la ecuacion encontrada*/
    float PH= -0.0554*PHVol +22.236;
    Serial.print("PH =");
    Serial.println(PH);
    delay(100);
}