Você está na página 1de 59

Capítulo 4

Conversão de corrente contínua em alternada

A corrente quase contínua que o conjunto rectificador / bobina_alisamento fornece tem de ser
modificada de forma a possuir características que lhe permitam ser injectada na rede eléctrica
de distribuição pública.

As características impõem:

• Corrente alternada de componente fundamental sinusoidal e com 50Hz.

• Baixo conteúdo harmónico.

Para obter essas características a corrente passa por um inversor que a torna alternada e por
um filtro que lhe baixa o conteúdo harmónico de alta frequência.

L
Idc

C corrente
sinusoidal

fonte inversor filtro AC


corrente corrente

Figura 4.1 - Esquema geral da conversão dc-ac.

A entrada em corrente do conversor DC/AC obriga ao uso de um inversor de corrente que tem
características e funcionalidades diferentes do convencional inversor de tensão.

Para minimizar o conteúdo harmónico o inversor de corrente é comandado através da técnica


de modulação de largura de impulsos (PWM). Esta técnica permite mudar os harmónicos
gerados pela comutação dos interruptores para frequências elevadas, simplificando assim a
sua filtragem. Simultaneamente o PWM permite regular a amplitude da componente
fundamental, evitando que a fonte de corrente contínua que alimenta o inversor tenha
necessidade de ser controlada.

51
Conversão de corrente contínua em alternada

1 Inversor de corrente

1.1 Introdução
Como o próprio nome indica o inversor de corrente é um dispositivo que permite transformar
a corrente contínua com que é alimentado, em corrente alternada com determinadas
características. Para o efeito, a corrente DC à entrada é cortada em impulsos através dos
interruptores que ligam a entrada às três fases da saída.

Idc

g1h g2h g3h


IR

Idc IS

IT

g1L g2L g3L

Figura 4.2 - Esquema básico do inversor de corrente.

O comando dos interruptores tem de ser efectuado de modo a que as componentes espectrais
sejam as desejáveis. O uso de interruptores rápidos e com capacidade de serem comandados
nos dois estados (corte e condução) permite o uso da técnica de modulação de largura de
impulsos (PWM - Pulse Width Modulation). Esta técnica permite o controlo da amplitude da
componente fundamental da corrente de saída e afastar os harmónicos para frequências
elevadas, simplificando a filtragem.

Normalmente o inversor de corrente é ligado a uma carga que pode ser modelizada por um
sistema de tensões trifásico equilibrado, e alimentado por uma fonte que consiste numa fonte
de tensão DC em série com uma bobina de alisamento.

L alisamento Idc

g1h g2h g3h


IR VR

IS VS
V dc inv

V dc fonte
IT VT

g1L g2L g3L

Figura 4.3 - Utilização normal do inversor de corrente.

52
Conversão de corrente contínua em alternada

Dependendo do esfasamento entre a corrente de saída e a tensão de carga, os interruptores


podem ter de suportar tensões inversas aos seus terminais. Isto leva a que os interruptores
tenham de ser implementados com dispositivos que suportem as respectivas tensões.

O inversor de corrente pode ser modelizado quer do lado DC, quer do lado AC, pelo esquema
indicado na figura seguinte:

Idc Valores que não dependem do inversor:


IR VR
VR (t) = 2
3
VC sin(2π . f r . t)
Inversor IS VS VS (t) = 2
3
VC sin(2π . f r . t − 23 π )
Idc de
V dc
corrente VT (t) = VC sin(2π . f r . t − 43 π )
2
3
IT
I DC (t) = I DC
VT

VC ⇒ tensao composta da rede


f ⇒ frequencia da rede
r
Parâmetros de controlo:
im -> índice de modulação [0..1] Valores impostos pelo inversor:
θ -> esfasamento entre a corrente de saída e a tensão de I R (t) = I DC sin(2 π.f r .t − θ).im
carga [-π..π] I S (t) = I DC sin(2 π.f r .t − 23 π − θ).im
I T (t) = I DC sin(2 π.f r .t − 43 π − θ).im
VDC = 23 ⋅ im ⋅ VC ⋅ cos (θ)

Figura 4.4 - Modelação do inversor de corrente.

A relação entre a potência activa e reactiva vista pela carga, é dada pelo esfasamento imposto
entre a corrente de saída e a tensão de carga.

Se a corrente DC de entrada não depender do inversor (Ex: Se a fonte de corrente for ideal ou
num caso mais realista e praticável, se a fonte de tensão DC de entrada for controlada de
forma a manter a corrente constante), o trânsito de potência activa (P) e reactiva (Q) pode ser
controlado independentemente um do outro através do índice de modulação (im) e do
esfasamento (θ):

P= 3
2 ⋅ Idc ⋅ Vc ⋅ im ⋅ cos(θ)
(4.1)
Q= 3
2 ⋅ Idc ⋅ Vc ⋅ im ⋅ sin(θ)

onde Idc é a corrente DC de entrada e Vc é a tensão composta da carga.

Se a corrente DC de entrada tiver de ser controlada através da tensão Vdc gerada pelo inversor
à sua entrada, o trânsito das potências activa e reactiva fica condicionado uma vez que os
parâmetros de controlo do inversor im e θ ficam relacionados pela seguinte fórmula:

VDC = 3
2 im cos(θ) Vc (4.2)

pelo que a sua escolha fica dependente da tensão que o inversor tem de gerar à entrada,
deixando de ser independentes.

53
Conversão de corrente contínua em alternada

1.2 Regras para o controlo


Ao contrário do inversor de tensão onde cada fase do inversor pode ser controlada
individualmente e independentemente das outras duas1, no inversor de corrente o controlo das
três fases tem de ser feito em conjunto.

A primeira regra surge pela necessidade de haver sempre um caminho por onde a corrente da
bobina de alisamento circular. Se em algum instante a corrente não tiver um circuito por onde
fluir, criará uma sobretensão aos terminais do inversor de modo a ‘abrir caminho’ para a
corrente fluir e dissipar a energia armazenada na bobina. Naturalmente esta sobretensão levará
à destruição do inversor.

Por este facto a primeira regra indica que em cada instante pelo menos um dos três
interruptores superiores (g1h, g2h e g3h) e pelo menos um dos três interruptores inferiores
(g1L, g2L e g3L) devem estar ligados para permitir um caminho à corrente.

A segunda regra surge pela necessidade de se garantir que a forma de onda da corrente de
saída das três fases depende unicamente do controlo do inversor, e não da tensão existente e
criada pela carga nas fases.

Suponha-se que num dado instante os interruptores g1h e g2L estão ligados e que na bobina
passa a corrente Idc. Neste caso a corrente nas fases R, S e T está bem definida e vale
respectivamente Idc, -Idc e zero.

Idc Idc

g1h g2h g3h g1h g2h g3h


IR VR IR VR

Idc IS Idc IS
VS VS

??
IT VT IT VT

g1L g2L g3L g1L g2L g3L

I R = -I S = I dc I R - I S = I dc
I R e I S desconhecidos pelo controlador
Dependem das tensões V S e V T

Figura 4.5 - Demonstração da necessidade de haver apenas 1 interruptor a


conduzir nos grupos superior e inferior.

Suponha-se agora que o interruptor g3L também está ligado. Neste caso a repartição da
corrente Idc pelas fases R e T depende das tensões Vrs e Vts fluindo maioritariamente pela
fase que oferecer menor resistência (menor tensão). Neste caso o comando do inversor nunca
poderia garantir qual a corrente que está a circular nas 3 fases, uma vez que a distribuição de
correntes dependeria também das tensões de carga.

Realmente, se não fossem os díodos em serie (ver secção 3), neste caso onde estão 3
interruptores ligados, poderia inclusive, dar-se o caso de haver uma corrente de circulação da
fase com maior tensão para a fase com menor tensão.

1
Na realidade a única regra a cumprir no caso do inversor de tensão é garantir que os dois interruptores de cada
fase nunca estão simultaneamente ligados, de forma a evitar que a fonte de tensão DC seja curto-circuitada.

54
Conversão de corrente contínua em alternada

Assim a segunda regra indica que apenas um interruptor de cada grupo superior e inferior
pode estar a conduzir num dado instante.

Estas duas regras combinam-se para gerar a regra de ‘ouro’ para o inversor de corrente: Em
cada instante deve estar um e um só interruptor ligado em cada grupo, superior e inferior.

Para se controlar a potência entregue à carga, em vez de se abrirem os 6 interruptores como no


caso do inversor de tensão, fecham-se alternadamente os dois interruptores de cada fase
efectuado assim uma ‘roda livre’ na corrente da bobina e isolando a corrente de carga da
corrente de entrada DC.

1.3 Base de PWM


O PWM usado neste trabalho baseia-se no método descrito por Ohnishi e Okitsu [8].

Segundo os autores, este PWM melhora a eliminação dos harmónicos de ordens mais baixas e
o ganho para o lado DC (a tensão rectificada obtida é mais elevada e o “ripple” mais baixo)
em relação às outras técnicas existentes.

O PWM baseia-se no facto de apenas duas das três referências da corrente de saída serem
independentes, uma vez que a soma das 3 correntes deve ser nula em cada instante de tempo.

I (t ) + I (t ) + I (t ) = 0 (4.3)
R S T

Isto significa que depois de se definirem os pulsos de PWM para duas correntes, os pulsos
para a terceira ficam automaticamente definidos.

A construção do PWM desenvolve-se pela composição de duas moduladoras (M1 e M2)


obtidas a partir das três correntes pretendidas (IR, IS e IT). Os sinais M1 e M2 são obtidos
dividindo o período das correntes IR, IS e IT em seis intervalos iguais. Em cada intervalo, S1 e
S2 são compostos tomando o valor absoluto dos sinais IR, IS e IT de menor valor absoluto.

IR IS IT
 I R se t ∈ T1  I T se t ∈ T1
− I se t ∈ T − I se t ∈ T
t  S 2  T 2
 I se t ∈ T  I se t ∈ T
M1 ( t ) =  − I S 3 M 2 ( t ) = − I R 3
se t ∈ T se t ∈ T
 T 4  R 4
M1  I se t ∈T  I se t ∈T
 T 5  S 5
t − I R se t ∈ T6  − I S se t ∈ T6
M2
t
T1 T2 T3 T4 T5 T6

Figura 4.6 - Construção das moduladoras M1 e M2.

As moduladoras obtidas vão modular duas portadoras (P1 e P2) com frequência:

f P = ( 6. m + 3). f r (4.4)

55
Conversão de corrente contínua em alternada

onde fr é a frequência das moduladoras e m é um número inteiro. A restrição da frequência


das portadoras pela equação anterior, deve-se ao facto de ser necessário garantir algumas
simetrias entre os 6 intervalos de tempo em que as moduladoras são divididas.

A modulação é efectuada através da comparação entre a portadora e a moduladora em cada


instante de tempo:

1 se m(t ) > p(t )


r (t ) =  (4.5)
0 se m(t ) ≤ p(t )

onde r(t) é o resultado da modulação, m(t) é a moduladora e p(t) é a portadora.

Figura 4.7 - Operação de modulação.

A relação entre a amplitude das portadoras P1 e P2 e a amplitude das correntes de referência


IR, IS e IT indica a relação entre a corrente IDC e a amplitude das correntes obtidas na saída do
inversor.

Para simplificar, mantêm-se a amplitude das portadoras igual a 1 e varia-se a amplitude das
correntes de referência entre 0 e 1 através da sua multiplicação por um factor im, o qual se
denomina por índice de modulação.

Desta forma , o índice de modulação ao determinar a amplitude das correntes de referência:

I R = im.sin(ω. t )
I S = im.sin(ω. t − 23 π ) (4.6)
I T = im.sin(ω. t − 43 π)

impõe a relação entre a corrente IDC e a amplitude das correntes obtidas na saída do inversor.

Da modulação entre M1 e P1 resulta o sinal S1 e da modulação entre M2 e P2 o sinal S2. Um


terceiro sinal: S3, é obtido através da negação de um “ou” lógico entre os sinais S1 e S2:

S 3 = S1 + S 2 (4.7)

56
Conversão de corrente contínua em alternada

IDC

g1h g2h g3h

IRs
ISs
ITs
g1L g2L g3L

Figura 4.8 - Inversor de corrente.

