(03-10-2014, 04:41 PM)xavi escribió: Buenas tardes.
Tengo un problema con los sensores de temperatura.
Inicio el programa en "arranque lento", para tomar nota de los sensores, en mi caso pone:
Código:
Ini().Sens Temp.
Ini. busqueda de
dispositivos OneWire
Buscar Sensor N=0
Sens0 DS18B20 en
28A1.7A81.0500.00C6
Buscar Sensor N=1
Sens1 DS18B20 en
287B.5682.0500.009C
Buscar Sensor N=2
Tot.sens.DS18x20=2
Num.Sens.Temp.=2
NO Sens.Temp.Acuario
Sens=Ac Desconect
OK Sens.Temp.LEDs
28A1.7A81.0500.00C6
1) ???SENS.TEMP???
Calibracion de PH
Erronea o ausente
V.Analog y TimeStam
en EEPROM (PH7:PH4)
V.A PH7:4(-1:-1)
TS 0:0
NO Sens.PhAn.Acuar.
Sens=PH Desconect
Sens=Le AlarmSonor
Sens=Le Desconect
Sensor=Le:C Min=0 Low=0 High=0 Max=0 Hist=0
En el submodulo CAO_1.h, hago las siguientes substituciones:
Código:
#ifdef ACU150L
#define _LOCATION "ACU 150L"
#define ADDR_DS18X20_TEMP_LEDS "28A1.7A81.0500.00C6" // ======cambio por 28A1.7A81.0500.00C6
#define ADDR_DS18X20_TEMP_ACUA "287B.5682.0500.009C" // ======cambio por 287B.5682.0500.009C
// #define ADDR_DS18X20_TEMP_ACUA "28B0.A4CF.0500.00A3" // ACUARIO 150l (sonda pegamento PVC)
#else
#define _LOCATION "DESPACHO"
#define ADDR_DS18X20_TEMP_LEDS "28A1.7A81.0500.00C6" // ======cambio por 28A1.7A81.0500.00C6
#define ADDR_DS18X20_TEMP_ACUA "28B0.A4CF.0500.00A3" // ======cambio por 287B.5682.0500.009C
#endif
El resultado es:
Los sensores funcionan bien, con cualquier otro código marcan bien la tempertatura.
¿Tengo que hacer mas substituciones?.
Gracias
Te comento tu salida Serial
Código:
Buscar Sensor N=0
Sens0 DS18B20 en
28A1.7A81.0500.00C6 <- Encuentra este sensor
Buscar Sensor N=1
Sens1 DS18B20 en
287B.5682.0500.009C <- Encuentra este otro sensor
Buscar Sensor N=2
Tot.sens.DS18x20=2
Num.Sens.Temp.=2
NO Sens.Temp.Acuario <- No identifica a ningún sensor como sensor de temperatura del acuario
Sens=Ac Desconect
OK Sens.Temp.LEDs <- Identifica el sensor de temperatura de LEDs.
28A1.7A81.0500.00C6
1) ???SENS.TEMP???
Te comento con arreglo al código original. No el que has modificado tú.
En esta versión se ha comentado la línea // #define ACU150L
Eso significa que
Código:
#ifdef ACU150L
#define _LOCATION "ACU 150L"
#define ADDR_DS18X20_TEMP_LEDS "2821.1AD0.0500.006A" // ACUARIO 150l
#define ADDR_DS18X20_TEMP_ACUA "282B.24D0.0500.0083" // ACUARIO 150l (sonda pegamento termofusible)
// #define ADDR_DS18X20_TEMP_ACUA "28B0.A4CF.0500.00A3" // ACUARIO 150l (sonda pegamento PVC)
#else
#define _LOCATION "DESPACHO"
#define ADDR_DS18X20_TEMP_LEDS "2821.1AD0.0500.006A" // ACUARIO 150l
#define ADDR_DS18X20_TEMP_ACUA "28CB.ECBD.0400.0010" // Despacho sonda metalica
#endif
Todo eso el preprocesador lo va a transformar en
Código:
#define _LOCATION "DESPACHO"
#define ADDR_DS18X20_TEMP_LEDS "2821.1AD0.0500.006A" // ACUARIO 150l
#define ADDR_DS18X20_TEMP_ACUA "28CB.ECBD.0400.0010" // Despacho sonda metalica
Observa que la primera parte ni siquiera la compila.
La verdad es que aquí se está asumiendo que se entiende lo que hace este código porque hay que adaptarlo. Por ejemplo
#define _LOCATION "ACU.XAVI"
#define ADDR_DS18X20_TEMP_LEDS "28A1.7A81.0500.00C6" // LEDS
#define ADDR_DS18X20_TEMP_ACUA "287B.5682.0500.009C" // Temp.Agua
Podría estar ocurriendo algo raro porque detecta dos sondas y muestras susdirecciones, pero luego solo reconoce una. Es como si una de ellas estuviera mal escrita.
Si la dirección parece correcta y no la reconoce, yo probaría a borrarla completamente y a escribirla de nuevo porque podría haberse colado algún caracter extraño en la cadena de caracteres.
Como segunda medida yo forzaría un arranque lento y me mandas lo que salga por pantalla.
Como mínimo la sonda detectada debería poder funcionar pero solo si ha sido activado desde el menú de parámetros.
Creo que en la versión actual los sensores se habilitan por defecto pero tienes que verificarlo porque quizás tenías en la EEPROM parámetros de una versión anterior. Desde que se inicializa la EEPROM con parametros en la primera ocasión, no vuelven a tomarse otros valores por defecto a menos que se indique expresamente desde el menú de parámetros.
En otras palabras, los parámetros por defecto solo se usan cuando la EEPROM está vacía. Para mayor seguridad entra en la opción de los parámetros y selecciona la opción de "Restaurar parámetros por defecto". Esto limpia la EEROM y permite coger los parámetros por defecto de código actual.
Puedes hacer ciertas comprobaciones:
Comprueba que el parametro EnaTmpAcu y el parámetro EnaTmpLed tienen valor 1 (0=falso, 1=cierto) y si no es así ponlo a 1.
Accede al menú de los sensores para mirar en que estado se encuentran.