Conducción de salida lógica de 5V a entrada lógica de 3V3 y un LED simultáneamente

Antecedentes: estoy intentando controlar una fuente de alimentación ATX. Quiero leer su buena señal de potencia de 5V y enviarla a una entrada GPIO Pico de Raspberry Pi de 3V3 y, al mismo tiempo, encender un indicador LED.

Creo que he resuelto los componentes individuales de este circuito, pero tengo problemas para juntarlo todo.

  • Dejar caer la lógica de 5V a la lógica de 3V3: funciona un divisor de voltaje de 6.8k y 3.3k, aunque no estoy seguro de si esas son magnitudes apropiadas. Tampoco sé si es sensato usar un divisor de voltaje para algo que siempre está alimentado. La especificación ATX garantiza una lógica alta mínima de 2,4 V, que se dividiría en 1,6 V, por encima del umbral ALTO mínimo de 1,3 V para el Pico. El Pico no es tolerante a 5V.
  • Conducir un LED: sospecho que no es una buena práctica conducir directamente desde la señal, especialmente si también quiero usar esa señal para la lógica. Supongo que debería usar un transistor 2N3904 del riel +5VSB. Aunque lo he visto hacer .
  • Supongo que la base del transistor debería tener, por ejemplo, una resistencia de 1K. ¿Puedo usar R1 del divisor de voltaje para esto?

De la especificación ATX:

Características de la señal PWR_OK .
Tipo de señal Compatible con +5V TTL
Nivel lógico bajo <0.4V mientras se hunde 4ma
Nivel lógico alto Salida de 2,4 V-5 V mientras se obtiene 200 μa
Impedancia de salida de estado alto 1kΩ de salida a común

Aquí está mi circuito inicial:

Esquema de CircuitLab zec8mpqvh8j6

El simulador informa 750mV en LOGIC, que no va a funcionar. Jugando sugirió que un búfer digital podría ser apropiado. No tengo una idea real, pero esto proporciona 2.9V a LOGIC, que es suficiente:

Esquema de CircuitLab yvwuegt9x4uq

Cambiar el búfer por otra resistencia y bajar los valores en 2 órdenes de magnitud me acerca al voltaje correcto, pero en este punto solo estoy adivinando.

  • ¿Estoy en el camino correcto? ¿Se puede simplificar?
  • También consideré usar el LED en serie para bajar el voltaje de la entrada lógica, pero quiero la opción de no llenar el LED en el circuito.
  • ¿Estoy haciendo algo extraño para reducir 5V a 3V3 solo para usar 5V para el LED nuevamente?
  • Espero usar este circuito "de verdad", así que estoy interesado en hacer las cosas de manera correcta y confiable en lugar de confiar en algo que probablemente funcionará.
Necesita una resistencia en serie en la base de BJT. Lo que mide como 0,75 V es voltaje VBE_on.
Si necesita indicar que la potencia es buena y que el RPi Pico está funcionando, puede usar un divisor de voltaje para la entrada al RPi y controlar el LED desde el RPi.

Respuestas (4)

Debería considerar usar un MOSFET de canal N en lugar de un BJT para controlar el LED. Las puertas MOSFET tienen una impedancia mucho más alta que una base BJT y, por lo tanto, sería discutible la preocupación de que la impedancia tenga algún impacto en el nivel de salida del divisor.

Toda la lógica CMOS contiene Nch FET y Pch FET también. Eso es redundante. No es necesario agregar nada con la lógica de la familia CMOS 74HC, etc. Puede conducir fácilmente con una impedancia de fuente de <= 100 ohmios (400 mV / 4 mA) a un LED (no la serie CD4xxx como @WidlarFanboy101 ha sugerido que es un controlador de mayor resistencia más cercano a 1k ohmios @ 5V y >3k a 3.3V)
Gracias por el consejo: al menos funciona en el simulador y creo que tengo un 2N7000 por ahí, así que lo probaré este fin de semana. Si no, probaré con un cambiador de nivel o un transceptor como se menciona en otras respuestas.

Sugiero alimentar la señal PG en un búfer lógico. Como la señal PG no tiene mucho sentido sin que se encienda la fuente de alimentación, una placa base típica tiene una resistencia pull-up de, digamos, 4k7 ohmios desde el pin PG a 5V (no el SB5V). El búfer lógico se puede alimentar desde el SB5V, y usted puede decidir si un búfer con entrada de disparador Schmitt es beneficioso y si le gusta un búfer de inversión. La salida del búfer es lo suficientemente fuerte como para impulsar un LED con 5 V y un divisor de voltaje para bajar la salida a 3,3 V para la entrada de 3,3 V de Raspberry Pi, o el búfer podría ser uno con salida de drenaje abierto para que pueda usar el pull-up incorporado Resistencia en Raspberry Pi. Simplemente, un transistor también funcionaría en lugar de la puerta lógica, simplemente decida dónde iría el LED de salida o la resistencia pull-up, 5VSB, 5V, 3.3V o Raspberry Pi 3.3V. Si usa un búfer y lo enciende con 3. 3V (desde Rpi o 3.3V o desde 5VSB a través de un regulador de 3.3V), asegúrese de que la entrada del búfer pueda tolerar 5V. También asegúrese de que el búfer no intente empujar 3.3V en los pines GPIO de Raspberry Pi sin alimentación.