Os sinais de comando dos interruptores (g1h, g2h, g3h, g1l, g2l, g3l) são calculados a partir
dos sinais S1, S2 e S3 e a partir do intervalo de tempo T1..T6 correspondente ao momento, a
partir das seguintes expressões lógicas:

g1h = T1 . S1 + T2 + T3 . S 2 + T5 . S 3
g2h = T1 . S 3 + T3 . S1 + T4 + T5 . S 2
g3h = T1 . S 2 + T3 . S 3 + T5 . S1 + T6
(4.8)
g1l = T2 . S 3 + T4 . S 2 + T5 + T6 . S1
g2l = T1 + T2 . S1 + T4 . S 3 + T6 . S 2
g3l = T2 . S 2 + T3 + T4 . S1 + T6 . S 3

Analisando as expressões anteriores é possível verificar que este PWM garante o respeito das
regras indicadas na Secção (1.2). Em cada instante de tempo existe sempre um e apenas um
IGBT a conduzir nos ramos superior (g1h, g2h, g3h) e inferior (g1l, g2l, g3l) do inversor.

Em cada intervalo de tempo os sinais S1 e S2 dão os instantes em que o inversor injecta


corrente na saída. O sinal S3 dá os instantes em que o inversor desliga as saídas, ligando o
IGBT superior e inferior do mesmo ramo, fazendo a corrente de entrada circular em roda livre.
Verifica-se assim que este PWM controla a “quantidade” de corrente injectada na carga,
variando o tempo em que o inversor está em roda livre. Para índices de modulação próximos
da unidade S3 é pequeno, crescendo à medida que o im desce, ficando o inversor
permanentemente em roda livre com o im igual a zero.

As correntes de saída IRs, ISs e ITs são obtidas a partir do comando das gates e da corrente de
entrada IDC.

I Rs = I DC . ( g1h − g1l )
I Ss = I DC . ( g 2h − g 2l ) (4.9)
I Ts = I DC . ( g 3h − g 3l )

Para controlar a fase das correntes de saída toma-se como referência a fase R da tensão da
rede (VR) para a qual o inversor debita corrente. O esfasamento entre a tensão da rede e a
corrente de referência IR, impõe a fase das correntes debitadas pelo inversor (IRs, ISs e ITs) em
relação à tensão da rede.

As figuras seguintes exemplificam o processo de construção do PWM. Para que os impulsos


consigam ser visualizados com clareza no gráfico, optou-se por fazer m=3. Isto significa que

57
Conversão de corrente contínua em alternada

as portadoras têm uma frequência de 21 vezes a frequência das correntes de referência


(eq.4.4).

Figura 4.9 - Geração dos sinais de comando do inversor e correntes obtidas


na saída para im=1

58
Conversão de corrente contínua em alternada

Figura 4.10 - Geração dos sinais de comando do inversor e correntes obtidas


na saída para im=0.5

59
Conversão de corrente contínua em alternada

Figura 4.11 - Geração dos sinais de comando do inversor e correntes obtidas


na saída para im=0.1

1.4 Implementação do PWM


O controlo dos interruptores é feito directamente a partir do µC. Como não é possível obter
fórmulas explícitas, simples e rápidas de calcular os impulsos de controlo, optou-se por
tabelar os sinais de comando.

Uma definição que ajuda a compreender a forma de controlo do inversor implementada e a


construção das tabelas de comando é o “estado de inversor” (est_inv). O est_inv indica se os
interruptores estão ligados ou desligados e durante quanto tempo assim permanecem.

A forma escolhida para representar o estado do inversor é a seguinte:

60
Conversão de corrente contínua em alternada

estado = g1h ; g 2h ; g 3h ; g1l ; g 2l ; g 3l ; tempo


(4.10)
estado = estado _ gates ; tempo _ estado

onde gij assume os valores 1 ou 0 consoante o respectivo interruptor está ligado ou desligado,
e tempo representa a duração temporal do estado. O termo “estado_gates” tem origem no
sinal que comanda o interruptor utilizado: o IGBT.

Como é óbvio, é possível representar todo o comando de um inversor a partir de uma


sequência de estados. Como exemplo, mostra-se a sequência de estados para o controlo em
onda quadrada.

Figura 4.12 - Forma de onda das correntes de saída para um controlo em onda
quadrada e respectiva sequência de estados de controlo.

Das Figuras 4.9 a 4.11 verifica-se que os sinais S1, S2 e S3 repetem-se a cada 1/6 de período
das ondas de referência. O sinal S2 pode ser obtido se invertermos S1 no tempo, isto é: S2(t) =
S1(-t). O sinal S3 é obtido a partir de S1 e S2 segundo a equação 4.7. Isto quer dizer que todo o
controlo do inversor fica definido a partir do sinal S1 durante o primeiro 1/6 de período (T1).

As transições do sinal S1 (durante T1) são dadas pelos pontos de intersecção dos sinais P1 e
M1, conforme pode ser visto na figura seguinte.
 2π 
m1 = im sin t
 T 

Os tempos de
cruzamento t1..t14 são
calculados por
processos numéricos.

Figura 4.13 - Transições do sinal S1 em função de P1 e M1.

Os pontos de transição são obtidos resolvendo numericamente para x, equações da forma:

61
Conversão de corrente contínua em alternada

a. x + b = im.sin( x ) (4.11)

A partir da equação 4.8 e definindo os sinais: C1, C2, e C3 respectivamente como S1(t), S1(-t)
e S 2 (t) ou S 2 (t) apenas durante o primeiro 1/6 período, é obtida a tabela de controlo dos
interruptores do inversor que se representa na seguinte tabela.

T1 T2 T3 T4 T5 T6
g1h c1 1 c2 0 c3 0
g2h c3 0 c1 1 c2 0
g3h c2 0 c3 0 c1 1
g1L 0 c3 0 c1 1 c2
g2L 1 c2 0 c3 0 c1
g3L 0 c1 1 c2 0 c3

Tabela 4.1 - Sinais que devem ser aplicados no comando dos interruptores em
função do intervalo de tempo respectivo.

Como se verifica na Figura 4.14, existe uma mudança de estado sempre que C3 possui uma
transição. Desta forma, os tempos de duração dos estados são dados pelos tempos do sinal C3,
e como é óbvio repetem-se a cada 1/6 de período. Uma outra simetria que é visível no sinal C3
é a repetição na segunda metade do sinal, dos valores da primeira metade por ordem inversa.

Figura 4.14 - Obtenção do sinal de comando dos interruptores durante o


primeiro 1/6 de período (T1)

Desta forma a obtenção da sequência de estados no caso do PWM utilizado é conseguida


através dos tempos de transição do sinal C3 e do intervalo de tempo considerado (T1..T6)
segundo a Tabela 4.1.

A sequência total dos estados obtidos é indicada na próxima tabela. Os valores de tempo
referidos são obtidos através da Figura 4.14. Naturalmente, os intervalos de tempo d1..d15 são
calculados a partir dos intervalos de tempo do sinal C1 (k1..k15) que são obtidos a partir da
modulação realizada como se mostra na Figura 4.13.

62
Conversão de corrente contínua em alternada

Tabela 4.2 - Constituição da tabela de controlo do inversor para o PWM


usado neste trabalho. A frequência das portadoras é de 45 vezes a frequência
das correntes de referência. Os tempos d1..d15 são função do índice de
modulação.

63
Conversão de corrente contínua em alternada

Cada índice de modulação (im) possui uma tabela de controlo. Como é óbvio a sequência do
comando dos interruptores é igual para todos os im. O que varia é o tempo de permanência em
cada estado. Por outras palavras: o que varia com o im são os tempos d1..d15.

A redundância de informação na tabela é grande. Para 174 “tempos” de estado, apenas 15 são
diferentes e colocados por uma ordem perfeitamente definida.

Isto sugere que se crie apenas uma tabela com a sequência do comando dos interruptores para
todos os im, e uma tabela com os valores d1..d15 para cada im.

No entanto, para o µC conseguir controlar o inversor com eficiência e para que a rotina que
executa a mudança de estado seja executada no menor tempo possível, a construção das
tabelas é feita de uma forma ligeiramente diferente, ficando com alguma redundância de
informação.

Durante o cálculo dos valores d1..d15 não se coloca nenhuma restrição ao seu valor. No
entanto a duração de um estado está restringida às seguintes condições:

• O tempo de um estado está limitado inferiormente pelo tempo mínimo de condução ou


corte dos interruptores. Optou-se por fazer a duração mínima de condução ou corte dos
IGBTs de 10µs.

• O tempo de um estado está limitado inferiormente pelo tempo que a rotina do µC que
executa a mudança de estado demora a ser executada. Esta rotina demora no máximo 8.6µs
a ser executada.

• A resolução do tempo de um estado está limitada à resolução do contador que implementa


o controlo do tempo. Como o contador tem uma resolução de 200ns (rct), o tempo tem de
respeitar a seguinte fórmula:

tempo = nc . 200ns , n inteiro (4.12)

onde nc representa o valor colocado no contador do µC.

Como é óbvio as duas primeiras restrições são combinadas numa só, limitando a duração
mínima a 10µs. Isto significa que o valor mínimo de nc é 50 (10µs/200ns).

A influência destas restrições no tempo de duração dos estados de PWM é analisada na secção
(1.7).

1.5 Comando do inversor


O módulo de software responsável pelo comando do inversor recebe o índice de modulação
através da variável global G_pwm_im e da função muda_im_pwm(). A fase é indicada através
da função muda_fase_pwm(fase). Depois de receber estes dois valores, o módulo é
responsável por todos os acontecimentos relativos ao comando do inversor.

64
Conversão de corrente contínua em alternada

arranque_ inversor() G_flag_erro_pwm_fase


paragem_ inversor() G_erro_pwm_fase
Modulo de
G_pwm_im G_flag_erro_zero_rede
muda_im_pwm()
comando do G_erro_zero_rede
inversor
G_flag_erro_pwm_sync_bruta
muda_fase_pwm(fase)
G_erro_pwm_sync_bruta

inicializa_inversor()

Figura 4.15 - Modelo do módulo de software de comando do inversor.

As flags e as variáveis de saída indicam erros na sincronização do PWM com a rede eléctrica.
O seu significado é explicado nas secções seguintes.

Com o intuito de sincronizar a onda da corrente de saída com a onda da tensão da rede, existe
um sinal de sincronismo (Ssync) que gera uma interrupção no µC sempre que a onda da tensão
VR passa por zero no sentido ascendente. Esta interrupção vai servir não só para manter o
sincronismo, mas também para medir o período real (em cada ciclo) da rede eléctrica.

O módulo possui uma base de dados com as tabelas necessárias ao controlo do inversor para
1000 índices de modulação. A forma como as tabelas estão construídas e colocadas na
memória do µC está optimizada para que a rotina responsável pela mudança de estado do
inversor seja executada no menor tempo possível. Isto leva necessariamente a uma elevada
redundância de informação contida na base de dados do PWM. A quantidade de memória
ocupada pela base de dados não é preocupante, uma vez que a plataforma utilizada possui
memória suficiente. Pelo contrário o tempo de execução da rotina que implementa a mudança
de estado do inversor é um factor de extrema importância uma vez que limita o tempo mínimo
de duração dos estados e é executada durante 174 vezes (o número de estados) durante cada
período da rede eléctrica (20ms).

Para além da base de dados com as tabelas de PWM e do sinal de interrupção para
sincronismo o módulo de controlo do inversor utiliza ainda os seguintes recursos do µC:

• Temporizador / Contador T6 - Para a contagem do tempo de duração dos estados,


provocando uma interrupção que executa a mudança de estado sempre que o tempo de
duração do estado anterior expira.

• Temporizador / Contador T1 - Para a contagem do tempo que decorre entre duas


interrupções consecutivas do sinal de sincronismo. Gera ainda uma interrupção que
assinala um erro no caso do sinal de sincronismo não surgir ao fim de 26ms contados a
partir da ultima passagem por zero detectada.

• Temporizador / Contador T3 - Utilizado para implementar o controlo do esfasamento entre


a corrente de saída e a tensão da rede. Controla o tempo que decorre entre uma interrupção
de sincronismo Ssync (passagem por zero da tensão da rede) e a colocação na origem do
PWM (passagem por zero da corrente de saída).

• Porta P7 - Porta utilizada para controlar os interruptores do inversor (P7.0 P7.5) e manter o
sincronismo do PWM com a rede (P7.6 e P7.7).

65
Conversão de corrente contínua em alternada

