PWM com LEDC
Seguindo os estudos do 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áriosOs 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.
#
DesenvolvimentoNa 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.
#
EsquemáticoNesta 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 :
#
CódigoO 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_LEDC
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çãoApó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.
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) .
#
ResultadosApó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.
#
ConclusãoNeste exemplo 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.
Autor | Halysson Junior |
---|---|
Data: | 22/07/2021 |