Cómo usar un sensor de pH con Arduino

Posted on by

Sensor de pH con Sonda.

Medir el pH puede resultarnos de gran utilidad si estamos desarrollando un acuario, un hidropónico o un aquapónico automatizado. A continuación explicaremos cómo funciona este sensor, cómo debemos calibrarlo y pondremos un ejemplo de código funcional para utilizarlo con Arduino.

Cómo funciona

El pH es una medida de acidez o alcalinidad de una disolución, la escala de pH varía de 0 a 14. El pH indica la concentración de iones hidrógeno [H]+ presentes en determinadas disoluciones. Se puede cuantificar de forma precisa mediante un sensor que mide la diferencia de potencial entre dos electrodos: un electrodo de referencia (de plata/cloruro de plata) y un electrodo de vidrio que es sensible al ion de hidrógeno. Esto es lo que formará la sonda. Además hay que utilizar un circuito electrónico para acondicionar la señal adecuadamente y que podamos usar este sensor con un microcontrolador, como por ejemplo con Arduino.

Estos son algunos ejemplos de sustancias cotidianas y su pH:

Sustancia pH aproximado
Jugo de limón
2,4 – 2,6
Bebida de cola
2,5
Vinagre
2,5 – 2,9
Jugo de naranja o de manzana
3,5
Cerveza
4,5
Café
5,0
5,5
Leche
6,5
Agua
7,0
Saliva
6,5 – 7,4
Sangre
7,38 – 7,42
Agua de mar
8,0
Jabón
9,0 a 10,0
Lejía
13

Especificaciones

Trataremos las especificaciones del circuito y de la sonda por separado ya que se pueden adquirir por separado y hay variaciones que hay que tener en cuenta dependiendo de la sonda utilizada.

Especificaciones de sondas:

Tipo de Electrodo Rango de pH Temperatura (ºC) Punto Cero (pH) Tiempo de respuesta (min) Ruido (mV)
65-1 0-14 0-80 7±1 <2
BX-5 0-14 0-80 7X±11 <2
E-201 0-14 0-80 7±0.5 <2 <0.5
E-201-C 0-14 0-80 7X±0.5 <2 <0.5
95-1 0-14 0-80 7X±0.5 <2 <0.5
E-900 0-14 0-80 7X±0.5 <2 <0.5

Especificaciones del circuito:

El circuito que estamos utilizando tiene serigrafiado www.auto-crtl.com y Logo_PHsensor v1.1 en la capa bottom del circuito.

 Voltaje de alimentación 5 V
 Corriente  5-10 mA
 Consumo ≤ 0.5 W
 Temperatura de trabajo 10-50 ºC
 LED Verde  Alimentación
LED Rojo Límite de pH

Pines

 To  Temperatura
 Do  Señal del límite de pH
 Po  Valor de pH en V
 G  Masa del circuito analógico
 G  Masa de Alimentación
 V+ Alimentación (5V)

Calibrar el sensor

Como podemos observar que en el circuito hay dos potenciómetros. El que está mas pegado al conector BNC de la sonda es el que regula el offset, el otro es el del límite de pH.

  • Offset el rango de media de la sonda oscila entre valores negativos y positivos. El 0 representa un pH de 7.0. Para poder utilizarlo con Arduino este circuito añade un valor de offset al valor medido por la sonda, de esta forma el ADC solo tendrá que tomar muestras de valores positivos de tensión. Por lo tanto forzaremos un pH de 7.0 desconectando la sonda del circuito y cortocircuitando la parte interna del conector BNC con la exterior. Con un multímetro medimos el valor del pin Po y ajustamos el potenciómetro para que sea 2.5V.
  • Límite de pH: Este potenciómetro es para establecer una valor del límite del circuito sensor de pH que hace que el LED rojo se encienda y la señal de pin Do se ponga en ON.

 

Además tenemos que calcular la conversión del voltaje que nos dará el sensor de pH para lo que necesitaremos dos valor de referencia de pH y medir el voltaje que devuelve el sensor en el pin Po. Lo más recomendable es utilizar una solución se calibración en sobre, también las hay en líquido pero es más fácil conservar las de sobre. Estas soluciones se venden en diferentes valores aunque los más comunes son  pH 4.01, pH 6.86 y pH 9.18.

Gráfica de la ecuación de conversión entre voltaje y pH medido. y= -5.70 * x + 21.34

Utilizando los sobres con pH 4.01 y pH 6.86 obtenemos los voltages en el pin Po 3.04V y 2.54V respectivamente. El sensor es lineal por lo que tomando dos puntos podemos deducir la ecuación para convertir el voltaje medido a pH. La formula general sería y=mx+b, por lo que tenemos tenemos que calcular m y b ya que x sería el voltaje e y el pH. El resultado es y=-5.70x+21.34.

Conexión con Arduino

Para conectarlo con Arduino necesitaremos una entrada analógica (A0), alimentación (5V) y dos GND que en realidad en el circuito del sensor están separadas pero podemos usar la misma.

Código

El código consiste en tomar 10 muestras de la entrada analógica A0, ordenarlas y descartas la más alta y la más baja y calcular la media con las seis muestras restantes convirtiendo este valor a voltaje en la variable pHVol, a continuación utilizando la ecuación que hemos calculado con los valores de referencia de pH convertimos pHVol a pHValue y lo mandamos en el puerto serie para verlo en el monitor serie.

const int analogInPin = A0; 
int sensorValue = 0; 
unsigned long int avgValue; 
float b;
int buf[10],temp;
void setup() {
 Serial.begin(9600);
}

void loop() {
 for(int i=0;i<10;i++) 
 { 
  buf[i]=analogRead(analogInPin);
  delay(10);
 }
 for(int i=0;i<9;i++)
 {
  for(int j=i+1;j<10;j++)
  {
   if(buf[i]>buf[j])
   {
    temp=buf[i];
    buf[i]=buf[j];
    buf[j]=temp;
   }
  }
 }
 avgValue=0;
 for(int i=2;i<8;i++)
 avgValue+=buf[i];
 float pHVol=(float)avgValue*5.0/1024/6;
 float phValue = -5.70 * pHVol + 21.34;
 Serial.print("sensor = ");
 Serial.println(phValue);

 delay(20);
}

 

Comments are disabled