Buenos días Antonio, ya he conseguido otra sonda Ph en buen estado. Recuerdo que tengo el sensor I2C de Cyberplant.
En teoría la recogida de datos es igual que el de dormant, esto es:
Código:
Wire.requestFrom(pHtoI2C, 2);
while(Wire.available() < 2); //pruebas
highbyte = Wire.read(); // high byte * B11111111
lowbyte = Wire.read(); // low byte
data = highbyte * 256 + lowbyte;
Pero luego vienen las diferencias.
En CAO, el lineal sensor utiliza ese data directamente para interpolar el valor actual después de haber calibrado un ph4 y un ph7. Pues bien, cuando pruebo la sonda luego en cualquier otro líquido que no sean los valores de referencia los resultados que da CAO son del tipo pH=-65.-7... Si vuelvo a ponerlo en los tampones, me dice 4 y 7.
En CAO viendo como funciona el módulo se coge directamente ese valor de data y se interpola, no?
Utilizando el programa de ejemplo de Cyberplant el sensor funciona perfectamente y me da ph7 donde es 7, ph4 donde es 4 y los valores intermedios sin problemas. Si lo pruebo en el acuario me dice 6.64 clavado, que es lo que me da con las gotas.
Como lo hacen en Cyberplant no es interpolando, es utilizando varias funciones de corrección.
Primero obtiene el voltaje a partir del data
Código:
voltage = (data * 2.048) / 327.68;
No se esa corrección ni esos valores de donde salen, entiendo que los 327.68 son mV y es a lo que trabaja el sensor...
Y con ese voltaje se utiliza la fórmula
Código:
pH = (-59.16 * voltage / (273.15 + 25)) + 7.0
y da el valor clavado aún cambiando de líquidos.
El segundo paréntesis entiendo que es una corrección de temperatura (0 absoluto + temperatura actual), pero el +7.0 y el porqué multiplica ese número negativo por el voltaje no tengo ni idea. La cosa es que funciona y da el ph correcto.
Obviamente tu solución en CAO permitiendo el calibrado es mejor a largo plazo, ya que según la sonda se vaya deteriorando la puedes recalibrar de nuevo y la puedes seguir utilizando.
Pero lo que no entiendo es xq no funciona la interpolación directa en CAO, por qué al poner la sonda en otros phs da esos resultados tan extraños de -24.-2 y cosas así?
Pensé en meter la corrección de voltaje en el propio método donde lees del sensor, en _Read1RawSensor, pero ahí devuelves un entero, el voltaje lo usa en float el ejemplo de Cyberplant.
Le ves algún sentido a esto? intento llegar al quid de la cuestión y poder dejar funcionando el sensor en CAO.
Un saludo!
EDITO:
Añado como nota una observación que he hecho Antonio. Si entro en los menús, al salir de ellos y volver a la pantalla de información aparece correctamente el valor medido de ph, pero en cuanto se refresca la pantalla ya aparece de nuevo el -x.-y
Algo que esté haciéndose raro en el refresco de la medición??