O que é PWM Arduino, para que funciona e como utilizar
Tags: arduino, pwm, projetos, eletronica
Published: 2020-11-10 10:30:01

Neste artigo você irá aprender o que é PWM Arduino e como essa técnica de controle de tensão funciona nas placas Arduino UNO, Arduino Mega e Arduino Nano.

O Arduino possui diversas portas PWM, isto é, portas com a funcionalidade de Pulse Width Modulation, capazes de variar a largura de pulso de um sinal digital. Assim, com a função <a href="http://flaviobabos.com.br/pwm-arduino">PWM da placa microcontroladora Arduino </a> é possível efetuar o controle de velocidade ou posição de motores, intensidade de brilho de LEDs e controle de LEDs RGB, possibilitando até mesmo obter diferentes cores por meio das combinações possíveis.

Portanto, o objetivo desse artigo é mostrar o que é o PWM, como ele funciona, quais suas aplicações e como programar o PWM no Arduino.

<h2>
  <strong>O que é PWM </strong>
</h2>

PWM (Pulse Width Modulation) ou Modulação de Largura de Pulso, utilizado em sistemas digitais, consiste em uma técnica para variar o valor médio de uma forma de onda periódica. Assim, é possível controlar em uma onda quadrada o tempo em que ela fica em nível lógico alto, mantendo sua frequência, mas alterando o seu valor médio de tensão ao longo do tempo.

Dessa forma, seria como se um circuito, cuja fonte de tensão fornece 10 volts, tivesse uma chave que fica abrindo e fechando em uma determinada frequência. Veja a onda que será formada nesse circuito:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/h1y0ykc0wtwzisob6n73.jpg)

Note que neste exemplo 50% do tempo a chave está fechada e 50% do tempo aberta. Dessa forma, é possível variar o tempo que a chave fica aberta ou fechada, alterando a largura do pulso.

O PWM funciona exatamente dessa forma, entretanto digitalmente. E assim é possível regular o tempo em que o sinal estará em nível lógico alto em uma determinada frequência. O tempo em que o sinal está em nível lógico alto, é chamado de Duty Cycle, ou, Ciclo Ativo.

Para calcular a potência média dissipada no sinal em uma onda quadrada utiliza-se a fórmula:

![Alt Text](https://athoselectronics.com/wp-content/uploads/2016/02/formulapotencia.png)

Onde:

P = Potência Média (Watts)
t = Tempo (segundos ou milissegundos)
V = Tensão fornecida pela fonte (Volts)
I = Corrente (Amperes)

Essa fórmula serve para encontrar a porcentagem do tempo em que o sinal está em nível lógico alto, e multiplicar pela potência máxima. Dessa forma, é possível estimar a potência média de um sinal em PWM.

Portanto, o PWM é controlado variando a largura de um pulso para controlar o ciclo do sinal aplicado a uma carga, e consequentemente, sua potência.

<h2>
  <strong>Como funciona o PWM do Arduino
 </strong>
</h2>

No Arduino, podemos encontrar algumas portas PWM, a quantidade delas depende do modelo do Arduino. Existem Arduinos com mais portas PWM, e outros com menos, sendo que diversos sensores ou módulos necessitam obrigatoriamente de portas PWM para funcionar.

Veja abaixo as portas PWM de um Arduino Uno:

![Alt Text](https://athoselectronics.com/wp-content/uploads/2016/02/ArduinoUno_R3_Front-768x531.jpg)

Veja que as saídas PWM são as marcadas com um “~“.

Dessa forma, essa saída podem ser controladas em sua programação para trabalharem conforme o necessário.

<h2>
  <strong>A função PWM do Arduino – analogWrite ()
 </strong>
</h2>

Dessa forma, para controlar os ciclos ativos nas portas PWM do Arduino, existe uma função específica em sua programação, o analogWrite ().

Sintaxe: analogWrite(porta , valor de 0 a 255);
Exemplo: analogWrite(9, 200);

Utiliza-se a função analogWrite() para determinar o tempo de um ciclo ativo em uma saída PWM. Assim, o tempo do ciclo ativo é controlado com um valor de 0 a 255, sendo 255 o máximo e sempre ativo.

Veja na imagem abaixo, o comportamento da onda de acordo com o valor dado na programação (de 0 a 255):

![Alt Text](https://athoselectronics.com/wp-content/uploads/2016/02/pwm.gif)

Vale lembrar que a frequência dessa onda na maioria dos pinos tem um valor fixo de mais ou menos 490 hertz.

<h2>
  <strong>Exemplo utilizando o PWM do Arduino
 </strong>
</h2>

Para testar o PWM do Arduino, será feito um projeto muito simples, retirado do site oficial do Arduino. Um LED será ligado ao Arduino para variar a intensidade do brilho do LED a partir da função analogWrite ( ), ou seja utilizando o PWM do Arduino. Para este projeto você vai precisar de 3 componentes:

Placa Arduino Uno;
LED de qualquer cor;
Resistor 220 ohms (funciona sem o resistor, caso você não tenha).
As conexões entre os componentes devem ser feitas da seguinte forma, sendo que o terminal positivo do LED deve estar ligado a porta 9 do Arduino com um resistor entre a porta e o LED.

![Alt Text](https://athoselectronics.com/wp-content/uploads/2016/02/dimmer-circuit3.png)

Caso você não tenha o resistor, ele não é necessariamente obrigatório, já que a corrente de saída do Arduino pode alimentar um LED tranquilamente sem queima-lo.

Portanto, para a programação, será feita uma estrutura for que varia constantemente o valor que deve ir na função analogWrite ( ) e executa a função. Veja abaixo o código:

<pre>int ledPin = 9;
void setup() {
}
void loop() {
for (int fadeValue = 0 ; fadeValue &amp;lt;= 255; fadeValue += 5) {
analogWrite(ledPin, fadeValue);
delay(30);
}
for (int fadeValue = 255 ; fadeValue &amp;gt;= 0; fadeValue -= 5) {
analogWrite(ledPin, fadeValue);
delay(30);
}
}</pre>

Se deu certo, o LED vai ficar variando sua intensidade de brilho.


<h2>
  <strong>Quer aprender mais sobre eletrônica?
 </strong>
</h2>

Acesse o site do <a href="http://flaviobabos.com.br/">Flávio Babos</a> para mais informações detalhadas sobre o mundo da eletrônica, programação e Arduino: como montar projetos com Arduino, braço robótico, sensores de temperatura Arduino e Internet das Coisas! Além disso, se está perdido e gostaria de ter um guia, um <a href="https://flaviobabos.com.br/curso-de-arduino/">Curso de Arduino.net </a> do Flávio Guimarães ou senão, um Curso Gratuito de Arduino recomendo fortemente ler o Artigo citado acima pois lá você terá uma listagem completa dos melhores materiais no Brasil para aprender Arduino de forma descomplicada e rápida.