Esptop 10 PWM com micropython usando thonny ide

Esptop 10 PWM com micropython usando thonny ide
Esp32 é uma placa baseada em microcontrolador que também possui pinos de PWM. PWM é uma técnica usando que o ESP32 pode alterar a largura de um sinal de pulso digital e, como resultado, a tensão CC de saída varia de acordo com ele. A maioria dos microcontroladores possui um relógio interno do timer que eles usam para gerar um sinal PWM de frequência específico. Hoje neste artigo, discutiremos os pinos do PWM e como eles podem ser configurados no ESP32.

Pinos PWM no ESP32

A placa ESP32 possui 16 canais independentes que podem gerar sinais de PWM com diferentes períodos de tempo e largura. 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.

No entanto, na variante de 36 pinos da placa ESP32, os seis pinos integrados SPI também não são recomendados para usar como geradores de sinal PWM.

Como usar pinos PWM Esp32

PWM é uma técnica para controlar a saída usando um sinal de pulso digital variável. PWM ajuda a controlar a velocidade do motor ou o brilho do LED. 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 começa, seu valor é comparado com dois comparadores e uma vez que atinge o definido Ciclo de serviço Valor Um sinal no pino PWM é acionado, que altera os estados do pino para baixo. Em seguida, o sinal do timer continua contando até alcançar o Período Valor de registro. 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, as quatro características a seguir devem ser definidas:

  • Frequência PWM: A frequência para PWM é oposta ao período. 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 podemos controlar.
  • 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)

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.

Abaixo da tabela mostra a configuração do pino para LED com ESP32.

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

Código para controle de brilho de LED único

Para programar uma placa ESP32 com Micropython Open Thonny ide e envie o código abaixo dado. Lembre -se de piscar a placa ESP32 com firmware Micropython se estiver usando pela primeira vez.

do pino de importação da máquina, PWM
Desde o tempo de importação do sono
Frequência = 5000
led1 = pwm (pino (18), frequência)
enquanto é verdade:
Para Duty_cycle no intervalo (0, 1024):
LED1.Duty (Duty_cycle)
sono (0.005)

Código iniciado importando as classes necessárias.

do pino de importação da máquina, PWM

O LIDERADO O objeto é inicializado para o sinal PWM.

LED = PWM (pino (18), frequência)

Um objeto PWM precisa de dois argumentos: um é a frequência e outro é um ciclo de trabalho.

Frequência: O valor da frequência varia de 0 a 78125. Aqui usamos uma frequência de 5kHz para controlar o brilho do LED.

Ciclo de trabalho: Seu valor varia de 0 e 1023. Aqui 1023 é igual ao valor máximo que define 100% Ciclo de serviço e brilho total do LED e da mesma forma no lado oposto, 0 corresponde a 0% Ciclo de serviço significa que o LED será completamente escuro.

Usando a função do ciclo de trabalho obrigação() Passamos o ciclo de trabalho como um argumento para esta função.

liderado.Duty (Duty_cycle)

Dentro de enquanto loop a para O loop é inicializado que incrementa o ciclo de trabalho toda vez que é executado por 1 com um intervalo igual a 5 ms.

Para Duty_cycle no intervalo (0, 1024):
liderado.Duty (Duty_cycle)
sono (0.005)

O faixa() A função pode ser escrita como:

Range (Start, Stop, Step)

Aqui começar Especifica o valor inicial do ciclo de trabalho que é igual a 0. parar Explicando o valor que queremos parar o ciclo de trabalho. Aqui usamos o valor 1024 porque o valor máximo onde ele pode vir é 1023 e estamos incrementando 1 nesse valor após cada loop.

O último etapa descreve o fator de incremento e, por padrão, é 1.

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

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

Controlando vários pinos com o mesmo sinal PWM

Podemos controlar vários pinos com o mesmo sinal PWM, que é gerado a partir de um único canal PWM. Agora vamos modificar o exemplo de LED único para controlar vários LEDs BLILHO.

Conecte três LEDs nos pinos GPIO 23, 18 e 15.

Abaixo da tabela nos dá layout de pinos para três LEDs.

PIN GPIO ESP32 LIDERADO
GPIO 23 +Ive LED 1
GPIO 18 +Ive LED 2
GPIO 15 +ive liderou 3
Gnd LED GND comum

Código para vários LEDs Controle de brilho

Abrir Thonny ide e escreva o código na janela do editor. Depois disso, conecte a placa ESP32 e envie -a.

do pino de importação da máquina, PWM
Desde o tempo de importação do sono
Frequência = 5000
led1 = pwm (pino (18), frequência)
led2 = pwm (pino (23), frequência)
LED3 = PWM (pino (15), frequência)
enquanto é verdade:
Para Duty_cycle no intervalo (0, 1024):
LED1.Duty (Duty_cycle)
LED2.Duty (Duty_cycle)
LED3.Duty (Duty_cycle)
sono (0.005)

O código é semelhante ao exemplo anterior. Acabamos de adicionar dois novos LEDs no GPIO PIN 23 e 15.

O mesmo ciclo de trabalho e valor de frequência são usados.

Saída
Na seção de saída, podemos ver que todos os três LEDs estão em pleno brilho, o que significa que todos eles estão recebendo o ciclo de trabalho com valor 1024.

Agora, todos os três LEDs são escuros, o que significa que todos eles têm o mesmo ciclo de trabalho proveniente do mesmo canal PWM com valor do ciclo de trabalho 0.

Controlamos com sucesso o brilho LED usando o sinal PWM.

Conclusão

Neste guia, discutimos os pinos PWM ESP32 e como eles podem ser usados ​​para controlar dispositivos. Também discutimos o código para controlar LEDs únicos e múltiplos usando o canal PWM. Usando este guia, qualquer tipo de hardware pode ser controlado com a ajuda do sinal PWM.