Share

A modulação por largura de pulso (MLP), mais conhecida pela sigla em inglês PWM (Pulse-Width Modulation), é uma técnica de modulação que gera uma onda quadrada, variando a largura de pulso de acordo com um valor chamado duty cycle. Embora esta técnica de modulação possa ser utilizada para codificar a informação para transmissão, a sua utilização principal é permitir o controle da energia fornecida aos dispositivos elétricos, especialmente motores.

O termo duty cycle (ciclo de trabalho) descreve a proporção de tempo em nível alto de tensão em um intervalo regular ou período de tempo. O tempo em baixo nível de tensão corresponde a baixa potência, porque a potência está desligada pela maior parte do tempo. O duty cycle é expresso em porcentagem, sendo 100% o valor máximo.

A modulação por largura de pulso usa uma onda de pulso retangular cujo pulso é modificado resultando em uma variação do valor médio da forma de onda. Se nós considerarmos um pulso de forma de onda f(t), com período T, valor mínimo Ymin, valor máximo Ymax e duty cycle D, a valor médio da onda é dado por:

valor_media_PWM

Como f(t) é um pulso de onda, seu valor é Ymax para 0 < t < D*T e Ymin para D*T < t < T. A expressão se torna:

valor_media_PWM02

Aplicações

As aplicações de PWM são inúmeras. Veremos apenas algumas no texto a seguir.

Servo motor

O PWM pode ser usado para controlar servo motores. O ângulo é determinado pela duração de um pulso que é aplicado ao fio de controle. A posição do servo não é definida pelo ciclo PWM (isto é, tempo de ON vs OFF), mas apenas pela duração do pulso. O servo espera ver um pulso a cada 20 ms, no entanto, isto pode variar dentro de uma ampla gama que difere de servo para servo. O comprimento do pulso determina a distância que o motor irá percorrer. Por exemplo, um pulso de 1,5 ms irá fazer motor girar para a posição de 90 graus (posição neutra).

Telecomunicações

Em telecomunicações, PWM é uma forma de modulação de sinal em que as larguras dos pulsos correspondem a valores específicos de dados codificados em uma extremidade e descodificado na outra. Pulsos de vários comprimentos (a própria informação) serão enviados em intervalos regulares (a frequência portadora da modulação).

Entrega de potência

PWM pode ser utilizado para controlar a quantidade de energia fornecida a uma carga, sem incorrer as perdas que resultam da entrega de potência linear por meios resistivos. Desvantagens potenciais para esta técnica são as pulsações definidos pelo ciclo de trabalho, a freqüência de comutação e as propriedades da carga. Com uma frequência de comutação suficientemente elevada e, quando necessário, utilizando filtros eletrônicos passivos suplementares, o trem de pulsos pode ser suavizado e a forma de onda média analógica recuperada.

Este é o método usado em fontes chaveadas, como as fontes de computadores. Dessa forma ela entrega apenas a potência “exigida” pela carga, economizando energia elétrica quando possível e proporcionado um melhor controle da potência.

Reguladores de Voltagem

PWM é também usado em reguladores de tensão eficientes. Ao mudar a tensão para a carga, com o ciclo de trabalho adequado, a saída se aproximará de uma tensão ao nível desejado. O ruído de comutação é geralmente filtrado com um indutor e um capacitor.

PWM da Raspberry PI

O controlador PWM incorpora as seguintes características:

  • Duas saídas independentes de bit-streams, alimentadas por uma frequência fixa
  • Bit-streams configuradas individualmente para saída PWM ou uma versão serializada de uma palavra de 32 bit
  • As saídas PWM têm resoluções de saída e entrada variável
  • Modo serializado configurado para carregar dados e/ou ler dados de um bloco FIFO, que pode armazenar até oito palavras de 32 bits
  • Ambos os modos alimentados por clk_pwm que normalmente é 100MHz, mas pode ser variado pelo gerenciador de clock

Implementação do PWM

Um valor representado como uma proporção de N / M pode ser transmitido ao longo de uma série de canais com uma modulação de largura de pulso em que o valor é representado pelo o ciclo de trabalho do sinal de saída. Para enviar o valor de N / M dentro de uma sequência periódica de ciclos M, a saída deve ser de 1 para N e 0 ciclos de ciclos (M-N).

Gerando PWM com Raspberry PI

Utilizando a biblioteca wiringPI é possível gerar PWM por software ou por hardware na Raspberry PI. Vamos nos focar no uso do PWM por hardware. Para iniciarmos o uso do PWM por hardware chamamos a função:

Para configurar a frequência do sinal PWM devemos usar as funções pwmSetClock() e pwmSetRange(). O intervalo válido para pwmSetClock() parece ir de 2 a 4095, enquanto o intervalo válido para pwmSetRange() é de até 4096. O intervalo (range) e o clock ambos afetam a frequência.

O intervalo (range) também afeta a resolução, por isso, embora possa ser possível a utilização de valores muito baixos, há um limite prático para o quão baixo você provavelmente vai querer ir. Por exemplo, se você usa o intervalo de 4, você poderia alcançar altas frequências, mas você estará habilitado apenas a configurar o ciclo de trabalho para 0/4, 1/4, 2/4, 3/4 or 4/4.

O clock do PWM da Raspberry Pi tem uma frequência base de 19,2 MHz. Esta frequência, divida pelo argumento de pwmSetClock(), é a frequência em que o contador PWM é incrementado. Quando o contador atinge um valor igual ao intervalo especificado, ele reinicia para zero. Enquanto o contador é menor do que o ciclo de trabalho especificado, a saída é alta, caso contrário, a saída é baixa.

Isso significa que, se você deseja definir o PWM para ter uma freqüência específica, você pode usar a seguinte relação:

Código fonte de um exemplo:

Para compilar na própria Raspberry, digite:

Referênicias

http://en.wikipedia.org/wiki/Pulse-width_modulation

https://projects.drogon.net/raspberry-pi/wiringpi/functions

Translate »