• 2 bancos de registos (pwm_regs e sync1_regs) - Para processamento e armazenamento de


dados entre chamadas de rotinas. A utilização de registos para armazenamento de
informação entre chamadas de rotinas permite tornar essas rotinas mais rápidas uma vez
que não é feito acesso à memória convencional.

• Apontador DPP0 (“data page pointer 0”) - É utilizado para aceder à informação das tabelas
do PWM como se fossem variáveis do tipo “near”. O acesso a variáveis através dos “data
page pointer” (variáveis “near”) é mais rápido do que o acesso tipo “extended page” ou
“extended segment”.

A maior parte das rotinas responsáveis pelo comando do inversor foram escritas em assembly
de modo a optimizar o tempo de execução. O código está descrito no Anexo C e encontra-se
documentado. No entanto a sua total compreensão exige o conhecimento da arquitectura do
C167 e do seu assembly.

1.5.1 Organização e armazenamento das tabelas de PWM


A rotina que executa a mudança de estado do inversor utiliza o apontador DPP0 para aceder à
informação necessária a cada estado: o estado dos interruptores (gates) e a duração do
respectivo estado (tempos).

Na Secção 1.4 foi visto que 15 valores (d1..d15) são suficientes para indicar o tempo de
duração dos estados para cada índice de modulação (im). Aparentemente a melhor forma de
construir as tabelas seria formar uma tabela de 15 valores para cada im. Esta tabela seria
alternadamente percorrida nos dois sentidos sendo assim obtida a sequência correcta dos
tempos.

No entanto, isto leva a que a rotina que executa a mudança de estado tenha de incluir uma
condição para verificar em que sentido está a percorrer a tabela. Isto significa um tempo de
execução que pode ser poupado se a tabela for percorrida apenas num sentido.

Desta forma, a tabela de tempos para cada im é constituída por 29 valores correspondentes a
1/6 de período das correntes de saída. Cada valor da tabela é armazenado em 16 bits. Para
indicar o fim da tabela é colocado o valor FFFFh (valor negativo em complemento para dois).

Embora 8 bits fossem suficientes, é mais rápido mover e operar 16 bits neste µC do que 8 bits.
Alem disso para se usar 8 bits seria necessário baixar a resolução do contador de 200ns para
400ns, o que levaria a piorar a linearidade entre Vdc e im conforme é exposto na Secção 1.7.

Atendendo a que o tamanho das tabelas de tempo é sempre o mesmo para cada im, o valor
que indica o fim da tabela é dispensável se a rotina que executa a mudança de estado possuir
um contador que sinalize que chegou ao fim da tabela. No entanto, incrementar e verificar o
contador demora tempo.

Assim cada tabela de tempo ocupa (29+1)∗2 = 60bytes.

Deve ser notado que a tabela de tempos pode possuir valores com zero, correspondentes aos
estados eliminados por terem uma duração inferior ao limite imposto.

66
Conversão de corrente contínua em alternada

d1
d2
d3
......
d14
d15
d14
......
d3
d2
d1
FFFFh

Figura 4.16 - Tabela com a duração dos estados do PWM. Os 29 valores


correspondem aos estados durante 1/6 de período que depois se repetem para
os restantes 5/6. A tabela é percorrida no sentido descendente e o seu final é
sinalizado com o valor FFFFh. Cada im possui uma tabela deste tipo que
ocupa 60bytes.

Como a sequência de gates é sempre a mesma, aparentemente apenas seria necessário uma
tabela de gates para todos os índices de modulação. No entanto a informação necessária a
cada estado deve estar contida dentro do alcance do apontador DPP0. O DDP0 permite aceder
apenas a uma página (16kb) de memória do µC. Como é óbvio as tabelas de tempo para os
1000 im não cabem em 16kb.

Assim em cada página de memória onde existam tabelas de tempo, tem de existir uma tabela
com a sequência de gates.

A posição de gates relativamente ao início de cada página tem de ser a mesma, de modo a que
o apontador que mantêm a posição actual de gates esteja sempre certo, independentemente da
página a ser usada.

4 páginas são suficientes para guardar as tabelas de PWM, pelo que a tabela de gates é
repetida 4 vezes no início dessas 4 páginas.

A tabela de gates indica se os interruptores estão ligados ou desligados em cada estado do


inversor. Como o sinal da porta do µC que controla os interruptores é invertido no
condicionamento de sinal, um “0” indica que interruptor está fechado e um “1” indica que está
aberto.

Como existem 6 interruptores no inversor, seriam necessários apenas 6 bits para codificar o
seu estado. No entanto a organização ao byte da memória do µC e atendendo a que neste µC é
mais rápido mover e operar 16bits do que 8bits leva a que cada estado de gates ocupe 16bits.

A tabela de gates é terminada com um zero. Desta forma a tabela ocupa


(29∗6+1) ∗2=350bytes.

Para localizar a tabela correspondente a um determinado im existem dois vectores que estão
ordenados por ordem crescente do im a que se referem. Um dos vectores indica a página de
memória, e o outro indica o deslocamento da tabela de tempos do respectivo im.

67
Conversão de corrente contínua em alternada

A figura seguinte fornece o panorama geral da organização das tabelas. Os im são espaçados
de 1/1000=0.001.Com a limitação inferior do tempo de duração dos estados, as tabelas de
tempos para os im inferiores a 0,027 são iguais. Desta forma o im mais baixo que se tabela é
o 0,027, que corresponde a manter o inversor permanentemente em “roda livre”.

Página A Página B Página C Página D


offset offset offset offset
DPP0 0000h g 1 DPP0 0000h g 1 DPP0 0000h g 1 DPP0 0000h g 1
g 2 ptr_gates_ g 2 g 2 g 2
g 3 RELOAD g 3 g 3 g 3
g 4 g 4 g 4 g 4
gates

gates

gates
gates
..... ..... ..... .....

g 171 ptr_gates g 171 g 171 g 171


g 172 g 172 g 172 g 172
g 173 g 173 g 173 g 173
g 174 g 174 g 174 g 174
015Dh 0000h 015Dh 0000h 015Dh 0000h 015Dh 0000h
015Eh d 1 0.027 015Eh d 1 0.294 015Eh d 1 0.561 015Eh d 1 0.828
d 2 0.027 ptr_tempos_ d 2 0.294 d 2 0.561 d 2 0.828
d 3 0.027 RELOAD d 3 0.294 d 3 0.561 d 3 0.828

..... ..... ..... .....


im = 0.027

im = 0.294

im = 0.828
d 14 0.027 d 14 0.294 d 14 0.828

im = 0.561
d 14 0.561
d 15 0.027 ptr_tempos d 15 0.294 d 15 0.561 d 15 0.828
d 14 0.027 d 14 0.294 d 14 0.561 d 14 0.828

..... ..... ..... .....

d 3 0.027 d 3 0.294 d 3 0.561 d 3 0.828


d 2 0.027 d 2 0.294 d 2 0.561 d 2 0.828
d 1 0.027 d 1 0.294 d 1 0.561 d 1 0.828
0199h FFFFh 0199h FFFFh 0199h FFFFh 0199h FFFFh
019Ah d 1 0.028 019Ah d 1 0.295 019Ah d 1 0.562 019Ah d 1 0.829
d 2 0.028 d 2 0.295 d 2 0.562 d 2 0.829
d 3 0.028 d 3 0.295 d 3 0.562 d 3 0.829

..... ..... ..... .....

d 14 0.028 d 14 0.295 d 14 0.829


im = 0.028

im = 0.295

im = 0.829
d 14 0.562
im = 0.562

d 15 0.028 d 15 0.295 d 15 0.562 d 15 0.829


d 14 0.028 d 14 0.295 d 14 0.562 d 14 0.829

..... ..... ..... .....

d 3 0.028 d 3 0.295 d 3 0.562 d 3 0.829


d 2 0.028 d 2 0.295 d 2 0.562 d 2 0.829
d 1 0.028 d 1 0.295 d 1 0.562 d 1 0.829
01D5h FFFFh 01D5h FFFFh 01D5h FFFFh 01D5h FFFFh

..... ..... ..... .....


..... ..... ..... .....
..... ..... ..... .....

3F86h d1 0.293 3F86h d1 0.560 3F86h d1 0.827 29AEh d1 1.000


d2 0.293 d2 0.560 d2 0.827 d2 1.000
d3 0.293 d3 0.560 d3 0.827 d3 1.000

..... ..... ..... .....

d 14 0.293 d 14 0.560 d 14 1.000


im = 1.000
im = 0.293

im = 0.560

d 14 0.827
im = 0.827

d 15 0.293 d 15 0.560 d 15 0.827 d 15 1.000


d 14 0.293 d 14 0.560 d 14 0.827 d 14 1.000

..... ..... ..... .....

d 3 0.293 d 3 0.560 d 3 0.827 d 3 1.000


d 2 0.293 d 2 0.560 d 2 0.827 d 2 1.000
d 1 0.293 d 1 0.560 d 1 0.827 d 1 1.000
3FC1h FFFFh 3FC1h FFFFh 3FC1h FFFFh 29E9h FFFFh
29EAh pof(0.027) page_offset
pof(0.028)
pof(0.029)
page offset

DPP0 -> aponta para o inicio de uma das páginas A, B, C ou D pof(0.030)


DPP0 = *página ( im )
.....

ptr_gates_RELOAD -> indica o offset page do inicio da tabela gates pof(0.997)


ptr_gates_RELOAD = 0 0 0 0 h pof(0.998)
pof(0.999)
3185h pof(1.000)
ptr_tempos_RELOAD -> indica o offset page do inicio da tabela tempos do actual im 3186h pag(0.027) página
ptr_tempos_RELOAD = *page_offset ( im ) pag(0.028)
pag(0.029)
page_offset -> vector para indicar o ptr_gates_RELOAD dos varios im pag(0.030)
página

página -> vector para indicar a página a ser utilizada para cada im .....

pag(0.997)
ptr_gates -> indica o offset page do estado dos interruptores no proximo estado do inversor
pag(0.998)
ptr_gates -> varia entre ptr_gates_RELOAD e ptr_gates_RELOAD+ 2 * 6 * 2 9
pag(0.999)
3921h pag(1.000)
ptr_tempos -> indica o offset page da duração do proximo estado do inversor
ptr_tempos -> varia entre ptr_tempos_RELOAD e ptr_tempos_RELOAD+ 2 * 2 9

Figura 4.17 - Organização das tabelas usadas na síntese do PWM.

1.5.2 Mudança de estado


A mudança de estado do inversor é realizada através de uma rotina (gera_pwm()) chamada
por interrupção. A interrupção é gerada pelo contador T6 sempre que o seu valor chega a zero
(T6INT).

68
Conversão de corrente contínua em alternada

Sempre que o contador T6 chega a zero, alem de gerar a interrupção, é recarregado


automaticamente por hardware com o valor guardado no registo T6RELOAD
(correspondente à duração do próximo estado), começando uma nova contagem decrescente.

A rotina gera_pwm() quando for chamada devido ao tempo do estado i-1 ter expirado, deve
efectuar a sobreposição de condução entre os estados i-1 e i, colocar o inversor no estado i e
actualizar o registo T6RELOAD com o tempo de duração do estado i+1. Deve ser reparado
que quando a rotina é chamada, já o T6 foi carregado com a duração do estado i que estava no
registo T6RELOAD.

O tempo do estado i que a rotina coloca em T6RELOAD, é corrigido através da soma de um


valor de correcção (CORRIGE_TEMPO) ao valor retirado da tabela de tempos (tmp) (ver
Secções 1.5.4.1 e 1.5.4.2).

No caso do valor de tmp ser zero (devido ao seu tempo calculado ser inferior ao mínimo
imposto) a rotina salta para o próximo estado e soma 2 vezes o valor de CORRIGE_TEMPO
ao novo tmp de forma a que a correcção global aos 174 estados de um período se mantenha
igual. Deve-se notar que a correcção do período do PWM vale
174*CORRIGE_TEMPO*200ns.

A sobreposição de condução é conseguida efectuando um “and” entre o estado dos


interruptores do estado i-1 e do estado i. É efectuado um “and” e não um “or” porque a lógica
de comando dos interruptores é negada.

Sequência de valores na tabela gates


Gates(x)= - - g3L g2L g1L g3H g2H g1H
Gates(1)= - - 1 0 1 1 0 1
Gates(2)= - - 1 1 0 1 0 1

