Franzininho WiFi – PWM com LEDC no ESP-IDF

Veja como usar o periférico LEDC do ESP32-S2 para controlar saídas PWM programando com o ESP-IDF

Seguindo a sequência de artigos sobre a Franzininho Wi-Fi e ESP-IDF vamos agora estudar um novo periférico, o LED Control (LEDC), o qual tem a função de controlar a intensidade luminosa do LED e também servir como fonte geradora de sinal pulsado, Pulse Width Modulation (PWM), para diferentes propósitos como: controle de velocidade em motores de corrente contínua (CC), angulação em servomotores, mudança de cores em LED RGB e outras mais  aplicações.  

Com isso, ao final deste artigo estaremos familiarizados com os recursos oferecidos pelo periférico além de dominar as configurações básicas  para implementar em projetos.  

Recursos Necessários

Os materiais necessários para realizar esse exemplo são:

  • Placa Franzininho WiFi;
  • Protoboard;
  • LED;
  • Resistor de 220  Ohm;
  • Cabos Jumpers;
  • Computador com ESP-IDF instalado e configurado.

Desenvolvimento

Na placa Franzininho WiFi o periférico LEDC está disposto em dois grupos de oito canais, sendo um grupo operando no High Speed Mode (HSM) e outro em Low Speed Mode (LSM) operando independente uns dos outros . O modo High Speed é implementado em hardware oferecendo mudanças automáticas sem interferir no duty cycle do PWM, ou seja, caso haja alterações na temporização serão atualizadas no próximo estouro do timer. Em contraste isso o modo Low Speed deve ser explicitar o via software as configurações de temporização. 

Para utilizarmos esse periféricos precisamos seguir algumas etapas fundamentais para nossa aplicação de estudo que são: Configuração do  Temporizador , Configuração do Canal e Alteração do PWM.

  • Configuração do Temporizador : nessa primeira etapa vamos especificar a frequência e a resolução  do sinal PWM preenchendo a estrutura de dados ledc_timer_config_t e apontando-a para a função  led_timer_config() .
  • Configuração  do Canal: nessa segunda etapa iremos direcionar o GPIO que será a saída do sinal PWM, o qual é selecionado dentro da estrutura de configuração do periférico.
  • Alteração do PWM: na última etapa vamos realizar  o aumento e a redução do duty cycle na saída da geradora de sinal criando assim o fade no LED externo, o qual será habilitado via hardware pela função  ledc_fade_func_install().

Com a finalização das três etapas de configuração o  acionamento do periférico LED Control estará em funcionamento, contudo devemos agora seguir para montagem do circuito para concluir o projeto.

LEDC
Figura 1: Configuração do Periférico LED Control

Esquemático

Nesta parte daremos início a montagem do circuito em protoboard, iremos conectar um dos terminais do resistor no GPIO 2 e outro no LED externo. 

Abaixo segue o esquemático proposto :

LEDC
Figura 2: Imagem do Circuito 

Código

O programa desenvolvido possui uma estrutura bem simples e não é necessário acrescentar nenhuma biblioteca, apenas a manutenção dos arquivos de cabeçalho já presentes no projeto.  

Ao criar um novo projeto no IDF automaticamente já temos arquivos configurados e prontos para programação do dispositivo, desta forma digite e comente as linhas do seguinte código no arquivo main.c :

Você encontra o projeto completo na documentação da Franzininho: PWM 

Caso ainda não tenha instalado e configurado o IDF no seu computador ou tenha dúvidas sobre as ferramentas, acesse o tutorial de instalação (Clique Aqui). 

Compilação

Após a codificação vamos compilar o código, mas antes selecione o set-target para ESP32-S2. Caso não possua a placa Franzininho WiFi altere o target para o modelo de ESP32 utilizando em seu projeto. 

Ao final da compilação o resultado final deve ser semelhante à imagem mostrada abaixo, em caso de erros retorne os passos anteriores e revise seu código. 

image 38
Figura 3: Imagem do Terminal Visual Code

Após a etapa de compilação vamos enviar o código fonte para nossa placa, no editor pressione o ícone abaixo e aguarde alguns segundos para assim dar início ao upload do programa “PWM” (seta preta) .

image2
    Figura 4: Barra inferior do Visual Code

Resultados

Após enviar seu código e com o circuito devidamente montado o LED externo conectado começará a aumentar e diminuir sua intensidade luminosa gradualmente criando o fade desejado. Na figura 5 temos a imagem do osciloscópio mostrando a forma de onda gerada e o duty cycle atuando no momento e na figura 6 o circuito em perfeito funcionamento.

LEDC
Figura 5 : Saída do sinal PWM
LEDC
Figura 6: Imagem do circuito em funcionamento

Conclusão

Neste artigo apresentamos tópicos intermediários sobre a manipulação do periférico LED Control, utilizamos conceitos importantes da linguagem C estrutura de dados e ponteiros implementado na configuração do sinal pulsado. 

Deve-se deixar claro que o artigo aborda um conteúdo para darmos os primeiros passo com este periférico, encorajamos que o leitor reconfigure a saída do sinal PWM como também acesse a documentação oferecida pela Espressif para compreender como o hardware do chip comporta-se com cada configuração realizada além das funções implementadas em software. 

Saiba Mais

Franzininho WIFI – A evolução do projeto Franzininho

Franzininho WiFi – Primeiros passos com ESP-IDF

Franzininho WiFi – Hello World no ESP-IDF

Outros artigos da série

<< Franzininho WiFi – Entrada Analógica ESP-IDF
Notificações
Notificar
guest
0 Comentários
Inline Feedbacks
View all comments

WEBINAR

Visão Computacional para a redução de erros em processos manuais

DATA: 23/09 ÀS 17:00 H