Problema de pines PWM

Tengo un pequeño reto para mí clase de robótica y necesito hacer una secuencia de 10 leds, los cuales tienen que:

  1. Hacer una secuencia de pedido y apagado, cuando el led1 esté encendido todos los demás estan apagados y cuando esté se apague pase al siguiente, estando ahora el led2 encendido.
  2. Tiene que tener un efecto de Ping-Pong cuando llegue hasta el led10 se tiene que devolver.

Y ahora aquí está mi problema

  1. Cuando se vayan encendiendo los leds tiene que hacerlo de manera gradual, empezando de menos a más y cuando lleguen a su pico de brillo (255 por los pines PWM) tiene que bajar la intensidad, apagarse y que el siguiente led haga lo mismo.

Mi problema es que tengo un Arduino Uno y solo tiene 6 pines PWM

con una salida PWM y diez diodos es suficiente

tienes todos los pines en alto y solo bajas el que desees que se prenda

Hi,
Una sugrencia es de usar un strip de leds ws28121b ya que estos los puede controlar indevidualmente el color,prenderlos indeviduaulmente y controlar ;a intencidad. y Solamente usas un solo pin.

¿Y cuál es el problema?
Con 1 alcanza y sobra, mirá

El único problema que veo, en tu circuito, es que generas polaridad inversa en los pines. Seguro que funcionaria y la probabilidad de dañar algo (sobretodo si la resistencia es alta) es baja, pero yo agregaría diodos.

Por qué?
Solo estoy multiplexando los LED, pero en serio, decime que es lo que se me escapa y no veo.

Es que es atmega no soporta la misma cantidad de corriente En modo source que sink, casi un tercio menos en modo sink.

por eso hay que tener cuidado cuando colocas cargas inversas

¿Qué carga inversa?

La "carga" es un diodo por el que no circula corriente a menos que esté en polarización directa (en este caso, pinX en LOW y PWM en semiciclo HIGH). Y en esta condición el pin maneja perfectamente los 10mA que le estarían entrando del LED ya que según las hojas de datos están garantizados (ver abajo) 20mA a Vcc=5V tanto sink como source (aunque pueden manejar algo más).
Cuando la PWM está en el semiciclo LOW no circula corriente porque cátodo y ánodo están a 0V (o casi).

Cuando el pin está en HIGH y la PWM está en el semiciclo LOW, el diodo está en polarización inversa (cátodo + y ánodo -), entonces no circula corriente (a menos que el LED tenga fuga).
Y, obviamente, en el semiciclo HIGH de la PWM la tensión en ánodo y cátodo es virtualmente la misma así que tampoco circula corriente.


  1. Although each I/O port can sink more than the test conditions (20mA at VCC = 5V, 10mA at VCC = 3V) under steady state conditions (non-transient)...
  2. Although each I/O port can source more than the test conditions (20mA at VCC = 5V, 10mA at VCC = 3V) under steady state conditions (non-transient)...

Fuente: ATmega328P [DATASHEET] 7810D–AVR–01/15, pág. 259

1 Like

Hi,
Aqui tambien se puede usar un mux de 16 pines como el CD74HC4067 que solamente usa 4 pines para seleccionar los 10 leds.Mi preferida seraa el usar un ws28121b strip ya que usa solamente un pin.

Si, también podría usar una placa con ESP32, STM32 o RP2040 (por nombrar las más económicas) que tienen montones de pines PWM, peeero... tiene un UNO y 10 LED y, además, es una tarea para la escuela. :wink:

1 Like

Gracias! Tenia una duda con esto también

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.