Conducir un LED desde un pin uC con el ánodo sobre el riel Vcc de uC

Estoy usando un uC de 3,3 V (ATMega 328p en Arduino Pro Mini) que funciona con 3 alcalinos (4,5 V nominales). Entonces Vin=4.5V, Vcc=3.3V

Me gustaría controlar los LED de algunos pines, digamos a 20 ma cada uno. Y estaba pensando en conectar los ánodos LED a Vin (4.5v) con el cátodo yendo al pin uC, en lugar de pasar todas las corrientes LED a través del regulador integrado de 3.3v. (Además, si bien usaré LED rojos en el ejemplo aquí, es posible que también desee usar azul, lo que sería más cómodo con un poco más de voltaje de conducción).

Calculo un LED rojo a aproximadamente 2v Vfwd, por lo que la resistencia debería caer 2.5v @ 20ma, digamos 1K2 ohmios.

El problema: esto conecta un pin uC a una fuente de 1.2V sobre su riel Vcc (a través de un LED).

Creo que estamos bien cuando el LED está encendido (pin low). Pero, ¿qué hay de apagar el LED?

esquemático

simular este circuito : esquema creado con CircuitLab

Enfoque 1: Suba el pin uC (3.3v) para apagar el LED. El LED tiene entre 4,5 V y 3,3 V, y la diferencia de 1,2 V no será suficiente para encenderlo, y CREO que tampoco hará que el pin quede demasiado alto sobre su riel. Pero los LED no son dispositivos ideales, de ahí esta pregunta.

Enfoque 2: tristate pin uC (conviértalo en una entrada) para apagar el LED. El LED está entre 4.5V y la entrada de alta impedancia (junto con su diodo de protección estática a Vcc). Nuevamente, espero que el Vfwd del LED sea suficiente protección para el pin uC.

¿Alguno de estos enfoques o ambos son viables y seguros para la uC?

EDITAR: sustituya la resistencia de 120 ohmios de arriba, vaya.

Creo que ir a alta impedancia o baja activa debería ser lo suficientemente seguro. Pero en estos niveles actuales, ¿por qué no solo obtener corriente del riel VCC del microcontrolador como salida en lugar de un sumidero de corriente/bajo activo como está ahora?
Recuerde que cada pin/puerto del ATMEGA tiene diodos de sujeción estilo CMOS a VCC y GND para lidiar con problemas de sobrevoltaje/voltaje negativo de MUY baja potencia, pero si tiene una condición de sobrevoltaje constante con solo una resistencia de 1.2k, creo romperá las abrazaderas del diodo CMOS con el tiempo y romperá todo su puerto
@KyranF: si el pin está 'tristado', es decir, una entrada, entonces el LED debe estar por debajo de su umbral y ser una resistencia muy grande; será una "sobretensión de potencia MUY baja", por lo que no será una "condición de sobretensión constante con solo una resistencia de 1.2k". Habiendo dicho eso, no haría esto a menos que necesitara arreglar algo que ya estaba roto, y esta era mi 'mejor opción'.
Acordado. a menos que el regulador sea algo extrañamente débil, lo único que está haciendo es cambiar la pérdida de energía / calor del regulador a las resistencias LED. Sin dejar de tener los límites de corriente de 40/100/240 pines/puerto/ma total. Hundir la corriente a un pin bajo tiene los mismos problemas que obtener corriente del pin. En este caso, caída de tensión positiva. (eh, ¿ascensor?)
@Kyranf Usé un LED rojo como ejemplo, pero un LED azul o verde con Vfwd más cercano a 3V se vuelve un poco más estrecho en términos de márgenes cuando se alimenta desde 3.3v del Arduino Pro Mini (solo alrededor de 0.3 V para la limitación actual resistor). Esa es una razón por la que me gustaría explorar la alimentación de los LED directamente desde el Vin de 4.5v.
@KyranF El propósito de la resistencia 1K2 es limitar la corriente cuando el LED está encendido. Cuando el LED está apagado (alta impedancia del pin), la ruta de corriente a través del pin incluiría el Vfwd del LED (2-3 V), la resistencia y el diodo de sujeción. El efecto de la resistencia es insignificante, la mayor parte de la resistencia efectiva proviene de que hay menos de Vfwd entre 4.5V Vin y el riel de 3.3v Vcc.
Las respuestas son interesantes: en este punto, hay una buena respuesta que explica por qué el enfoque de alta impedancia sería más seguro y otra buena respuesta que explica por qué el alto activo sería más seguro. Creo que entiendo ambas líneas de razonamiento, pero no estoy seguro de cuál es más precisa. Las sutilezas exploradas en cada respuesta son exactamente lo que estaba buscando, porque están al límite de mi comprensión. Ahora espero que aquellos con más experiencia puedan resolver un mejor enfoque único.