Con respecto a tus suposiciones

  • Toda la lógica CMOS de 5,5 V tiene una impedancia de controlador de 50 ohmios nominales +/- una gran tolerancia puede encender fácilmente un indicador LED en niveles lógicos con un límite de corriente R. Considérelo ya como un búfer. Iol = ___ @ Vol=0.8 Vol/Iol= Ron

  • 3.3V Logic es tolerante a 5V cuando está limitado por 10k en serie con abrazaderas de diodo ESD internas siempre que 3.3 se derive de los mismos 5V para la secuenciación

Las relaciones R del 60 al 66 % están bien para 3,3 V/5 V, con mucho margen para señales de baja velocidad.

"Toda la lógica CMOS de 5,5 V tiene una impedancia de controlador de 50 ohmios nominales". ¿Tiene una referencia para eso?
@ReversedEngineer No, pero es cierto. ¿Has probado la informática? R o tu t para todos los dispositivos @ 4.5 y 5.5 o 6V. V O L / I O L = R O L y similares para R O H para hacer una mejor generalización, quizás para todas las partes en todas las familias he visto de 10 a 100 ohmios sobre el rango de temperatura ambiente y para algunos dispositivos de 33 a 66 ohmios. Así que la media que digo es 50 con una amplia tolerancia. Algunos pueden especificar 12,5 mA máx., otros 16 mA y algunos 32 mA en el rango de 25 ohmios como 74ALCxx y ARM.

¡Gracias por compartir!

Básicamente, tiene el concepto correcto aquí: tome la lógica de 5 V, redúzcala y extiéndala a las entradas de sus circuitos de interés. Sin embargo, hay un par de detalles técnicos que se interponen en el camino de su implementación. Intentaré resumir a continuación.

  1. parece que el estilo de salida lógica del ATX es TTL. Este es un estilo antiguo de lógica digital que utiliza BJT como elemento lógico fundamental (a diferencia de los MOSFET). Aunque todavía se usa ampliamente hoy en día, una cosa a tener en cuenta con este estilo de lógica es que su voltaje ALTO de salida dependerá de la cantidad de corriente consumida por los circuitos receptores.

  2. Los divisores de voltaje resistivos son una excelente manera de reducir los voltajes porque son muy lineales, pero en las aplicaciones digitales no siempre son tan confiables debido a un par de factores, como los requisitos actuales del controlador, la incertidumbre del nivel lógico de alto voltaje, el retraso de propagación. , etc.

  3. Su controlador LED BJT es una opción sólida, pero viene con un par de peculiaridades. El más importante aquí es que, para todos los efectos, la unión de la base al emisor es esencialmente un diodo pn. Entonces, tan pronto como proporcione suficiente voltaje para polarizar hacia adelante la unión, el comportamiento de la base al emisor seguirá más o menos las características IV de un diodo (la corriente se desbocará mientras la caída de voltaje permanece bloqueada en alrededor de 750mV) . Querrá incluir una resistencia en serie con el pin base para evitar resultados destructivos (es decir, quemar el BJT debido al consumo excesivo de corriente). Debería poder encontrar un circuito de referencia con resistencias del tamaño adecuado si busca "controlador LED BJT".

Para esta aplicación, recomendaría buscar un tipo de dispositivo llamado cambiador de nivel o transceptor digital. Básicamente, reemplazaría el divisor de voltaje + la parte del búfer de su circuito en la segunda imagen que compartió. Estos circuitos integrados están diseñados para esta aplicación exacta, donde tiene un dispositivo de entrada y salida que no comparten los mismos niveles lógicos, o incluso estilos lógicos. Esencialmente, conecta la fuente de alimentación de 5 V al pin VCCA del cambiador de nivel, la fuente de alimentación de 3,3 V del Pi al pin VCCB del traductor de nivel, y luego puede conectar su pin ATX al pin de entrada A del traductor de nivel y el pin pi GPIO a la salida B. Esto asegurará que los voltajes lógicos alto y bajo estén en el rango correcto para Pi, y haciendo referencia a los mismos suministros altos y bajos que Pi. El CD4504B puede ser un buen dispositivo para considerar, aunque es bastante antiguo y no tiene una hoja de datos muy fácil de usar. Hay muchos más nuevos en estos días, el único inconveniente es que la mayoría de ellos están en paquetes de montaje en superficie.

Por último, al abordar la parte del controlador LED, una vez que haya incluido la resistencia de la serie base, puede usar un traductor de nivel con dos o más canales, conectar la señal ATX a dos canales de entrada A y luego controlar el Pi con uno B- canal de salida lateral, y conduzca el controlador LED con el otro canal del lado b. Esto se consideraría una mejor práctica, ya que está aislando la corriente BJT de la corriente Pi GPIO. De esa manera, cualquier consumo de corriente excesivo del BJT no afectaría la señal recibida por el pin pi GPIO.

¡Espero que esto ayude!

Desafortunadamente, el voltaje de suministro del lado de salida del CD4054 tiene una clasificación mínima de 5 V, por lo que no se puede usar para la conversión de nivel lógico a lógica de 3,3 V. También debe haber una solución más simple: los fabricantes de placas base de la vida real no se molestarían en gastar ni siquiera 10 centavos en un chip especial de conversión de nivel de suministro dual solo para leer una buena señal de potencia de nivel TTL, si tres resistencias que cuestan 0.1 centavos en total funcionan para obtener a 3,3 V o cualquier otro nivel lógico para que lo lea un conjunto de chips CMOS.