Olá, nesse post iremos conhecer um pouco sobre PWM (Pulse-Width Modulation) ou em português Modulação por largura de pulso (MLP). O arduino tem a nos oferecer saidas analógicas pela qual podemos utilizar a técnica PWM.


Irei utilizar como exemplo o controle de motores de corrente contínua. Com esta técnica podemos controlar a velocidade dos motores, mantendo o torque ainda que em baixas velocidades o que garante partidas suaves mesmo quando há uma carga maior sobre os motores. Aspectos que caracterizam o controle PWM como ideal para aplicações em robótica.

Para entender o princípio do PWM vamos imaginar um circuito como o da figura 1. Neste, temos um interruptor que quando acionado faz com que o motor receba 6V e funcione com 100% de potência. Quando o interruptor não está precionado, o motor não recebe energia e simplesmente não funciona.

Vamos supor que consigamos pressionar e soltar o interruptor um grande número de vezes por segundo, de tal forma que metade do tempo ele fica ligado e metade desligado.  O resultado seria uma onda quadrada como o da figura 2.

No exemplo o tempo t1 corresponde ao tempo que o interruptor fica precionado e t2 o tempo que ele fica livre. Como neste caso t1 é igual a t2, durante a metade do tempo o motor recebe a tensão de 6V e na outra metade ele recebe 0V.  A tensão média, figura 3, aplicada ao motor é neste caso de 3V, ou seja, 50% da tensão da bateria.

É claro que não é possível usar um interruptor em um circuito com PWM, pois não conseguiríamos pressioná-lo na velocidade necessária. Porém o circuito eletrônico do MC 2.5 foi projetado para executar esta tarefa. De fato, o módulo de controle gera cerca de 200 pulsos por segundo.
Para diminuir a velocidade do motor, basta reduzir a largura dos pulsos, mantendo o motor menos tempo ligado, conforme figura 4, neste exemplo o ciclo ativo é de 30% por que o tempo ativo corresponde a 30% do período da onda.

No exemplo ilustrado pela figura 5, o ciclo ativo é de 80%  e o motor irá girar mais rápido que no exemplo anterior.No exemplo ilustrado pela figura 5, o ciclo ativo é de 80%  e o motor irá girar mais rápido que no exemplo anterior.

No LEGAL podemos controlar o ciclo ativo através do comando potência, por exemplo:

potência M1 8

Este comando faz com que o PWM que controla o motor M1 funcione com um ciclo ativo de 80%. O comando potência está melhor explicado em XXXX.

No Arduíno:

Para utilizarmos o PWM no Arduíno, podemos fazer uso do método analogWrite, o qual tem um valor de entrada que vai de 0-255, desse jeito se utilizarmos analogWrite(127), será entendido que queremos 50% dos nossos 5V que o Arduino fornece.

Para melhor entendimento a figura a baixo faz uma demonstração de como podemos utilizar o PWM no Arduíno através do método analogWrite:

Até a próxima!

M. Vitali

 

Fontes consultadas:

http://pt.wikipedia.org/wiki/Modula%C3%A7%C3%A3o_por_largura_de_pulso

http://arduino.cc/it/Tutorial/PWM