Circuito basado en transistor BJT para reseteo de microcontrolador

Hola a todos. Estoy intentando montar un circuito con un LilyGO versión SIM800L IP5306 y otro microcontrolador que cada cierto tiempo resetea el LilyGO a través del pin "EN". El circuito en cuestión, consta del LilyGO, un Lolin D1 mini Pro (aunque podría ser cualquier otro que tuviera un conector de batería) y un cargador de batería TP4056. Todo ello alimentado por una batería de 3,7V que se recarga con energía solar. Para controlar el encendido y apagado del Lolin he utilizado un transistor BJT, concretamente el BC547B conectando al pin "base" el positivo del panel solar, de forma que si una noche o un día sin sol la batería de 3,7V se descarga y el LilyGo se apaga, cuando vuelve a ser de día (hay sol) y la batería ha recuperado suficiente voltaje, el Lolin reinicia el LilyGo para que vuelva a funcionar. El esquema es el siguiente:


El problema que estoy teniendo es que no sé cómo pasar directamente de la zona de corte a la saturación del transistor (y viceversa) sin pasar por la zona activa, ya que al pasar por la zona activa (cuando está amaneciendo por ejemplo) aunque al final la placa solar llegue a 6V el Lolin no se pone en marcha hasta que desconecto y vuelvo a conectar la placa solar (o la tapo completamente y luego la destapo), es decir, paso de 0V a 5V en un solo momento y no prograsivamente.

Espero haberme explicado bien. Muchas gracias.
 
Última edición:
Hola.

Posiblemente tengas que usar un relé para ese caso. También posiblemente con comparadores para hacer el control de voltaje.

Hace mucho que no las uso, y que alguien me corrija, pero tendrías que ver también si no sirve un Schmitt Trigger.
 
He releído el post inicial, no debí de contestar tan rápido.

Ahora no entiendo nada de nada.
Si pones un esquema de lo que pretendes y justificas para que lo quieres a lo mejor te podemos ayudar.

El dibujito que has puesto se entiende poco y en todo caso se polarizaría entre mal y muy mal el transistor.
 
He releído el post inicial, no debí de contestar tan rápido.

Ahora no entiendo nada de nada.
Si pones un esquema de lo que pretendes y justificas para que lo quieres a lo mejor te podemos ayudar.

El dibujito que has puesto se entiende poco y en todo caso se polarizaría entre mal y muy mal el transistor.

Hola, gracias por las respuestas. Antes de nada, señalar que no soy un experto en electrónica ni mucho menos. Suelo hacer proyectos con microcontroladores basados en arduino y cuando tengo problemas como el que describo tiro mucho de mis pocos conocimientos y mucho de prueba/error, quemando muchos componentes. En cuanto al esquema, creo que lo maximo que puedo esquematizar es que "dibujito" que he hecho. Intento explicarlo de nuevo a ver si asi consigo explicar lo que quiero montar, el problema que tengo y como pretendo solucionarlo, por ahora si exito.

