¿Realmente necesito resistencias al controlar los LED con Arduino?

Estoy probando Arduino Uno por primera vez con 2 LED parpadeantes en una placa. Todos los tutoriales en Internet parecen utilizar una resistencia. Conozco la función de las resistencias, pero ¿realmente importa aquí? Estos LED funcionan bien sin una resistencia.

Comentarios

  • Eso depende si desea que su LED se derrita o no. Si no ‘ no le importa, omita la resistencia. :-).

Respuesta

¡Travieso! :-). Si dicen que use una resistencia, ¡hay una buena razón para eso! ¡Apáguelo, AHORA!

La resistencia está ahí para limitar la corriente de los LED. Si lo omite, la limitación de corriente debe provenir de la salida de Arduino, y no le gustará. ¿Cómo averigua cuál debe ser la resistencia? ¿Conoce la ley de Ohm? Si no la conoce, escríbala en letras grandes:

\ $ V = I \ cdot R \ $

El voltaje es igual a la corriente por la resistencia . O podría decir

\ $ R = \ dfrac {V} {I} \ $

Es lo mismo. El voltaje que conoce: Arduino funciona a 5V. Pero no todo eso pasará por la resistencia. El LED también tiene una caída de voltaje, generalmente alrededor de 2 V para un LED rojo. Por lo tanto, quedan 3 V para la resistencia. Un LED indicador típico tendrá una corriente nominal de 20 mA, luego

\ $ R = \ dfrac {5V – 2V} {20mA} = 150 \ Omega \ $

El Arduino Uno usa el ATmega328 microcontrolador. La hoja de datos dice que la corriente para cualquier pin de E / S no debe exceder los 40 mA, lo que comúnmente se conoce como calificaciones máximas absolutas. Dado que no tiene nada para limitar la corriente, solo hay (baja !) resistencia del transistor de salida. La corriente puede ser superior a 40 mA, y su microcontrolador sufrirá daños.

edit
El siguiente gráfico de la hoja de datos de ATmega muestra lo que sucederá si maneja el LED sin una resistencia limitadora de corriente:

ingrese la descripción de la imagen aquí

Sin carga, el voltaje de salida es de 5V como se esperaba. Pero cuanto mayor sea la corriente consumida, menor será el voltaje de salida, caerá alrededor de 100 mV por cada carga adicional de 4 mA. Esa es una resistencia interna de 25 \ $ \ Omega \ $. Entonces

\ $ I = \ dfrac {5V – 2V} {25 \ Omega} = 120mA \ $

El gráfico no llega tan lejos, la resistencia aumentará con la temperatura, pero la corriente seguirá siendo muy alta. Recuerde que la hoja de datos le dio 40 mA como calificación máxima absoluta. Tienes tres veces más. Esto definitivamente dañará el puerto de E / S si lo hace durante mucho tiempo. Y probablemente también el LED. Un LED indicador de 20 mA a menudo tendrá 30 mA como calificación máxima absoluta.

Comentarios

  • En realidad, no. 3 y ganó ‘ t obtener luz, porque 3 x 2V > 5V, y 2 usted ‘ tendremos el mismo problema, solo una caída de 1V en lugar de 3V. ¡Agregué a mi respuesta para apagarlo ahora!
  • Perdí la cuenta de cuántas veces he escrito ese cálculo en las respuestas aquí. Debería tener un script para ello 🙂
  • Los LED están diseñados para funcionar a una cierta corriente máxima. El voltaje que los conduce significa que la corriente no está controlada. Los puertos están hechos para proporcionar una cierta corriente máxima. Ponerlos en cortocircuito o sobrecargarlos PUEDE provocar la destrucción total del IC o simplemente causar problemas sutiles de funcionamiento. O no.
  • @ JohnR.Strohm No ‘ t lo llamaría un estándar de la industria.
  • @ JohnR.Strohm – Como m. Alin dice que ‘ no es un estándar de la industria. Digikey enumera los LED nominales de 10 mA que van desde 0,4 mcd a 1000 mcd, y los LED de 20 mA que van desde 0,1 mcd a 54000 mcd. No hay ‘ línea en él, y no hay garantía de que su LED de 10 mA sea bien visible. El voltaje del LED rojo generalmente varía de 1.8V a 2.2V. Para un LED rojo, 1.6V es excepcionalmente bajo.

Respuesta

40plot,

Debo decir que NO SE RECOMIENDA conducir un LED sin resistencia a menos que sepa lo que está haciendo. Sin embargo, si comprende cómo se comporta un LED, puede conducirlo sin una resistencia de forma segura. De hecho, a menudo es mejor manejar un LED sin una resistencia limitadora de corriente.

