Esptop 10 PWM con micrópthon usando Thonny IDE

Esptop 10 PWM con micrópthon usando Thonny IDE
ESP32 es un tablero basado en microcontroladores que también tiene pines PWM. PWM es una técnica que utiliza la cual ESP32 puede cambiar el ancho de una señal de pulso digital y, como resultado, el voltaje de CC de salida. La mayoría de los microcontroladores tienen un reloj de temporizador interno que usan para generar una señal PWM de frecuencia específica. Hoy en este artículo discutiremos PWM Pins y cómo se pueden configurar en ESP32.

Pins PWM en ESP32

La Junta ESP32 tiene 16 canales independientes que pueden generar señales PWM que tienen diferentes períodos de tiempo y ancho. Casi todos los pines GPIO que pueden actuar como salida se pueden usar para generar una señal PWM. Los pasadores GPIO 34,35,36,39 no se pueden usar como pines PWM, ya que son solo pines de entrada.

Sin embargo, en la variante de 36 pines de la placa ESP32, los seis pines integrados SPI tampoco se recomienda usar como generadores de señal PWM.

Cómo usar pines PWM ESP32

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 interna del reloj del microcontrolador.

A medida que comienza el tiempo, su valor se compara con dos comparadores y una vez que alcanza el definido Ciclo de trabajo Valor Se activa una señal en el pin PWM que cambia los estados de pin a bajo. A continuación, la señal del temporizador continúa contando hasta que logra el Período valor de registro. Ahora, el comparador, el comparador generará un nuevo cambio de estado de disparo y PWM de bajo a alto.

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

  • Frecuencia PWM: La frecuencia para PWM es opuesta al período de tiempo. Cualquier valor se puede establecer dependiendo de la aplicación.
  • Resolución de PWM: La resolución define el número de niveles discretos de ciclo de trabajo que podemos controlar.
  • Ciclo de trabajo: Cantidad de tiempo durante el cual una señal PWM está en estado activo.
  • Pin de GPIO: Número de PIN de ESP32 donde se va a leer la señal PWM. (GPIO 34,35,36,39 no se puede usar)

Aquí hay algunos puntos que uno debe tener en cuenta al configurar la señal ESP32 PWM:

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

Controlar el brillo del LED usando la señal PWM en ESP32

Ahora controlaremos el brillo del LED usando una señal PWM. Conecte LED con ESP32 GPIO PIN 18.

La tabla a continuación muestra la configuración de PIN para LED con ESP32.

PIN GPIO ESP32 CONDUJO
GPIO 18 +he
Gnd -he

Código para control de brillo de LED único

Para programar una placa ESP32 con Micopython Open Thonny ide y cargar el siguiente código dado. Recuerde flashear la placa ESP32 con firmware de Micopython si lo usa por primera vez.

Desde el pin de importación de la máquina, PWM
Desde el tiempo de sueño
frecuencia = 5000
LED1 = PWM (PIN (18), frecuencia)
Mientras que es cierto:
para deber_cycle en el rango (0, 1024):
LED1.deber (deber_cycle)
dormir (0.005)

Código iniciado importando las clases requeridas.

Desde el pin de importación de la máquina, PWM

El CONDUJO El objeto se inicializa para la señal PWM.

LED = PWM (PIN (18), frecuencia)

Un objeto PWM necesita dos argumentos: uno es la frecuencia y otro es el ciclo de trabajo.

Frecuencia: El valor de frecuencia varía de 0 a 78125. Aquí utilizamos una frecuencia de 5 kHz para controlar el brillo del LED.

Ciclo de trabajo: Su valor varía de 0 y 1023. Aquí 1023 es igual al valor máximo que define 100% ciclo de trabajo y brillo total del LED y de manera similar en el lado opuesto, 0 corresponde a 0% El ciclo de trabajo significa que LED será completamente tenue.

Usando la función del ciclo de trabajo deber() Pasamos el ciclo de trabajo como argumento a esta función.

condujo.deber (deber_cycle)

Dentro de mientras bucle un para Se inicializa el bucle que incrementa el ciclo de trabajo cada vez que se ejecuta en 1 con un intervalo igual a 5 ms.

para deber_cycle en el rango (0, 1024):
condujo.deber (deber_cycle)
dormir (0.005)

El rango() la función se puede escribir como:

rango (comenzar, detener, paso)

Aquí comenzar Especifica el valor de inicio del ciclo de trabajo que es igual a 0. detener Explicando el valor que queremos detener el ciclo de trabajo. Aquí hemos usado el valor 1024 porque el valor máximo donde puede venir es 1023 y estamos incrementando 1 en este valor después de cada bucle.

El último paso describe el factor de incremento y, por defecto, es 1.

Producción
En el hardware podemos ver el brillo del LED en su totalidad, esto significa que la señal del ciclo de trabajo está en 1024.

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

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

Podemos controlar múltiples pines con la misma señal PWM que se genera a partir de un solo canal PWM. Ahora modificaremos el ejemplo de LED único para controlar múltiples LED brillo.

Conecte tres LED en GPIO Pins 23, 18 y 15.

La mesa debajo nos da un diseño de pin para tres LED.

PIN GPIO ESP32 CONDUJO
GPIO 23 +He liderado 1
GPIO 18 +He liderado 2
GPIO 15 +He liderado 3
Gnd LED Common GND

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

Abierto Thonny ide y escriba el código en la ventana del editor. Después de eso, conecte la placa ESP32 y cárguela.

Desde el pin de importación de la máquina, PWM
Desde el tiempo de sueño
frecuencia = 5000
LED1 = PWM (PIN (18), frecuencia)
LED2 = PWM (PIN (23), frecuencia)
LED3 = PWM (PIN (15), frecuencia)
Mientras que es cierto:
para deber_cycle en el rango (0, 1024):
LED1.deber (deber_cycle)
LED2.deber (deber_cycle)
LED3.deber (deber_cycle)
dormir (0.005)

El código es similar al ejemplo anterior. Acabamos de agregar dos nuevos LED en GPIO PIN 23 y 15.

Se utiliza el mismo ciclo de trabajo y valor de frecuencia.

Producción
En la sección de salida podemos ver que los tres LED están a pleno brillo, lo que significa que todos están recibiendo el ciclo de trabajo con el valor 1024.

Ahora los tres LED son tenues, lo que significa que todos tienen el mismo ciclo de trabajo proveniente del mismo canal PWM que tiene valor del ciclo de trabajo 0.

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

Conclusión

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