CAP 5- Monitorización del PH

jmcadsl

Miembro Honorífico
17 Ene 2010
851
España
Provincia
Madrid
En este capítulo vamos a ver lo fácil que es tener una lectura del valor del ph del agua de nuestro acuario, o bien, de la camara del reactor de calcio etc etc...

Hardware:
Para medir el ph necesitamos un modulo que sea capaz de leer una sonda de Ph y "traducirla" para que nuestra placa arduino sea capaz de entenderlo.

Tenemos varios modulos de lectura de ph en el mercado, algunos son por comunicacion por un puerto analógico, otros son por el puerto serial.
Yo os aconsejo que lo hagais por un puerto analógico ya que por comunicaciíon serial es un poco más complejo a la hora de la programación.

Este sería un módulo de lectura de PH:
moduloph.png

Si teneis la aTreef Shield CBOX tendreis que conectar la sonda de ph en el conector de la placa:
shieldph.jpg

Para que la lectura sea lo más fiable posible lo primero que hay que hacer cuando instalemos la sonda o pongamos una nueva es hacer una calibración.

Yo esto lo hago de la siguiente manera, 1º pongo la sonda en un liquido Ph10 durante 5minutos remobiendolo de vez en cuando, guardamos este valor en memoria, posteriormente limpiamos la sonda y la ponemos en un liquido Ph7 otros 5minutos y guardamos tambien en memoria este valor.

Posteriormente lo que vamos a hacer es ir midiendo el valor de la sonda de ph y compararlo con las lecturas que obtuvimos con ph7 y ph10 y así obtener el valor del ph actual.

Software:

Os adjunto el código para la lectura de ph, como vereis si se deja el botón pulsado al encender el controlador entraremos en el menu de calibración de ph, si no tocamos nada comenzaremos con las lecturas.

Código:
//CAP5 Ajuste y Lectura sonda PH

//LIBRERIAS
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>// Debemos instalar la libreria LiquidCrystal_I2C en la carpeta "libraries" del arduino IDE
LiquidCrystal_I2C lcd(0x27,16,2);  // direccion i2c(puede variar segun la placa) del LCD y columnas,lineas
#include <EEPROM.h>//Leer y escribir valores en memoria
#include <EEPROMAnything.h>//Libreria que nos permite guardar en memeoria valores con comas o mayores de 255

/*PINES CONECTADO EN ARDUINO MEGA
ANALOGICOS:
A0 - Sonda de PH
A14 - Potenciometro

DIGITALES:
D19 - Boton
D20 - SDA I2C  / LCD
D21 - SCL I2C  / LCD

*/

//VARIABLES
byte boton=19, PHPin=A0, pot=A14; //declaramos que la variable de los pines donde esta conectado boton y potenciometro
int menupot;// Numero de menu 
byte vboton,menus, menuactual,cambiomenu;//variables para los menus
int vph7,vph10,parcialph,buffvph;//Ajuste PH
float sumavph, vph,vphmax,vphmin,phmin,phmax;



  
  
void setup()
{
//MEMORIA
//PH  
  EEPROM_readAnything(60, vph7);//Leemos en la posicion de memoria 60 el valor para ph7
  EEPROM_readAnything(63, vph10);//Leemos en la posicion de memoria 63 el valor para ph10
  
  
//CONFIG PINES  
  pinMode(boton, INPUT);//Inidicamos que es  una entrada 
  pinMode(pot, INPUT);
  pinMode(PHPin, INPUT);
  
  lcd.init();//Inicializamos el LCD
  lcd.backlight();//Encendemos la luz
  lcd.print(" CAP5 SONDA PH ");
  
  delay(2000);//Hacemos una pausa de 2 segundos
  lcd.init();//Al inicializar el LCD tambien borramos la pantalla
  if (digitalRead(boton)==HIGH)//Si pulsamos el boton al encender el controlador entramos al menu de calibracion de sonda ph
      {
       csondaph();
      }   
}

void loop()
{

ph();

delay(500);
}


////OTRAS FUNCIONES

void sboton()
{
 vboton=0;
 vboton=digitalRead(boton);delay(100);
 if (vboton==1) {lcd.noBacklight();delay(200);lcd.backlight();menuactual=0;}
}


