PWM - Pulse Width Modulation
Neste artigo vamos aprender a usar o PWM no CircuitPython, uma técnica muito usada para controle de potência. Veja como é fácil aplicar.
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.
#
CircuitoPara 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 CircuitPythonPara 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.
Após baixar o arquivo, copie a pasta desejada para a pasta de arquivos da Franzininho WiFi:
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:
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:
Colocaremos o print apenas para visualizarmos a conversão:
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ãoNesse 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.
Autor | Mateus Adriano Ventura Vieira |
---|---|
Data: | 09/05/2022 |