Tengo un microcontrolador, el LilyGo SIM800L IP5306 que va estar midiendo a traves de una serie de sensores y mandando por GPRS (con mensajes MQTT) a un servidor. El LilyGO lo voy a alimentar un una batería de 3,7V que se carga a traves del TP4056, el cual tiene conectada una placa solar de 6V (tb valdría de 5V). De hecho tengo montados 2 y funcionan perfectamente, pero tienen un problema y es que al descargarse la bateria (un par de dias o tres nublados) el LilyGo se apaga y aunque luego se recargue la batería no vuelve a encenderse hasta que se pulse un boton que tiene de reset. Para solventar esto vi en el foro del LilyGo que puedes dar un pulso al pin "EN" con otro microcontrolador y asi uelve a funcionar, y de hecho es así, he puesto al lado un Lolin (que es otro microcontrolador aunque podría ser cualquier otro), que va monitorizando un pin del LilyGo cada cierto tiempo y cuando ve que esta a 0V lo resetea. Podria hacer que este microcontrolador estuviera cada hora (por ejemplo) revisando esto, pero claro, debera tener otra fuente de alimentación para este, y no es lo suyo, debo usar la misma y ahí es donde se me ocurrió la idea del transistor. Mi idea (que puede que equivocada) era que una vez que la bateria se descargara los dos se apagan, pero al volver los dias soleados la batería se volvería a cargar y cuando esta estuviera lo suficientemente cargada y el la placa diera los 6V o 5V conectados a la base del BJT este entrara en saturación y dejara pasar los 3,7V de la bateria hacia el Lolin, encendiendolo y este entonces comprobara el voltaje del LilyGo, viera que es 0, lo reseteara y este empezara a funcionar ya que la bateria esta cargada. Y de hecho funciona, pero solo cuando la placa solar pasa de 0V a 6V/5V (he hecho pruebas tapandola y destapandola). En cambio, en la situación real en que la placa va ganando voltaje según avanza el día por que recibe más sol esto no se produce, por que entiendo que el BJT pasa de corte a zona activa y no se si llegará a saturar (entiendo que si) pero así no levanta el Lolin.

Hay otro modelo de LilyGo SIM800L, que no necesita de ninguna pulsación para ponerse en funcionamiento una vez que se carga la batería, el LilyGO SIM800L AXP192, pero tiene un problema ya detectado por el fabricante, y es que por debajo de 3,9V se apaga, mientras el IP5306 sigue funcionando hasta los 3V, por lo que he tenido que descartarlo ya que me da muy poco margen de funcionamiento.

Estoy optando por la opción que comentaba Lord Chango, la de usar un relé, que parece que puede funcionar, pero creo que usar un BJT (o cualquier otro transistor) es una solución más compacta (por tamaño), si no estoy equivocado y es posible esto que planteo.

Espero haberme explicado mejor. Muchas gracias de antemano a todos.
Hola, que tensión máxima admite el Lolin?
Porque así como lo has conectado, recibirá una tensión de 5.3V cuándo el panel entregue 6V.
En resumen, me parece una muy mala idea!
La misma que el LilyGo, va alimentado por un conector JST para baterias de 3,7V (4,2V). La idea es que la placa solar de 5V/6V conectada a la base ponga el BJT en saturación y permita que entre el colector y el emisor pase una tensión de 3,7V(4,2V) que da la batería o al menos esa era mi idea.

Muchas gracias
 
Entonces si, vale la primera respuesta que di.
No mates moscas a cañonazos.
Si necesitas un circuito de reset haz uno.

La segunda parte es que si no pones un gestor de batería decente morirán en unos pocos muy pocos ciclos.

Hay "BMS" full cutrex que controlan la carga y la descarga y cortaran cuando la batería baje de 3V6 de no hacerlo se romperá en "cuatro ciclos"
 
Por lo que vi, tu problema radica en que usaron el IP5306 que esta diseñado para "Power banks" por lo que si la tensión cae se apaga y queda así hasta que detecta que se presionó un pulsador para encenderlo nuevamente -en la placa mediante el pin de reset-.

Según las hojas de datos el tiempo mínimo, presionando el pulsador, necesario para encender todo nuevamente es de 30mS. El máximo es de 2 segundos.

Si pones un transistor así nomas mantendrás en reset también el micro de por vida mientras haya luz.

Lo que yo no entiendo es para que poner un TP4056 cuando el modulo ya trae todo integrado, incluso posee las salidas de indicación del estado de carga que puedes monitorear mediante el ESP32 y apagar todo para entrar en modo bajo consumo y monitorear cada tanto cuando se está cargando para volver a encender nuevamente todo.

Sumado a eso, se puede configurar el IP5306 para que trabaje con 1, 2, 3 y 4 LEDs sin modificar nada y en 2 LEDs, si bien hay que chequear que la salida parpadea, ya se tiene indicación de si se esta cargando, descargando, batería cargada o batería baja.

Resumen: Usa todo el hardware integrado en el LilyGo y que se encargue el de la batería. Con eso adiós Lolin/transistor/TP4056.... En lo único que tendrás que preocuparte es que el panel nunca envíe mas de 5.5V (6 máximo pero no conviene llegar ahí).
 
Entonces si, vale la primera respuesta que di.
No mates moscas a cañonazos.
Si necesitas un circuito de reset haz uno.

La segunda parte es que si no pones un gestor de batería decente morirán en unos pocos muy pocos ciclos.

Hay "BMS" full cutrex que controlan la carga y la descarga y cortaran cuando la batería baje de 3V6 de no hacerlo se romperá en "cuatro ciclos"
Gracias por tu respuesta Scooter. No conocia este tipo de componentes y no se como funciona. Voy a echar un vistazo a su datasheet para ver si entiendo donde debo colocarlo en el circuito y como conectarlo. Espero no tener que volver a preguntar y solventar ya mi problema.

Muchas gracias!
Por lo que vi, tu problema radica en que usaron el IP5306 que esta diseñado para "Power banks" por lo que si la tensión cae se apaga y queda así hasta que detecta que se presionó un pulsador para encenderlo nuevamente -en la placa mediante el pin de reset-.

Según las hojas de datos el tiempo mínimo, presionando el pulsador, necesario para encender todo nuevamente es de 30mS. El máximo es de 2 segundos.

Si pones un transistor así nomas mantendrás en reset también el micro de por vida mientras haya luz.

Lo que yo no entiendo es para que poner un TP4056 cuando el modulo ya trae todo integrado, incluso posee las salidas de indicación del estado de carga que puedes monitorear mediante el ESP32 y apagar todo para entrar en modo bajo consumo y monitorear cada tanto cuando se está cargando para volver a encender nuevamente todo.

Sumado a eso, se puede configurar el IP5306 para que trabaje con 1, 2, 3 y 4 LEDs sin modificar nada y en 2 LEDs, si bien hay que chequear que la salida parpadea, ya se tiene indicación de si se esta cargando, descargando, batería cargada o batería baja.

Resumen: Usa todo el hardware integrado en el LilyGo y que se encargue el de la batería. Con eso adiós Lolin/transistor/TP4056.... En lo único que tendrás que preocuparte es que el panel nunca envíe mas de 5.5V (6 máximo pero no conviene llegar ahí).

Hola switchxxi, gracias por tu respuesta. Hay varias cosas que no entiendo o no comparto en lo que dices. voy por partes.

Dices que el LilyGo esta diseñado para powerbaks, esto no es totalmente correcto según mi manera de entender, esta diseñado para baterias de litio de 3,7V, las powerbanks, que yo sepa trabajan a 5V, aunque a lo mejor estamos llamando de diferente manera a lo mismo.

Dices que con el transistor mantendre el reset de por vida, pero no es así, como comenté el reset esta controlado por el Lolin y solo lo resetea cuadno lee un determinado voltaje en el LilyGo y luego se duerme un cierto tiempo. Además mi intención con el transistor es que el lolin solo este operativo por el día, cuadno hay luz y por lo tanto la placa solar entrega voltaje a la base del mismo.

La parte de los LEDs, directamente no consigo entenderla. Creo que intentas explicar que los leds indican el estado de la bateria.

Por ultimo en el resumen entiendo que dices que conecte la placa solar al pin de 5V y GND del lolin directamente y así este se encarga de cargar la bateria, pero con este montaje sigo teniendo el mismo problema del reset. Si se queda sin bateria y luego vuelvo la luz solar, el LilyGo cargará la batería pero, ¿como hago para que se resetee y vuelva a funcionar?. El problema que tiene es que necesita una pulsación fisica en el boton de reset para que vuelva a funcionar o un pulso sobre el pin de reset (el pin "EN") y en lo que tu comentas no veo quien o como se haría eso.

Muchas gracias!
 
Última edición:

Dr. Zoidberg

