Circuito de retardo RC para encendido Pi

Tengo un poco de problemas electrónicos y necesito mantener un pin de entrada alto durante unos 8-10 segundos. Estoy implementando esta solución: https://github.com/NeonHorizon/lipopi/blob/master/README.power_up_power_down.md , que funciona bien, pero tengo que mantener presionado el interruptor de encendido durante 10 segundos antes de que Pi configure el UART pin alto (y lo mantiene alto). Miré alguna explicación de los circuitos RC, y parece que todos tienen el mismo retraso de carga que el retraso de descarga. ¿Tal vez necesito un diodo allí en alguna parte? Básicamente, me gustaría que el capacitor se cargue rápidamente y se descargue lentamente a través de la resistencia.

ingrese la descripción de la imagen aquí

Siguiendo la sugerencia de Flàvio, ¿alguien puede decirme si usar un transistor para aislar funcionará, algo como esto? El resultado esperado es:

  • Presione el interruptor
  • Cargas de condensadores
  • Cuando se suelta el interruptor, el capacitor mantiene alta la base del transistor hasta que GPIO 14 sube como resultado del encendido de Raspberry Pi.
  • En el momento en que el capacitor se habría descargado, GPIO 14 toma el control para mantener el transistor en funcionamiento y EN permanece alta.
  • Para apagar, cuando se vuelve a presionar el interruptor, la Raspberry Pi lee GPIO 18 y un script le indica a la Pi que se apague.
  • Después del apagado, GPIO baja, el capacitor se descarga y el powerboost corta la alimentación a la RasPi.

ingrese la descripción de la imagen aquí

(orientación fija del transistor)

Respuestas (4)

Al agregar el condensador C1, puede lograrlo. Tenga en cuenta que el tiempo que tarda antes de que el condensador se vacíe es aproximadamente R * C, en mi ejemplo a continuación, alrededor de 10 segundos.

La desventaja de usar este enfoque es que también llevará tanto tiempo apagar el circuito como necesite el mismo tiempo RC.

Una nota sobre su esquema original: los dos diodos en serie son una forma muy sucia de reducir el voltaje (si cae el voltaje), puede usar mejor el divisor resistivo (R2 y R3) que se muestra en mi esquema, con el valores correctos dependiendo de su batería.

esquemático

simular este circuito : esquema creado con CircuitLab

Editar: personalmente, usaría el pin UART para encender el circuito y otro para apagar el circuito. En realidad, podría usar GPIO18 para apagar el circuito. Configurándolo como entrada de forma predeterminada y solo usándolo como salida cuando desea apagar el circuito. Luego, su circuito se reduciría al siguiente, con un tiempo de apagado rápido (R2 * C1 = 2 s).

esquemático

simular este circuito

¿Serán suficientes los 100 000 a través del UART para bajar la EN cuando la Pi esté apagada? De lo contrario, el módulo powerboost siempre estará encendido
Será suficiente, pero lleva más tiempo. Cuando uart baja, tarda unos 10 segundos antes de que EN también esté bajo, debido al hecho de que C1 debe descargarse ...
Eso está bien, solo significa que el Pi tendrá energía (pero aún se apagará) durante aproximadamente 8 segundos. Me gusta la sencillez de este diseño. El único problema ahora es que C1 es un condensador físicamente grande, que es poco probable que quepa en la caja pequeña. Pero hacer que el condensador sea más pequeño y R1 lo suficientemente grande hace que R1 ya no funcione como un menú desplegable para EN
Puede usar un capacitor de tantalio o uno electrolítico de bajo voltaje (por ejemplo, 6.3V). Esos no son nada grandes...
Si no le importa cambiar un poco el código PI, podría hacerlo aún más simple, ¡vea mi edición!
Voy a probar su primer circuito hoy, tengo un 100uf que está bien para probar. El segundo circuito tiene 2 problemas. No mantiene la EN alta durante 8 segundos (requisito original) y un apagado rápido elude el apagado elegante de la Pi, es decir, estaría cortando la alimentación de la Pi antes de que se apague sola. Ahora, tal vez si R2 y R3 aumentaran para una descarga más larga a través de R3, eso solucionaría ambos. Si la descarga del apagado fue superior a unos 3 segundos, entonces el Pi ya se habría apagado en el momento en que cae la EN. ¿Pensamientos?
Ah, pero eso tampoco funcionaría, ya que ahora R3 no puede actuar como un menú desplegable para EN. Lo intenté antes con un valor de 2M y no se desplegaría EN.
El segundo circuito aún mantiene la alimentación durante el mismo tiempo. La diferencia es que con R3 puedes elegir el retraso de apagado independiente del tiempo de encendido.