Sequência de valores na porta P7 do yC


P7 -> 7 6 5 4 3 2 1 0
- - 1 0 1 1 0 1 <-> valor antes da rotina gera_pwm ser chamada
- - 1 0 0 1 0 1 <-> valor de sobreposição
- - 1 1 0 1 0 1 <-> valor depois da rotina acabar

Figura 4.18 - Esquema para realizar a sobreposição de condução.

Os apontadores para o início das tabelas gates e tempos são mudados pela rotina que muda o
índice de modulação. O valor de correcção do período é mudado pelas rotinas de
sincronização com a rede. Os apontadores actuais para as tabelas gates e tempos também são
mudados pelas rotinas que mudam o índice de modulação e que sincronizam com a rede.

A rotina foi escrita em assembly e foi optimizada de forma a correr no menor tempo possível.
Para o efeito todas as variáveis foram mantidas num banco de registos (pwm_regs) e acedidas
com o apontador DPP0 que é usado exclusivamente1 na síntese do PWM.

1
Deve-se ter muito cuidado em garantir, que as eventuais rotinas fornecidas por terceiros, não utilizem o
apontador DPP0.

69
Conversão de corrente contínua em alternada

Em regime normal, a rotina é executada em 7,10µs com uma sobreposição de condução de


1,95µs. Se a rotina encontrar um estado de duração nula, ou efectuar o reload1 da tabela de
tempos é executada em 7.85µs com uma sobreposição de 2,70µs. Se a rotina efectuar um
reload simultâneo às tabelas de tempos e gates é executada em 8,60µs com 2,70µs de
sobreposição.

1
O reload de tabela significa que o ultimo valor foi obtido, pelo que é necessário voltar ao
início da tabela.

70
Conversão de corrente contínua em alternada

T6INTerrupt

T6 = T6RELOAD

T6 está em contagem
decrescente e vai provocar gera_pwm
uma interrupção T6INT
quando chegar a zero

Porta_P7 = Porta_P7 and Proxima_gate ( passo 1 )

Proximo_tempo = [ ptr_tempos ]
ptr_tempos = ptr_tempos + 1

Proximo_tempo Estado eliminado


não = sim Avança para o
0 próximo

aux_correcção = corrige_tempo Proximo_tempo = [ ptr_tempos ]


ptr_tempos = ptr_tempos + 1
ptr_gates = ptr_gates + 1
aux_correcção = 2 * corrige_tempo

NOTAS:
Proximo_tempo
As tabelas de "tempos" não podem ter o = sim
primeiro valor igual a zero. FFFFh Reload da tabela de tempos

O tempo que decorre entre os passos 1 ptr_tempos = ptr_inicio_tempos


e 2, é o tempo de sobreposição de Proximo_tempo = [ ptr_tempos ]
condução ptr_tempos = ptr_tempos + 1
não

aaa = [ ptr ] -> significa que aaa recebe


o conteudo da memoria apontada por
ptr . N o p r o g r a m a r e a l , a s s u m e - s e q u e
Porta_P7 = Proxima_gate ( passo 2 )
DPP0 (data page pointer 0) está com o
valor correcto.

Proxima_gate = [ ptr_gates ]
ptr_gates = ptr_gates + 1

Proxima_gate
= sim
0 Reload da tabela de gates

ptr_gates = ptr_inicio_gates
Proxima_gate = [ ptr_gates ]
não
ptr_gates = ptr_gates + 1

T6RELOAD = Proximo_tempo + aux_correcção

FIM
gera_pwm

Figura 4.19 - Fluxograma usado na rotina gera_pwm(). Esta rotina é


executada por interrupção quando o contador T6 chega a zero.

71
Conversão de corrente contínua em alternada

A prioridade da interrupção T6INT deve ser a mais alta possível de forma a minimizar os
atrasos na mudança do estado do inversor. A única interrupção de nível superior é a do ADC
que fica a funcionar via PEC. As interrupções do µC nunca são desactivadas para minimizar a
latência da interrupção. Até agora não se utilizou um Sistema Operativo, mas no caso de se vir
a utilizar é necessário ter em atenção o seu efeito na latência desta interrupção, uma vez que
ao a inibir temporariamente pode estar a introduzir um conteúdo harmónico considerável.

1.5.3 Mudança de índice de modulação


A mudança do índice de modulação é efectuada pela rotina muda_im_pwm() e consiste em
colocar o apontador ptr_tempos_inicio para o início da tabela de tempos correspondente ao
índice de modulação indicado pela variável global G_pwm_im, e colocar o DPP0 a apontar
para a página correcta.

O apontador para a tabela de tempos (ptr_tempos) é mudado de forma a apontar para o


mesmo estado na sequência de PWM. EX: se o apontador indica a 5ª posição da tabela de
tempos para im=0.4, e o im pretendido agora é 0.9, o apontador deve indicar a 5ª posição da
tabela de tempos para im=0.9.

O apontador para o início da tabela de gates (ptr_gates_inicio) não precisa de ser mudado
porque as tabelas ocupam sempre a mesma posição nas 4 páginas ocupadas pelas tabelas de
PWM. O mesmo se passa para o apontador actual de gates (ptr_gates).

Para garantir a consistência dos apontadores no caso desta rotina ser interrompida pela
gera_pwm(), é necessário modifica-los numa sequência de operações indivisível. Como é
óbvio esta sequência deve ser executada o mais rapidamente possível para não afectar
grandemente a latência da interrupção que chama gera_pwm().

A página das tabelas (gates e tempos) dos índices de modulação é obtida a partir da tabela
página (Figura 4.17) e o offset da tabela gates é obtido a partir da tabela page_offset (Figura
4.17). A variável G_pwm_im (com valores entre 0 e 973 com incrementos de 1) indica a
posição do índice de modulação pretendido (respectivamente 1 e 0.027 com incrementos de
0.001).

A rotina é escrita em assembly e opera unicamente sobre os registos que guardam os valores
dos apontadores pwm_regs e sobre o DPP0.

72
Conversão de corrente contínua em alternada

muda_im_pwm

guarda o offset inicial do im


aux = ptr_inicio_tempos
anterior

pag = página( G_pwm_im ) obtem a pá gina e o offset do


off = page_offset( G_pwm_im ) novo im

Para se garantir a
consistência dos dados,
estas operações têm de ser
ptr_inicio_tempos = aux
realizadas sem serem
interrompidas. É necessário
ptr_tempos = ptr_tempos - aux + off
garantir a sua atomicidade. DPP0 = pag

FIM
gera_pwm

ptr_inicio_tempos 1 tabela de tempos do im anterior 1 tabela de tempos do im anterior


2 2
3 3
4 4
ptr_tempos 5 5
6 6

1 tabela de tempos do novo im ptr_inicio_tempos 1 tabela de tempos do novo im


2 2
3 3
4 4
5 ptr_tempos 5
6 6

apontadores antes da rotina ser executada apontadores depois da rotina ser executada

Figura 4.20 - Fluxograma usado para mudar o índice de modulação.

Desta forma, para se mudar o índice de modulação do inversor é necessário actualizar a


variável global G_pwm_im e executar a rotina muda_im_pwm().

1.5.4 Adaptação do PWM às variações de frequência da rede


eléctrica.
Deve ser notado que as tabelas são construídas para uma frequência fixa: a frequência da rede
eléctrica onde o sistema está ligado (neste caso 50Hz).

Num sistema onde se requeiram correntes de saída com frequência variável, multiplicam-se os
valores d1..d15 de forma a corrigir a frequência pretendida. Esta correcção dos tempos d1..d15
pode ser conseguida através da multiplicação valor a valor, ou através da variação do período
do contador que executa a contagem do tempo. De uma forma ou de outra, o µC escolhido não
é adequado para o efeito.

No caso de escolhermos a primeira opção, uma plataforma baseada em DSP seria a mais
aconselhável devido à facilidade e rapidez com que estes µP executam varias multiplicações.

No segundo caso é necessário um µC que possua um contador com possibilidade de ajuste


fino do seu período de contagem mantendo uma período aceitável para a resolução requerida.

73
Conversão de corrente contínua em alternada

O µC utilizado consegue criar um contador com período variável através da


concatenação/reload de dois contadores. No entanto a resolução do período de contagem seria
muito grande para a aplicação em causa (o contador deste µC utilizado nesta aplicação possui
um período de contagem de 200ns).

Repare-se que ao fazer variar os tempos d1..d15 desta forma, o que se está a fazer é variar a
frequência de comutação, uma vez que neste PWM a relação freq._corren._saída /
freq_comutação é constante (neste caso vale 1/45).

Para manter a frequência de comutação em valores aceitáveis seria necessário criar tabelas
para varias relações freq._corren._saída / freq_comutação. Desta forma as grandes variações
de frequência das correntes de saída são efectuadas através da selecção da tabela que contêm a
frequência pretendida (entre fxmax e fxmin na Figura 4.21). Os ajuste finos de frequência são
obtidos variando os tempos d1..dx .

Figura 4.21 - Esquema básico para obtenção de frequência variável com um


PWM tabelado.

Embora o sistema seja definido para funcionar a 50HZ, o problema é que no local onde o
sistema vai ser instalado, a frequência da rede eléctrica é caracterizada por grandes desvios de
frequência. Esta variação é grande para efeitos da rede eléctrica, mas é um pequeno desvio se
pensarmos num sistema a frequência variável.

1.5.4.1 Solução adoptada


A solução encontrada para satisfazer este requisito foi somar/subtrair um pequeno valor aos
tempos de duração de cada estado. Esta correcção faz variar a frequência das correntes na
saída à custa de um ligeiro aumento dos harmónicos.

Note-se que ao somar/subtrair um certo valor à duração de cada estado, o período da onda está
a ser aumentado/reduzido.

Esta correcção é realizada muito facilmente pelo µC uma vez que é executada através da soma
de dois registos do µC através da rotina que realiza a mudança de estado do inversor:
gera_pwm().

74
Conversão de corrente contínua em alternada

Como um período da corrente de saída é gerado através de 174 estados e a resolução do


contador é de 200ns, o período obtido e a respectiva frequência são dados por:

T = 20ms + n ∗ 174 ∗ 200ns


1 (4.13)
f =
20ms + n ∗ 174 ∗ 200ns

onde n representa o valor somado ao tempo de cada estado. Naturalmente, n é negativo para
valores de f superiores a 50HZ.

O µC para calcular n, utiliza o período medido da rede (Trede) da seguinte forma:

Trede − 20ms
n= (4.14)
174 ∗ 200ns

Como é óbvio o valor de n tem ser truncado para um inteiro.

Alguns valores de frequência obtida em função do valor de correcção são indicados na tabela
seguinte:

Tabela 4.3 - Valores de frequência obtida em função do valor de correcção.

1.5.4.2 Rotina calcula_correcao_periodo()


O período real da rede Trede é medido através do timer T1 com uma resolução de 400ns e
guardado na variável G_periodo. Desta forma o valor que ajusta o período do PWM ao
período real da rede (n) é dado pela seguinte equação (ver eq.4.14):

G _ periodo ∗ 400ns − 20ms


n= (4.15)
174 ∗ 200ns

G _ periodo − 50000
n= . ∗10 − 3 ∗ G _ periodo − 574.7
= 1149 (4.16)
87

Pela equação anterior verifica-se que é necessário realizar uma divisão (ou uma multiplicação
não inteira (float real)) para calcular o valor n . Como este valor é calculado a cada 20ms e
uma divisão (ou multiplicação float) no C167 demora bastante mais tempo do que uma

75
Conversão de corrente contínua em alternada

multiplicação simples de dois inteiros (words), aproveita-se o sistema de multiplicações


inteiras do C167 para calcular n com uma única multiplicação inteira.

 2 16 
 
G _ periodo − 50000  87  50000
n= = 16 G _ periodo − (4.17)
87 2 87

753 ∗ G _ periodo
n≅ − 574 (4.18)
2 16

A multiplicação por 753 é realizada segundo o esquema no Anexo B.


2 16

O valor de n é guardado no registo R1 do conjunto de registos sync1_regs (variável


n_correcao_periodo).

1.5.5 Sincronismo com a rede e controlo da fase.


Sempre que a tensão da fase R da rede eléctrica passa por zero no sentido ascendente, surge
uma interrupção: passagem_zero_rede().

