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.
Siguiendo la sugerencia de Flàvio, ¿alguien puede decirme si usar un transistor para aislar funcionará, algo como esto? El resultado esperado es:
(orientación fija del transistor)
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.
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).
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.
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?
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.
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!
svenyonson
Douwe66
svenyonson
Douwe66
Douwe66
svenyonson
svenyonson
Douwe66