Aumente el ciclo de trabajo mínimo de PWM para PWM de alta resolución

Estoy trabajando en un proyecto que involucra la conducción de LED a una frecuencia PWM de 20 kHz con una resolución de 1024 bits. Calculé que el tiempo de pulso mínimo, (1/frecuencia)/resolución, daría como resultado un tiempo de pulso mínimo de ~50 ns, lo que significa que necesito tiempos de subida y bajada de <25 ns de todos los componentes que estoy usando para encender y apagar los LED. Si bien hay componentes que cumplen con esta especificación, es bastante exigente y me gustaría usar algunos circuitos integrados más económicos y más ampliamente disponibles.

Mi opinión es que si bien la resolución de 1024 es útil para ajustar la salida de los LED en incrementos finos en mi caso de uso, en realidad no necesito un brillo mínimo de 1/1024, pero probablemente podría salirme con la mía con un mínimo de 1% de el brillo total, o 1024 x 0,01, que es aproximadamente 10 veces el ancho de pulso mínimo o alrededor de 500 ns. Esto da como resultado tiempos de subida y bajada de 250 ns, lo que aumenta más el número de componentes disponibles.

¿Mi comprensión de la frecuencia PWM, la resolución y la relación del ciclo de trabajo es correcta aquí?

¿Modo de salto o frecuencia más baja una posibilidad?
Un tiempo de pulso de 50 ns necesita subir y bajar ambos <= 50 ns y aproximadamente iguales entre sí. El final del pulso lógico digital es el comienzo, no el final, del tiempo de caída del pulso de salida.
Tengo curiosidad: ¿cuál es su aplicación que necesita PWM de 20 kHz en un LED?

Respuestas (3)

Tus cálculos me parecen correctos.

Sin embargo, ¿realmente le importa que el tiempo de subida sea > 25 ns?

Si dice que no necesita el rango por debajo del 1% de brillo, simplemente puede usar solo valores en el rango de 10 a 1023 de 1023 y, por lo tanto, obtiene un tiempo de aumento de al menos 10 * 50 ns = 500 ns.

Si por error (o para simplificar el código/diseño) aún usa el rango de 0 a 9 de 1023, simplemente se encontrará en una de las siguientes situaciones:

  1. El LED no se enciende en absoluto (no tiene tiempo suficiente para encenderlo antes de comenzar a apagarlo).
  2. El LED se enciende un poco (menos que si tuviera un encendido/apagado instantáneo).
  3. El LED de alguna manera logra encenderse y luego se apaga lo más rápido posible.

Cuál de los anteriores ocurrirá depende de los componentes exactos que utilice para controlar el LED (supongo que 1 o 2 son los más probables).

Entre 0 y 9, es posible que no obtenga un brillo proporcional a PWM, pero debería obtener:

  • al menos el mismo brillo que para 0
  • como máximo el mismo brillo que para 10
  • para cualquier 2 números A<B, tendrás brillo_A<=brillo_B

Si no le importa qué sucede exactamente por debajo del 1% de brillo, no use valores del 1 al 9, o simplemente acepte el hecho de que no obtendrá una linealidad perfecta para ellos.

Ok, perfecto, eso era básicamente lo que estaba tratando de preguntar (aunque de manera confusa) si podía omitir los valores de brillo más bajos. ¡Gracias!
sí, puede (o nunca los usa en su código (o cualquier otra cosa que proporcione el PWM), o los usa y simplemente acepta que el comportamiento no es perfecto para esos valores)
Hay un error significativo en los cálculos del OP: el ancho de pulso PWM mínimo no es la suma de los tiempos de subida y bajada, es igual al tiempo de subida. El tiempo de caída no comienza hasta el final del pulso digital.
@BenVoigt ese no es el caso, según tengo entendido. Aquí hay una ilustración de cómo calcular el ancho de pulso teniendo en cuenta los tiempos de subida y bajada: mosaic-industries.com/embedded-systems/instrumentation/…
@flimsy: mire su referencia nuevamente ... solo ocurre t_fall durante el tiempo de "encendido" del pulso digital (lo que hace que el FET baje su salida), t_rise ocurre durante el tiempo de "apagado".

Si su controlador es más lento que 25 ns (y espero que lo sea o es probable que esté interfiriendo RF en millas a la redonda a menos que los duendes estén muy contenidos) obtendrá una compensación cero y tal vez algo de sensibilidad a la temperatura / voltaje de suministro .

20kHz es una frecuencia PWM muy alta para un LED visible. ¿Por qué no 2kHz?

20khz es en realidad una frecuencia PWM muy común porque es a) lo suficientemente rápida como para evitar el parpadeo visible en aplicaciones de video y fotografía yb) más allá del rango de frecuencia auditivo. Prácticamente cualquier luz LED utilizada para video o fotografía usa esta frecuencia PWM.
@flimsy: observé que algunas tiras de LED, de hecho, gemían audiblemente si se manejaban a unos pocos miles de hercios, lo que hizo necesario volver a trabajar en el código del controlador para usar una velocidad más rápida.

El PWM de alta frecuencia es necesario si no desea parpadeo.

Sin embargo, la conmutación rápida no solo es innecesaria, sino que empeora las cosas al generar más EMI. Lo bueno es que, si usa el cambio lento, obtendrá una función adicional: una atenuación más profunda en el extremo inferior.

Dado que los LED de iluminación tienen una capacitancia bastante grande, habrá un pico de corriente de encendido, lo que aumenta la EMI cuanto más rápido cambie el FET. Y debido a la capacitancia, se apagarán lentamente de todos modos, sin importar qué tan rápido se apague el FET.

Si hace que su MOSFET cambie lentamente, digamos alrededor de 5-10 tics de PWM para encenderse por completo, entonces los ciclos de trabajo de PWM muy bajos entre 1 y 10 se vuelven mucho más útiles, porque ya no producen luz proporcional al ciclo de trabajo. Esto amplía enormemente su rango dinámico. Con un FET de conmutación rápida, un ciclo de trabajo PWM de 1/1024 producirá un poco más de luz que 1/1024 en relación con el encendido total. Digo un poco más, porque debido a la capacitancia, el LED permanecerá encendido un poco más; también será más frío y más eficiente.

Pero con un FET de conmutación lenta, si usa un ciclo de trabajo bajo, no tendrá tiempo suficiente para encenderse por completo antes de apagarse, por lo que obtendrá mucha menos luz.

Tuve problemas porque la configuración más baja en mi PWM todavía era demasiado brillante y no quería disminuir la frecuencia para evitar el parpadeo. Así que disminuí la velocidad de la conmutación FET aumentando la resistencia de la puerta. Luego, los primeros valores de PWM estaban completamente apagados, pero los siguientes 5 a 10 valores proporcionaron una gradación muy agradable a partir de "apenas visible".