# DFROBOT pH Meter Pro V2 and Peristaltic pumps setup

**URL:** <https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116>\
**Category:** XOD Programming Questions\
**Created:** [April 22, 2021, 12:43am UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116 "2021-04-22T00:43:16Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![genghiskhano](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/genghiskhano/32/2952_2.png) [@genghiskhano](https://forum.xod.io/u/genghiskhano)\
**Post date:** [April 22, 2021, 12:43am UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/1 "2021-04-22T00:43:16Z")

</div>

Hello everybody,  
I have a DFROBOT pH Meter Pro V2 and 2 Peristaltic pumps that I want to use to maintain the PH level between 5.5 and 6.5. For now I want this done by pressing a button I will atomized it at a later time.  
The main problem I have is that I tried following this post:

> [@\[I want a node\] Ph meter and TDS meter node driver](https://forum.xod.io/t/i-want-a-node-ph-meter-and-tds-meter-node-driver/3312):
>
> Hello. Help write a sensor driver node. There is such a code from the manufacturer, but I don’t understand how to enter it into the program XOD 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(50); } 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; …

But the formula doesn’t work for my PH meter, I’ve run the sample code below to calibrate using the Arduino IDE and I was able to calibrate my PH sensor without problems:

```auto
/*
 * file DFRobot_PH.ino
 * @ https://github.com/DFRobot/DFRobot_PH
 *
 * This is the sample code for Gravity: Analog pH Sensor / Meter Kit V2, SKU:SEN0161-V2
 * In order to guarantee precision, a temperature sensor such as DS18B20 is needed, to execute automatic temperature compensation.
 * You can send commands in the serial monitor to execute the calibration.
 * Serial Commands:
 * enterph -> enter the calibration mode
 * calph -> calibrate with the standard buffer solution, two buffer solutions(4.0 and 7.0) will be automaticlly recognized
 * exitph -> save the calibrated parameters and exit from calibration mode
 *
 * Copyright [DFRobot](http://www.dfrobot.com), 2018
 * Copyright GNU Lesser General Public License
 *
 * version V1.0
 * date 2018-04
 */

#include "DFRobot_PH.h"
#include <EEPROM.h>

#define PH_PIN A1
float voltage,phValue,temperature = 25;
DFRobot_PH ph;

void setup()
{
    Serial.begin(115200);  
    ph.begin();
}

void loop()
{
    static unsigned long timepoint = millis();
    if(millis()-timepoint>1000U){ //time interval: 1s
        timepoint = millis();
        //temperature = readTemperature(); // read your temperature sensor to execute temperature compensation
        voltage = analogRead(PH_PIN)/1024.0*5000; // read the voltage
        phValue = ph.readPH(voltage,temperature); // convert voltage to pH with temperature compensation
        Serial.print("temperature:");
        Serial.print(temperature,1);
        Serial.print("^C pH:");
        Serial.println(phValue,2);
    }
    ph.calibration(voltage,temperature); // calibration process by Serail CMD
}

float readTemperature()
{
  //add your code here to get the temperature from your temperature sensor
}

```

What would be the formula to get the PH between 1 and 14 like I do under Arduino and not in this format:  
 ![image](https://canada1.discourse-cdn.com/flex027/uploads/xod/original/2X/a/a3d1d8e3df2f658e463c11bd7610f30734d834b6.png)

Thank you all for your help.

---

<div class="post-metadata">

**Author:** ![gweimer](https://avatars.discourse-cdn.com/v4/letter/g/a9adbd/32.png) [@gweimer](https://forum.xod.io/u/gweimer)\
**Post date:** [April 22, 2021, 2:17am UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/2 "2021-04-22T02:17:47Z")

</div>

There was a previous discussion on this: [[I want a node] Ph meter and TDS meter node driver](https://forum.xod.io/t/i-want-a-node-ph-meter-and-tds-meter-node-driver/3312/)

---

<div class="post-metadata">

**Author:** ![genghiskhano](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/genghiskhano/32/2952_2.png) [@genghiskhano](https://forum.xod.io/u/genghiskhano)\
**Post date:** [April 22, 2021, 3:49am UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/3 "2021-04-22T03:49:20Z")

</div>

I saw that but for whatever reason the formula to convert the PH sensor output doesn’t give me the right reading using the formula on that post as you can see on the picture below:  
 ![image](https://canada1.discourse-cdn.com/flex027/uploads/xod/original/2X/6/6cdc072bb6ee6dc3ccf54c7051fd0c62853d2c67.png)

Thanks,

---

<div class="post-metadata">

**Author:** ![eqs-aruy](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/eqs-aruy/32/2967_2.png) [@eqs-aruy](https://forum.xod.io/u/eqs-aruy)\
**Post date:** [April 22, 2021, 12:50pm UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/4 "2021-04-22T12:50:50Z")

</div>

hello @genghiskhano  
Le pediremos apoyo a @franco-scev como traductor (Español / inglés).  
Intentaré ayudarte.  
Según mi experiencia con electrodos de PH, Conductividad, y otros transductores de membranas de permeabilidad selectiva de iones por ej: [+K], [+Na], etc… La electrónica asociada a todos ellos siempre es muy sensible a los ruidos, por ser amplificadores de instrumentación con muy alta impedancia de entrada.  
Por lo tanto usted debe primero asegurarse tener un muy buen tratamiento de la relación Señal/Ruido antes de continuar con otra fase del tratamiento de su señal.  
Una solución practica si usted no cuenta con un osciloscopio, puede usar el Serial Plotter del Arduino IDE, Enviando la señal directa de su módulo de PH, con la mayor frecuencia de muestreo posible y la mayor velocidad en Baudios del puerto serie. De esta forma usted tendría que ver un valor estable y continuo, tal como si estaría viendo una señal de Corriente Continua CC o lo mas estable posible.  
Si usted no ve eso en este tipo de módulo deberá asumir que su problema no es el software que está desarrollando. Su problema es el ruido y haga lo que haga programando no tendrá el resultado esperado.  
Si usted no sabe como hacerlo todo este trabajo previo, lo ayudaré también con eso.  
Cumplir con este paso es muy importante cuando se trata de Instrumentación y/o Metrología, porque el ruido puede sumarle falsas componentes de continua en los circuitos desviando los valores medidos.  
Si usted ya resolvió esto en su proyecto tendrá que recordar que en este tipo de circuitos con amplificadores de instrumentación con alta impedancia de entrada (siempre) deben tener sus filtros pasabajos en el Hardware y en lo posible también de software.  
Infiero que el código que usted tiene en Arduino IDE le permitió calibrar porque la librería de DFRobot\_PH.CCP está haciendo el filtrado pasa bajo.  
Le pido que sume el Datasheet de su dispositivo. eso puede ayudar mucho para darle mas recomendaciones y buenas practicas en la instrumentación.  
Usted puede hacer un simple filtro pasa bajos digital haciendo un promedio de algunas pocas medidas. estimo que entre 3 a 15 medidas puede ser más que suficiente.  
Cuanto mas ruido su circuito tendrá que aumentar la cantidad de mediciones, por esa razón siempre es mejor eliminar ruido primero.  
Mientras Usted verifica esto yo tratare de hacer para Usted una librería XOD a su necesidad.  
No se olvide. La regla número uno de la instrumentación es eliminar el ruido antes de hacer el tratamiento de señales.  
GIGO: Garbage comes in, Garbage comes out

---

<div class="post-metadata">

**Author:** ![eqs-aruy](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/eqs-aruy/32/2967_2.png) [@eqs-aruy](https://forum.xod.io/u/eqs-aruy)\
**Post date:** [April 22, 2021, 1:31pm UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/5 "2021-04-22T13:31:16Z")

</div>

Imagino que usted necesita hacer esto para un proyecto productivo o industria, y la contabilidad de sus medidas de PH pueden ser criticas o sensibles a los mejores resultados esperados.  
La medida de PH tiene una desviación en función de la temperatura.  
Le dejo esto, quizás pueda ser útil para Usted:  
[https://es.omega.com/prodinfo/medidor-ph.html](https://es.omega.com/prodinfo/medidor-ph.html)  
😉

---

<div class="post-metadata">

**Author:** ![genghiskhano](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/genghiskhano/32/2952_2.png) [@genghiskhano](https://forum.xod.io/u/genghiskhano)\
**Post date:** [April 22, 2021, 4:17pm UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/6 "2021-04-22T16:17:48Z")

</div>

Muchas gracias por tu ayuda, no necesito traduccion el problem no es el ruido .  
El sensor PH me da la leida correcta bajo Arduino IDE como no puedes ver:  
 ![image](https://canada1.discourse-cdn.com/flex027/uploads/xod/original/2X/5/5a9a42adaaac9fa375833bd67519b78d4c18738f.png)

no se que es lo que XOD hace para darme el resultado en el formato que puedes ver en la primera foto en este post. necesito la formula para convertir el resultado de XOD a el mismo resultado que me da el Arduino IDE.

Saludos.

---

<div class="post-metadata">

**Author:** ![genghiskhano](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/genghiskhano/32/2952_2.png) [@genghiskhano](https://forum.xod.io/u/genghiskhano)\
**Post date:** [April 22, 2021, 4:21pm UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/7 "2021-04-22T16:21:23Z")

</div>

Yo tengo un medidor manual, para verificar el PH.  
de repente tu pedes darme la formula exacta del condigo de arduino que use para calibrar el medidor:

```auto
#include "DFRobot_PH.h"
#include <EEPROM.h>

#define PH_PIN A1
float voltage,phValue,temperature = 25;
DFRobot_PH ph;

void setup()
{
    Serial.begin(115200);  
    ph.begin();
}

void loop()
{
    static unsigned long timepoint = millis();
    if(millis()-timepoint>1000U){ //time interval: 1s
        timepoint = millis();
        //temperature = readTemperature(); // read your temperature sensor to execute temperature compensation
        voltage = analogRead(PH_PIN)/1024.0*5000; // read the voltage
        phValue = ph.readPH(voltage,temperature); // convert voltage to pH with temperature compensation
        Serial.print("temperature:");
        Serial.print(temperature,1);
        Serial.print("^C pH:");
        Serial.println(phValue,2);
    }
    ph.calibration(voltage,temperature); // calibration process by Serail CMD
}

float readTemperature()
{
  //add your code here to get the temperature from your temperature sensor
}
```

---

<div class="post-metadata">

**Author:** ![eqs-aruy](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/eqs-aruy/32/2967_2.png) [@eqs-aruy](https://forum.xod.io/u/eqs-aruy)\
**Post date:** [April 23, 2021, 8:37am UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/8 "2021-04-23T08:37:52Z")

</div>

En el siguiente respuesta te hago el equivalente del código que tienes ahí en XOD y publico la primera Versión de la Biblioteca.  
Juntos trataremos de depurara .  
No dejaría de hacer un proceso mas riguroso y preciso de ajustes. porque si su proyecto está destinado a la cria de peses para carne, PH, Temperatura, DBO y DQO son críticos para sus rendimientos de conversión de nutrientes a peso y la salubridad de su estanques, perdiendo mucho margen de ganancia bruta.  
Voy a hacer lo posible para desarrollarte el modelo matemático que necesitas para que te quede un instrumento lo mas confiable posible. Pero necesito que me mandes las mediciones siguientes con las soluciones a una temperatura a no menos de 22°C y que no se pasen de 27°C,  
Ideal, sería si están a 25°C y lo más parecido posible, la temperaturas de las muestras.  
Ten en cuenta que yo desconozco el desempeño de tu módulo, por Ej si entrega los resultados en un rango entre 0V a 3.3V o lo hace entre 0V a 5V. Si su escala es directa o inversa. etc. Todo dato técnico que puedas sumar ayuda mucho.

Toma tres medidas analógicas en Volts, esperando que estabilice las mediciones con la mejor resolución que puedas a la salida de tu módulo.  
1°Un PH conocido lo más alcalino que puedas.  
2° repite el paso anterior pero ahora con una solución lo mas ácida que puedas.  
3° aunque no es necesario puede ayudar repite con PH lo más neutro que puedas  
Has una tabla similar a esta y mándame publica aquí el resultado.  
te tendría que quedar algo así

PH…Volts …°C  
3.2 …X,XX Volts … 24.3°C  
6.8…X,XX volts …25.7°C  
12,4…X,XX Volts …24.6°C

---

<div class="post-metadata">

**Author:** ![genghiskhano](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/genghiskhano/32/2952_2.png) [@genghiskhano](https://forum.xod.io/u/genghiskhano)\
**Post date:** [April 23, 2021, 3:50pm UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/9 "2021-04-23T15:50:27Z")

</div>

Hola tome mas de tres medidasm, dime si esto te sirve y si no dejame saber.  
muchas gracias por toda tu ayuda.

temperature:24.3^C pH:2.65  
temperature:24.6^C pH:2.78  
temperature:25.0^C pH:5.86  
temperature:24.5^C pH:3.95  
temperature:25.7^C pH:7.05  
temperature:26.0^C pH:11.35  
temperature:24.6^C pH:11.65

---

<div class="post-metadata">

**Author:** ![eqs-aruy](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/eqs-aruy/32/2967_2.png) [@eqs-aruy](https://forum.xod.io/u/eqs-aruy)\
**Post date:** [April 24, 2021, 1:31am UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/10 "2021-04-24T01:31:39Z")

</div>

Falta una medica en cada vector medido, tiene tres valores, y no importa el orden en que los pases.  
[Temperatura, PH, mV]  
_ **Donde** _  
\*\*Temperatura:\*\*es la temperatura de la solución medida y es mejor cuanto más próxima esté estabilizada a 25°C

**PH** : es el valor medido en la solución con el PHmeter que tienes de referencia.

**mV:** son los milivolts medidos con tu tester a la salida del modulo (la salida que conectarías a la entrada analógica de tu microcontrolador.

**Nota:** por lo que veo la mayoría de estos dispositivos entregan a su salida la medición entre 0 Volts a 3 Volts. es un dato que necesito saber de tu dispositivo. Por favor confirma ese dato.  
Existen tres grandes categorías de dispositivos de este tipo.  
0 a 10V (Casi ya no se ven).  
0 a 5v (son los más comunes de encontrar y mas fácil adaptar en la mayoría de los aurduinos)  
0 a 3V (los más nuevos).

Es importante porque puede hacer que las medidas sean mal convertidas si esto no es tenido en cuenta.

---

<div class="post-metadata">

**Author:** ![genghiskhano](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/genghiskhano/32/2952_2.png) [@genghiskhano](https://forum.xod.io/u/genghiskhano)\
**Post date:** [April 24, 2021, 2:22am UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/11 "2021-04-24T02:22:04Z")

</div>

Mañana te consigo la informacion que nececitas.  
My sensor esta connectado a 5V  
por que esta tan complicado hacer esto en XOD? el codigo para probar el sensor trabaja en el Arduino IDE sin ningun problema, no se puede sacar lo que necesitas de ese codigo?  
Gracias

---

<div class="post-metadata">

**Author:** ![eqs-aruy](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/eqs-aruy/32/2967_2.png) [@eqs-aruy](https://forum.xod.io/u/eqs-aruy)\
**Post date:** [April 24, 2021, 2:33am UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/12 "2021-04-24T02:33:31Z")

</div>

No es que sea tan complicado en Xod Todo lo contrario solo que necesito la información mínima.  
Solo es que me demandaría muchas mas horas de trabajo hacer la ingeniería inversa. No dispongo de ese tiempo para proyectos no rentados.  
Solo dedico unos cuantos minutos al día para donarlos ayudando a que alguien que quiere y necesite aprender o desarrollar su propio emprendimiento.  
Mi forma de colaborar con tigo no es hacer lo que puedes hacer por si solo sin mi ayuda, ni hacer tu trabajo.  
Intento colaborar a tu proyecto.

---

<div class="post-metadata">

**Author:** ![genghiskhano](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/genghiskhano/32/2952_2.png) [@genghiskhano](https://forum.xod.io/u/genghiskhano)\
**Post date:** [April 24, 2021, 2:34am UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/13 "2021-04-24T02:34:57Z")

</div>

Gracias aprecio mucho tu ayuda.

---

<div class="post-metadata">

**Author:** ![genghiskhano](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/genghiskhano/32/2952_2.png) [@genghiskhano](https://forum.xod.io/u/genghiskhano)\
**Post date:** [April 24, 2021, 11:52pm UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/14 "2021-04-24T23:52:46Z")

</div>

Aqui sta la informacion que me pedistes:

 ![image](https://canada1.discourse-cdn.com/flex027/uploads/xod/original/2X/0/03bdfbf8c8d4f3b59bec77ba322a3ac69b0760f1.png)

gracias,

---

<div class="post-metadata">

**Author:** ![eqs-aruy](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/eqs-aruy/32/2967_2.png) [@eqs-aruy](https://forum.xod.io/u/eqs-aruy)\
**Post date:** [April 25, 2021, 7:59pm UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/15 "2021-04-25T19:59:00Z")

</div>

# Un poco de Ingeniería Inversa e Instrumentación

Estimado @genghiskhano, veremos que en realidad todo esto es muy simple cuando  
entendemos cómo funciona y se tiene la información necesaria lo más adecuada y  
precisa.

### Empecemos por el final

Seguro que muy pocos quieren entender de donde sale una ecuación tan simple y  
solo quieren ir al grano. Por eso dejo aquí una primera aproximación de la  
función, que puede ser más que suficiente para muchos proyectos simples.

_Nota: No hay garantía que cumpla todas las necesidades o proyectos, lo hice lo  
más versátil para que se pueda adaptar a cualquier módulo, aunque todo el  
análisis está enfocado a un tipo en particular. Con un poco de análisis que  
pueda aportar Usted desde lo que se explica en este artículo podrá ajustar estos  
rudimentos básicos de instrumentación a los requerimientos e exigencias de su  
proyecto._

 ![](https://canada1.discourse-cdn.com/flex027/uploads/xod/original/2X/4/46f00f9cb9dc77e3b33aaabdaea2487ac9eb1954.png)

puede encontrarlo  
[aqui](https://github.com/eqs-ar/Instrumentation-XOD/tree/df8eb56fd1bd0b3d9a32174b299af047c4a60a93/PHmeter)

Seguiré mejorando este contenido si alguien lo necesita

_Nota: Si no tiene los resultados que Ud. necesita, es muy posible que necesite  
profundizar algunos conocimientos. No dude en pedirlos, si no están a mi alcance  
juntos investigaremos hasta resolver el problema._

# Para los que quieran profundizar

Intentaré dejar un paso a paso para aquellos que necesiten aprender  
Instrumentación aplicando XOD.

Primero y principal tenemos que saber que no estamos queriendo hacer un proyecto  
escolar donde podemos medir el PH del limón, vinagre, leche, agua del grifo,  
lejía, etc. lo que demanda muy poca precisión, al igual que medir el PH de una  
piscina. En estos casos, tener una desviación de las medidas no significa gran  
problema para los fines prácticos de la didáctica escolar.

Debiéramos saber que estaremos operando con instrumental con criterio de  
laboratorio industrial como mínimo. Lo que nos exige no superar una desviación  
de la medida que no supere el (+/- 0.2%) de error a fondo de escala para que  
resulte un instrumento confiable para nuestros requerimientos.

Lo otro que hay que saber en el caso de medir PH es que cuando estamos midiendo  
con electrónica el PH, estaremos tomando dos dimensiones, (la tensión en mV que  
entrega el electrodo de vidrio y la temperatura de la solución) para  
transformarla en una sola medida denominada PH.

Es usual ver, que por lo general no se mide la temperatura en muchos  
instrumentos de PH. Eso nos está dando un indicio; es posible que no sean de  
buena calidad sus medidas, aunque toda la tecnología asociada a ello si lo sea.

De aquí podemos deducir una regla de oro de la instrumentación y en metrología.

> **“Los métodos y criterios de medición siempre son mas importante que el  
> instrumento, porque de ellos depende lograr la mejor medida que pueda  
> entregar ese instrumento”**

Apliquemos esto al problema que nos trajo para resolver @genghiskhano.

## Introducción a la ingeniería inversa

_Prestemos atención al método deductivo, a partir de alguna hipótesis  
probabilísticas sobre las incertidumbre que se tiene._

_Con fines didácticos lo voy a plantear como un dialogo._

### Paso 1

@genghiskhano. **No resulta muy confiable la medida que Usted nos da en mV**..

**¿porqué?**

Porque estamos esperando valores entre (0..3.3)V o (0..5)V esperaríamos que el  
valor de PH7 pueda ser próximo 1.5V o 2.5V según cada caso. Los valores que  
vemos están muy por debajo.

## Podemos hacer algo con el resto de la información?

Claro que sí. Los valores que usted muestra en XOD-watch puede ser suficiente.

Una vez más vemos primero el valor de **PH7,** porque esperamos ahí ver el  
Offset del instrumento.

_Los que aún no entienden que significan a medida que avancemos podrá descubrir  
de que se trata, esa es la intención, que también aprenda por si mismo._

Sin entrar en un detalle profundo de la matemática implícita, sabemos que  
`analog-reade` nos entrega valores de 0@1 independiente del Vref del ADC.

Esperaríamos que si estaría bien ajustado para nuestro instrumento para este  
caso siempre deberíamos esperar un valor de [0.5] para ese caso.

Con un poco de matemática podemos inferir que nuestro Vref de nuestro ADC tiene  
5V y el valor visto en el watch de [0.32] representan 1.6Volts entrando en  
nuestra entrada analógica [A1].

Estamos con un corrimiento del Offset de 0.1Volts por arriba de los 1.5Volts  
esperado. Es mucho para nuestra primer Hipotesis, no es bueno para ella, pero  
podemos hacer un reajuste de la hipótesis porque si estaríamos operando con  
3.3Va fondo de escala, el Offset tendría que ser de 1.65V eso mejora nuestra  
situación, aunque aún no podemos confirmarlo con este solo indicio.

Por el momento no descartemos la primera hipótesis asumiendo ese corrimiento  
como posible, igual podemos seguir aproximando una primera ecuación que nos  
aproxime al valor en PH esperado.

Puede tener muchos orígenes esa desviación, pero también tiene muchas soluciones  
tanto por Software como por Hardware, que podemos discutir en futuras  
discusiones si alguien lo requiere.

## Ahora sabemos dos factores muy importantes.

- Nuestro ADC está operando con Vref=5V

- Nuestro módulo nos entrega valores entre 0V y muy probablemente 3.3V o 3V

_NOTA: Aunque en el segundo punto hay algunas posibles dispersiones de error  
porque no podemos estar seguros si nuestro mayor valor será 3.3V o 3V, con un  
poco de más trabajo podemos resolverla hasta tener una excelente medida de  
laboratorio_.

## Ahora necesitamos conocer la Pendiente

Para ello veremos el valor del segundo punto de Calibración, PH4 -\>[0.43] x 5V=  
2.15Volt

> Tomemos por verdadero por el momento que nuestra escala es una recta  
> perfecta

De ser esto cierto podemos deducir con Matemática muy simple que la pendiente es  
negativa. y si se trata de un fondo de escala de 3Volts deberíamos tener una  
curva operativa ideal algo similar a la línea roja:

 ![](https://canada1.discourse-cdn.com/flex027/uploads/xod/original/2X/3/3d2086e25d3f9e39cdbddb55ad241628a2f3d7ba.png)

Pero tenemos un potencial operativo (Línea Verde) a nuestra configuración de  
nuestro ADC que estamos desperdiciando y perdiendo mucha resolución (lo que  
queda por aprovechar entre 3V y 5V que representa una pérdida del 40% de nuestra  
resolución).

Esto impacta acentuando nuestros errores y la caída de la calidad y  
confiabilidad de nuestras mediciones.

_Con solo reprogramar el Vref de nuestro ADC podemos resolver y mejorar esto,  
sin tener que hacer modificaciones del Hardware_

Para simplificar las matemáticas diremos que la pendiente (p) de nuestra recta  
operativa la calcularemos Así si operamos con valores de entrada **(e)** en  
Volts **(p) = -14 / 3 = -4.66666…** Así si operamos con valores de entrada  
**(e)** en Razones Absolutas (0..1) **(p) = -14 / .6 = 23.3333…** Y si todo  
sería ideal, nuestra Función operativa sería esta: **PH = (p) x (e)+14**

# 😓 La Dura realidad de la instrumentación nunca es ideal

Cuando vamos a la práctica nos encontramos con esto. Lo tenemos como conjetura  
de nuestra ingeniería inversa y la realidad. Difieren.

 ![](https://canada1.discourse-cdn.com/flex027/uploads/xod/original/2X/7/7006137cdd94da3f1dfba6a6375bd639c0cb335f.png)

Vemos que entre la recta ideal (Roja), y nuestra Recta de Calibración de dos  
Puntos hay una desviación importante, Esperábamos que el punto más próximo o de  
contacto sea el de PH7 y no el de PH4.

### Cuales pueden ser las causas?

Sabemos que la Temperatura nos desvía las mediciones, pero aún no la hemos  
incluido en nuestras ecuaciones.

Esa es una causas. Otra es:

La escala operativa parece no ser precisamente 3V. Veremos si mejora el modelo  
con 3.3V

Con un poco de matemática podemos deducir y achicar una de nuestras  
incertidumbres.

Por lo que podemos ver en la gráfica, ahora la probabilidad de estar operando en  
una escala de [0..3.3] Volts es mayor pero no determinante.

 ![](https://canada1.discourse-cdn.com/flex027/uploads/xod/original/2X/4/40c6efa0b23a6958f2a58600683946eb44777976.png)

Ahí tenemos una mejora en Modelo Matemático, El punto de calibración de PH7  
ahora está mucho más próximo a ser el punto de ´pivote con respecto a la  
temperatura.

### ¿Que podemos hacer para ajustar Offset en PH7?

Bueno si el fondo de escala es 3.3V entonces su punto medio está en 1.65V.  
Veamos que sucede si hacemos ese ajuste en el Modelo Matemático..

 ![](https://canada1.discourse-cdn.com/flex027/uploads/xod/original/2X/5/5366df74182e59182225cc0b77a04fae5dfc34e0.png)

No está nada mal!! Es justo eso lo que esperamos ver.

# ¡Ahora sí llegó el momento de la temperatura!

Tenemos una desviación importante de la pendiente de nuestra curva.

Hay muchos factores que contribuyen a este fenómenos en un PHmeter, pero la  
temperatura es el principal.

> No debiéramos tomar como confiable una medida precisa de PH con electrodo de  
> vidrio, si no estamos tomando la temperatura de la solución y siguiendo  
> correctamente los protocolos de buenas prácticas en las mediciones de este  
> tipo.

Vemos que el error en este caso es grande, superando el estándar de instrumento  
industrial con el que habíamos partido al principio del artículo. Puede ser  
mucho peor en temperaturas extremas.

Antes de resolver el Modelo Matemático vemos cómo se comporta el modelo con  
temperatura, y la causa por la que decíamos que PH7 era un punto pivote. una  
buena imagen creo que dirá mucho más que unas cuantas palabras.

Veamos:

![](https://canada1.discourse-cdn.com/flex027/uploads/xod/original/2X/7/78f4322cdcc8494bc78d7441c32008abd0237134.gif)

Comenzaremos a deducir el Modelo Matemático que define este comportamiento.

Vemos cuanto influye en nuestra medida de PH la temperatura.

También tendemos que descubrir un estándar. Todas las soluciones de calibración  
están ajustadas su concentración de PH a 25°C, por lo tanto, todas las  
calibraciones de equipo fuera de esa temperatura no serán confiables si no se  
corrigen con la temperatura en forma manual o automática.

Lo otro que podemos ver el error se magnifica cuanto más alejado está de PH7.

También podemos deducir, que la temperatura afecta el coeficiente **(p)** de la  
pendiente. Entonces, este factor de corrección de la pendiente está en función  
que tan alejada está de la temperatura de 25°C.

Llamaremos a este coeficiente **(d°t),** y para simplificar el modelo lo  
sumaremos a **(p)**. También le daremos un nombre a este nuevo coeficiente que  
surgirá de esta suma, lo llamaremos **(k).**

**(k) = (d°t) + (p)**

Hay que hacer pivotar la función operativa en el **punto (1.65V,PH7)**.

Para ello tendremos que restarle a la entrada (e) el valor del Offset = 1.65V y  
antes de multiplicarlo por (k) tendremos que sumarle 7. Quedaría algo así en su  
forma más desarrollada:

**PH = [(d°t) + (p)] [(e) – 1.65] +7**

Limpiando un poco podemos escribir:

**PH = k (e+1.65)+7**

---

<div class="post-metadata">

**Author:** ![genghiskhano](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/genghiskhano/32/2952_2.png) [@genghiskhano](https://forum.xod.io/u/genghiskhano)\
**Post date:** [April 26, 2021, 3:53am UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/16 "2021-04-26T03:53:07Z")

</div>

This formula worked for me:

 ![image](https://canada1.discourse-cdn.com/flex027/uploads/xod/original/2X/8/811ab0659f4d6a495120de4056c65b84e0ffd0f5.png)  
I will continue testing and post my findings.

---

<div class="post-metadata">

**Author:** ![eqs-aruy](https://yyz1.discourse-cdn.com/flex027/user_avatar/forum.xod.io/eqs-aruy/32/2967_2.png) [@eqs-aruy](https://forum.xod.io/u/eqs-aruy)\
**Post date:** [April 26, 2021, 2:26pm UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/17 "2021-04-26T14:26:56Z")

</div>

# Entonces ahora hagamos la librería

Veo que entendido muy bien el concepto!!!  
Felicitaciones!!  
Si acepta el desafío, juntos podemos hacer una librería muy bien documentada para usos profesionales y avanzados,  
. 😃

---

<div class="post-metadata">

**Author:** ![system](https://canada1.discourse-cdn.com/flex027/uploads/xod/original/1X/eb7348baa04192c2ef932d1db54d44f09f8a7888.png) [@system](https://forum.xod.io/u/system)\
**Post date:** [May 26, 2021, 2:26pm UTC](https://forum.xod.io/t/dfrobot-ph-meter-pro-v2-and-peristaltic-pumps-setup/5116/18 "2021-05-26T14:26:57Z")

</div>

Closed on May 26, 2021, 2:26pm UTC

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