O timer T1 mede o intervalo de tempo que decorre entre duas interrupções consecutivas.
Naturalmente este tempo indica o período da rede eléctrica (Trede).

O valor de Trede também é utilizado para calcular o valor (n), que deve ser somado à duração
de cada estado do inversor, pela rotina que implementa a mudança de estado: gera_pwm. O
valor n é calculado pela rotina calcula_correcao_periodo().

Sempre que a medida do período da rede saí fora de um limite inferior ou superior
(respectivamente 19ms e 21ms), é gerado um sinal de erro através da flag
G_flag_erro_zero_rede, e a variável que indica o número de erros ocorridos é incrementada:
G_erro_zero_rede. Este controlo do período medido, evita erros de sincronização provocados
por interrupções intempestivas devidas a ruído.

O timer T1 é um contador de 16 bits com uma resolução de 400ns. Isto significa que T1 pode
medir intervalos de tempo até 26.3ms. Se ao fim de 26.3ms não surgir uma interrupção de
passagem por zero da rede, o timer T1 fica em overflow e provoca uma interrupção:
passagem_zero_rede_falhada(). Esta interrupção sinaliza o erro através da flag
G_flag_erro_zero_rede e da variável G_erro_zero_rede.

Devido à filtragem que é realizada no circuito que detecta a passagem por zero da rede, a
interrupção é gerada com um determinado atraso em relação à verdadeira passagem por zero.
A filtragem é necessária para evitar falsas detecções de passagem por zero.

76
Conversão de corrente contínua em alternada

Fase R da tensão da rede

Trede

atraso
tempo

passagem_zero_rede()

Figura 4.22 - Atraso nas interrupções da detecção de passagem por zero da


tensão da rede provocadas pela filtragem.

A compensação deste atraso é feita através da calibração do controlo da fase das correntes de
saída do inversor. EX: para um esfasamento nulo, o tempo tfase (Figura 4.23) vale tcal.

O controlo da fase é conseguido através do temporizador T3 que impõe o tempo que decorre
desde o surgimento da interrupção de passagem por zero da rede até à passagem por zero do
inversor. A passagem por zero do inversor num determinado instante significa que a
passagem do ultimo estado (174) para o primeiro se dá nesse instante.

passagem_zero_rede() passagem_zero_rede()
Fase R da tensão da

t cal
rede

T3 T3

t fase t fase
Fase R da corrente do

estado 174 estado 174


inversor

estado 1
estado 1

acerta_fase_pwm() acerta_fase_pwm()

Figura 4.23 - Controlo do esfasamento entre a tensão da rede e a corrente


gerada pelo inversor.

Durante a interrupção passagem_zero_rede() o timer T3 é carregado com o valor tfase (Figura


4.23) e posto em contagem decrescente. Quando T3 atingir o valor zero, surge uma
interrupção (acerta_fase_pwm()) que é responsável por garantir que a passagem por zero do
inversor se dá neste instante.

77
Conversão de corrente contínua em alternada

O valor tfase é calculado pela rotina calcula_tempo_fase() e guardado na variável G_pwm_fase


conforme é exposto na Secção 1.5.5.1.

Como o período da rede pode sofrer ligeiras oscilações (Trede), o valor tfase tem de ser
ajustado para o valor actual de Trede. Note-se que G_pwm_fase é calculado para um período
de rede de 20ms. Este ajuste é realizado pela rotina calcula_tempo_fase_atribui_T3(), que
coloca o resultado do ajuste directamente no timer T3.

O timer T3 é posto em contagem decrescente pela interrupção passagem_zero_rede() através


do bit de controlo T3R (T3R=1) e é parado pela interrupção acerta_fase_pwm() fazendo
T3R=0.

Desta forma, quando a interrupção passagem_zero_rede surgir, o bit T3R deve valer zero,
significando que a interrupção acerta_fase_pwm() já foi atendida. Se tal não acontecer,
significa que houve duas detecções de passagem por zero da tensão da rede consecutivas, sem
que a interrupção acerta_fase_pwm() fosse atendida. Normalmente isto significa que o valor
de tfase é maior que o período da rede.

Se tal acontecer, significa que existem problemas na sincronização. O facto é sinalizado


através da flag G_flag_erro_pwm_fase, e a variável que indica o número de erros ocorridos é
incrementada: G_erro_pwm_fase.

Como é óbvio a sincronização só é efectuada se não houver erros devido ao período da rede
estar fora de limites ou devido ao valor tfase . É melhor não sincronizar o PWM do que
sincronizá-lo com base em valores errados. A decisão de parar o sistema em caso de erro
(sinalizado através das flags G_flag_erro_zero_rede e/ou G_flag_erro_pwm_fase) é tomada
por outras rotinas que estão numa posição hierarquicamente superior na estrutura do
controlador.

O fluxograma da interrupção passagem_zero_rede() é indicado na Figura 4.24.

78
Conversão de corrente contínua em alternada

interrupção externa
CC0INT
P2.0

passagem_zero_rede

obtem o valor do contador


G_periodo = T1 e prepara-o para a próxima
T1=0 medida

G_periodo > MINIMO Verifica se o período


não e medido está dentro
G_periodo < MAXIMO dos limites

sim

Verifica se o timer T3 já está


parado.
Se não estiver, significa que a
sim T3R = 1 interrupção que sincroniza o PWM
( acerta_fase_pwm() ) ainda não foi
executada.

G_flag_erro_pwm_fase = 1 não
incrementa G_erro_zero_pwm_fase

Obtem o valor que é necessário somar á


G_flag_erro_rede = 1 calcula_correcao_periodo duração de cada estado de forma a ajustar o
incrementa G_erro_zero_rede período do PWM ao período real da rede

Coloca no timer T3 o valor necessário


para a fase pretendida. O valor é
calcula_tempo_fase_atribui_T3 ajustado em função do período real da
rede.

Coloca o timer T3 a funcionar


Quando o timer T3 chegar a zero, provoca a
T3R=1 interrupção acerta_fase_pwm() que obriga o PWM a
passar por zero nesse instante.

FIM
passagem_zero_rede

Figura 4.24 - Fluxograma da interrupção passagem_zero_rede().

1.5.5.1 Rotina muda_fase_pwm(fase)


Esta rotina é utilizada para calcular o intervalo de tempo entre o surgimento da interrupção de
passagem por zero (passagem_zero_rede()) e a passagem por zero do PWM
(acerta_fase_pwm()). Quando a rotina passagem_zero_rede() é chamada, carrega o timer T3
com um determinado valor correspondente à fase pretendida. Quando o timer T3 chega a zero,
chama a rotina acerta_fase_pwm() que se encarrega de garantir que o PWM passa por zero
nesse instante.

O intervalo de tempo é controlado pelo timer T3 com uma resolução de 400ns.

79
Conversão de corrente contínua em alternada

T3 = 50000

0º 90º 180º 270º 360º

T3 = 12500

T3 = 25000

T3 = 139∗ θ

T3 = 37500

Figura 4.25 - Correspondência entre o valor de T3 e a fase.

O valor de T3 correspondente a 360º é dado por:

20ms
T3360 = = 50000 (4.19)
400ns

O valor de T3 correspondente a θº é dado por:

θ
T3θ = 50000∗ ≅ 139∗ θ (4.20)
360

Este valor tem de ser compensado devido ao atraso que o filtro introduz na interrupção. O
valor que provoca um esfasamento nulo (tcal) tem de ser determinado experimentalmente.
Naturalmente, o atraso do filtro é dado por atraso = 50000- tcal .

passagem_zero_rede()
T3 = 50000
θ1
T 3 = 1 3 9 ∗ θ 1 + t cal
T 3 = t cal

atraso atraso

T 3 = 1 3 9 ∗ θ 2 - atraso

T 3 = 1 3 9∗ θ 2 θ2 T 3 = 1 3 9∗ θ1

Figura 4.26 - Compensação devido ao atraso provocado pelo filtro no circuito


de detecção de passagem por zero da rede.

Desta forma, o valor real de T3 a que corresponde uma determinada fase é dado por:

aux = 139∗ θ
aux − atraso se aux ≥ atraso (4.21)
T3θ = 
aux + t cal se aux < atraso

80
Conversão de corrente contínua em alternada

A rotina recebe como parâmetro a fase pretendida (-360..360) e coloca o tempo


correspondente na variável G_pwm_fase . O fluxograma da função é ilustrado na Figura 4.27.
Naturalmente, a função só é chamada quando se pretende mudar o esfasamento.

Função para mudar o esfasamento entre a


corrente de saída do inversor e a tensão
da rede
fase = -360 .. 360 ; inteiro

muda_fase( fase )

fase < 0 sim

fase = fase + 360

aux = fase * 139 139 = 20ms / 400ns / 360

Os valores 'atraso' e 'tcal' são determinados


experimentalmente.
não aux > atraso sim tcal + atraso = 50000

G_pwm_fase = aux + tcal G_pwm_fase = aux - atraso

O resultado é guardado na variável global


G_pwm_atraso
FIM
muda_fase( fase )

Figura 4.27 - Fluxograma da rotina muda_fase_pwm(fase).

1.5.5.2 Rotina calcula_tempo_fase_atribui_T3()


O tempo correspondente a uma determinada fase (obtido pela rotina muda_fase_pwm(fase) e
guardado em G_pwm_fase) é calculado para um período de 20ms. Embora o período real da
rede não se afaste muito deste valor, o desvio é suficiente para variar a fase correspondente ao
valor de tempo guardado em G_pwm_fase .

A rotina calcula_tempo_fase_atribui_T3() é chamada pela rotina passagem_zero_rede() a


cada período da rede eléctrica e tem como objectivo ajustar o valor de G_pwm_fase
(correspondente a uma dada fase) em função do período real da rede indicado em G_periodo
(medido a cada período da rede).

A seguir deduz-se a relação entre G_pwm_fase e o valor correcto n, em função do período real
da rede G_periodo :

20ms θ
G _ pwm_ fase =
400ns 360 o
TREAL θ G _ periodo∗400ns θ
n= o =
400ns 360 400ns 360 o

81
Conversão de corrente contínua em alternada

G _ pwm_ fase∗ G _ periodo


n= (4.22)
50000

Para evitar a divisão por 50000 ou a multiplicação real por 2 E - 5 é utilizado o estratagema
indicado no Anexo B.

  G _ pwm_ fase∗ G _ periodo  


  ∗42951
G _ pwm_ fase∗ G _ periodo   2 16
 
n= ≅ 16 ∗2 (4.23)
50000 2

A rotina é escrita em assembly e o valor n é guardado directamente no timer T3.

1.5.5.3 Rotina acerta_fase_pwm()


Esta rotina é responsável por manter a passagem por zero da corrente de saída do inversor
(passagem do ultimo estado do inversor (174) para o primeiro) no instante em que é chamada.
Deste modo não será um exagero afirmar que esta rotina é o coração do sistema de
sincronização com a rede.

A sincronização é feita de dois modos distintos:

• Sincronização suave;

• Sincronização abrupta.

A escolha entre os dois tipos de sincronização é feita com base no nível de “dessincronização”
entre a passagem por zero das correntes de saída do inversor (PWM) e a passagem por zero
pretendida (instante em que a rotina acerta_fase_pwm() é chamada).

Sempre que a dessincronização é superior a um determinado intervalo de tempo, é realizada


uma sincronização abrupta. Naturalmente no caso contrário é realizada uma sincronização
suave.

A quantificação do nível de dessincronização é feita com base nos estados do inversor. Na


Figura 4.28 é ilustrado o princípio da quantificação.

82
Conversão de corrente contínua em alternada

nº do estado do inversor

... 173 174 1 2 ............. 86 87 88 89 ............. 173 174 1 2 .........

fase R da corrente de saída do inversor

PWM sincrono
169 170 171 172 173 174 1 2 3 4 5 6

chamada de
acerta_fase_pwm()

PWM adiantado PWM adiantado


requer sincronização suave requer sincronização abrupta
169 170 171 172 173 174 1 2 3 4 5 6 169 170 171 172 173 174 1 2 3 4 5 6

PWM atrasado PWM atrasado


requer sincronização suave requer sincronização abrupta
169 170 171 172 173 174 1 2 3 4 5 6 169 170 171 172 173 174 1 2 3 4 5 6

Figura 4.28 - Quantificação do nível de dessincronização do PWM.