¿Por qué manejaría un LED sin una resistencia? Simple, para hacer que su circuito sea más eficiente energéticamente.

¿Debería manejar su LED con PWM configurado en un ciclo de trabajo constante (es decir, 5V PWM al 34% ciclo para alcanzar un voltaje promedio de 1,7 V)?

Sí y no. El uso de PWM puede funcionar tan bien como aplicar un voltaje específico (si tiene cuidado), pero hay mejores formas. Cosas de las que preocuparse al adoptar el enfoque PWM.

  1. La frecuencia del PWM es importante.Al usar PWM en este escenario, está confiando en la capacidad de los componentes de su circuito para manejar temporalmente altas corrientes. Su mayor preocupación será cómo el LED maneja una alta corriente temporal y cómo el circuito de salida de su chip puede manejar temporalmente una corriente alta. alta corriente. Si esa información no se especifica en la hoja de datos, entonces los autores de la hoja de datos fueron perezosos. ¡PERO !!! Si esa información se especifica en la hoja de datos, entonces puede aprovecharla de manera segura. Por ejemplo, el LED que tengo a continuación para mí tiene una clasificación de corriente máxima de 40 mA. Sin embargo, también tiene una » Corriente directa máxima » clasificación de 200 mA, con una nota que la corriente no puede permanecer en 200mA por más de 10us. Así que … puedo manejar el LED con 1.7V (el voltaje directo típico de los LED de la hoja de datos). Con un ciclo de trabajo del 34% y una fuente de alimentación de 5V (34 % de 5V = 1.7V) producirá un voltaje promedio de 1.7V, solo necesito asegurarme de que mi PWM a tiempo sea 10us o menos. n-time, la corriente a través del LED probablemente aumentará a alrededor de 58 mA (58 mA = consumo de corriente típico a 1,7 V de mi diodo dividido por 34%). 58mA exceden el máximo de corriente constante de mis LED de 40mA por 18 mA. Finalmente … Necesitaría una frecuencia PWM de 33,3 kHz o más para manejar mi LED de forma segura (33,3 kHz = La inversa de [10us de tiempo de ENCENDIDO dividido por 34% para obtener el período PWM]). En REALIDAD, podría usar PWM de manera segura para alimentar mi LED con una frecuencia PWM más lenta. La razón es la siguiente: las hojas de datos generalmente no especifican todos los escenarios operativos válidos de un componente. No especifican esos escenarios porque el proveedor no quiere invertir tiempo en especificar y respaldar el uso de su componente para uso en esquina. casos. Por ejemplo, con mi LED, si puedo operar el LED a 40mA para siempre (40mA es la clasificación máxima de corriente constante) y puedo operar el LED a 200mA por 10us. Entonces, puedo estar 99.99999% seguro de que puedo operar con seguridad el LED a 100mA durante un período superior a 10us, probablemente cerca de 20us.

NOTA: Todos los componentes pueden manejar de manera segura picos de corriente temporales por encima de sus valores máximos siempre que la duración del los picos actuales son SUFICIENTEMENTE PEQUEÑOS . Algunos componentes serán más indulgentes que otros y, si tiene suerte, los componentes La hoja de datos especificará qué tan bien puede manejar picos de corriente.

  1. El voltaje de su PWM es importante. Demostraré mi punto con un ejemplo en lugar de una explicación. Si usamos el LED al que me refería antes, sabemos que el ciclo de trabajo del 34%, a 33,3 kHz, a 5 V es seguro. Sin embargo, si nuestro voltaje era de 12 V, tendríamos que reelaborar nuestros cálculos para mantener la misma cantidad de corriente fluyendo a través del LED. Nuestro ciclo de trabajo tendría que bajar a 14.167% (1.7V dividido por 12V) y nuestra frecuencia mínima de PWM disminuiría a 14.285kHz (la inversa de [ 10us dividido por 14.167%]). SIN EMBARGO! , esto es motivo de preocupación. En el escenario de 5V estamos aplicando 5V para 10us y en el escenario de 12V estamos aplicando 12V por 10us. Más que duplicamos el voltaje durante esos 10us, tiene que haber algunas consecuencias. ¡Y sí, las hay! Mi hoja de datos LED no me da los datos necesarios para saber qué tan alto de un voltaje que puedo usar para 10us antes de dañar mi LED. Seguramente 1000V por 10us freirán mi LED. Pero, ¿cómo sé si 5V a 10us freirán mi LED? o 12V para 10us? Si no hay una especificación para ello, está tomando un riesgo. Entonces … 5V por 10us es arriesgado, pero probablemente seguro.