esquemático

simular este circuito : esquema creado con CircuitLab

Puede usar este circuito para tener una carga rápida y calcular R para que se descargue tan lento como desee al encender Q2 desde un pin de microcontrolador o cualquier señal digital.

EDITAR: Vout es el voltaje a través de C1.

Gracias Flavio. El problema aquí es que la señal de entrada que debe mantenerse alta (EN) tiene un descenso requerido de 100 K, lo que descargará el capacitor casi de inmediato. De alguna manera, necesito aislar el circuito RC de EN de modo que el capacitor se vea obligado a usar R2 para la descarga. He agregado el circuito original a mi publicación.

Hmm, tu transistor está al revés. No he comprobado el resto del funcionamiento de su circuito.

¿Puedes conducir un GPIO bajo justo antes de apagarlo? ¿Por qué no pruebas esto?

esquemático

simular este circuito : esquema creado con CircuitLab

R3 mantiene M1 apagado.

Cuando alguien presiona SW, enciende M1, lo que mantiene encendido M2 (que mantiene encendido M1 después de que se suelta SW).

D1 evita que M2 tire del botón de lectura bajo, por lo que R1 tira del botón de lectura alto. Cuando alguien presiona SW nuevamente, lee un "Bajo".

A continuación, puede conducir "Apagado" bajo. M2 se apaga, R3 apaga M1. Habilitar luego baja.

pd: no he comprobado cómo funciona su ruptura de Adafruit, así que asumo que esto es algo parecido a lo que necesita.

Es gracioso, por alguna razón pensé que necesitaba voltearlo, pero lo hice bien la primera vez.
El Adafruit debe tener EN bajo para evitar que se encienda, por lo que reducirlo no ayudará: necesita un descenso de 100K para mantenerlo bajo.
La base para el diseño original es que Pi hará que el UART sea alto en el arranque y bajo cuando el Pi se apague, incluso si todavía hay energía aplicada al Pi (del powerboost de Adafruit). Entonces, cuando se apaga, EN baja, lo que elimina la energía del Pi. Volver a aplicar energía con el interruptor eleva la EN alta, lo que le da energía a la Pi nuevamente, lo que hace que se inicie y active el UART alto, lo que luego mantiene la EN alta. Pero inicialmente no mantiene el UART alto, cambia un poco antes de permanecer estable, por lo que se necesita la red RC.
@svenyonson: ¿tal vez coloque el UART con el filtro RC en el pin de "apagado" entonces? ¿Funcionaría eso? Además, aún puede agregar la resistencia desplegable a la red Habilitar, simplemente asumí que el powerboost tenía un despliegue interno

Gracias a todos por sus sugerencias. Encontré una solución simple como se muestra a continuación. Tuve una solución similar desde el principio, pero los valores de RC eran tales que la resistencia (2M) tenía un valor demasiado alto para funcionar como un menú desplegable, por lo que EN siempre fue alto, lo que mantuvo la Pi encendida. Gracias a Douwe66 por darme la idea de usar un capacitor de mayor valor (100uf), que me permitió usar el pulldown de 100K existente para completar la red RC. Y el uso de un divisor de voltaje en lugar de dos diodos en serie para reducir el voltaje para GPIO 18 en realidad redujo la cantidad de componentes. La solución de Wesley pudo haber funcionado, pero el número de componentes era demasiado alto.

Habría aceptado la primera solución de Dowwe66, excepto que dejó GPIO 18 alto todo el tiempo (lo que habría causado que el Pi se apagara inmediatamente después de que el demonio del monitor de apagado se activara) y también que el UART TX no se puede usar como una ruta para tierra para el pulldown EN (la resistencia interna mientras está apagado es de aproximadamente 27M).

En general, aprendí mucho y ahora tengo una solución que funciona. ¡Gracias!

ingrese la descripción de la imagen aquí