Modulación por ancho de pulso para control analógico con señales digitales
Comenzar arrow_downwardControl analógico con señales digitales: la clave está en el tiempo.
Los microcontroladores solo pueden generar señales digitales (0V o 3.3V). PWM permite simular voltajes intermedios alternando rápidamente entre encendido y apagado.
Mayor duty cycle = mayor voltaje promedio de salida.
Contador up/down con multiples canales independientes.
El modulo PWM usa un contador que sube de 0 al valor maximo y luego baja. Cuando el contador cruza el valor de comparacion, la salida cambia de estado.
Cada modulo PWM tiene varios canales. Todos comparten el mismo periodo (frecuencia) pero cada canal puede tener su propio duty cycle y polaridad.
Desde LEDs hasta motores: PWM está en todas partes.
Control de brillo sin cambiar la corriente. Frecuencias tipicas: 1-10 kHz.
Control de posición angular. Periodo fijo de 20ms, pulso de 1-2ms.
Velocidad de motores DC. Frecuencias tipicas: 20-50 kHz.
Reguladores switching, fuentes DC-DC. Frecuencias: 100kHz-2MHz.
| Angulo | Pulso | Duty Cycle |
|---|---|---|
| -90 grados | 1.0 ms | 5% |
| 0 grados | 1.5 ms | 7.5% |
| +90 grados | 2.0 ms | 10% |
Funciones y estructuras para controlar PWM desde el codigo.
PWM_MSEC(x) - milisegundos a nanosegundosPWM_USEC(x) - microsegundos a nanosegundos
PWM_POLARITY_NORMAL = pin HIGH durante el pulso. PWM_POLARITY_INVERTED = pin LOW durante el pulso (util para LEDs conectados a VCC).
Definicion del hardware PWM mediante overlays.
Fade de LED usando PWM con Zephyr - Inicializacion.
pwm_led0 definido en el devicetree del board para obtener la configuracion PWM.
Loop principal - Efecto fade.
pwm_set_pulse_dt() en lugar de pwm_set_dt() porque el periodo ya esta definido en el devicetree y no cambia.
Configuracion y funcion de conversion angulo-pulso.
Funcion main y ejemplos de calculo.
Conceptos clave sobre PWM en sistemas embebidos NRF.
El porcentaje de tiempo que la senal esta en HIGH determina el voltaje promedio de salida. 50% DC = 50% de Vmax.
LEDs (1-10kHz), servos (50Hz, pulso 1-2ms), motores DC (20-50kHz), conversion de potencia (100kHz+).
PWM_DT_SPEC_GET para config, pwm_is_ready_dt para validar, pwm_set_pulse_dt para cambiar duty cycle.
"PWM es el puente entre el mundo digital del micro y el mundo analogico de los actuadores."
La frecuencia adecuada depende de la aplicacion: suficientemente alta para evitar parpadeo, pero no tan alta que aumente las perdidas por conmutacion.
Comunicacion sincrona de alta velocidad con perifericos externos.