Anular salida digital con pulsador

Tengo un pin Arduino Digital Out conectado a una resistencia de 1k, luego conecté la base de un transitor 2N3904. De hecho, esa misma salida digital está conectada a varias resistencias->base-de-2n3904. Cada transistor, a su vez, impulsa un mosfet de canal p.

Me gustaría agregar un botón para anular la salida digital. Con eso quiero decir que la salida digital está apagada la mayor parte del tiempo, pero a veces se enciende por un breve momento. Presionar el botón tendrá el mismo efecto que encender la salida digital.

No creo que pueda simplemente agregar un botón momentáneo entre la salida digital y +5V, ¿o sí? Esto probablemente alimentará 5V directamente al pin de salida. ¿Debería agregar una resistencia en serie con el botón? ¿Me arriesgo a freír el pin agregando el botón así:

esquemático

simular este circuito : esquema creado con CircuitLab

Un BJT como 2N3904 tiene una base, no una puerta.
Puede agregar con seguridad un botón pulsador desde el colector del transistor a tierra.
Pondría una resistencia entre el pin de salida Arduino y el pulsador/unión R1/R2/R3, y omitiría R5
@OlinLathrop Tal vez estoy leyendo mal el texto, pero el botón pulsador en el transistor CE tiene el mismo efecto que el dibujado en el circuito (cuando se ignora la salida del controlador).
@Jippie: Vaya, no me di cuenta de que dijiste colector a tierra.
@jippie: Gracias, cambié 'puerta' a 'base' para el transistor.

Respuestas (5)

Puede cambiar esto y hacer que la salida del Arduino sea de drenaje abierto, vinculada a +5 a través de una resistencia de 10K (R4). Deshazte de los tres transistores y maneja las puertas de los MOSFET directamente desde el pin de salida. (Por cierto, no estoy seguro de por qué tiene tres transistores en paralelo; parece que podría ejecutar la salida de un transistor para todos los MOSFET).

Ahora, configurar el pin de salida a tierra será lo mismo que encender los transistores en su circuito anterior (colectores conectados a tierra). Establecer el pin alto (tri-estado para salidas de drenaje abierto) dejará las salidas en +5 debido a R4. Mientras tanto, si el interruptor ahora está conectado a tierra y conectado directamente a las salidas (sin R5), presionar el interruptor también reducirá la salida sin interferir con el pin de salida del Arduino, ya sea que esté en estado tro o a tierra. .

ingrese la descripción de la imagen aquí

Si desea usar su circuito existente, haciendo la menor cantidad de cambios posible, debería poder aislar el interruptor y la salida de Arduino usando solo un diodo 1N4148 y agregando una resistencia a tierra. (Se retira la resistencia en serie con el interruptor).

ingrese la descripción de la imagen aquí

Gracias, esto parece mucho más limpio. Mi problema es que parte de este sistema ya está construido y en uso, los circuitos de resistencia-transistor-mosfet están en realidad cada uno en placas separadas con otros componentes. Pero a partir de las respuestas, tengo la sensación de que tal vez debería rediseñar todo el sistema.
@EtienneD Si desea usar su circuito existente, haciendo la menor cantidad de cambios posible, debería poder aislar el interruptor y la salida de Arduino usando solo un diodo 1N4148. Véase más arriba.
Un diodo lo soluciona todo.

Esto es lo que estaba pensando en voz alta en los comentarios.

esquemático

simular este circuito : esquema creado con CircuitLab

El pulsador puede estar en paralelo al BJT sin problema.

Pero eso sería el equivalente a activar solo uno de los transistores, no todos.
Esto funcionaría, pero estaba buscando un solo botón para activar cada BJT, esto es lo que intenté describir como 'anular la salida digital'.

La salida digital presumiblemente conduce activamente tanto en la dirección alta como en la baja. 10 kΩ a cualquier voltaje de 0 a 5 voltios no tendrá ningún efecto.

hay una forma de hacer esto. Conecte la parte inferior de R5 directamente a la base de Q1, lo que significa en el lado derecho o R1. También haría R1 más alto. La carga del colector es de solo 10 kΩ, por lo que 10 kΩ en la base es lo suficientemente bajo. R5 de 10 kΩ como lo tiene ahora debería funcionar.

Recuerde que la salida digital impulsará activamente el lado izquierdo de R1 bajo durante la anulación del botón pulsador. Con R1 y R5 iguales, la mayor parte de la corriente a través de R5 se destinará a encender la resistencia ya que la base estará en alrededor de 700 mV. Si R1 fuera mucho más bajo que R5, como lo tiene ahora, entonces la mayor parte de la corriente a través de R5 durante la anulación en realidad pasará a través de R1 y entrará en la entrada digital en lugar de en la base de Q1.

Sin embargo, una mejor manera de hacer esto en general es conectar el botón a otra entrada del procesador y luego realizar la acción de anulación en el firmware. De esa manera, el firmware sabe que está sucediendo, el interruptor se eliminará y no tendrá que preocuparse por el uso compartido actual. El único inconveniente real es que requiere otro pin de entrada. Mientras tenga uno disponible, esta es realmente la mejor manera de resolver el problema.

No estoy seguro si Jippie tenía algo como esto en mente, pero puedes usar un transistor "maestro" que controlará el resto de los transistores.

El transistor que he usado está en una configuración de seguidor de emisor (para evitar la inversión). Cuando la salida del AVR es alta, el emisor generará aproximadamente 4,3 V y encenderá los transistores de salida. Si se presiona el botón durante ese estado, solo alimentará los transistores de salida con 5v, lo que no hará una diferencia en la forma en que se usan (como interruptores).

Cuando la salida del AVR es baja, el transistor estará apagado, pero el botón podrá anular y alimentar los transistores de salida con 5v.

esquemático

simular este circuito : esquema creado con CircuitLab

Puede usar un botón pulsador momentáneo SPDT (o un interruptor momentáneo)

esquemático

simular este circuito : esquema creado con CircuitLab

Probablemente la forma más sencilla para un sistema existente.

O si debe usar un SPST momentáneo, un diodo y una resistencia adicionales lo harán realidad.

(Pero @tcrosley ya publicó la segunda solución, ¡así que mira su respuesta!).