#1,366
19-07-2015, 07:19 PM
(Última modificación: 19-07-2015, 08:04 PM por Antonio Castro.)
(19-07-2015, 12:08 PM)rubenmas escribió: Antonio, estoy reuniendo los componentes que me faltan para terminar de montar CAO1 y al intentar pedir el sensor de Dormant Labs en Tindie, el V2 se encuentra fuera de stock desde Abril, tienen este otro que pongo en el link, crees que este valdría para tu código de CAO1?
PH Sensor
Venden hardware como el que vende patatas.
Ese hardware es totalmente inútil si no se proporciona la información para usarlo.
Acabo de localizar el código de ejemplo en otra página.
cyberplantru/pH-to-I2C-sample-code
Te comento. En el sensor de Dorman Labs hay que hacer de cada vez un par de lecturas. Son los dos bytes (H y L) de un dato entero que apropiadamente tratado sirven para obtener el voltaje medido por la sonda y por lo tanto el pH.
Código:
while(Wire.available() < 2);
byte H = Wire.read();
byte L = Wire.read();
// SerFmt.Fmt(0, F("*** H=%d, L=%d"), (int) H, (int) L); // TRAZA
return (uint16_t) (H*256) + (uint16_t) L;
En el sensor de Tindie, habría que leer tres datos. Los dos primeros sol igualmente los dos bytes (H y L) de un dato entero que apropiadamente tratado sirven para obtener el voltaje medido por la sonda y por lo tanto el pH, pero tam bien hay que leer un tercer dato que lo llaman configRegister y que EN EL EJEMPLO NO SE USA PARA NADA. Como no se documenta su uso no hay forma de dar utilidad a ese dato, pero de momento serviría para introducir una conveniente incompatibilidad con el sensor de Dormant Labs que es muuuuy parecido.
Código:
while(Wire.available()) // ensure all the data comes in
{
highbyte = Wire.read(); // high byte * B11111111
lowbyte = Wire.read(); // low byte
configRegister = Wire.read();
}
Mi software ya tuvo en cuenta el hecho de que un dispositivo I2C puede hacrr las cosas de un modo diferente así que creo que bastaría generar un nuevo protocolo que sería muy parecido al de Dormant Labs. Solo tendría que leer un dato más e ignorarlo.
En la forma que está diseñado mi software daría igual que los voltajes entregados por este tipo de hardware no coincidieran porque siempre van a respetar la correspondencia lineal entre voltaje y pH así que un problema de ese tipo se traduciría en un resultado con datos de calibración internos diferentes, pero no afectarían a la medida porque esta se hace manualmente en base la correspondencia lineal entre valores leidos y el pH.
Todo esto se programó así para que en un futuro y con un modulito de lectura de potenciales redox se pudiera usar ese módulo para leer potenciales redox con el único requisito de definir un nuevo protocolo que simplemente es una funcion pequeña (muy pocas líneas) para obtener el dato entregado por la sonda.