Respuestas (4)

De lo que estás hablando no es un gran riesgo para un proyecto de pasatiempo ... algunas cosas en las que pensar.

no es realmente el V F en la corriente de operación que importa, es el V F con el máximo brillo "apagado" que sea aceptable. Ese voltaje puede ser tan bajo como 1.4-1.5V voltios para un LED rojo de baja corriente; en una habitación oscura pueden ser bastante visibles con microamperios de corriente. Conducir la salida a 3,3 V (nivel nominal) nos da 3,3 V en la salida. Una celda alcalina nueva con una carga mínima podría tener 1,63 V/celda a temperatura ambiente (solo se midió una), por lo que 3 sería 4,89 V. Eso te deja con 1,59 V a través de la resistencia LED + (nominal, sin permitir que los 3,3 V puedan ser un pequeño porcentaje bajo).

Eso es demasiado para asegurarse de que no esté emitiendo un montón de luz.

Por lo tanto, lo triestablecemos, lo que permite que la salida suba quizás un poco por encima de Vcc sin que fluya mucha corriente. 300 mV es seguro, la hoja de datos dice un máximo absoluto de 500 mV. A 500 mV, tendríamos 1,09 V en el LED, probablemente suficiente para garantizar que esté apagado, al menos en condiciones nominales. La figura del 'máximo absoluto' nunca es buena para diseñar, pero generalmente hay una advertencia sobre esta figura en particular que permite ese voltaje o un poco más si la corriente es limitada.

Por lo tanto, creo que esto funcionará (con tri-state, no push-pull), y también creo que es lo suficientemente aceptable para un proyecto de pasatiempo, suponiendo que nadie vaya a usar un eliminador de batería en el circuito en el futuro*. Tenga en cuenta que el margen de los LED rojos es mínimo y considere evitar el rojo en favor del amarillo o el naranja. O simplemente agregue un diodo de silicio en serie con los LED rojos (un diodo se puede usar para varios LED).

  • Si la red de protección ESD en el ATMEGA328P comienza a conducir, tenderá a aumentar el suministro de 3,3 V, fuera del control del regulador. Esto no es bueno para la estabilidad y posiblemente podría dañar algo, aunque el propio ATMEGA328P-M está clasificado para funcionar con 5V.

Una vez hice algo como esto en un producto comercial (para impulsar una serie de LED con Vf alto usando una salida de corriente constante de 5 V), pero diseñé una fuente de alimentación con el voltaje excéntrico correcto y el coeficiente de temperatura apropiado para que coincida con los LED. y así optimizar la situación. Creo que el suministro fue de alrededor de 8-9V. Trabajó de maravilla, fácilmente de -20 °C a 80 °C (la especificación era 0-50 °C).

Su razonamiento es bueno y estaría convencido, pero @Olin Lathrop llega a la conclusión opuesta y, por desgracia, su razonamiento también me parece bueno. ¿Podrías revisar su respuesta y tomar en cuenta sus puntos? Gracias
Estoy de acuerdo con el razonamiento de Olin, solo tiene preocupaciones válidas sobre diferentes cosas que suceden (que podrían afectar, por ejemplo, una entrada analógica). Si quiere estar realmente seguro, puede usar un diodo en serie como sugerí anteriormente con una resistencia de purga a tierra solo para los LED rojos, y controlar las salidas push-pull como sugiere Olin. Algo así como un 1N4148 con 10K a tierra podría suministrar muchos LED rojos.

Someter un pin de E/S a voltajes por encima del nivel de potencia del procesador no es una buena idea.

Usa un transistor:

Agregado:

La solución correcta que no viola ningún parámetro en la hoja de datos está arriba. Sin embargo, si está tratando de salirse con la suya, lo más probable es que funcione si se asegura de que el pin de salida siempre esté activado.

Suponemos un procesador moderno con salida CMOS. El transistor CMOS puede conducir corriente en ambas direcciones cuando está encendido. La pequeña cantidad de corriente que obtendrá a través del LED cuando la salida sea alta se conducirá a través del transistor del controlador superior a Vdd. El valor de esa corriente con polarización directa de 1,2 V será difícil de predecir, variará significativamente con la temperatura y variará de una parte a otra. Sin embargo, será "muy pequeño" en comparación con el consumo total de corriente del procesador.

Si cambia la salida entre baja y alta impedancia en lugar de baja y alta, entonces el circuito de protección para ese pin tomará la pequeña corriente del LED en su lugar. Para algunos diseños, esto es solo un diodo a Vdd y, por lo tanto, no es peor que tener la mejor conducta FET. Sin embargo, otros diseños tienen circuitos más complicados que serían peores para descargar la corriente. Adivinar qué causa menos problemas es uno de los problemas con los que te encuentras cuando ignoras las especificaciones.

