Quiero usar una Raspberry Pi como servidor XBMC en el automóvil. Los documentos de XBMC dicen que siempre debe usar el comando de apagado antes de desconectar la alimentación. No quiero tener que (decirle a mi esposa que lo haga) iniciar sesión en el Pi y apagarlo antes de apagar el automóvil; quiero poder
He estado pensando que debería ser posible crear un circuito simple con un condensador y probablemente un diodo para detectar cuándo se desconectó la fuente de alimentación (y generar una interrupción en uno de los pines GPIO), pero el condensador proporcionaría corriente lo suficiente para que el sistema se apague correctamente.
¿Esto parece correcto y suficiente?
El circuito será alimentado por una batería de automóvil: 12.6 a 11.7V. La Raspberry Pi toma 5V (5.25 a 4.75V) y consume 700-1200mA. Todavía no lo he cronometrado, pero supongo que el proceso de apagado probablemente demore alrededor de 5 segundos.
Entonces supongo que lo que necesito saber es:
¿Qué tipo de condensador necesitaría para almacenar suficiente carga para mantener el Pi funcionando el tiempo suficiente para que XBMC se apague correctamente?
Dado que el puerto GPIO del Rasperry Pi toma 3.3V, ¿cuál es el mejor comparador / amplificador operacional para usar? (Supongo que podría usar un par de resistencias para reducir la salida de 5 a 3.3)
¿Sería beneficioso tener la línea GPIO normalmente alta o normalmente baja?
fuente
Respuestas:
Una estrategia alternativa sería alimentar la Raspberry Pi continuamente y usar la línea de encendido para iniciar la secuencia de apagado. Lo hice en el pasado pero con sistemas en los que la solución exacta no se aplicaría a un Pi, pero en general:
Use un convertidor DC-DC para obtener la mejor eficiencia, hay muchos ejemplos, pero el siguiente es un ejemplo de algo que sería conveniente usar y puede suministrar 1A a 5V desde una entrada de 6.5V a 32V:
http://www.digikey.com/product-detail/en/V7805-1000/102-1715-ND/1828608
El suministro de un automóvil puede ser bastante duro, por lo que es posible que desee utilizar un diodo TVS de 30 V a través de la entrada para proteger contra picos con un diodo Schottky grueso con el ánodo en el suelo y el cátodo en la entrada de 12V para proteger contra voltajes negativos junto con un fusible normal o un fusible reiniciable PTC en serie con la conexión entre la alimentación del automóvil y su sistema. De lo contrario, puede 'hackear' un automóvil con un cargador USB que ya debería tener todo eso en su lugar.
No estoy seguro de lo que dibuja una Raspberry Pi en modo inactivo normal, pero presumiblemente muy por debajo de 500 mA, que es el máximo que puede suministrar USB y más probablemente 100 mA. Digamos que está usando 100 mA a 5 V que será inferior a 50 mA a 12 V usando ese circuito, la batería de un automóvil normalmente es del orden de 50 Ah, por lo que sería alrededor de 20 días agotar la batería al 50%. Si el automóvil está en uso regular, probablemente no sea necesario ir más allá, y es posible que pueda dejarlo en funcionamiento y apagar los periféricos que no esté utilizando.
De lo contrario, para detectar el cambio de encendido de cualquier manera y para informar al Pi que necesita apagarse, y luego quitar la energía un minuto después, la forma más práctica es probablemente usar un microcontrolador externo que impulse un FET. Podría hacerse con una lógica discreta, pero también debe asegurarse de que la energía se vuelva a aplicar cuando el encendido sea alto, por lo que no es un ejercicio completamente trivial, pero los costos de las piezas serán más bajos que usar una tapa grande.
fuente
No estoy íntimamente familiarizado con el comportamiento de la Raspberry Pi para el apagado y el uso de energía, por lo que confiaré principalmente en los números que proporcionó y dejaré las fórmulas.
La curva de descarga exponencial que muestra es para un circuito resistor-condensador, pero el regulador lineal hace que las cosas actúen de manera un poco diferente. Suponga que el RPi siempre consume la corriente máxima que usted indicó: 1200 mA. En este caso, esa corriente siempre fluye a través del regulador, y la resistencia efectiva del circuito cambia constantemente (disminuye) a medida que se descarga el condensador. Esto es cierto siempre que estemos en el rango operativo del regulador lineal, lo cual está bien porque necesitamos que el RPi se apague antes de llegar a esa región.
La ecuación diferencial para un condensador es:
Esto da el siguiente resultado:
Sí, eso es 1.28 Faradios (no micro o mili aquí). Esto probablemente implicaría comprar varias tapas de bajo voltaje y colocarlas en serie
Entonces, el otro problema es su circuito: no funcionará de la manera que desea, porque la única forma en que la entrada positiva del comparador se acerca al voltaje de entrada negativo (para que la salida pueda cambiar) es cuando el voltaje de entrada Ya está muerto. Según lo diseñado, el comparador nunca cambiaría.
Lo que desea hacer es medir su voltaje de entrada, antes de los condensadores y el diodo, y comparar ese voltaje con una "referencia" que puede establecer con un potenciómetro. Ver ejemplo de circuito a continuación:
simular este circuito : esquema creado con CircuitLab
fuente
Nota: la siguiente respuesta se escribió asumiendo que solo el uso del sistema de archivos de una tarjeta SD podría corromperse. Desde entonces, ha salido a la luz una gran cantidad de evidencia anecdótica que sugiere que el estado interno de las tarjetas SD, por debajo del nivel de cualquier sistema de archivos, está potencialmente en riesgo de corrupción debido a la pérdida de energía en el momento oportuno, algo que puede no ser posible evitar. nivel del sistema de archivos.
Me sentiría tentado a mirar un enfoque completamente diferente, uno de resolver el problema en su origen. Esencialmente, no hay nada fundamentalmente malo en simplemente extraer el poder del pi; el problema es el estado del sistema de archivos potencialmente no confirmado que conduce a la corrupción del sistema de archivos y la posterior falla de arranque hasta que repare / vuelva a crear una imagen del volumen.
Pero esto es algo que se puede solucionar en el lado del software, mediante una combinación de:
Cree más particiones en la tarjeta SD y nunca monte la partición de arranque o del sistema operativo en modo de escritura. Si desea ir un paso más allá, nunca escriba nada en la tarjeta SD, manteniendo todos sus datos mutables en una memoria USB.
Utilice un sistema de archivos de diario para almacenar datos que en realidad se modificarán en la operación.
Simplemente tenga a mano una tarjeta de respaldo, opcionalmente podría tratarse de un esquema automático de respaldo y recuperación de una tarjeta conectada con una regla en la que solo una de las tarjetas se puede montar en cualquier momento (puede combinarse con la primera regla del sistema de arranque / sistema operativo) particiones que nunca se pueden escribir)
En última instancia, se trata de una cuestión de filosofía de diseño: la elección entre:
A) Un sistema delicado que debe protegerse de la pérdida de energía para que no sufra corrupción.
o
B) Un sistema diseñado de tal manera que la pérdida inesperada de energía no pueda resultar en corrupción irrecuperable.
La mayoría de los sistemas integrados están más en la línea de (B).
fuente
Como otros han señalado, hay algunos problemas con los circuitos propuestos hasta ahora, y también puede obtener un condensador lo suficientemente grande como para sostener el suministro. Si está dispuesto a construir un pequeño circuito, puede considerar un controlador de ENCENDIDO / APAGADO de energía de enclavamiento que funciona con un botón pulsador. Para APAGAR el servidor XBMC, puede presionar un botón que le indica al Pi que se apague, luego podría hacer lo que necesita para un apagado ordenado y limpio, luego emitir una señal GPIO al circuito que apaga la alimentación. Eso le da al RPi tanto tiempo como necesita para hacer cosas como apagar de forma segura la tarjeta SD. El circuito no tiene que ser tan complejo como un relé y un temporizador.
Aquí hay un circuito simple para hacerlo , que usa solo un mosfet dual como controlador. El circuito se describe en la página web.
fuente