Desta forma, sempre que a dessincronização do PWM excede 3 estados é realizada uma
sincronização abrupta. Os 3 estados correspondem a um intervalo de tempo de
aproximadamente 200µs (angulo de 3.5º).

Uma sincronização suave é feita através de uma ligeira modificação do período do PWM. Esta
modificação do período, permite que o ponto de passagem por zero do PWM, deslize face ao
ponto de passagem por zero da rede. Se o PWM estiver adiantado, o seu período deve ser
aumentado de modo a que a sua passagem por zero deslize em direcção ao instante em que a
rotina acerta_fase_pwm() é chamada. Naturalmente, se o PWM estiver atrasado é necessário
diminuir ligeiramente o seu período.

A modificação do período do PWM não pode ser muito grande sobe pena de levar à
instabilidade no controlo. Se o nível de dessincronização for muito elevado (maior que 3
estados) o tempo de sincronização será grande. Desta forma é necessário ter um método de
sincronização mais rápido: a sincronização abrupta.

Uma sincronização abrupta consiste em obrigar a que o próximo estado do inversor seja o
primeiro, independentemente do seu estado actual.

Para a rotina acerta_fase_pwm() decidir como deve sincronizar o PWM, tem de identificar o
estado em que o PWM se encontra. Os 174 estados são agrupados em três grupos:

• PWM adiantado (estados 72,173 e 174);

• PWM atrasado (estados 1, 2 e 3);

• PWM dessincronizado (estados 4 a 171);

83
Conversão de corrente contínua em alternada

Os três grupos são identificados por dois bits que são agregados ao estado das gates do estado
do inversor. Desta forma, a tabela de gates alem de conter a informação sobre os IGBTs que
estão a conduzir, também identifica qual o grupo a que o estado actual pertence. Deve ser
notado que esta informação só tem validade quando a rotina acerta_fase_pwm() é chamada,
uma vez que as noções de adiantado, atrasado e dessincronizado só fazem sentido nessa
altura.

Os dois bits que identificam os três grupos são transferidos juntamente com os seis bits que
controlam os IGBTs para a porta P7 do C167. Como é óbvio, estas portas não podem ser
utilizadas como entradas/saídas para outra função.

Desta forma a rotina acerta_fase_pwm() apenas precisa de ler os bits nº6 e 7 da porta P7 para
identificar a que grupo pertence o estado actual.

tabela de gates
7 6 5 4 3 2 1 0 bit
estado grupo g1H g2H g3H g1L g2L g3L Porta P7
adiantado

1 1 0 0 1 0 0 1 0
grupo g1H g2H g3H g1L g2L g3L
2 1 0 0 0 1 0 1 0
P7.7 P7.6 P7.5 P7.4 P7.3 P7.2 P7.1 P7.0
3 1 0 0 1 0 0 1 0
4 0 0 1 0 0 0 1 0
5 0 0 0 1 0 0 1 0
dessincronizado

6 0 0 0 0 1 0 1 0

169 0 0 0 0 1 0 1 0
170 0 0 0 0 1 0 0 1
171 0 0 0 0 1 1 0 0
172 0 1 0 0 1 0 0 1
atrasado

173 0 1 0 0 1 0 1 0
174 0 1 0 0 1 0 0 1

Figura 4.29 - Identificação do grupo do estado actual do PWM.

A variação do período do PWM para a sincronização é feita de modo semelhante ao ajuste do


período do PWM ao período da rede eléctrica (secção 1.5.4.1). Ou seja, através da
soma/subtracção de um tempo à duração de cada estado.

Desta forma a variável que indica o tempo total de correcção do período do PWM
(CORRIGE_TEMPO, secção 1.5.2) é composta por duas componentes:

• Ajuste do período do PWM ao período da rede eléctrica


(n_correcao_periodo);

• Ajuste do período do PWM para sincronização suave (n_sincr_periodo).

A componente n_sincr_periodo é limitada a ± 2 para que o sistema não se torne instável.


Com 174 estados e uma resolução no contador de 200ns, isto significa uma variação no
período de ± 174∗2∗200ns = 69.6 ys .

O valor ± 2 foi determinado experimentalmente. Com a variável n_sincr_periodo limitada


± 2, a sincronizações abruptas são quase inexistentes, surgindo apenas quando existem
variações bruscas da frequência, o que naturalmente, raramente acontece na rede eléctrica.

84
Conversão de corrente contínua em alternada

O fluxograma da rotina acerta_fase_pwm() é ilustrado na Figura 4.30. A paragem do timer T3


é necessária para evitar que a rotina fosse chamada consecutivamente por overflow do timer
T3 no caso de não haver detecções de passagem por zero da rede. O bit T3R também é
utilizado pela rotina passagem_zero_rede() para determinar se a rotina acerta_fase_pwm() já
foi atendida.

T3INTerrupt T3 gera a interrupção quando


decorrer o tempo pretendido entre
a passagem por zero da rede e
paasagem por zero do PWM
acerta_fase_pwm

T3R = 0 Pára o timer T3

Está dessincronizado.
Requer uma sincronização abrupta
grupo = 0 0 sim

não coloca_PWM_origem

Está adiantado.
grupo = 1 0 sim n_sincr_periodo = 0
Aumenta período

não G_erro_pwm_sync_bruta =
G_erro_pwm_sync_bruta + 1
n_sincr_periodo =
Está atrasado. n_sincr_periodo + 1 G_flag_pwm_sync_bruta = 1
grupo = 0 1 sim

Diminui período Incrementa a variável


que indica o numero
n_sincr_periodo de sincronizações
sim
abruptas e sinaliza a
>2 ocorrencia com a flag.
n_sincr_periodo =
n_sincr_periodo - 1 não n_sincr_periodo = 2

não n_sincr_periodo sim


< -2

não n_sincr_periodo = -2

CORRIGE_TEMPO = n_correcao_periodo + n_sincr_periodo

FIM
acerta_fase_pwm

Figura 4.30 - Fluxograma da rotina acerta_fase_pwm().

No caso do PWM estar dessincronizado, é realizada uma sincronização abrupta: a variável


n_sincr_periodo é colocada a zero e a rotina coloca_PWM_origem() é chamada. A rotina
coloca_PWM_origem() consiste em colocar os apontadores actuais para as tabelas de gates e
tempos de modo a que o próximo estado seja o primeiro. Para que a mudança se faça o mais

85
Conversão de corrente contínua em alternada

rapidamente possível, o temporizador que mede a duração dos estados (T6), é colocado a zero,
de modo a gerar a interrupção neste instante.

Como é óbvio, uma sincronização abrupta é bastante violenta para o conteúdo harmónico das
correntes de saída do inversor. Felizmente este tipo de sincronização só surge quando existem
variações muito rápidas da frequência da rede eléctrica.

1.5.5.4 Inicialização, arranque e paragem do inversor


A inicialização das rotinas e variáveis que comandam o inversor é efectuada pela rotina
inicializa_inversor(), que se encarrega de preparar as portas do µC, os timers, as interrupções,
etc. O timer T6 só é posto em funcionamento no arranque (não existem mudanças de estado,
pelo que os seis IGBTs continuam desligados).

O arranque do inversor é feito pela rotina arranca_inversor(). O arranque é efectuado com o


índice de modulação máximo, e um esfasamento nulo. O arranque é feito sincronamente com
a rede da seguinte maneira:

• A interrupção de passagem por zero é permitida e o timer T1 que mede o


período da rede é ligado;

• Quando a interrupção surgir o timer T3 é carregado com o valor correspondente


a um esfasamento nulo;

• Quando o timer T3 chegar a zero, permite o funcionamento do timer T6 que


controla a duração dos estados de PWM. (Nesta altura os apontadores das
tabelas de PWM apontam para a passagem por zero de PWM)

A paragem do inversor é realizada pela rotina paragem_inversor() que inibe a interrupção de


passagem por zero da rede eléctrica, pára os timers T1, T3 e T6, e desliga os seis IGBTs.

É preciso cuidado ao desligar o inversor devido à corrente IDC na bobina de alisamento. Antes
de desligar o inversor é necessário ligar o IGBT de protecção.

1.5.5.5 Comando do IGBT da protecção DC


O comando do IGBT de protecção é realizado por três rotinas cuja função é óbvia:

• inicializa_protecao_dc();

• activa_igbt_protecao();

• desliga_igbt_protecao();

Deve ser notado que o IGBT de protecção também pode ser activado directamente pela
detecção de sobretensão e pelo sinal de erro do inversor.

86
Conversão de corrente contínua em alternada

1.6 Características do PWM


Nas análises seguintes assumem-se as seguintes condições:

• A saída do inversor está ligada a uma fonte de tensão trifásica e perfeitamente sinusoidal.
Isto quer dizer que se desprezam os efeitos do filtro AC, das impedâncias da rede e dos
eventuais harmónicos da rede.

• O inversor é alimentado por uma fonte ideal de corrente contínua. Isto quer dizer que a
corrente de entrada é perfeitamente constante.

• A frequência de comutação do inversor é de 50 (6*m+3; m=7) vezes a frequência das


correntes de referência. Como as correntes de referência tem 50Hz, as portadoras tem
2250Hz.

• As comutações da corrente são ideais:

° As comutações dão-se em tempo nulo.

° Não existe sobreposição de condução.

• Não existem tempos mínimos de condução e/ou de corte. Isto quer dizer que o tempo de
condução ou de corte de um dado interruptor pode ser tão pequeno quanto o PWM o exija.

Estas assumpções são válidas numa primeira abordagem e servem para estudar as
características do PWM se os componentes que constituem o inversor forem ideais.

1.6.1 Harmónicos da corrente de saída


As figuras 4.31 a 4.33 mostram o espectro típico das correntes na saída do inversor.

O espectro relativo é obtido através de:

 I ( n) 
harm(n) = 20 * log  ( DB) (4.24)
 I (1) 

onde harm(n) é o valor do espectro relativo do harmónico n, I(n) é o harmónico número n e


I(1) é a componente fundamental. Naturalmente o valor do espectro relativo da componente
fundamental é sempre zero. Esta forma de representar logaritmicamente o espectro torna mais
simples a ánalise do “peso” das componentes harmónicas face à componente fundamental na
forma de onda analisada. A representação gráfica logarítmica tem a vantagem de poder
representar no mesmo gráfico, valores muito diferentes entre si, sendo possível analisar a sua
relação.

Repare-se que a relação entre os harmónicos e a componente fundamental é dada por:

 harm(n) 
 
= 10 20 
I ( n)
(4.25)
I (1)

o que significa que se harm(n)=-20, o harmónico I(n) é 10 vezes mais pequeno que I(1).

87
Conversão de corrente contínua em alternada

im = 1

im = 0.5

im = 0.5

Figura 4.31 - Espectro das correntes de saída do inversor para vários índices
de modulação.

88
Conversão de corrente contínua em alternada

im = 1

im = 0.5

im = 0.1

Figura 4.32 - Espectro relativo das correntes de saída do inversor para vários
índices de modulação.

89
Conversão de corrente contínua em alternada

im = 1

im = 0.5

im = 0.1

Figura 4.33 - Espectro relativo das correntes de saída do inversor para vários
índices de modulação (zoom das fig:.4.32 )

Analisando os gráficos verifica-se que espectro apenas possui as componentes número: 6i - 1


e 6i + 1. Isto é: não possui harmónicos pares nem os múltiplos de 3.

Os 5º, 9º e 11º são sempre inferiores a -50db ( 300 vezes mais pequenos que a fundamental)

90
Conversão de corrente contínua em alternada

O espectro possui componentes significativas em torno das frequências múltiplas da


frequência das portadoras P1 e P2 (fP) Esta frequência corresponde ao harmónico número nfP
= 6m+3 conforme a equação (4.4). No caso em ánalise m=7 sendo nfP = 45.

Em torno de nfP as componentes mais significativas são as de ordem nfp ± 2 e nfp ± 4 .

Em torno de 2.nfP as componentes mais significativas são as de ordem 2.nfp ± 1 , 2.nfp ± 5 e


2.nfp ± 7 .

Figura 4.34 - Evolução da componente fundamental e dos harmónicos


nfp ± 2 e nfp ± 4 com o índice de modulação.

Da figura 4.34 conclui-se que a componente fundamental da corrente de saída varia


linearmente com índice de modulação (im). Os harmónicos nfp + 2 e nfp − 2 são iguais, o
mesmo se passando com os harmónicos nfp + 4 e nfp − 4 .

