Cómo invertir una señal digital

29

Necesito una forma de invertir una señal digital, es decir, si la entrada es alta, quiero que la salida sea baja y si la entrada es baja, quiero que la salida sea alta.

Creo que esto se puede lograr con un solo transistor PNP, pero quería verificar eso aquí. Los voltajes con los que estoy tratando son menos de 5V.

Matt Ruwe
fuente
Tratamiento detallado de un inversor BJT: EE 307 Sección 2 Proyecto MoHAT - "El propósito de esta página es guiar a aquellos interesados ​​en las operaciones fundamentales de un inversor BJT".
Peter Mortensen el

Respuestas:

34

O, dado que está hablando de señales digitales, de todos modos usa un inversor .

ingrese la descripción de la imagen aquí

Aes la entrada (para puertas con más entradas que serán A, B, C, etc.), Yes la salida. Si no complica demasiado su esquema, coloque el símbolo con la entrada a la izquierda.

NXP tiene inversores de una sola puerta . Solo cuatro conexiones: fuente de alimentación, tierra, entrada y salida.

Sin embargo, se puede hacer con un transistor y dos resistencias. Es un esquema simple, pero aún tiene que hacer algunos cálculos simples. Tendrá exactamente las mismas conexiones que con el inversor.
Por cierto, un PNP es una opción, pero más a menudo se utilizará un NPN.

editar (re su comentario)

ingrese la descripción de la imagen aquí

Si la señal de entrada es alta, fluirá corriente a través de R2 y la unión base-emisor del transistor (base, no puerta). Esta corriente se amplificará, y la corriente del colector a través de R1 provocará una caída de voltaje, por lo que la salida será baja. Entrada alta, salida baja.
Si la señal de entrada es baja, no habrá corriente base ni corriente de colector. Sin corriente a través de R1 significa que no hay caída de voltaje, por lo que la salida estará a + V. Entrada baja, salida alta.

Esto ya lleva un poco más lejos, pero como he dicho en el comentario a Sandun la salida es muy asimétrica. Si la salida está conectada a un condensador, un nivel de salida alto significaría que el condensador se carga a través de R1, lo que dará como resultado una pendiente exponencial con una constante de tiempo R1C. Cuando la salida baja, el condensador se descargará a través de una resistencia mucho más baja y la pendiente será mucho más pronunciada. No obtendrá esta diferencia con las puertas CMOS, que tienen capacidades simétricas de fuente / sumidero.

La entrada de la versión del transistor también atraerá (una pequeña) corriente cuando sea alta. La versión CMOS solo tendrá una pequeña corriente de fuga tanto cuando sea alta como baja.

En general, la puerta lógica integrada es la ganadora.

stevenvh
fuente
Ciertamente podría confundirme aquí, pero una NPN se enciende cuando se suministra energía a la puerta y una PNP se apaga cuando se suministra energía. Tiene sentido usar un NPN para la amplificación de la señal, pero no haría que la señal se invierta. Pensamientos?
Matt Ruwe
2
Las puertas son para MOSFET, no para BJT. Los NFET se encienden y los PFET se apagan. Pero debe asegurarse de que la fuente esté conectada correctamente. Un NPN y un PNP son BJT y requieren un poco más de matemáticas para asegurarse de que funcionen correctamente
ajs410
cuando se trata de NXP, tienes muy poco espacio de libertad. Existen restricciones como temporización, entrada de ventilador, salida de ventilador, márgenes de ruido de entrada, fallas, etc. En ese caso, es más que fácil usar un transistor. Solo porque no estás bloqueado por esas restricciones.
Estándar Sandun
@Matt - editó mi respuesta.
stevenvh
1
@sandundhammika, si construyes el tuyo, todavía tienes límites en el despliegue y el margen de ruido (el fan-in no se aplica aquí). Pero tienes que calcular por ti mismo cuáles son esos límites. Si usa la puerta estándar, puede leer la hoja de datos para averiguarlo. Además, es probable que el consumo de energía (otra restricción típica del sistema) sea mucho mejor para la puerta estándar.
The Photon
24

Sí, esto se puede lograr con un solo transistor y resistencia, pero hay chips diseñados específicamente para invertir señales digitales. Por extraño que parezca, se llaman inversores . Mira el 74HC04, por ejemplo. Eso le da seis inversores separados en un solo paquete de 14 pines. También hay inversores individuales (y otras puertas lógicas pequeñas) disponibles en pequeños paquetes SOT-23, que es el mismo paquete en el que vienen los transistores individuales.

Hay pocas razones para intentar hacer su propio inversor, pero sí, es posible.

Agregado en respuesta al comentario:

Como dije, un solo transistor bipolar puede usarse como base para un inversor simple. Como mínimo, necesita el transistor y una resistencia base. Para completar, también agregaré una resistencia de carga de salida, que debe suponer que es necesaria a menos que sepa que lo que esté conectado a la salida proporcionará la carga necesaria. No hay nada mágico en un transistor PNP en particular. Una NPN también se puede usar. Así es como se usaría cada uno:

