ESP32 PWM con MicroPython con Thonny IDE

ESP32 es una placa basada en un microcontrolador que también tiene pines PWM. PWM es una técnica que permite que el ESP32 cambie el ancho de una señal de pulso digital, lo que hace que el voltaje de CC de salida varíe en consecuencia. La mayoría de los microcontroladores tienen un reloj interno que utilizan para generar una señal PWM a una frecuencia específica. Hoy, en este artículo, discutiremos los pines PWM y cómo configurarlos en ESP32.

Contenidos

Pines PWM en ESP32

La placa ESP32 tiene 16 canales independientes que pueden generar señales PWM con diferentes períodos de tiempo y anchos. Casi cualquier pin GPIO que pueda actuar como salida puede usarse para generar una señal PWM. Los pines GPIO 34,35,36,39 no se pueden usar como pines PWM ya que solo son pines de entrada.

Sin embargo, en la variante de 36 pines de la placa ESP32, los seis pines SPI integrados tampoco se recomiendan para su uso como generadores de señales PWM.

Cómo usar los pines ESP32 PWM

PWM es una técnica para controlar la salida utilizando una señal de pulso digital variable. PWM ayuda a controlar la velocidad del motor o el brillo del LED. El componente principal en la generación de señales PWM es el módulo de temporizador interno. El temporizador está controlado por la fuente de reloj interna del microcontrolador. Cuando comienza el tiempo, se compara su valor con dos comparadores y una vez que alcanza el valor definido nivel de utilización El valor activa una señal en el pin PWM que cambia el estado del pin a BAJO. A continuación, la señal del temporizador sigue contando hasta que llega a ese Período valor de registro. Ahora el comparador genera un nuevo disparador y el estado del pin PWM cambia de BAJO a ALTO nuevamente.

Para generar una señal PWM en los pines GPIO, se deben definir las siguientes cuatro propiedades:

  • Frecuencia PWM: La frecuencia para PWM es opuesta a la duración. Dependiendo de la aplicación, se puede establecer cualquier valor.
  • Resolución PWM: La resolución define el número de etapas discretas del ciclo de trabajo que podemos controlar.
  • Tasa de uso: Duración del tiempo durante el cual una señal PWM está en estado activo.
  • Pasador GPIO: Número de pin del ESP32 donde leer la señal PWM. (No se puede usar GPIO 34,35,36,39)

Aquí hay algunos puntos a considerar al configurar la señal ESP32 PWM:

  • Un total de 16 canales PWM independientes residen en ESP32, que se dividen en dos grupos, y cada grupo tiene 8 canales.
  • 8 canales PWM son de alta velocidad mientras que los otros 8 canales son BAJOS.
  • La resolución PWM se puede configurar entre 1 bit y 16 bits.
  • La frecuencia de PWM depende de la resolución del PWM.
  • El ciclo de trabajo se puede aumentar o disminuir automáticamente sin la intervención del procesador.

Control de brillo LED con señal PWM en ESP32

Ahora controlamos el brillo del LED con una señal PWM. Conecte el LED al pin 18 de ESP32 GPIO.

La siguiente tabla muestra la configuración de pines para LED con ESP32.

PIN ESP32 GPIO
LED
GPIO18 +iv
Dimensiones -Tengo

Código para control de brillo de LED único

Para programar una placa ESP32 con MicroPython, ábrala Danny IDE y cargue el código que se proporciona a continuación. Recuerde actualizar la placa ESP32 con firmware MicroPython cuando la use por primera vez. desde el pin de importación de la máquina, PWM desde el tiempo de importación de la frecuencia de suspensión = 5000led1 = PWM (Pin (18), frecuencia) mientras que es verdadero: para el ciclo de trabajo en el rango (0, 1024): led1.duty (ciclo de trabajo) dormir (0.005) Comenzó importando el código clases requeridas. del pin de importación de la máquina, PWM El LED El objeto se inicializa para la señal PWM. led = PWM(pin(18), frecuencia) Un objeto PWM toma dos argumentos: uno es la frecuencia y el otro es el ciclo de trabajo.
Frecuencia: El valor de la frecuencia varía de 0 a 78125. Aquí usamos una frecuencia de 5 kHz para controlar el brillo del LED.
Nivel de utilización: Su valor oscila entre 0 Y 1023. Aquí 1023 es igual al valor máximo que define 100% Ciclo de trabajo y brillo total del LED y similares en la página opuesta, 0 es equivalente a 0% Ciclo de trabajo significa que el LED está completamente atenuado. Uso de la función de ciclo de trabajo Deber() Pasamos el ciclo de trabajo como argumento a esta función. Dentro de mientras bucle un para inicializa un bucle que incrementa el ciclo de trabajo en 1 con un intervalo de 5 ms cada vez que se ejecuta. para duty_cycle en range(0, 1024): led.duty(duty_cycle) sleep(0.005) El Área() La función se puede escribir como: Aquí comenzar especifica el valor inicial del ciclo de trabajo, que es igual a 0. para detener Explique el valor que queremos parar el ciclo de trabajo. Aquí usamos el valor 1024 porque el valor máximo que puede alcanzar es 1023 y aumentamos este valor en 1 después de cada bucle. El último Paso describe el factor de aumento y es 1 por defecto.

SalidaEn el hardware podemos ver el brillo completo del LED, es decir, la señal del ciclo de trabajo está en 1024.

Ahora podemos ver que el LED está completamente atenuado, lo que significa que el valor del ciclo de trabajo es 0.

Controlando múltiples pines con la misma señal PWM

Podemos controlar múltiples pines con la misma señal PWM generada por un solo canal PWM. Ahora modificaremos el ejemplo de un solo LED para controlar el brillo de varios LED. Conecte tres LED a los pines GPIO 23, 18 y 15.

La siguiente tabla nos da el diseño de pines para tres LED.

PIN ESP32 GPIO
LED
GPIO23 + LED de alimentación 1
GPIO18 + LED de alimentación 2
GPIO15 + LED de alimentación 3
Dimensiones Tierra común LED

Código para control de brillo de múltiples LED

Abierto Danny IDE y escribe el código en la ventana del editor. Después de eso, conecte y cargue la placa ESP32. desde el pin de importación de la máquina, PWM desde el tiempo de importación frecuencia de sueño = 5000led1 = PWM (Pin (18), frecuencia) led2 = PWM (Pin (23), frecuencia) led3 = PWM (Pin (15), frecuencia) while True: for duty_cycle in range(0, 1024): led1.duty(duty_cycle) led2.duty(duty_cycle) led3.duty(duty_cycle) sleep(0.005) El código es similar al ejemplo anterior. Acabamos de agregar dos nuevos LED en el pin GPIO 23 Y 15
Se utiliza el mismo ciclo de trabajo y valor de frecuencia.

SalidaEn la sección de salida podemos ver que los tres LED están a pleno brillo, lo que significa que todos obtienen un valor de ciclo de trabajo de 1024.

Ahora los tres LED están atenuados, lo que significa que todos tienen el mismo ciclo de trabajo proveniente del mismo canal PWM con un valor de ciclo de trabajo de 0.

Hemos controlado con éxito el brillo del LED con la señal PWM.

Diploma

En esta guía, discutimos los pines ESP32 PWM y cómo se pueden usar para controlar dispositivos. También discutimos el código para controlar LED individuales y múltiples usando el canal PWM. Con esta guía se puede controlar cualquier tipo de hardware con la ayuda de la señal PWM.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.