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 PWM da placa microcontroladora Arduino é 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.
O que é PWM
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:
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:
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.
Como funciona o PWM do Arduino
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:
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.
A função PWM do Arduino – analogWrite ()
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):
Vale lembrar que a frequência dessa onda na maioria dos pinos tem um valor fixo de mais ou menos 490 hertz.
Exemplo utilizando o PWM do Arduino
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.
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:
int ledPin = 9; void setup() { } void loop() { for (int fadeValue = 0 ; fadeValue <= 255; fadeValue += 5) { analogWrite(ledPin, fadeValue); delay(30); } for (int fadeValue = 255 ; fadeValue >= 0; fadeValue -= 5) { analogWrite(ledPin, fadeValue); delay(30); } }
Se deu certo, o LED vai ficar variando sua intensidade de brilho.
Quer aprender mais sobre eletrônica?
Acesse o site do Flávio Babos 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 Curso de Arduino.net 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.
Top comments (0)