Tenga en cuenta que cada uno tiene 4 conexiones: alimentación, tierra, entrada y salida. La diferencia entre los dos es en qué dirección carga la entrada y en qué dirección se impulsa activamente la salida frente a la carga pasiva. Si no le importan estos problemas, entonces los dos circuitos son funcionalmente equivalentes.

Sin embargo, esto es más fácil:

También es más rápido, consume menos energía en estado estable, tiene una mayor impedancia de entrada y es más pequeño. Tiene las mismas cuatro conexiones que los inversores anteriores. Puertas individuales como esta están disponibles en paquetes SOT-23, que es el mismo paquete en el que entran los transistores individuales. Esto solo requiere una parte externa, la tapa de derivación. No necesita una resistencia de carga ya que su salida se activa activamente en ambos sentidos.

Realmente, para la inversión general de señales digitales, hacer su propio inversor es una tontería para las aplicaciones normales.

Fuera del tema aparte sobre el dibujo esquemático:

El guión es realmente solo tres líneas. Aquí está todo el archivo:

@echo off
movimiento rápido del ojo
rem MAKE_SCHEM_GIF
movimiento rápido del ojo
rem Crea un archivo GIF esquemático bien filtrado a partir de la salida de Eagle sin procesar
rem /temp/a.tif. El archivo GIF resultante será /temp/b.gif, y será
escala de grises rem.
movimiento rápido del ojo
image_filter /temp/a.tif /temp/b.img -shrink 5
image_copy /temp/b.img /temp/b.gif -form -gray
image_disp /temp/b.gif -zoom 1 -dev medium

Es un script único muy específico, pero funciona lo suficientemente bien para el propósito. En Eagle exporto el esquema al archivo de imagen \ temp \ a.tif, ejecuto el script que hace que \ temp \ b.gif. La configuración de Eagle para la exportación de imágenes son 600 DPI y monocromo. Realmente, eso es todo lo que hay que hacer. Probablemente suene más complicado de lo que es.

Olin Lathrop
fuente
1
@MattRuwe sería "suficiente", pero el punto de Olin es que un chip dedicado funcionaría mejor (el tiempo de subida y caída sería más simétrico). Un PNP puede "subir" a Vdd, pero necesita algo para bajarlo cuando el PNP deja que la salida flote. Ese "algo" creará asimetría en el tiempo de subida / bajada, en función de su impedancia.
ajs410
Gotcha, tiene sentido
Matt Ruwe
1
¿Cómo es que tu esquema se ve más bonito que el mío? :-)
stevenvh
44
@stevenvh: Debe ser porque estoy mejor. En serio, uso Eagle y me cuido un poco. Después de dibujar en Eagle, exporto el esquema a 600 DPI a un archivo de imagen, luego ejecuto un script que lo filtra y lo reduce 5x y escribe el resultado en un archivo GIF en escala de grises. Eso hace que el resultado tenga un tamaño razonable sin artefactos de píxeles. Sin embargo, hace que las líneas sean un poco borrosas, lo que es una compensación por no tener alias y pixelación visible.
Olin Lathrop
1
@abdullah: Vea además para responder.
Olin Lathrop
8

Aquí hay algunos valores de resistencia que funcionan para señales CMOS:

Encontré este hilo porque quería conectar una "mochila digital LCD" más antigua a un Arduino. El Arduino emite señales seriales positivas, y la mochila digital quiere señales invertidas. La versión más nueva del controlador LCD tiene un puente invertido / no invertido, pero el mío no. Del mismo modo, es posible generar señales en serie invertidas a través del software, pero implica ejecutar una biblioteca no estándar. Quería usar los Serial.writecomandos estándar .

Inicialmente conecté uno de los 4 NOR en una compuerta quad NOR 4001 CMOS como inversor, pero eso ocupa mucho espacio en mi placa de prueba, y dado que se supone que debe unir todas las entradas no utilizadas a tierra, implica una gran cantidad de alambrado. (Creo que necesitaba conectar todos menos 3 de los 14 pines del paquete; todo menos las salidas en los 3 NOR no utilizados).

Quería una solución más simple de cablear. Usé el circuito provisto por @stevenvh.

Vinculado aquí:

ingrese la descripción de la imagen aquí

Estoy tratando con una lógica CMOS de 5V a 9600 baudios, por lo que la impedancia de entrada es muy alta / la corriente es muy baja. Como solo estoy cambiando a 9600 baudios, no creo que el comportamiento asimétrico del inversor basado en transistores me perjudique mucho.

Descubrí que una resistencia de 100K en la entrada (R2 en el diagrama de stevenvh) funcionaba, y usé una resistencia de 3.3k como la resistencia pull-up en R1. Según mis cálculos (I = V / R, 5/3300), esta configuración dibujará <= 1.5 mA en el estado ENCENDIDO (algo menos debido a la resistencia interna del transistor). Podría conectar una olla y ver qué tan grande una resistencia con la que me puedo escapar y que la pantalla LCD reciba una señal.

Duncan C
fuente
4

Así es como lo haces a la manera CMOS:

esquemático

simular este circuito : esquema creado con CircuitLab

El voltaje del riel de alimentación puede ir tan alto como desee siempre que sea menor que el voltaje de ruptura de la puerta.

Maxthon Chan
fuente