NOTA: Puede agregar un capacitor al circuito para promediar el PWM y hacer que este problema desaparezca.

  1. También debe conocer las capacidades del pin de salida que ha conectado a su LED. El parámetro más importante será la corriente de salida máxima. Para el Arduino Uno, creo que es 40 mA. Debe elegir un ciclo de trabajo PWM cuyo voltaje promedio mantenga la corriente pasando por el LED por debajo de 40 mA. Para saber qué voltajes producirán tanta corriente, debe observar la curva IV de los LED (gráfico de corriente frente a voltaje). Para un LED típico, un voltaje entre 0,7 V (voltaje mínimo típico necesario para emitir luz desde el LED) y 1,25 V será casi seguro que sea seguro. ¿Por qué 1,25 V es probablemente seguro? Bueno, la mayoría de los LED no superarán los 40 mA a 1,25 V, incluso sin una resistencia limitadora de corriente. Otra cosa que ayuda a proteger a alguien en caso de que apliquen demasiado voltaje es que el circuito de salida digital del Arduino tendrá su propia impedancia de salida. esa impedancia de salida será baja, pero incluso una impedancia de salida de 20 ohmios proporcionaría una cantidad no despreciable de protección. El arduino uno tiene una impedancia de salida digital de alrededor de 250 ohmios. En pocas palabras, si maneja un LED usando PWM a 1.0V a alta frecuencia, para un LED típico, hay cero posibilidades de que dañe su salida digital en un Arduino Uno.

  2. El enfoque PWM impulsa el LED en una forma de bucle abierto (y también lo hace el uso de 1.Fuente de alimentación de 7V sin PWM). Estás aplicando un voltaje promedio al LED que es justo el valor correcto para encender el LED, pero no lo suficientemente alto como para dañarlo. el LED. Desafortunadamente, el rango de voltaje desde ENCENDIDO (y lo suficientemente brillante para ver) hasta el LED dañado es muy pequeño (ese rango en mi LED es de aproximadamente 0,7 V). Hay varias razones por las que el 1,7 V que cree que está aplicando no siempre será 1,7 V …

a. Cambios en la temperatura ambiente. ¿Qué pasaría si tuviera un controlador de motor, regulador de voltaje, etc. en una caja cerrada que también contenía el LED. No sería raro que esos otros componentes elevaran la temperatura ambiente dentro del gabinete de 25 ° C a 50 ° C. Este aumento de temperatura VOLVERÁ cambiará el comportamiento de su LED, su regulador de voltaje, etc. ya será de 1,7 V y su LED que solía freír a 2,5 V ahora se freirá a 2,2 V.

b. Cambios en su voltaje de suministro. ¿Y si tu suministro fuera una batería? A medida que la batería se agota, el voltaje cae considerablemente. ¿Qué pasa si diseñó su circuito para que funcione bien con una batería de 9V ligeramente gastada, pero luego agregó una batería nueva de 9V? Las baterías de plomo-ácido nuevas de 9 V suelen tener un voltaje real de 9,5 V. Dependiendo del circuito que está proporcionando los 5V utilizados para el PWM, esos 0.5V adicionales podrían aumentar su PWM de 5V a 5.3V. ¿Y si estuviera usando una batería recargable? Tienen un rango de voltajes aún mayor durante todo su ciclo de descarga.

c. Hay otros escenarios, como la corriente inducida de EMI (los motores lo harán).

Tener una resistencia limitadora de corriente le evita muchos de estos problemas.

Usar PWM para controlar un LED no es una muy buena solución, ¿hay una mejor manera que no requiera una resistencia limitadora de corriente?

¡Sí! Haz lo que hacen en bombillas LED para tu hogar. Maneja el LED con un controlador de corriente. Configura el controlador de corriente para que maneje la corriente para la que está clasificado tu LED.

Con el controlador de corriente adecuado , se puede aumentar drásticamente, y puede conducir el LED de forma segura sin preocuparse por la mayoría de los problemas relacionados con la activación de un LED en bucle abierto.

La desventaja: Necesita un controlador de corriente y ha aumentado la complejidad del circuito en 10 veces. Sin embargo, no se desanime. Puede comprar circuitos integrados de controlador de corriente, circuitos integrados de controlador LED o hacer su propio convertidor de refuerzo controlado por corriente. No es tan difícil. Tómese un tiempo de su apretada agenda y aprenda sobre los convertidores boost y buck. Aprenda a cambiar las fuentes de alimentación. Son los que alimentan su computadora y son extremadamente eficientes energéticamente. Luego, construya uno desde cero, o compre un CI económico para que haga la mayor parte del trabajo por usted.

