Herramientas de usuario

Herramientas del sitio


sensores:phmether

Medidor de PH

El pH es una medida de acidez o alcalinidad de una disolución. El pH indica la concentración de iones hidronio [H3O+] presentes en determinadas sustancias. Este kit permite medir de forma sencilla el pH de un líquido gracias a su placa controladora que ofrece un valor analógico proporcional a la medición. El controlador tiene un potenciometro multivuelta que permite la correcta calibración de la sonda.

Se recomienda limpiar bien la sonda en cada cambio de medición para no alterar su precisión. Ten en cuenta que está diseñada para mediciones puntutales (no permanentes). Si buscas una sonda más duradera, disponemos de una versión profesional aquí.

La sonda es bastante frágil y por lo tanto debe ser tratada con amor y cariño! Incluye una muestra con pH 4.0 para calibrarla y dado que la salida de la placa ofrece un valor analógico, es muy sencillo utilizarla con tu microcontrolador favorito con tan solo una entada ADC.

Características:

  Alimentación: 5.00V
  Dimensiones: 43x32mm (controlador)
  Rango de medición: 0-14 pH
  Temperatura de medición: 0-60 ℃
  Precisión: ± 0.1pH (25 ℃)
  Tiempo de respuesta: ≤ 1min
  Sonda de pH con conector BNC
  Controlador pH 2.0 (3 pines)
  Ajuste de ganancia
  Indicador LED

http://www.instructables.com/id/Vertical-Hydroponic-Farm/?ALLSTEPS

http://tienda.bricogeek.com/otros/581-sensor-analogico-de-ph.html

/*
 # This sample code is used to test the pH meter V1.0.
 # Editor : YouYou
 # Ver    : 1.0
 # Product: analog pH meter
 # SKU    : SEN0161
*/
#define SensorPin A0            //pH meter Analog output to Arduino Analog Input 0
#define Offset 0.00            //deviation compensate
#define LED 13
#define samplingInterval 20
#define printInterval 800
#define ArrayLenth  40    //times of collection
 
int pHArray[ArrayLenth];   //Store the average value of the sensor feedback
int pHArrayIndex=0;    
void setup(void)
{
  pinMode(LED,OUTPUT);  
  Serial.begin(9600);  
  Serial.println("pH meter experiment!");    //Test the serial monitor
}
 
void loop(void)
{
  static unsigned long samplingTime = millis();
  static unsigned long printTime = millis();
  static float pHValue,voltage;
  if(millis()-samplingTime > samplingInterval)
  {
      pHArray[pHArrayIndex++]=analogRead(SensorPin);
      if(pHArrayIndex==ArrayLenth)pHArrayIndex=0;
      voltage = avergearray(pHArray, ArrayLenth)*5.0/1024;
      pHValue = 3.5*voltage+Offset;
      samplingTime=millis();
  }
  if(millis() - printTime > printInterval)   //Every 800 milliseconds, print a numerical, convert the state of the LED indicator
  {
	Serial.print("Voltage:");
        Serial.print(voltage,2);
        Serial.print("    pH value: ");
	Serial.println(pHValue,2);
        digitalWrite(LED,digitalRead(LED)^1);
        printTime=millis();
  }
}
 
double avergearray(int* arr, int number){
  int i;
  int max,min;
  double avg;
  long amount=0;
 
  if(number<=0){
    Serial.println("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;
}
sensores/phmether.txt · Última modificación: por manuel.floresv