Franzininho WiFi: PWM com CircuitPython

PWM_circuitpython

PWM é abreviação para, Pulse Width Modulation – que significa – Modulação por Largura de Pulso. Essa é uma técnica onde, uma saída digital é usada para simular uma saída analógica. Isso acontece por meio de mudanças constantes de sinal, que são imperceptíveis e, dessa maneira o componente conectado a esse pino apenas tira uma média de quanto tempo está em estado alto e baixo. Quanto mais tempo ligado, maior o valor e, consequentemente, quando menor tempo ligado, menor o valor.

Neste exemplo, vamos aprender a usar PWM com CircuitPython na Franzininho WiFi.

Materiais Necessários

  • 1 Placa Franzininho WiFi com CircuitPython;
  • 1 Protoboard; 
  • 1 LED;
  • 1 potenciômetro de 10 kΩ;
  • 1 resistor de 220 Ω ou 330 Ω;
  • Jumpers.

Circuito

Para os nossos primeiros experimentos, realize a seguinte montagem:

Figura 1 – Circuito para teste de PWM com CircuitPython na Franzininho WiFi

Código para PWM com CircuitPython

Para esse código, utilizaremos a biblioteca simpleio, que será necessária para realizarmos a conversão de valores. As bibliotecas do CircuitPython podem ser encontradas no seguinte endereço: https://circuitpython.org/libraries. Faça o download, de acordo com a versão do CircuitPython instalada na sua Franzininho WiFi.

Interface gráfica do usuário, Texto, Aplicativo

Descrição gerada automaticamente

Após baixar o arquivo, copie a pasta desejada para a pasta de arquivos da Franzininho WiFi:

  • simpleio.mpy

Escreva o código abaixo no arquivo code.py, que está localizado no diretório da Franzininho:

Depois de finalizar a edição do código, salve. Execute o programa.

Utilizaremos o módulo board para acessarmos os pinos da Franzininho:

E, para configurarmos os pinos PWM, é necessário importarmos o pwmio:

Além disso, será necessário a biblioteca math, para “eliminar” as casas decimais:

Como dito anteriormente, usaremos o módulo simpleio:

Ademais, importaremos a função AnalogIn do módulo analogio para, configuramos o potenciômetro como uma entrada analógica:

Também, iremos chamar a função sleep, da biblioteca time, pois precisaremos de intervalos de temporização:

Agora, após importarmos todas os módulos que vamos utilizar, vamos configurar os pinos. Primeiro, vamos associar o GPIO2 a uma variável chamada potIn. Após isso, vamos criar um objeto chamado pot e configurá-lo como uma entrada analógica:

Vamos repetir o mesmo processo com o led (GPIO4). Porém, o led será configurado como uma saída PWM:

Configurações iniciais encerradas! Depois disso, vamos criar uma função chamada converte. Como parâmetro, essa função receberá o pino que estamos realizando a leitura:

Dentro da função, realizaremos a leitura do valor do potenciômetro, que será armazenada na variável pinValue:

Além disso, vamos converter o valor do potenciômetro para o valor aceito pelos pinos PWM. Para isso, vamos usar a função simpleio.map_range. Os parâmetros dessa função são: valor bruto (no caso, o valor recebido naquele instante), valor mínimo de entrada, valor máximo de entrada, valor mínimo de saída e valor máximo de saída. E, vamos precisar da função math.trunc, que eliminará as casas decimais. Todas essas informações ficarão armazenadas na variável mapValue:

E, a função nos retornará o valor de mapValue:

E por fim, o loop. Dentro do while True, vamos associar o valor retornado pela função converte a variável potValue e mandar esse valor para o led. Para enviarmos um valor para o componente, utilizamos a função duty_cycle, que é o ciclo de trabalho, ou seja, quanto tempo o sinal estará ligado ou não. Também, colocaremos um delay:

Conclusão

Nesse exemplo, aprendemos a como usar os pinos PWM com CircuitPython e, como controlá-los através de um potenciômetro. Além disso, aprendemos a como mapear valores. No próximo exemplo, vamos aprender a como usar Servos Motores.

Outros artigos da série

<< Franzininho WiFi: Pinos de Toque Capacitivo com CircuitPythonControlando Servo Motor com CircuitPython >>

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Home » Software » Franzininho WiFi: PWM com CircuitPython
Comentários:
Notificações
Notificar
guest
1 Comentário
recentes
antigos mais votados
Inline Feedbacks
View all comments
Lucas
Lucas
09/05/2022 17:17

Artigo muito interessante!

Talvez você goste:
Nenhum resultado encontrado.
Menu