Você procura por
  • em Publicações
  • em Grupos
  • em Usuários
loading
BACK

O QUE É PWM?

O QUE É PWM?
Felipe Ferreira
Aug. 9 - 5 min read
000

Imagine que você precisa controlar a potência entregue a uma carga, como a velocidade de um motor ou a intensidade luminosa de um led.

Inicialmente, vamos idealizar um primeiro cenário em que temos que controlar apenas um led. Para isso, temos uma fonte de energia, um led e uma chave. O nosso circuito tem todos os componentes conectados um ao outro em série. Neste caso, temos dois estados possíveis para o led: um totalmente aceso, com potência de 100% e outro, totalmente apagado, com potência de 0%. De fato, controlamos o nosso led.

Fonte: Tinkercad

Vamos modificar os requisitos do nosso cenário. Agora, além de acender e apagar o led, nós temos também que controlar a intensidade de seu brilho, como por exemplo, acionar o nosso led aceso com uma potência de 50%. Como faríamos? Vamos usar um resistor!

Com o resistor correto, temos a possibilidade de acender o nosso led com 50% do brilho. Mas embora isso funcione, não é muito eficiente. Existe muito desperdício de energia, pois os elementos resistivos dissipam uma parte dela em forma de calor. Então, como faríamos para tornar o nosso circuito mais eficiente e ainda atender ao requisito de controle da potência do led? Felizmente existe uma forma de fazer isso: a Modulação por Largura de Pulso ou PWM, de Pulse Width Modulation.

Fonte: Developer Android

A PWM é uma forma de variar a entrega de potência através da variação entre o estado de ligado e desligado de uma carga em função do tempo. Vamos exemplificar: vamos pegar o nosso circuito inicial. Agora, em um período de 1 segundo. vamos oscilar o estado de ligado e desligado 1000 vezes. Se durante esse período nós alternarmos o estado da chave para a metade do tempo ligada e metade do tempo ela desligada, o estado médio de saída que poderemos verificar no led será igual à metade do brilho que teríamos se deixássemos a chave todo o tempo ligada.

Com o PWM podemos variar os valores entre 0% e 100% sem desperdiçar energia com a dissipação de calor desnecessária que ocorria em um resistor.

PWM no Arduino

É possível usar PWM no Arduino de uma forma muito fácil. Vamos montar o seguinte circuito:

Fonte: Gerada pelo autor no TinkerCad.

Agora, vamos ligar o NO LED a um pino da plaquinha que oferece a funcionalidade de PWM. Por exemplo, no Arduino Nano, temos 6 pinos que oferecem esta funcionalidade.

Ah, mas antes do código, tenho que chamar a atenção para uma coisa: no Arduino, a variação que pode ser aplicada para controlar o PWM varia com valores entre 0 e 255. Então, para usar uma escala de 0 até 100%, precisaremos aplicar uma conversão. Felizmente, a API padrão do Arduino oferece a função map.  A função map converte um valor fornecido para outro valor correspondente dentro de um intervalo escolhido.

O nosso código para fazer isso é muito simples. Veja só:

Fonte: Autor (Arduino IDE)

Neste exemplo nós estamos utilizando o pino 3 do Arduino para controlar o nosso led. A linguagem permite que se dê um apelido para um valor. Por isso, utilizamos o PINO_LED (linha 4).

Na função setup,  função que é executada uma única vez quando o nosso sistema é ligado, definimos que o nosso pino vai ser configurado como saída, utilizando a função pinMode (linha 8).

Em seguida, na função loop, que é a função principal do nosso código e é executada sempre, declaramos uma variável para controlar o valor da potência do PWM que queremos aplicar no led (linha 12). Para haver uma variação, foi utilizado um laço que variar o valor da potência (no caso a variável potencia) entre 0 e 100.

Como dito anteriormente, o PWM aceita valores até 255. Assim, utilizamos a função map a fim de adequar o valor de potência para o valor do PWM e atribuímos o resultado em outra variável chamada potenciaConvertida (linha16). Na linha 18, utilizamos a função analogWrite para acender o led com o valor de PWM contido na variável potenciaConvertida.

Na linha 21, verificamos se o valor da variável potencia excedeu o valor máximo permitido. Se o teste for verdadeiro, retornamos o valor para 0.

Por último, aguardamos um tempo de 100 ms com a utilização da função delay para executar uma nova interação do nosso laço.

Neste pequeno código pudemos conferir o funcionamento do PWM no Arduino utilizando um led. Mas tem mais! Este controle de potência pode também ser utilizado para controlar motores.

Desta forma podemos variar a velocidade de rotação entre 0, onde ele estará parado, e 100%, onde a sua rotação estará em velocidade máxima.

 

Referências

Instituto Newton C. Braga. O que é PWM (MEC071). Disponível em https://www.newtoncbraga.com.br/index.php/robotica/5169-mec071a.

Mundo da Elétrica. PWM – O que é e para que serve? Disponível em https://www.mundodaeletrica.com.br/pwm-o-que-e-para-que-serve/.

Arduino – setup. https://www.arduino.cc/reference/pt/language/structure/sketch/setup/

Arduino – loop. https://www.arduino.cc/reference/pt/language/structure/sketch/loop/

Arduino – pinMode. https://www.arduino.cc/reference/pt/language/functions/digital-io/pinmode/

Arduino – map. https://www.arduino.cc/reference/en/language/functions/math/map/

Arduino – analogWrite. https://www.arduino.cc/reference/pt/language/functions/analog-io/analogwrite/

Arduino – delay. https://www.arduino.cc/reference/pt/language/functions/time/delay/


Report publication
    000

    Recomended for you