1
I saida RMS fundamental = .I DC .im (4.26)
2

Figura 4.35 - Evolução dos harmónicos 2.nfp ± 1 , 2.nfp ± 5 e


2.nfp ± 7 .com o índice de modulação

91
Conversão de corrente contínua em alternada

Figura 4.36 - Evolução dos harmónicos relativos (DB) do 13º até ao 49.

Figura 4.37 - Evolução dos harmónicos relativos (DB) do 53º até ao 67.

Figura 4.38 - Evolução dos harmónicos relativos (DB) do 71º até ao 97.

92
Conversão de corrente contínua em alternada

As componentes entre a fundamental e nfp - 2 são desprezáveis: inferiores a -30db. ( 30


vezes mais pequenos que a fundamental)

A corrente de saída do inversor só depende do índice de modulação. O seu esfasamento


relativamente à tensão de carga só influencia a tensão à entrada como se verá na próxima
secção.

1.6.2 Tensão à entrada

Tensão de carga:
IDC VR = 1
3
Vc pico .sin(2 π. f r .t )
VS = 1
3
Vc pico .sin(2 π. f .r .t − 13 2 π )
g1L g2L g1L
VR VT = 1
3
Vc pico .sin(2 π. f .r .t − 23 2 π)
IRs
VS
Tensão à entrada:
ISs Vdc
VDC VT
ITs
g1L g2L g1L

Figura 4.39 - Esquema utilizado para analisar a tensão à entrada do inversor

A partir daqui, Vdc(t) representa a forma de onda da tensão à entrada do inversor e VDC o seu
valor médio .

As figuras seguintes mostram a forma de onda da tensão Vdc(t) para vários im e vários
esfasamentos (θ) entre a corrente de saída e a tensão de carga. (O esfasamento é dado tomando
como referência a fase R da tensão de carga: Vr).

Para melhor visualização dos impulsos de Vdc(t) nos gráficos, optou-se por fazer a frequência
das portadoras igual a 21 vezes a frequência de referência (m=3 na eq.4.4).

A tensão Vdc(t) é dada pela seguinte expressão em função do comando dos interruptores e da
tensão de carga:

Vdc (t ) = ( g1h − g1l ).VR + ( g 2h − g 2l ).VS + ( g 3h − g 3l ).VT (4.27)

93
Conversão de corrente contínua em alternada

Figura 4.40 - Forma de onda da tensão Vdc em função da tensão da rede e


das correntes do inversor

94
Conversão de corrente contínua em alternada

Figura 4.41 - Comparação da tensão gerada à entrada do inversor para vários


índices de modulação e esfasamentos.

Pelas figuras anteriores, verifica-se que Vdc(t) se repete a cada 1/6 de período das tensões de
carga.

O espectro de Vdc(t) é mostrado nas figuras seguintes. Apenas possui componentes de ordem
par 6i. As componentes mais significativas encontram-se em torno da frequência das
portadoras em nfp ± 3 , 2.nfp ± 6 e 2.nfp . O espectro é analisado com frequência das
portadoras (P1 e P2) correcta (m=7 na eq.4.4).

Como é óbvio, o espectro relativo de Vdc(t) está referido à componente contínua do sinal.

95
Conversão de corrente contínua em alternada

im=1

DB

im=0.5

DB

im=0.1

DB

Figura 4.42 - Espectro e espectro relativo da tensão à entrada do inversor para


fase=0o e vários índices de modulação.

As próximas figuras representam a evolução da componente contínua e dos harmónicos mais


significativos de Vdc(t) em função do índice de modulação e do esfasamento entre a corrente
de saída e a tensão de carga.

0 (fundamental)

90

42=48

84=96

Numero harmonico

Figura 4.43 - Evolução da componente contínua e dos principais harmónicos


da tensão à entrada do inversor em função do índice de modulação para um
esfasamento nulo.

96
Conversão de corrente contínua em alternada

im=1
im=0.75
im=0.5
im=0.25

Fase

Figura 4.44 - Evolução da componente contínua da tensão à entrada do


inversor em função do esfasamento para vários índices de modulação.

Das figuras anteriores conclui-se que a componente contínua da tensão gerada à entrada do
inversor é dada pela seguinte equação:

VDC = 15
. im cos(θ) Vs pico
VDC = 15
. 2 im cos(θ) Vs (4.28)
15
. 2
VDC = im cos(θ) Vc = 3
2 im cos(θ) Vc
3

onde im representa o índice de modulação, θ o esfasamento entre a corrente de saída e a


tensão de carga e Vs pico, Vs e Vc representam respectivamente as tensões de carga: simples de
pico, simples e composta.

1.6.3 Tensões aos terminais dos interruptores


Como se vê na figura seguinte, os dispositivos que formam o inversor, tem de possuir
capacidade para suportar tensões inversas. Para maior clareza optou-se por fazer a frequência
das portadoras igual a 21 vezes a frequência de referência (m=3 na eq.4.4).

97
Conversão de corrente contínua em alternada

Figura 4.45 - Forma de onda da tensão aos terminais dos interruptores do


inversor.

1.7 Características do PWM implementado


A implementação do PWM no µC requer que se imponham algumas limitações ao tempo de
duração de cada estado de PWM:

• A duração tem de ser um número inteiro da resolução do contador:


t = n*400ns.
• A duração de um estado não pode ser inferior a um determinado tempo imposto
pela rotina que muda o estado e pela velocidade de comutação dos IGBTs
(10µs).

A limitação dos tempos dos estados a um número inteiro da resolução do contador usado para
a contagem do tempo, leva a uma não linearidade de VDC em função do im. Esta não
linearidade aumenta à medida que a resolução dos im aumenta (maior número de índices de

98
Conversão de corrente contínua em alternada

modulação). Alias, esta é a razão pela qual não se aumenta o número de im (não faz sentido
utilizar um grande número de im se depois a tensão obtida para o im(i) é igual a tensão para o
im(i-1) e im(i+1)).

A introdução de tempos mínimos de condução e de corte provoca um comportamento


diferente nas características do PWM. Como é óbvio estas diferentes só existem nos índices
de modulação que são afectados por essa limitação inferior nos tempos.

As diferenças mais significativas provocadas pela limitação temporal inferior são a introdução
de componentes harmónicas que eram desprezáveis no caso do PWM ideal e o agravamento
da não linearidade de VDC em função do im.

Figura 4.46 - Evolução dos harmónicos de corrente em função do índice de


modulação.

99
Conversão de corrente contínua em alternada

har: 23..49 har: 53..67

har: 71..97

Figura 4.47 - Evolução dos harmónicos relativos de corrente em função do


índice de modulação.

2 Trânsito de energia activa e reactiva


Tal como o conteúdo harmónico injectado na rede, o consumo de energia reactiva é um facto
que deve ser evitado a tudo custo. O seu trânsito na rede acarreta maiores perdas de energia,
sobredimensionamento dos dispositivos devido à corrente ser mais elevada para a mesma
potência activa, flutuações na tensão da rede, etc.

Em certas condições, o inversor de corrente pode compensar o consumo de energia reactiva de


um sistema, através da produção de uma quantidade de energia reactiva igual à consumida
pelo sistema.

100
Conversão de corrente contínua em alternada

Desta forma, nos sistemas onde é necessário um inversor de corrente, evita-se o uso das
tradicionais baterias de condensadores para compensar o factor de potência,.

Deve ser notado, que mesmo que o inversor de corrente não seja requerido pelo sistema, é
uma opção a ter em consideração quando se pretende um compensador dinâmico do factor de
potência. Isto é particularmente interessante quando o consumo de reactiva varia fortemente
ao longo do tempo.

A possibilidade do inversor produzir energia activa e reactiva de forma independente, depende


da fonte de corrente que o alimenta.

Se a corrente que alimenta o inversor for independente do seu funcionamento (Ex: Se a fonte
de corrente for ideal, ou num caso mais realista, se for uma fonte de tensão variável em série
com uma bobina) as energias activa e reactiva são independentes.

Se o inversor tiver de controlar a sua corrente de entrada, a quantidade de energia reactiva que
é possível produzir, passa a estar dependente da energia activa.

Nas Secções 1.6.1 e 1.6.2 concluiu-se que:

1
I REDE = .I DC .im (4.29)
2

VDC = 3
2 .VC .im.cos(θ) (4.30)

onde:

I REDE é o valor eficaz da corrente injectada na rede,


VC o valor eficaz da tensão composta da rede,
I DC o valor da corrente à entrada do inversor,
VDC o valor tensão gerada pelo inversor à entrada,
im o índice de modulação e
θ o esfasamento entre a corrente e a corrente e a tensão da rede.

A potência activa entregue à rede é dada por:

P = VDC .I DC
= 3.I REDE . VC .im.cos(θ) (4.31)
= 3
2 .I DC .VC .im.cos(θ)

e a reactiva:

Q = 3
2 .I DC .VC .im.sen(θ)
(4.32)
= P.tan(θ)

101
Conversão de corrente contínua em alternada

A potência aparente (S) depende apenas da corrente I DC (a tensão da rede é fixa) e do índice
de modulação:

S= 3
2 .I DC .VC .im (4.33)

2.1 Corrente IDC independente do inversor


Se o inversor for alimentado por uma fonte que imponha a corrente no barramento DC (IDC)
independentemente da tensão gerada pelo inversor (VDC), o inversor consegue entregar uma
potência reactiva independentemente da potência activa.

IREDE L IDC IREDE

Inversor VC Inversor VC
I dc V DC de Vf DC V DC de
corrente corrente

P P,Q P P,Q

Figura 4.48 - Alimentação do inversor com uma corrente independente.

A determinação dos parâmetros de comando do inversor é muito simples:

A partir da relação entre as potências activa (P) e reactiva (Q) determina-se o


esfasamento:

 Q
θ = arct  
 P

e a partir de P ou Q (um que não seja zero) determina-se o índice de modulação:

Q P
im = = .
3
2 .I DC .VC .sen(θ) 3
2 .I DC .VC .cos(θ)

Este conjunto é uma opção para realizar a compensação do factor de potência de forma
dinâmica. Se a potência activa for zero, a potência reactiva consumida ou gerada (consoante
θ = 90º ou θ = 270º ) é dada por:

Q= 3
2 .I DC .VC .im (4.34)

A máxima potência reactiva que é possível gerar ou consumir é unicamente dependente da


corrente IDC imposta pela fonte de corrente.

Para manter a corrente IDC constante a fonte de corrente tem de compensar a tensão gerada
pelo inversor:

VDC = 3
2 .VC .im.cos(θ) (4.35)

e como é óbvio, tem de fornecer a potência activa entregue pelo inversor à rede.

102
Conversão de corrente contínua em alternada

2.2 Corrente IDC controlada pelo inversor


Se a fonte de corrente que alimenta o inversor for constituída por uma fonte de tensão não
controlada em série com uma bobina, a corrente IDC tem de ser controlada através da tensão
gerada pelo inversor à sua entrada (VDC).

L IDC IREDE

Inversor VC
Vf DC V DC de
corrente

P P,Q

Figura 4.49 - Alimentação do inversor por uma fonte de tensão não


controlada.

Como a tensão VDC tem de controlar a corrente IDC, os parâmetros de comando do inversor
ficam presos pela relação:

VDC
im.cos(θ) = 3
(4.36)
2 .VC

pelo que a potência activa fica definida:

P= 3
2 .I DC . VC .[im.cos(θ)] (4.37)

Alias, isto é óbvio, porque se a fonte VfDC fornecer a corrente IDC, a potência activa envolvida
no sistema fica automaticamente definida:

P = Vf DC .I DC (4.38)

Desta forma a potência reactiva fica limitada entre o valor zero e um valor máximo (QMAX)
que se determina a seguir.

A potência reactiva é maximizada quando o valor:


im.sen(θ)
for o maior possível e o valor:
im.cos(θ)
o menor possível de modo a maximizar sen(θ) .

Isto significa que para maximizar a energia reactiva, o índice de modulação deve ser o mais
alto possível (1), e o esfasamento o mais próximo possível de 90º ou 270º.

Da relação (4.36) e fazendo im=1 tira-se que:

VDC
cos(θ) = 3
(4.39)
2 .VC

103
Conversão de corrente contínua em alternada

pelo que o valor de [ im.sen(θ) ]vale:

2
2  VDC 
im.sen(θ) = ± 1 −   (4.40)
3  VC 

