¿Cómo generar un doble PWM con un microcontrolador?

Necesito encender un LED durante una secuencia con un microcontrolador. La secuencia es la siguiente:

  • Necesito encender/apagar el LED con una frecuencia determinada (PWM 1). Será entre 1 y 200 Hz.
  • Cuando el LED está encendido, tengo que controlar su brillo con un segundo PWM (el ciclo de trabajo establecerá el brillo, debe ir de 1 a 100 %).

Nunca he hecho este tipo de cosas: ¿es posible? En caso afirmativo, ¿cuál es el mejor enfoque para hacerlo?

Todavía no he elegido ningún microcontrolador en particular. Podría elegir uno de la familia STM32. El caso es que necesito controlar 4 LED diferentes, y esos LED son LED de alto rendimiento.

Gracias de antemano. :)

Yo no llamaría a eso doble PWM; quieres modular el PWM, en este caso al extremo. Esto es bastante estándar, pero debe proporcionar más información si desea una buena respuesta. ¿Qué familia de microcontroladores está considerando?
Dejaré más información como edición, gracias.
Si compartió un poco más sobre su aplicación, podría obtener mejores respuestas.

Respuestas (1)

Si realmente desea hacerlo con dos PWM, puede usar dos temporizadores y una puerta AND para combinar la salida.

Si desea que el LED parpadee como explica en su pregunta, es más simple:

  • Controle el brillo del LED con tiempos en modo PWM

  • Usando otro temporizador, o incluso el mismo temporizador, configure una interrupción que actualice los registros PWM para encender/apagar el LED

Digamos que quiere PWM a 1 kHz para controlar el brillo. Así que tienes un temporizador que cicla a 1kHz y emite una señal PWM. Ahora, habilite la interrupción para este temporizador y el controlador de interrupciones se ejecutará 1000 veces por segundo. En el código, incrementa una variable, obtienes un contador de ticks de milisegundos. Puede usarlo para encender y apagar el LED.

Dependiendo de su micro, es posible que su marco de software ya tenga una interrupción de temporizador que ya se ejecuta cada milisegundo, por lo que solo necesita agregarle su código.

Gracias por tu respuesta, no había pensado en eso. Solo necesito encontrar un microcontrolador que pueda manejar 4 secuencias de LED diferentes al mismo tiempo. :)
Si necesita 4 intensidades de LED diferentes, necesita 4 salidas PWM (pero no necesariamente 4 temporizadores, algunos temporizadores pueden tener varias salidas) ... también hay chips I2C que pueden controlar varios LED con PWM independiente