Estoy diseñando un proyecto de pasatiempo que funcionará con una batería, por lo que estoy tratando de reducir el consumo de energía. El SoC que estoy usando tiene la capacidad de entrar en un modo de suspensión profunda donde consume muy poca energía y luego puede ser interrumpido por un borde descendente en un pin.
Quiero generar un pulso alto-bajo-alto cuando el estado de un interruptor de lengüeta cambia en cualquier dirección. He estado leyendo mucho y parece que se puede construir un circuito monoestable de un solo disparo a partir de un par de transistores y un circuito RC para generar un pulso de salida cuando se detecta un borde. Entiendo cómo funciona eso. Sin embargo, no puedo encontrar la mejor manera de pulsar también en el borde opuesto.
Un pensamiento fue simplemente combinar dos one-shots que están configurados para dispararse en los bordes ascendente y descendente respectivamente, y usar los transistores en la salida para bajar el pull-up común (algo así como una puerta NOR).
Como soy un aficionado, uso principalmente componentes pasivos. ¿Cuál es la forma "real" de hacer esto en una configuración de bajo consumo utilizando dispositivos lógicos?
Editar: creo que debería mencionar algo sobre los requisitos de tiempo. Normalmente, el interruptor de láminas estará abierto o cerrado durante muchos segundos como mínimo antes de cambiar de estado.
Editar: aquí hay un ejemplo del circuito que estaba usando para detectar solo el borde descendente:
Y aquí está el pulso de ~20ms que estaba produciendo para presionar el botón de ~200ms simulando el interruptor de lengüeta (el canal 1 es Vbe para T1 y el canal 2 se mide en RST):
Está solicitando un convertidor de borde a falla, que generalmente es una bandera que indica una chapuza. ¿Está realmente seguro de que su SoC no se puede configurar para interrumpir en cualquier borde? Esta es una característica común de muchos microcontroladores. En los PIC se llama interrupción al cambiar , por ejemplo, y casi todos los PIC tienen algunas entradas que son capaces de hacerlo.
Si su hardware realmente solo puede interrumpir en un flanco descendente, entonces una posibilidad es simplemente invertir la señal y conectarla a dos de esas entradas.
Para responder a su pregunta directamente, se puede hacer un convertidor de borde a falla desde una puerta XOR:
OUT será bajo siempre que ambas entradas a la puerta sean iguales. La señal en el pin 2 se retrasa un poco por el filtro de paso bajo RC. Esto significa que durante un breve período de tiempo después de que IN cambie, el pin 1 tendrá el valor nuevo y el pin 2 tendrá el valor anterior, lo que hace que OUT suba. Después de un rato, la señal del pin 2 se pone al día y la salida vuelve a ser baja.
Puede usar esto para disparar al final del pulso, o usar una puerta XNOR para obtener un pulso negativo para que el borde de ataque active la interrupción.
Como dijiste que eres un aficionado, aquí hay un circuito que usa solo partes de chatarra:
Esto puede parecer un nido de ratas, pero es fácil de entender si lo divides en partes individuales.
C1 AC acopla la señal de entrada en Q1. Q1 se apagará por un momento debido a un flanco ascendente en IN. Cuando lo hace, fuerza la SALIDA a nivel bajo. R5 es un pull-up pasivo, por lo que OUT está alto cuando no pasa nada. Eso se encarga de detectar un flanco ascendente en IN.
La detección del flanco descendente se realiza de manera similar con C2 y Q2. Sin embargo, cuando Q2 se enciende, aumenta su salida en lugar de la baja que desea. Q3 invierte eso y sale bajo cuando Q2 está encendido.
Si conecta su interruptor de lengüeta en SW1, los LED K1 y K2 se pulsan alternativamente. Este circuito fue diseñado para una aplicación muy específica y es para 9 voltios, pero algunos retoques con los valores de la resistencia y el capacitor deberían permitirle encender la energía de su unidad solo durante la duración del pulso cada vez que cambia el estado del interruptor de láminas. cableado en el transistor k1 y k2 C y E.
Tu idea inicial parece buena. Evitaría la idea de la chancleta, pero es una solución perfectamente válida (tal vez innecesaria).
Por lo general, esto podría implementarse fácilmente con una puerta AOI22 ( puerta CMOS compleja de una sola etapa que implementa! ((A0 * A1) + (B0 * B1))
A0 y A1 funcionarían para formar un detector de pulsos de flanco ascendente, y B0/B1 para formar el flanco descendente.
Para el flanco ascendente, retrase una entrada en un número impar de etapas de inversión (más inversiones o más límite entre etapas significa un pulso más largo). Para el flanco descendente, invierta una entrada una vez. Invierta la otra entrada un número par de etapas de inversión (nuevamente, cuantas más inversiones tenga o más límite entre cada nodo que cause retraso, más largo será el pulso de salida). Tiene mucho más sentido con las formas de onda que se muestran:
Cabe mencionar que en esta configuración la AOI22 actúa como una puerta XOR (debido a la polaridad de las entradas).
glen_geek
factura