Por supuesto, como con todos los diseños electrónicos, siempre hay más cosas que puede hacer para mejorar su circuito. Consulte la figura 3 en el siguiente PDF para ver cuán compleja puede ser incluso una bombilla LED doméstica en estos días …

http://www.littelfuse.com/~/media/electronics/design_guides/led_protectors/littelfuse_led_lighting_design_guide.pdf.pdf

En resumen: Tienes que decidir por ti mismo cuánto riesgo estás dispuesto a correr llévelo con su circuito. Usar 5V PWM para impulsar su LED probablemente funcionará bien (especialmente si agrega un capacitor para suavizar la onda cuadrada PWM y maximizar su frecuencia PWM). No tenga miedo de empujar sus dispositivos electrónicos afuera de su operación habitual errando condiciones, simplemente, manténgase informado cuando lo haga, conozca los riesgos que está tomando.

¡Disfrute!

FYI: Me sorprende la cantidad de personas que saltan inmediatamente a la respuesta, » DEBE USAR UNA RESISTENCIA LIMITADORA DE CORRIENTE «. Eso es un consejo bien intencionado, pero demasiado seguro.

Ort

Comentarios

  • I ‘ Me sorprende ver cuántas personas consideraron esta respuesta como un valioso consejo de diseño. Conducir un LED sin limitación de corriente usando PWM es tan malo para el LED como lo que está haciendo el OP, además generará ondas EMI y VCC como un crasy.
  • @DmitryGrigoryev, me di cuenta de que no logré abordar completamente la corriente de salida máxima de la salida digital. Agregué una nueva viñeta para cubrir eso. PWM SÍ permite que alguien conduzca de forma segura un LED sin una resistencia limitadora de corriente. La ondulación EMI y VCC se crea cada vez que maneja cargas con una señal digital, pero esto es común (por ejemplo, H Bridge, Boost Converter, Hobby Servo Control, etc.) y no es una razón para evitar PWM. Existen soluciones razonables para manejar el rizado EMI y VCC si es necesario. La mayoría de las personas ‘ t no se preocupan por las pequeñas cantidades de ondas EMI y VCC creadas al activar un LED con PWM.

Respuesta

Puede usar las resistencias pullup integradas como se sugiere aquí :

Las resistencias pullup proporcionan suficiente corriente para iluminar débilmente un LED conectado a un pin que ha sido configurado como entrada.

Comentarios

  • No para LED, esto se puede usar para botones pero para LED hay un peligro de romper la salida
  • si no es seguro, ¿por qué lo dicen los documentos oficiales? (Yo ‘ también lo probé y funcionó como se describe).
  • Por favor, lea hasta OUTPUT, menciona que necesita una resistencia en serie: » Esta es suficiente corriente para iluminar un LED (no ‘ no olvide la resistencia en serie) o hacer funcionar muchos sensores, por ejemplo, pero no hay suficiente corriente para hacer funcionar la mayoría de los relés, solenoides o motores. »
  • @MenelaosVergis es seguro hacer esto cuando el pin está en modo INPUT_PULLUP, no es seguro hacerlo con un pin en modo OUTPUT. Esto está claro en los documentos si lee ambas secciones (y del extracto citado en esta respuesta).

Respuesta

La respuesta corta es, sí y no, depende de tu arduino y depende del color de tu led. Por ejemplo, una placa de 3.3V no requiere una resistencia en serie con un pequeño LED verde, porque el voltaje directo del LED es bastante alto, vea esto . La resistencia interna es de alrededor de 25 Ohm, tome (3.3 – 3) / 25 = 12mA, por lo que aún está bien, no debe pasar por la corriente máxima por pin que es 40mA para el procesador atmel 328p usado en las placas UNO (a menos que usa una derivada del 328p donde podría ser una historia diferente). Sin embargo, para un arduino que funciona a 5 V, surgirán problemas con un LED infrarrojo que tiene un voltaje directo mucho más bajo, típicamente 1.2 V, (5-1.2) / 25 = 150mA, y esto definitivamente es demasiado, así que use un limitador de corriente como como una resistencia para impulsar ese tipo de LED. El pin 13 en las placas Arduino (u otro pin en las variantes) ya tiene un led y una resistencia en serie. Además, la fuente de alimentación de la placa tiene una clasificación máxima, normalmente 200 mA, y debe permanecer por debajo de este nivel, y no puede extraer más de una cierta cantidad de mA por grupo de pines, esto se explica aquí . Si desea manejar muchos LED, considere usar un controlador LED de matriz que realice la multiplexación por usted, vea, por ejemplo, mi área de YouTube donde demuestro el controlador MAX7219CNG. Pero también Arduino Uno puede hacer la multiplexación por usted, vea mi termómetro IR con 4 LED de siete segmentos en youtube. Feliz piratería.

