Cierre automático e inicio de Raspberry Pi (aplicación remota) usando powerboot 1000c - necesita ayuda para depurar el circuito

1

En mi aplicación, la frambuesa pi (A +) se ubica de forma remota y se alimenta mediante Powerboost 1000c . El powerboost está conectado a una batería (lipo) y un panel solar. La batería es recargable y se carga mediante energía solar. En el caso ideal, me encantaría que mi Rpi funcionara las 24 horas del día, los 7 días de la semana, pero como tengo una batería limitada y la energía solar solo funciona durante el día, necesito apagar la Pi siempre que ya no sea posible ejecutarla.

En mi opinión, el chip de powerboost funciona de la siguiente manera:
Si V_usb == ENCENDIDO (es decir, la energía solar está ENCENDIDA), entonces alimenta el pi y carga la batería (si es necesario).
Si V_bat > 3.2v (voltaje crítico), LBO se muestra como ALTO. Pero si V_bat cae por debajo de 3.2v, se reduce a LOW

Podemos clasificar la operación en los siguientes casos:
Caso 1: V_usb (energía solar) == ON y LBO == HIGH - Trivial
Rpi funciona con energía solar
Caso 2: V_usb == ON y LBO == LOW - Trivial
Rpi funciona con energía solar y la batería también se carga simultáneamente.
Caso 3: V_usb == OFF y LBO == HIGH
Rpi se alimenta de la batería.
Caso 4: V_usb == OFF y LBO == LOW
Apague el Rpi y espere a que el panel solar vuelva a cargar la batería.

Hasta ahora, con la ayuda de la comunidad, se me ocurrió el siguiente circuito:

La idea detrás del circuito es la siguiente:
Los diodos (A, B) se usan en paralelo para crear una compuerta OR lógica. El propósito es mantener la alimentación en ON si V_usb == ON o LBO == High. La salida de la compuerta OR lógica se alimenta al circuito de descarga del condensador + resistencia, que tarda unos 10 segundos en descargarse después de apagar la alimentación (es decir, V_usb == APAGADO y LBO == Baja), que es tiempo suficiente para ejecutar un script de apagado en el PI.
Hasta ahora, el circuito funciona como se espera, es decir, mantenga el Pi en ON si V_usb == ON o LBO == High, de lo contrario, ejecute el apagado completo. Pero, dado que el chip powerboost no se desactiva después del cierre completo, continúa consumiendo la energía que puede dañar la batería. Para manejar este problema, lo que hice fue alimentar el voltaje del capacitor a la base de un transistor PNP, donde el colector está conectado a tierra y el emisor está conectado al pin de Habilitación de Powerboost. La idea es conectar a tierra el pin En tan pronto como el condensador esté completamente descargado (para deshabilitar el chip de powerboost).

Ahora, lo que sucede es después de que el condensador se haya descargado completamente (10 segundos después de que se detecte LBO == LOW y V_usb == OFF), el chip se desactiva con la ayuda de la lógica anterior. Pero justo después de eso, el pin LBO se detecta como Alto (no estoy seguro de por qué sucede esto, pero creo que es porque no hay carga en el chip de powerboost y es por eso que LBO vuelve a subir). Esto hace que pi se reinicie de nuevo porque el voltaje en la base del transistor PNP > 0, que a su vez habilita el pin En, pero como la batería ya está en el voltaje crítico y no hay energía solar, el pi vuelve a detenerse. En resumen, la lógica anterior hace que el pi se inicie en un bucle (arranque - > shutdown - > boot ...). ¿Hay alguna manera de evitar este comportamiento de arranque + apagado no deseado?

Cualquier ayuda es apreciada!

    
pregunta redM0nk

2 respuestas

1

El circuito que diseñaste funciona como se especifica. El problema está en su especificación:

  

Caso 3: V_usb == OFF y LBO == HIGH:   Rpi es alimentado por la batería.

Este requisito no hace nada para evitar el bucle de arranque-apagado-arranque que está viendo. Podría evitar este comportamiento especificando, por ejemplo:

  

Caso 3: V_usb == OFF y LBO == HIGH:   Si Rpi se está ejecutando, manténgalo alimentado por la batería. De lo contrario, no lo inicies.

Este cambio hace que sea obvio que su sistema necesita realizar un seguimiento del estado o usar una señal adicional (RPI_RUN) que su Rpi debería alcanzar en ALTO cuando se ejecuta. Esas posibilidades se pueden ilustrar de la siguiente manera:

simular este circuito : esquema creado usando CircuitLab

    
respondido por el Dmitry Grigoryev
0

Sin saber demasiado sobre el circuito, si hay un comportamiento desconocido, no estaría mal empatar el LBO bajo para que no flote si no está siendo manejado por el Powerboost 1000C.

También, el voltaje base del transistor PNP caerá lentamente, colocándolo en la región analógica, no lineal. La caída de diodos a través de su compuerta OR puede no ayudar?

¡Buena suerte! Siéntase libre de corregirme si me equivoco :)

    
respondido por el Brian Dohler

Lea otras preguntas en las etiquetas