Desta forma o valor máximo de energia reactiva produzida ou consumida vale:

2
2  VDC 
Q MAX = 3
. I DC . VC . 1 −   (4.41)
3  VC 
2

2
3  VC 
Q MAX = P.   −1 (4.42)
2  VDC 

de onde se conclui que a potência reactiva máxima que o inversor consegue fornecer ou
absorver, cresce com a potência activa e com a relação VC/VDC.

2.3 Aplicação no SRED


A possibilidade do inversor de corrente poder fornecer energia reactiva à rede, leva-nos a
pensar que o SRED poderá funcionar com um factor de potência unitário, sem o recurso aos
condensadores de compensação.

Isto não é possível, porque quando a máquina está a rodar a velocidades perto da velocidade
de sincronismo, a potência disponível no rótor e transmitida ao inversor é baixa.

Desta forma, quando a máquina rodar a velocidades perto da de sincronismo, a potência


reactiva que o inversor pode fornecer à rede, está limitada pela potência activa fornecida pelo
rótor ao inversor, segundo a equação (4.42).

Apesar da potência activa disponível no rótor da máquina ser baixa a essas velocidades, o
consumo de energia reactiva pelo estátor é elevada, devido às correntes de magnetização.

Desta forma, a energia reactiva consumida pela máquina para a sua magnetização, tem de ser
compensada por uma bateria de condensadores.

Como se pode observar nos gráficos da Figura 4.50, o consumo de potência reactiva, aumenta
com a velocidade de rotação na situação em funcionamento como gerador (ω>ωs), e com o
aumento da corrente no barramento DC (com a subida da potência activa disponível no rótor).
Este aumento é originado pelas reactâncias de fugas do estátor e do rótor.

104
Conversão de corrente contínua em alternada

Figura 4.50 - Consumo de potência reactiva em função da corrente no


barramento DC e em função da velocidade para vários valores de VDC.

Desta forma, o inversor deve fazer a compensação dinâmica do excesso de reactiva que surge
com o aumento da corrente no barramento DC.

No entanto, no SRED usado neste trabalho, o inversor não consegue realizar essa
compensação dinâmica porque a altas velocidades a tensão gerada pelo rótor leva a que a
relação VC/VDC diminua. Isto limita a potência reactiva que o inversor pode fornecer, como se
verifica na equação (4.42).

Isto acontece, porque o inversor para gerar uma tensão VDC semelhante à tensão que os
rectificadores do rótor originam, tem de manter o esfasamento nulo e o índice de modulação
unitário.

Existem várias soluções, de forma a que o inversor possa efectuar a compensação dinâmica da
energia reactiva variável consumida nas reactâncias de fugas do estátor e do rótor:

• aumento da tensão da rede do lado do inversor;

• diminuição da tensão da rede no estátor da máquina;

• uso de uma máquina com uma relação do número de espiras estátor/rótor que
baixe a tensão no rótor.

Obviamente, qualquer uma destas soluções dá origem a que a relação VC/VDC aumente,
aumentando assim a máxima potência reactiva que o inversor pode fornecer para a mesma
potência activa.

Como no caso em questão, a compensação dinâmica do factor de potência não pode ser feito
em toda a gama de funcionamento, optou-se por não a fazer de todo.

Desta forma, o inversor vai funcionar com esfasamento sempre nulo, sendo controlado apenas
com o índice de modulação.

105
Conversão de corrente contínua em alternada

3 Descrição da montagem utilizada


Como interruptores do inversor foram utilizados semicondutores IGBT (Insulated Gate
Bipolar Transistor). Atendendo a que o projecto se trata de um protótipo os IGBTs foram
sobredimensionados, usando-se dispositivos de 1200V e 1000A.

Como a tensão aos terminais de cada interruptor atinge valores negativos, o dispositivo que
implementa o interruptor tem de possuir capacidade para bloquear a tensão inversa.
Atendendo a que os IGBTs não tem esta capacidade é necessário colocar um díodo em serie
com cada IGBT de forma a que este bloqueie a tensão e não a deixe aparecer aos terminais do
IGBT.

Os díodos em anti-paralelo com os IGBTs são incorporados nas caixas dos IGBTs disponíveis
comercialmente. Isto acontece porque normalmente estes dispositivos são utilizados em
inversores de tensão e estes necessitam dos díodos em anti-paralelo para o seu funcionamento.
Naturalmente estes díodos não são necessários para o inversor de corrente nem tem qualquer
efeito no seu funcionamento.

15V
comando
on/off
reset +15V
- 8V
erro

Figura 4.51 - Dispositivos que implementam um interruptor: IGBT, díodo,


supressor e driver isolado.

Os supressores de tensão colocados em paralelo com cada IGBT servem para proteger estes
contra as sobretensões geradas durante as comutações de corrente. Estas sobretensões surgem
devido às elevadas derivadas de corrente que atravessam as indutâncias parasitas existentes
nos cabos e barras de ligação entre os vários componentes do inversor.

O supressor de tensão usado (DSAS 8U da ABB) não deixa que a tensão aos seus terminais
suba acima de 800V. Se a tensão tiver tendência para continuar a subir, a corrente que
atravessa o supressor cresce desmesuradamente até que o supressor queima por excesso de
temperatura, ficando em curto-circuito. Esta é alias, uma grande vantagem do DSAS face as
tradicionais VDR que ficam em circuito aberto depois de queimarem. Desta maneira o DSAS
continua a proteger o IGBT mesmo depois de queimar (é claro que nestas condições o
inversor deixa de funcionar correctamente uma vez que interruptor protegido fica sempre
fechado).

Como curiosidade relata-se um acontecimento ocorrido durante um ensaio do inversor:


Quando um dos supressores entrou em condução, a corrente que o atravessou foi de tal ordem
que o cabo de aproximadamente 5mm de diâmetro que o ligava ao IGBT derreteu. Depois de

106
Conversão de corrente contínua em alternada

retirado, constatou-se que mesmo assim o supressor estava em curto-circuito, não tendo sido
aberto apesar da grande corrente que o atravessou.

Cada IGBT é comandado por um driver que fornece isolamento entre o IGBT e a placa de
controlo. Os 6 drivers são alimentados por uma fonte de 15V independente, uma vez que o
seu consumo é considerável.

Os drivers têm uma característica que lhes permite monitorar a tensão Colector - Emissor
(VCE) dos IGBTs e retirá-los de condução se essa tensão estiver acima de um certo limite
enquanto o IGBT estiver a conduzir. Isto permite evitar que o IGBT queime por excesso de
dissipação numa situação de defeito ou excesso de corrente. É claro que durante a entrada em
condução, a tensão VCE demora algum tempo a descer, pelo que o driver só verifica o VCE a
partir de um certo tempo a contar da entrada em condução. Quer este tempo quer o limite de
tensão a partir do qual o driver retira o IGBT de condução são configuráveis através de
resistências e condensadores na placa do driver.

Os IGBTs também são retirados de condução se a alimentação do driver ficar demasiado


baixa ou instável. Isto garante que o sinal de gate que o driver fornece ao IGBT está sempre
nos níveis correctos de tensão.

O sinal de erro é activado sempre que o driver retira o IGBT de serviço por excesso de VCE ou
devido à alimentação do driver, de forma a avisar o controlador do facto. A saída deste sinal é
activa em baixo em “open colector” pelo que os sinais dos 6 drivers são ligados num único
ponto realizando-se assim um “wired OR”.

O sinal de reset do driver deve ser activado sempre que o driver arranca ou a seguir a uma
ocorrência de erro, de forma a ser possível colocar o IGBT a conduzir por ordem do sinal de
comando on/off.

Os sinais de comando do µC passam por um buffer que os inverte e lhes fornece potência
suficiente para conduzirem o driver. Naturalmente estes buffers estão localizados na placa de
controlo.

ID C

E 1H erro_inversor
g1H g 1H
g 1H g 2H g 2H g2H g 2H E 2H
R 1H R 2H R 2H g3H g 3H E 3H

yC OR set
g1L g 1L E 1L
E 1H E 2H E 2H
IR g2L g 2L E 2L reset

g3L g 3L E 3L
g PRT IS
sobretensão

R 1H R2H R3H
Detecção

reset_inversor reset_protecção R PRT


R PRT E VDC R 1L R 2L R 3L

E PRT IT reset_protecção OR g PRT


actua_protecção
reset

sobretensão E VDC set


g 1L g 2L g 2L erro_inversor

R 1L R 2L R 2L erro_protecção E PRT sobretensão


E 1L E 2L E 2L
actua_protecção

Figura 4.52 - Esquema do inversor, protecção e envolvente de comando.

Para proteger o inversor de sobretensões é colocado um IGBT auxiliar e um díodo para


curto-circuitar o barramento DC em caso de sobretensão. A resistência em serie serve para
limitar a corrente no caso de actuação da protecção, o díodo para proteger o IGBT contra as
tensões negativas que podem surgir no barramento e o supressor serve para “aguentar” a
tensão enquanto o IGBT de protecção não entra em condução.

107
Conversão de corrente contínua em alternada

O driver do IGBT de protecção é alimentado por uma fonte independente da fonte que
alimenta os outros 6 drivers. Isto serve para garantir que no caso da fonte dos 6 IGBTs for
abaixo, existe energia para ligar o IGBT de protecção.

No caso da fonte do driver do IGBT de protecção for abaixo, um sinal avisa o µC deste facto e
o sistema deve ser parado. Obviamente a sequência de operações de paragem neste caso não
deve fazer uso do IGBT de protecção.

Para accionar a protecção é colocado um dispositivo que detecta sobretensões no barramento.


É composto por um comparador que activa o sinal de erro EVDC no caso da tensão subir acima
de um certo nível. Para evitar os atrasos inerentes às interrupções do µC, e atendendo a que
em caso de sobretensão não se pode perder tempo para não destruir o inversor, o sistema de
comando utiliza este sinal para ligar o IGBT de protecção directamente por hardware.

Uma das causas que leva a existir sobretensão é a retirada de condução intempestiva de um
IGBT pelo respectivo driver. Neste caso em vez de se esperar pela sobretensão que certamente
irá surgir (se é que ainda não começou a surgir) o IGBT de protecção também é actuado
directamente por hardware assim que um dos drivers retirar o respectivo IGBT de condução.

Naturalmente estes dois sinais também são ligados ao µC para se tomarem as medidas
necessárias à paragem do sistema.

O sinal de erro do driver do IGBT de protecção também está disponível mas não tem grande
utilidade para protecção uma vez que este sinal só surge se o driver retirar o IGBT de
protecção de condução, e isto só acontece se o IGBT já estiver a proteger o inversor. Como é
obvio, nesta situação o inversor provavelmente ficara destruído. Assim, o sinal serve apenas
para determinar se a causa de destruição foi a saída de condução intempestiva do IGBT de
protecção.

O sinal de sobretensão é enviado pelo circuito de detecção para a carta de controlo através de
fibra óptica.

Os IGBTs e respectivos díodos estão montados em 3 dissipadores com ventilação forçada. Os


supressores também estão montados individualmente sobre dissipadores.

A velocidade de entrada e saída de condução dos IGBTs é controlada através de resistências


colocadas na placa do driver e que ligam o andar de saída do driver à gate do IGBT.

4 Conclusões
As regras para um correcto funcionamento do inversor de corrente impossibilitam a adaptação
do uso de módulos disponíveis comercialmente para o comando de inversores de tensão.

O controlo da conversão de corrente contínua em alternada foi desenvolvido com base no


método de PWM. A adopção deste método baseia-se na necessidade de reduzir o conteúdo
harmónico para as frequências próximas dos 50Hz da rede, tendo em vista melhorar a sua
qualidade bem como controlar a tensão no barramento DC de alimentação do conversor
DC/AC. A importância desta funcionalidade será mostrada no capítulo 7 desta dissertação.

108
Conversão de corrente contínua em alternada

Tal como os restantes µC que possuem módulos de PWM para inversores, o módulo de PWM
do C167 é dedicado ao comando de inversores de tensão, não sendo possível adaptá-lo ao
comando do inversor de corrente.

Como não é possível obter fórmulas explícitas e de rápida execução, o C167 comanda o
inversor de corrente através de valores tabelados.

O módulo desenvolvido para o comando além de regular a amplitude das correntes de saída,
também permite o controlo da fase entre as correntes e as tensões da rede.

109

Você também pode gostar