TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: totuer en 20 de Febrero de 2013, 19:08:29

Título: Detectar batería baja usando brownout (ccs)
Publicado por: totuer en 20 de Febrero de 2013, 19:08:29
Hola Todos
Estoy con un control remota realizado con un 16f627a y ahora con todos los pines utilizados necesito que detecte batería baja y emita una señal a la base para avisar esto.
Charlando con un compañero de trabajo se le ocurrió utilizar el brownout como detector de voltaje, no como reseteador del micro, puesto que si se resetea no puedo mandar la info necesaria a la base.
No tengo experiencia trabajando así con esto, siempre reseteo y chau, se les ocurre como se puede hacer sin usar ningún pin del micro para detectar batería baja?

Gracias a todos
Título: Re: Detectar batería baja usando brownout (ccs)
Publicado por: korpaztk en 21 de Febrero de 2013, 23:10:19
circuitos para detectar bateria baja hay infinidad en este sitio y en google, con electronica discreta es facil haciendolo con algun comparador y algun 555 para hacer la señal de algun buzzer para indicar bateria baja... o capaz que no interprete mucho tu planteo..

Saludos.-
Título: Re: Detectar batería baja usando brownout (ccs)
Publicado por: AKENAFAB en 21 de Febrero de 2013, 23:39:18
Al no tener más pines tal vez puedas usar el bit correspondiente al BrownOut BOD

Pero tendrías que revisarlo para saber su estado.
Esta en el registro PCON.


1-revisa antes y despues de un reset para saberlo
2-no actives reset por Brown-out pero revisa el bit.

Esperemos te sirva algo de eso,la verdad nunca lo he probado xD pero si leido.

Saludos!
Título: Re: Detectar batería baja usando brownout (ccs)
Publicado por: totuer en 25 de Febrero de 2013, 07:34:14
Gracias por responder, respecto del 555 es verdad se puede hacer algo con eso pero el problema es que la placa es chica porque es un remoto y no puedo agregar nada sin pasarme a full smd lo que me complica un poco y lo que me parece buenisimo es lo del PCOM voy a intentar leerlo en una interrupción y variar la alimentación así disparo la señal de batería baja.
En cuanto tenga novedades publico.

Muchas gracias

Pd: como leo un bit en particular de este registro?, porque nunca lo necesité si alguien sabe será agradecido.
Título: Re: Detectar batería baja usando brownout (ccs)
Publicado por: man3s en 01 de Marzo de 2013, 11:17:06
Para poder acceder a un bit de un registro, en CCS es un tanto sencillo, puedes usar la directiva "bit"  de la siguiente manera:

#BIT id = x.y

donde:
    id es el nombre que le quieres asignar
    x es la direccion de memoria donde esta localizado el registro
    y es el numero de bit

por ejemplo:

#bit TRISA0 = 0x85.0 //BIT 0 del registro localizado en la direccion de memoria 0x85, es decir el bit 0 del registro trisa

y en tu codigo ya podrias hacer lo siguiente:

if(TRISA0){
    .....
}

ahora solo faltaria que adecues la directiva al bit que deseas, identificando en el datasheet la direccion del registro y la posicion de bit que deseas.

Espero te sea de utilidad. Saludos.

Título: Re: Detectar batería baja usando brownout (ccs)
Publicado por: totuer en 02 de Marzo de 2013, 11:38:42
Muchas Gracias Man
He podido hacerlo, pero aún bajando la tensión (sin el POR activado) leo los bit de BOR y POR y me dan 1 todo el tiempo aún cuando el micro deja de andar por muy baja tensión de alimentación 2,75 volt aprox, siempre dan 1.
leyendo encontré que si no activo el power on rest el estado del BOR no es predecible, pero no necesito que se resetee, estoy necesitando ayuda muchachos esto se está complicando.

Gracias
Título: Re: Detectar batería baja usando brownout (ccs)
Publicado por: korpaztk en 03 de Marzo de 2013, 12:02:19
y cuando lo activas, eso no genera algún tipo de interrupción como para poder agarrar justo antes de que apague envié la señal y desactives el brownout para que no se resetee?, no se si me explico...

Saludos.-
Título: Re: Detectar batería baja usando brownout (ccs)
Publicado por: man3s en 03 de Marzo de 2013, 17:26:03
Como mencionas, en el datasheet aparece eso de que no es predecible el valor de BOR

Citar
Status bit is a “don’t care” and is not necessarily
predictable if the brown-out circuit is disabled (by
setting BOREN bit = 0in the Configuration Word).

entonces no lo consideraria muy confiable, si no quieres resetear el uC yo no lo activaria, ademas la unica manera que se me ocurriria seria con la entrada de la bateria a un canal ADC, pero mencionas que seria sin utilizar un pin de mas del uC, asi que no veo otra, de todas maneras estare pendiente si alguien da una solucion magica para tenerla en cuenta si me surge esa necesidad de el bajo voltaje  :).
Saludos.