Go Down

Topic: Diseño de hardware test de batería. (Read 608 times) previous topic - next topic

Guille123

Mar 29, 2017, 04:56 am Last Edit: Mar 29, 2017, 06:02 pm by Guille123
Hola estimados, estoy diseñando un control de nivel de presión de unos tanques de gas. Necesito agregarle una batería por lo que ya diseñé la fuente con un cargador de flote que la mantiene cargada, para que ante un corte de luz, mi arduino siga funcionando sin apagarse. Le pongo una batería de 12V 7 A igual a las que se usan en sistemas de alarmas. Y he aquí mi cuestión, ¿como puedo saber cuando la batería está dañada o no toma carga?.

Dado que tiene un cargador de flote, en los bornes de la batería voy a tener siempre 12, 8 V aproximadamente o un poco mas, incluso cuando la batería esté en mal estado. Por lo que una lectura analógica me reportaría una buena condición en cualquier caso.

¿Alguien sabe como hacen las centrales de alarma para testear el estado de sus baterías? Por que esa sería una solución.

O escucho sugerencias.

Se me ocurre un testeo cada x tiempo desconectando la batería del cargador por medio de un rele y aplicando una descarga relativamente suave poder hacer una lectura analógica. Según el valor obtenido de esa medición, aviso la necesidad del cambio. Pero debería hacerle un temporizador muy grande y el proyecto no incluye reloj en tiempo real.

Pero si hay un método mas simple sería mejor.


Saludos cordiales.

Lucario448

Pero debería hacerle un temporizador muy grande y el proyecto no incluye reloj en tiempo real.
No es necesario, ya que al ser tiempo cronometrado (medido), con millis es más que suficiente.

Para evitar problemas de desbordamiento, tengo un método para reiniciar el contador de este.

Guille123

#2
Mar 29, 2017, 04:07 pm Last Edit: Mar 29, 2017, 06:01 pm by Guille123
Lucario448, gracias por responder. ¿serías tan amable de explicarme como debo hacer con el método que mencionas?

Gracias

Lucario448

millis de hecho puede funcionar como un delay pero que no detiene el programa.

Para temporizar una acción, se realiza lo siguiente:
Code: [Select]
// Crearás una variable global unsigned long, la cual se utilizará para "retener" el tiempo de finalización. Para este ejemplo, lo llamaremos fin

fin = intervalo + millis(); // Para iniciar el temporizador. intervalo hace referencia a...
el intervalo del temporizador (en milisegundos).

if (millis() >= fin) { // Aquí es donde verificamos si el lapso se ha completado; si la condición no se cumple, es porque no se ha terminado todavía.
fin = intervalo + millis(); // Reiniciamos el temporizador
  // Y por fin hacer lo que se necesita cada intervalo milisegundos
}

Guille123

Gracias Lucario, si bien soy nuevo con arduino y no se que es millis, voy a investigar y finalmente implementar tu método. Agradezco infinitamente el tiempo que te tomaste para responder a mi consulta y te agrego un Karma acompañando mi agradecimiento.
Espero poder devolver con creces tu atención.
Saludos cordiales,

Go Up