Você está na página 1de 8

Prática nº

Universidade Federal do Ceará


Departamento de Engenharia Elétrica
Técnicas Avançadas em Eletrônica Digital
Professores: Paulo Praça
Semestre 2018.2
07
PWM – Modulação por Largura de Pulso

Objetivos:
• Entender os conceitos de controle PWM.
• Desenvolver algoritmos de controle PWMs em VHDL.
• Implementar e visualizar no osciloscópio a geração dos pulsos PWMs feitos
em VHDL nos kit de FPGAs.

Informações Teóricas:

Os controles de potência, inversores e frequência, conversores para


servomotor, fontes chaveadas e muitos outros circuitos utilizam a tecnologia do
PWM (Pulse Width Modulation) ou Modulação por Largura de Pulso como base
de seu funcionamento.

Figura 1 – Modulação PWM com tensão constante.

Para haver a modulação por largura de pulso temos que atender alguns pré-
requisitos básicos. Primeiro, é preciso um circuito modulador (triangular) e um
sinal de referencia (V!"# ) a ser comparado. Os sinais resultantes são pulsos nas
formas quadradas ou retangulares, de largura variável e amplitude constante.
Neste tipo de modulação o ciclo ativo do sinal modulado, ou em outras
palavras a largura do pulso, é modificado de acordo com a amplitude do sinal
modulador. Por ciclo ativo entende-se a porção de tempo em que o sinal
permanece em nível alto durante um período, por exemplo, um sinal com 70%
de ciclo ativo e período de 1𝑠, permanece 0,7𝑠 em nível alto e 0,3𝑠 em nível
baixo, como mostra a figura 2.

Figura 2 – Forma do sinal PWM.

Na figura a seguir á apresentado o diagrama em blocos de um modulador


PWM analógico.

Figura 3 – Método Analógico.


De acordo com a figura anterior, observa-se que o sinal PWM é obtido
através da comparação do sinal modulante com uma onda triangular. O sinal
modulante pode ser um nível DC ou outra forma de onda qualquer, o
importante é garantir que a frequência da onda triangular seja bem superior a
maior componente de frequência do sinal modulante. Na figura 4 é apresentada
a comparação descrita acima.

Figura 4 – Comparação para obtenção do sinal PWM.



Na figura acima, observa-se que sempre que o sinal modulante é de
maior intensidade que a onda triangular a saída do PWM vai a nível alto e
permanece neste estado até que esta condição seja desfeita. Apesar de não
ser o caso da figura acima, a comparação contrária também pode ser
realizada, ou seja, sempre que a onda triangular for maior que o sinal
modulante o PWM vai a nível alto, para tal basta inverter as entradas do
comparador. O gerador de onda triangular, é implementado através da
integração do sinal proveniente de um oscilador biestável. O sinal modulante
passa por um estágio de condicionamento antes de ser aplicado ao
comparador.
Outro tipo de modulação existente e bastante utilizada no dia a dia é a
chamada modulação PWM senoidal, ou SPWM. Existem varias formas de se
implementar um PWM senoidal, e a figura abaixo ilustra esse principio.
Figura 5 – PWM Senoidal.

Procedimentos:

1. Siga a explicação do professor a respeito da modulação PWM.


2. Monte no Quartus II o circuito de blocos mostrado abaixo, grave nos
dispositivos FPGA e aplique no circuito experimental.


Bit Localização 1 Localização 2 Localização 3
A[0] PIN_A17 PIN_G21 PIN_J20
A[1] PIN_A16 PIN_F21 PIN_K20
A[2] PIN_A15 PIN_E21 PIN_L18
A[3] PIN_A14 PIN_D21 PIN_L19
A[4] PIN_A13 PIN_C21 PIN_J18
A[5] PIN_B13 PIN_A20 PIN_J19
A[6] PIN_B14 PIN_A19 PIN_K21
A[7] PIN_B15 PIN_A18 PIN_J21
PWM1 PIN_K22 PIN_K22 PIN_K22
PWM2 PIN_J22 PIN_J22 PIN_J22
CLOCK_EXT PIN_L1 PIN_L1 PIN_L1

3. Monte no Quartus II o circuito de blocos mostrado abaixo, grave no


dispositivo FPGA e aplique no circuito experimental.

Figura 6 – Blocos Geração PWM.



4. Desenvolva um programa de acionamento do inversor mostrado na
figura abaixo, com modulação PWM senoidal, que contenha:
• Um bloco divisor de frequência, considerando que o clock interno do
FPGA é de 50𝑀𝐻𝑧;
• Um bloco, em VHDL, de uma portadora triangular de 4𝐾ℎ𝑧;
• Um bloco, em VHDL, de construção de três moduladoras senoidais
de 60𝐻𝑧, defasadas entre si de 120 graus elétricos.
• 3 blocos de comparação, cada um com 2 saídas, sendo uma o
oposto da outra.

Figura 7 – Inversor Trifásico em Ponte Completa.


5. Descreva, com suas palavras, o que é a modulação PWM, mostrando


seu princípio de funcionamento através de gráficos e equações. Cite
também suas características, vantagens, desvantagens e possíveis
aplicações.

6. Para os exercícios 2, 3 e 4, mostre os resultados de simulação


referentes às portadoras, moduladoras e saídas. Apresente também,
para a questão 4, o circuito de blocos, bem como o código VHDL de
cada bloco criado.


ANEXOS

BLOCO freq_div2:
ENTITY freq_div2 IS
PORT (clk : IN BIT;
z : OUT BIT);
END freq_div2;
ARCHITECTURE arch2 OF freq_div2 IS
SHARED VARIABLE x : NATURAL RANGE 0 TO 25;
BEGIN
PROCESS(clk)
BEGIN
IF x = 25 THEN
z <= '1';
x := 0;
ELSIF clk 'EVENT AND clk = '1' THEN
z <= '0';
x := x+1;
END IF;
END PROCESS;
END arch2;

BLOCO freq_div:
ENTITY freq_div IS
PORT (clk : IN BIT;
z : OUT BIT);
END freq_div;
ARCHITECTURE arch2 OF freq_div IS
SHARED VARIABLE x : NATURAL RANGE 0 TO 6173;
BEGIN
PROCESS(clk)
BEGIN
IF x = 6173 THEN
z <= '1';
x := 0;
ELSIF clk 'EVENT AND clk = '1' THEN
z <= '0';
x := x+1;
END IF;
END PROCESS;
END arch2;
BLOCO senóide:
ENTITY senoide IS
PORT (clk : IN BIT;
senoA : OUT NATURAL RANGE 0 TO 255);
END senoide;
ARCHITECTURE arch1 OF senoide IS

TYPE tabela IS ARRAY (INTEGER RANGE<>) OF NATURAL;


SHARED VARIABLE auxA : NATURAL RANGE 0 TO 255 := 0;
CONSTANT dados : tabela (0 to 134) :=
(127,132,138,144,150,156,162,167,173,178,184,189,194,199,204,208,213,217,221,225,
228,232,235,238,241,243,245,247,249,250,252,252,253,253,253,253,253,252,251,250,
248,246,244,242,239,236,233,230,226,223,219,214,210,206,201,196,191,186,180,175,
170,164,158,152,147,141,135,129,123,117,111,105,100,94,88,83,77,72,66,61,56,51,47,
42,38,34,30,26,23,19,16,13,11,8,6,5,3,2,1,0,0,0,0,0,1,2,3,4,6,8,10,13,15,18,22,25,29,33,
37,41,46,50,55,60,65,70,76,81,87,92,98,104,110,116,122);
BEGIN

PROCESS (clk)
BEGIN

IF auxA = 135 THEN auxA := 0;


ELSIF clk 'EVENT AND clk = '1' THEN
auxA := auxA + 1;
END IF;
END PROCESS;
senoA <= dados(auxA);
END arch1;

Você também pode gostar