void ph()
{
int i;
vph=0;
parcialph=0;
sumavph=0;
for(i = 0;i <= 5;i++) //Hacemos 6 lecturas para mayor precision
    {
     parcialph = analogRead(PHPin);
     parcialph= map (parcialph, vph7, vph10, 700, 1000);
     sumavph = (sumavph + parcialph);
     delay(25);
    }
sumavph = sumavph/6;

vph=(sumavph/100);

if (vph > vphmax) vphmax=vph;
if (vph < vphmin) vphmin=vph;
if (vphmin==0) vphmin=vph;

lcd.clear();
lcd.print("PH actual: ");
lcd.print(vph);

lcd.setCursor(0,1);
lcd.print("Max:");
lcd.print(vphmax);
lcd.print("Min:");
lcd.print(vphmin);
delay(3000);

}




void csondaph()
{
int i=0;
parcialph=0;
buffvph=0;
vph=0;
lcd.print("Calibrando PH10");//Introducimos sonda de ph en liquido ph10 durante 5 minutos removiendo de vez en cuando
 delay(1000);
 vph=0;vboton=0;
 while (vboton==0)
  {
    buffvph=0;parcialph=0;i=0;
    for(i = 0;i <= 30;i++) 
    {
      parcialph = analogRead(PHPin);
      buffvph=(buffvph+parcialph);
      delay(25);
    }
    buffvph = (buffvph/31);
    lcd.setCursor(0,1);lcd.print(buffvph);delay(100);
    sboton();//Menu para ver si se ha pulsado boton
  }
 lcd.clear();
 vph10=buffvph;
 EEPROM_writeAnything(63, buffvph); //Guardamos la lectura en posicion de memoria 63 para vph10
 delay(500);
 
lcd.print("Calibrando PH7.0");//Introducimos sonda de ph en liquido ph7 durante 5 minutos removiendo de vez en cuando
delay(1000);vboton=0;
while (vboton==0)
  {
    buffvph=0;parcialph=0;i=0;
    for(i = 0;i <= 30;i++) 
    {
      parcialph = analogRead(PHPin);
      buffvph = (buffvph+parcialph);
      delay(25);
    }
    buffvph = (buffvph/31);
    lcd.setCursor(0,1);lcd.print(buffvph);delay(100);
    sboton();
  }
 lcd.clear();
 vph7=buffvph;
 EEPROM_writeAnything(60, buffvph);//Posicion de memoria para vph7
 delay(100);
 
 lcd.print("Sonda calibrada");
 delay(1000);
 vph=0;
 delay(3000);
  
}


Espero que os sirva de ayuda.
Un saludo.
Jorge.
 
Última edición:
27 Dic 2008
92
españa
Provincia
madrid
Buenas Jorge,

donde se pueden descargar las librerias que has incluido en este capitulo'??? Y la oniware del capitulo siguiente?
 

jmcadsl

Miembro Honorífico
17 Ene 2010
851
España
Provincia
Madrid
  • Iniciador del tema
  • Moderador
  • #3
Hola.
Desde este enlace podeis descargar todas las librerias "extras" del controlador.LIBRERIAS
Un saludo
 
1 Jul 2009
627
españa
Provincia
huelva
jorge la libreria de EEPROMAnything.h una vez istalada en la carpeta LIBRARIES ,me comenta que no esta declarada .incluso al intentar importarla esta no aparece ,utilizo la version 1.0.3 y 1.0.4 .en ninguna de ellas hace efecto .incluso copiando el contenido en una nueva pestaña segun la pag de arduino .surge efecto .
 
1 Jul 2009
627
españa
Provincia
huelva
jorge la libreria de EEPROMAnything.h una vez istalada en la carpeta LIBRARIES ,me comenta que no esta declarada .incluso al intentar importarla esta no aparece ,utilizo la version 1.0.3 y 1.0.4 .en ninguna de ellas hace efecto .incluso copiando el contenido en una nueva pestaña segun la pag de arduino .surge efecto .
solucionado con una version superior
 

jmcadsl

Miembro Honorífico
17 Ene 2010
851
España
Provincia
Madrid
  • Iniciador del tema
  • Moderador
  • #9
Hola djdevill
Una busqueda rápida en google....


Un saludo
 
29 Mar 2013
299
Sant Andreu de la Barca
Provincia
barcelona
Hola djdevill
Una busqueda rápida en google....


Un saludo
Perdón, no me he explicado para nada bien.

Tengo el de ph y el de ORP y los quiero controlar con el serial port connector de la misma marca.

Este también lleva su código pero no logro hacer según me interese me muestre las lecturas de uno o de otro y realizar la calibración .

Gracias, aunque creo que ya se va el tema del capítulo.

Saludos
 
Arriba