Well-known-Papá Pitufo
Dices que el LilyGo esta diseñado para powerbaks, esto no es totalmente correcto según mi manera de entender, esta diseñado para baterias de litio de 3,7V, las powerbanks, que yo sepa trabajan a 5V, aunque a lo mejor estamos llamando de diferente manera a lo mismo.
Los powerbanks tiene adentro varias cosas:
  • Una o mas baterías de litio que entregan desde 3.6V hasta 4.2V a plena carga.
  • Un BMS que permite cargar las baterías de forma controlada con una alimentación de 5V.
  • Un boost-converter que levanta de 3.6-4.2 a 5V para alimentar al celular cuando el powerbank trabaja alimentando al celular.
 
Hola switchxxi, gracias por tu respuesta. Hay varias cosas que no entiendo o no comparto en lo que dices. voy por partes.

Yo me estoy basando en el esquemático que adjunto por lo que:

1. Esa placa lleva el integrado IP5306 que esta diseñado para cargar una batería de litio con todas las protecciones adecuadas ya sea por sobrecarga, corte por baja tensión, etc. Con eso el TP4056 sale sobrando, ademas que crea problemas.

2. Los "Power Bank" como bien dices trabajan entregando 5V y este no es diferente, pero esos 5V son los que alimentan el regulador de 3.3V que alimentan el ESP32.

3. Al estar diseñado para usar en "Power Banks", el IP5306 tiene salidas para indicar el estado de la carga de la batería mediante LEDs, esas salidas están disponibles en los conectores y una de ellas, mas específicamente la salida L3, también está conectada directamente a una entrada del ESP32 con una resistencia pull-up.

4. Lamentablemente no había visto que la entrada al IP5306 no esta en el conector sino que viene del conector USB-C. La tensión del USB solo alimenta al IP5306 y al chip de comunicación UART. Si bien hay un diodo de por medio hacia este ultimo, lo único que hay que cerciorarse es que el panel, nunca envíe mas de 5.5V y se conectara a los cables de alimentación del USB.

5. El problema es que entrando por los pines de la batería de la placa es que el IP5306 va a pensar que la batería esta muerta -cuando sea de noche- y al volver la alimentación va a esperar a que se presione el pulsador para reiniciar todo. Si en cambio lo conectas por USB cargara la batería mientras haya sol y de noche o un día nublado el IP5306 tomara la tensión desde la batería y mantendrá todo alimentado. En este punto el ESP32 puede monitorear los pines de estado de la batería para determinar que hacer. Incluso, a través del SIN800 se puede monitorear la tensión de la batería ya que tiene una entrada de ADC dedicada a ello.
Aun así, el IP5306, mediante los pines de estado indica si la batería se esta cargando, descargando, nivel, etc.

6. Solo queda monitorear las lineas de estado del IP5306 y crear una estrategia para que nunca haya que pulsar el RESET. Si ya se ve que queda poca batería, se apaga el SIM800 y se pasa a hibernar reduciendo todo lo posible el consumo. Habrá que, eso si, encender todo unos instantes para que haya un consumo minino ya que si no detecta un consumo de al menos 45mA en un lapso de 32 segundos se apaga automáticamente.
Con encender todo al menos cada 20 segundos por unos instantes -cuando se detecta batería baja- (que puede ser media carga para estar del lado seguro) no se necesitara hacer nada raro.

7. Si aun se quiere estar del lado seguro se puede hacer un reset mediante un "one shot timer" cuando se detecta que el panel entrega mas de 3V por ejemplo.
Igual habrá que dedicar un pin del ESP32 para anular el "one shot" cuando este todo corriendo porque en caso de pasar una nube, por ejemplo, siempre creara un pulso reseteando todo cuando no se quiere. (lo mismo pasa con lo que quieres implementar tu mediante otro micro).
 

Adjuntos

  • LilyGo-SIM800L-IP5306-20200811.pdf
    134.6 KB · Visitas: 0
Última edición:
Arriba