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; }