Hay dos formas más de cumplir completamente con las especificaciones:

  1. Agregue una pequeña resistencia de purga a tierra. Dimensione esto para tomar lo que determine que será la corriente LED máxima en todas las condiciones. El LED puede estar muy débilmente iluminado cuando se supone que debe estar apagado.

  2. Use un pin que tenga una entrada "tolerante a 5 V" y cambie el pin entre bajo y flotante.

hacer esto necesitaría un transistor y una resistencia adicionales que antes, podría ser una solución voluminosa para manejar muchos LED, como parece ser su intención.
Como ha explicado op, los pines nunca verán un voltaje bruto superior a vcc. Ni siquiera intentas responder la pregunta.
Gracias por tomarse el tiempo para elaborar el enfoque de transistor convencional. Conozco esa opción, pero como entendió @KyranF, estoy comprobando si puedo confiar en Vfwd del LED para proteger los diodos de protección, y recibir comentarios sobre cuál de los dos enfoques (pin = VCC o pin de alta impedancia) sería mejor, en un contexto donde agregar el transistor y ambas resistencias sería menos conveniente.
@Passe: No, el pin puede ver un voltaje superior a Vdd. El LED permitirá algo de corriente con polarización directa de 1,2 V. Eso podría ser fácilmente, y probablemente lo sea, suficiente para elevar un pin de alta impedancia por encima de su voltaje de suministro.
Esta respuesta ha mejorado mucho y tiene un buen razonamiento de por qué el nivel alto activo para el LED apagado sería más seguro que la alta impedancia. Por desgracia, otra buena respuesta de @Spehro Pefhany también tiene un razonamiento de por qué sería mejor la alta impedancia. ¿Podría tener en cuenta su razonamiento y ayudarme a determinar qué enfoque es mejor? Gracias
@OlinLathrop, ¡sabes por qué esto es relevante! ¡Porque los chinos que fabrican estos tableros de mierda están conectando este LED de esta manera, y te envían esta cosa sin documentación! ¡DIOS, por qué mi LED no parpadea!

Su enfoque 2 (tristar el pin D3) está bien, excepto que otros carteles señalaron que el diodo de protección ESD de D3 a VCC está en serie con el LED (y la resistencia) cuando la salida está triestablecida. Habrá un pequeño flujo de corriente allí a (4,5 V-3,3 V) = 1,2 V en ambos diodos desde el suministro de 4,5 V a VCC. El umbral del LED es mucho más alto que el umbral del diodo ESD de aproximadamente 0,5 V a 0,6 V para una corriente apreciable (microamperios o más; son diodos grandes), por lo que a 1,2 V en ambos es probable que la corriente esté en el rango de microamperios. Sin embargo, el voltaje del pin D3 superará el VCC en aproximadamente 0,5 V a 0,6 V y esto probablemente exceda el voltaje recomendado en el pad (para la tensión en el óxido de puerta de los transistores del circuito de entrada).

Básicamente, está utilizando el pin D3 como un interruptor NMOS de drenaje abierto. Siempre puede agregar un transistor NMOS discreto fuera del chip que pueda soportar> 4.5V. Si bien agrega un componente e invierte el sentido del puerto, evita la sobretensión en el IC.

Tenga en cuenta que, hasta el momento, ninguno de los enfoques proporciona regulación de corriente, por lo que el brillo variará con la tolerancia de la resistencia, la temperatura y la variación del suministro. Hay algunos esquemas simples para eso si está interesado, pero agregan un par de componentes más.

Calculo un LED rojo a aproximadamente 2v Vfwd, por lo que la resistencia debería caer 2.5v @ 20ma, digamos 1K2 ohmios.

Tienes que revisar tus matemáticas en este para el valor de tu resistencia.

R = V I

R = 2,5 V caídos por la resistencia / 20 mA a través de la resistencia = 125 ohmios.

Si no está interesado en agregar un transistor, ¿por qué no obtener el LED del pin del microcontrolador?

Ups, hice la división rápida y mal en mi cabeza, tienes razón. ¿Qué consejo daría para obtener un LED azul o verde desde un pin de microcontrolador con Vcc a 3.3v? Me imagino que la caída de 0,3 V en la resistencia será muy variable, ya que el Vfwd nominal del LED (alrededor de 3 V) puede variar según el lote, la temperatura, etc. La variación de Vfwd en 0,1 V hace una pequeña diferencia cuando se conduce desde 4,5 v (1.5 vs 1.6 o 1.4 v resistencia de caída) pero mucho más cuando se conduce desde 3.3v. O eso he oído.