Entendendo o Sinal PWM

Olá pessoal, na postagem de hoje vamos entender o que é um Sinal PWM, suas características e vamos analisar o sinal com o uso de equipamentos, bem como aprender a gerar esse sinal utilizando uma placa Arduino.
A postagem de hoje é patrocinada pela Loja Webtronico:
http://www.webtronico.com
Como disse no post sobre a placa Arduino Pro Mini, a loja Webtronico nos enviou a placa Arduino Pro Mini, juntamente com um kit para módulo de relé e os LED RGB, clique nos links para comprar os produtos na loja e aproveitar para comprar mais componentes!
Vamos ao PWM:
PWM significa "modulação por largura de pulso" (Pulse Width Modulation), é um sinal que alterna entre ligado e desligado, nós usamos o PWM quando queremos variar a potência media de uma carga em CC que pode ser um motor ou lâmpadas, ou mesmo transistores de potência em inversores CC-CA.
Além desses casos, o sinal PWM tem muitas outras aplicações, como o acionamento de servos em aeromodelos, a intensidade de iluminação em mangueiras LED (aquelas usadas para enfeites no natal), o acelerador de caminhões modernos, o controle de ventoinhas de radiadores de carros modernos, etc.
Vamos analisar uma imagem para entender melhor o sinal PWM:
Nessa imagem temos um termo que precisamos entender antes de prosseguir: "Duty Cycle", esse termo significa razão cíclica ou ciclo de trabalho/carga em português e é utilizado para descrever a fração de tempo em que um sinal está em um estado "ativo".
Na primeira parte o sinal permanece em 0V constantemente e o Duty Cycle é 0%, ou seja, não existe momento onde tenha potência sendo fornecida.
Na segunda parte temos um sinal que fica 25% do tempo ligado e 75% desligado, portanto o duty cycle é de 25%, e assim sucessivamente.
O sinal PWM é uma onda quadrada que podemos controlar seu duty cycle. Mas como vamos saber qual a tensão que realmente está sendo entregue a uma carga se o sinal liga e desliga?
Existe uma fórmula que é a tensão média:
Tensão Média = Vmáx x ciclo de carga(%)
Para entender melhor vamos analisar caso a caso, vamos começar com o sinal de 25%
 
A fórmula nos diz que a tensão média sendo fornecida é dada pela multiplicação o ciclo de carga, que nesse caso é 0,25 (25% é 25/100 = 0,25) pela tensão que é 5V no exemplo. Então temos:
Tensão média = 5 x 0,25 = 1,25V  
Então a carga que estiver recebendo esse sinal irá trabalhar como se estivesse recebendo continuamente uma tensão de 1,25V.
Vamos para o próximo exemplo:
 
Uma carga que esteja recebendo um sinal PWM com duty cycle de 50% sendo seu pico de 5V, estará recebendo uma tensão média de:
Tensão média = 5 * 0,5 = 2,5V 
Ou seja, a carga vai se comportar como se estivesse conectada a uma tensão continua de 2,5V. Para finalizar os 5V: 
Qual a tensão média nesse caso? Vamos calcular!
Tensão média = 5 * 0,75 = 3,75V
3,75V. Fácil entender não é? Vamos outro:
Qual o valor da tensão média que vai receber um motor conectado a um sinal PWM com duty cycle de 75% como o mostrado anteriormente?
  Tensão média = 12V * 0,75 = 9V
Ou seja, o motor vai se comportar como se estivesse conectado a uma alimentação continua de 9V.
Enviando o sinal PWM conseguimos controlar a potência em uma carga, evitando perdas caso fosse utilizado algum meio resistivo para reduzir essa tensão (potenciômetro ou resistor). 
Quem pode gerar um sinal PWM?
Como exemplos de fontes que podem gerar um sinal PWM temos: CI 555, placas Arduino, Microcontroladores PIC, geradores de função, etc.
Após essa parte teórica vamos aprender a gerar um sinal PWM para controlar o brilho de um LED, para isso vamos utilizar a placa Arduino Pro Mini fornecida pela Webtronico
Para conhecer mais a placa Arduino Pro Mini clique aqui. Vamos usar o código a baixo para gerar um sinal PWM em uma das portas, onde o valor será configurado através de um potenciômetro.
O circuito montado é esse:
A placa Arduino Pro Mini, fornecida pela Webtronico, está conectada em um conversor USB/TTL para programar no computador, conectada a ela temos também um LED azul de 5mm ligado na porta 3 (que suporta sinal PWM) e um potenciômetro conectado na porta A1 (portas analógicas são configuradas como "INPUT" por padrão, não sendo necessária a declaração do pinMode), só para lembrar que como o LED funciona com seus 3V e o Arduino fornece 5V nas saídas, existe um resistor de 150Ω entre o LED e o GND! A conexão está dessa forma:
Ligando o circuito em um osciloscópio podemos fazer uma análise detalhada do sinal PWM sendo gerado, percebam na foto que a frequência do sinal gerado está na faixa dos 500Hz:
Na foto a seguir podemos ver o osciloscópio mostrando o sinal PWM, com duty cicle de 50%, na tela enquanto o multímetro nos mostra a tensão média sendo entregue na saída (aprendemos como calcular anteriormente). 
Detalhe do visor do osciloscópio:
Como a tensão máxima é de 3,20V e o duty cicle é de 50% temos pela fórmula que a tensão média fornecida é de 1,60V que é bem próximo do mostrado no multímetro.
Outro exemplo, agora com duty cicle em 25%:
E a tela do osciloscópio:
Como o multímetro Minipa usado nos testes é "Auto Range" ele só "apita" e muda a faixa de tensão, mostrando nesse caso os 0,8V resultantes de um sinal PWM com Duty cicle de 25%.
Acho que agora foi possível entender melhor o sinal PWM, em uma próxima postagem vamos usar o mesmo circuito para controlar a cor de um LED RGB, o mesmo sistema que utilizo para controlar a cor da iluminação interna do gabinete do meu computador, como falei aqui pela primeira vez
Gostaria de agradecer mais uma vez pela parceria com a Webtronico e pelo envio dos itens! Não deixem de conferir a loja para as compras de seus projetos.
Por hoje é isso pessoal, um abraço e até a próxima.