Respuesta

La respuesta de stevenvh explica lo que debe hacer, pero también debe calcular la disipación de potencia a través del LED para no quemar la resistencia de caída de voltaje. Por ejemplo, si el voltaje de suministro es de 5 V y el voltaje directo de la resistencia es de 1,0 V, entonces caerá 4 V. El uso de una resistencia de 220 ohmios dará como resultado una corriente de (I = V / R) de 18 mA y una potencia disipación (P = IV) de 72 mW.

Las resistencias 0402 de tamaño imperial (1005 métricas) son generalmente de 1/16 W, que son 62,5 mW. Por lo tanto, en este caso esto no funcionaría; sobrecalentaría la resistencia y acortar su vida útil. Por lo tanto, necesitaría cambiar a una resistencia 0402 con una clasificación de 1/10 W, o una resistencia 0603 más grande.

Siempre que haga cálculos como estos, agréguelos al esquema, de modo que el revisor puede verificar su trabajo fácilmente.

Tenga en cuenta que el voltaje directo (y por lo tanto, el valor de la resistencia) es una función del LED, y los diferentes colores de los LED tendrán diferentes valores. Los LED azules en particular tienen un alto voltaje directo (~ 3.0V típ.). Por lo tanto, si está tratando de que cuatro LED diferentes tengan el mismo brillo, entonces deberá repetir los cálculos para cada LED. Para hacerlo realmente bien, observe las características ópticas de cada LED a su corriente nominal y ajústelo en consecuencia.

Respuesta

¡SÍ! Se puede hacer.

A pesar de que lo que se ha dicho es correcto … hay otra forma. Una forma más eficiente de controlar los LED con 5v.

Esto está un poco indocumentado y Se desconoce si la solución desgastará los LED, pero se puede hacer. De hecho, lo estoy haciendo.

Usando PWM por hardware: Aquí hay un ejemplo :

#include <avr/io.h> #include <util/delay.h> void pwm_init() { // initialize TCCR0 as per requirement, say as follows TCCR0 |= (1<<WGM00)|(1<<COM01)|(1<<WGM01)|(1<<CS00); // make sure to make OC0 pin (pin PB3 for atmega32) as output pin DDRB |= (1<<PB3); } void main() { uint8_t duty; duty = 1; // duty cycle = 0.39% of the time (depends on the oscillator.) // initialize timer in PWM mode pwm_init(); // run forever while(1) { OCR0 = duty; } } 

PWM también se puede simular usando software y los temporizadores avrs. Puede encontrar un ejemplo dentro de la biblioteca lufa, llamado LEDNotifier.c.

Mi conclusión: es posible conducir un LED a 5V.

PROS: No se necesita una resistencia. Algo de energía ahorrando también (~ 50%)

CONTRAS: No sé si el componente está estresado y si se reduce su vida útil.

Hay un tipo que también hizo este experimento en Stanford y publicó información en su sitio .

Comentarios

  • Esto simplemente no ‘ parece una buena idea. Usted ‘ probablemente esté obteniendo más corriente del controlador de la ‘ clasificada, incluso si ‘ no lo está haciendo durante mucho tiempo.
  • Como se dijo, esto no está documentado. La salida IO de Arduino UNO puede conducir alrededor de 40ma-50ma. Eso es constante. Puedo manejar pulsos muy cortos con más corriente. Por favor, eche un vistazo a wikipedia .
  • En el entorno Arduino, uno puede obtener PWM más fácilmente con analogWrite() en el pin correspondiente. Aún así No estoy seguro de que sea una buena idea, pero al menos para los LED de infrarrojos, es ‘ común que las hojas de datos permitan corrientes de pico considerablemente más altas para ciclos de trabajo inferiores al 100%. .
  • Yo ‘ estoy bastante seguro de que los ahorros de energía serán negativos en comparación con una solución basada en resistencias, porque la eficiencia del LED se reduce a medida que aumenta la corriente.
  • @ScottSeidman ¿Por qué no es ‘ t esa una buena idea? sólo porque la mayoría de la gente cree que no se recomienda utilizar un LED sin resistencia? esta respuesta probó investigación, una fuente muy respetuosa como la Universidad de Stanford y por lo que puedo experimentar, funciona. Definitivamente me encantan las publicaciones con votos negativos porque dicen que aquellos que votaron en contra son parciales. Qué paradoja …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *