PWM com ESPPOP 10 usando Arduino IDE

PWM com ESPPOP 10 usando Arduino IDE

A modulação da largura de pulso ou PWM é uma técnica usada para picar o sinal digital para obter saída variável. A maioria dos microcontroladores tem um relógio interno que é usado para gerar um sinal PWM. Neste tutorial, abordaremos os pinos do PWM e como eles podem ser configurados no ESP32 usando o Arduino IDE.

Pinos PWM no ESP32

A placa ESP32 possui 16 canais independentes que podem gerar sinais de PWM. Quase todos os pinos GPIO que podem atuar como saída podem ser usados ​​para gerar um sinal PWM. Os pinos GPIO 34,35,36,39 não podem ser usados ​​como pinos PWM, pois são apenas pinos de entrada.

Na variante 36 pinos da placa ESP32, os seis pinos integrados SPI que não podem ser usados ​​como geradores de sinal PWM também.

Como usar pinos PWM Esp32

PWM é uma técnica para controlar o dispositivo usando um sinal de pulso digital variável. PWM ajuda a controlar a velocidade do motor. Componente principal na geração de sinais PWM é o módulo interno do timer. O timer é controlado pela fonte do relógio do microcontrolador interno.

À medida que o tempo inicia, seu valor é comparado com dois comparadores e, uma vez atinge o valor do ciclo de trabalho definido, um sinal no pino PWM é acionado, que altera os estados do pino para baixo. Em seguida, o sinal do timer continua contando até atingir o valor do registro do período. Agora, novamente, o comparador gerará um novo gatilho e os pinos de PWM em mudança de estado de baixo para baixo para alto.

Para gerar um sinal PWM nos pinos do GPIO após quatro propriedades, precisam ser definidos:

  • Frequência PWM: A frequência para PWM é oposta ao tempo que qualquer valor pode ser definido, dependendo da aplicação.
  • Resolução PWM: Resolução define o número de níveis discretos de ciclo de trabalho que podem ser controlados.
  • Ciclo de serviço: Quantidade de tempo durante a qual um sinal PWM está em estado ativo.
  • GPIO PIN: Número do pino de esp32 onde o sinal PWM deve ser lido. (GPIO 34,35,36,39 não pode ser usado)

Configure canais PWM de ESP32

Configurando o canal PWM em ESP32 é semelhante ao analogwrite () função na programação arduino. Mas aqui estaremos usando um conjunto dedicado de ledcsetup () Funções para configurar o PWM no ESP32. Praticamente tudo o que é necessário para um sinal PWM como canal, resolução e frequência pode ser facilmente configurável pelo usuário.

A seguir está o ledcsetup () função usada para configurar o sinal PWM ESP32:

ledcsetup (canal, frequência, resolução_bits);

Esta função contém três argumentos.

Canal: Como o ESP32 possui 16 canais PWM, o canal argumento dentro do ledcsetup () A função pode levar qualquer valor entre 0 e 15.

Frequência: Próximo no ledcsetup () Função Temos argumentos de frequência que podem ser definidos de acordo com requisitos como 1 kHz, 5 kHz, 8 kHz e 10 kHz. Por exemplo, a frequência PWM máxima com resolução de 10 bits no módulo PWM pode ser definida é 78.125kHz.

Resolução: A resolução do sinal PWM pode ser configurada entre uma resolução de 1 a 16 bits.

No ESP32, a frequência e a resolução do PWM são independentes da fonte do relógio e inversamente proporcionais.

A etapa final é definir um alfinete para PWM. Não atribua pinos já usados ​​para comunicação, como pinos GPIO como UART, SPI, etc.

O LEDC (LED PWM Controller) foi projetado principalmente para sinais de controle LED PWM ESP32. No entanto, os sinais de PWM gerados aqui também podem ser usados ​​para outras aplicações.

Aqui estão alguns pontos que é preciso ter em mente ao configurar o sinal PWM ESP32:

  • Total de 16 canais PWM independentes estão no ESP32, que são divididos em dois grupos cada grupo com 8 canais.
  • 8 canais PWM são alta velocidade, enquanto os outros 8 canais são baixos.
  • A resolução PWM pode ser definida entre 1 bit e 16 bits.
  • A frequência PWM depende da resolução do PWM.
  • O ciclo de serviço pode ser aumentado ou diminuição automaticamente sem intervenção do processador.

Controlando o brilho LED usando o sinal PWM no ESP32

Agora vamos controlar o brilho LED usando um sinal PWM. Conecte o LED ao pino esp32 GPIO 18.

A tabela mostra a conexão PIN para LEDs com ESP32.

PIN GPIO ESP32 LIDERADO
GPIO 18 +eu tenho
Gnd -eu tenho

Código para controle de brilho LED

O código fornecido abaixo fará com que o LED desapareça:

const int led = 18; /*É igual ao pino GPIO 18*/
const int freq = 5000; /*Frequência do sinal PWM*/
const int led_Channel = 0;
const int resolução = 8; /*Resolução PWM*/
Void Setup ()
LedCsetup (LED_CHANNEL, FREQ, Resolução); /*Sinal PWM definido*/
ledcattachpin (LED, LED_CHANNEL);

Void Loop ()
for (int dutycycle = 0; hutyCycle = 0; hutyCycle-) /*O brilho do LED diminui* /
ledcwrite (LED_CHANNEL, DutyCycle);
atraso (15);

Código iniciado definindo o número do PIN para LED, que é o GPIO 18. Em seguida, definimos as propriedades do sinal PWM que são frequência, resolução de sinal PWM e canal de LED.

Em seguida, usando o ledcsetup () função, configuramos o sinal PWM. Esta função aceita os três argumentos frequência, resolução e Canal de LED Nós definimos anteriormente.

Na parte do loop, variamos o ciclo de trabalho entre 0 e 255 para aumentar o brilho do LED. Depois disso novamente, usando o loop for diminui o brilho do LED de 255 para 0.

A modulação da largura de pulso transforma um sinal digital em um sinal analógico, alterando o tempo de quanto tempo ele fica ligado e desligado. O termo Ciclo de serviço é usado para descrever a porcentagem ou proporção de quanto tempo permanece em comparação com quando desligar.

Aqui, pegamos um canal de 8 bits, de acordo com os cálculos:

2^8 = 256 contendo valores de 0 a 255. No exemplo dado acima, o ciclo de trabalho é igual a 100%. Para 20% do ciclo de trabalho ou qualquer outro valor, podemos calculá -lo usando os cálculos abaixo:

Resolução do canal = 8 bits

Para 100% de ciclo de trabalho = 0 a 255 (2^8 = 256 valores)

Para 20% do ciclo de trabalho = 20% de 256 é 51

Portanto, um ciclo de trabalho de 20% de resolução de 8 bits será igual a valores de intervalo de 0 a 51.

Onde 0 = 0% e 51 = 100% do ciclo de trabalho de resolução de 8 bits.

Saída

No hardware, podemos ver o brilho do LED inteiro, isso significa que o sinal do ciclo de trabalho está em 255.

Agora podemos ver que o LED está completamente escuro, o que significa que o valor do ciclo de trabalho está em 0.

Controlamos com sucesso o brilho LED usando o sinal PWM.

Conclusão

Aqui neste artigo, discutimos os pinos PWM ESP32 e como eles podem ser usados ​​para controlar vários periféricos como LED ou motor. Também discutimos o código para controlar LEDs únicos e múltiplos usando o mesmo canal PWM. Usando este guia, qualquer tipo de hardware pode ser controlado com a ajuda do sinal PWM.