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
fonte
corrente
inversor
corrente
corrente
sinusoidal
filtro AC
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
V dc inv
V dc fonte
g1L
g2L
IR
VR
IS
VS
IT
VT
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
Idc
V dc
Inversor
de
corrente
Valores que não dependem do inversor:
IR
VR
IS
VS
IT
VR (t) =
VS (t) =
2
3
2
3
2
3
VC sin(2π . f r . t)
VC sin(2π . f r . t − 23 π )
VT (t) = VC sin(2π . f r . t − 43 π )
I DC (t) = I DC
VC ⇒ tensao composta da rede
VT
f
r
⇒ frequencia da rede
Parâmetros de controlo:
im -> índice de modulação [0..1]
θ -> esfasamento entre a corrente de saída e a tensão de
carga [-π..π]
Valores impostos pelo inversor:
I R (t) = I DC sin(2 π.f r .t − θ).im
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=
Q=
3
2
⋅ Idc ⋅ Vc ⋅ im ⋅ cos(θ)
3
2
⋅ Idc ⋅ Vc ⋅ im ⋅ sin(θ)
(4.1)
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
Idc
g1L
g2L
I R = -I S = I dc
g1h
g3h
g3L
IR
VR
IS
VS
IT
VT
g2h
g3h
Idc
g1L
g2L
IR
VR
IS
VS
IT
VT
??
g3L
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
R
S
T
(4.3)
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
t
M1
t
M2
T1
T2
T3
T4
T5
T6
 I R se t ∈ T1
− I
se t ∈ T
 S
2
se t ∈ T
 I
3
S
M1 ( t ) =  − I
se t ∈ T
4
 T
I
se
t ∈T

5
 T
− I R se t ∈ T6
 I T se t ∈ T1
− I
se t ∈ T
 T
2
se t ∈ T
 I
3
R
M 2 ( t ) = − I
se t ∈ T
4
 R
I
se
t ∈T

5
 S
 − I S se t ∈ T6
t
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 ) = 
0 se m(t ) ≤ p(t )
(4.5)
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 π )
I T = im.sin(ω. t − 43 π)
(4.6)
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
56
(4.7)
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
g2h = T1 . S 3
g3h = T1 . S 2
g1l =
g2l = T1
g3l =
+ T2
T2 . S 3
+ T2 . S1
T2 . S 2
+ T3 . S 2
+ T3 . S1
+ T3 . S 3
+ T3
+ T4
+ T4 . S 2
+ T4 . S 3
+ T4 . S1
+
+
+
+
T5 . S 3
T5 . S 2
T5 . S1
T5
+
+
+
+
T6
T6 . S1
T6 . S 2
T6 . S 3
(4.8)
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 )
I Ts = I DC . ( g 3h − g 3l )
(4.9)
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
estado = estado _ gates ; tempo _ estado
(4.10)
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.
g1h
g2h
g3h
g1L
g2L
g3L
T1
c1
c3
c2
0
1
0
T2
1
0
0
c3
c2
c1
T3
c2
c1
c3
0
0
1
T4
0
1
0
c1
c3
c2
T5
c3
c2
c1
1
0
0
T6
0
0
1
c2
c1
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()
paragem_ inversor()
G_pwm_im
muda_im_pwm()
G_flag_erro_pwm_fase
G_erro_pwm_fase
Modulo de
comando do
inversor
G_flag_erro_zero_rede
G_erro_zero_rede
G_flag_erro_pwm_sync_bruta
G_erro_pwm_sync_bruta
muda_fase_pwm(fase)
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”.
ptr_gates
015Dh
015Eh
ptr_tempos_
RELOAD
g 171
g 172
g 173
g 174
0000h
d 1 0.294
d 2 0.294
d 3 0.294
d 14
d 15
d 14
offset
DPP0
.....
g 171
g 172
g 173
g 174
0000h
d 1 0.561
d 2 0.561
d 3 0.561
015Dh
015Eh
0.561
0.561
0.561
g
g
g
g
1
2
3
4
.....
g 171
g 172
g 173
g 174
0000h
d 1 0.828
d 2 0.828
d 3 0.828
.....
.....
d 14
d 15
d 14
Página D
0000h
d 14
d 15
d 14
0.828
0.828
0.828
.....
.....
.....
d 3 0.294
d 2 0.294
d 1 0.294
FFFFh
d 1 0.295
d 2 0.295
d 3 0.295
d 3 0.561
d 2 0.561
d 1 0.561
FFFFh
d 1 0.562
d 2 0.562
d 3 0.562
d 3 0.828
d 2 0.828
d 1 0.828
FFFFh
d 1 0.829
d 2 0.829
d 3 0.829
0.028
0.028
0.028
.....
d 14
d 15
d 14
0.295
0.295
0.295
0199h
019Ah
.....
.....
im = 0.562
d 14
d 15
d 14
0199h
019Ah
d 14
d 15
d 14
0.562
0.562
0.562
im = 0.829
0199h
019Ah
im = 0.295
d 14
d 15
d 14
0.829
0.829
0.829
.....
.....
.....
.....
d 3 0.028
d 2 0.028
d 1 0.028
FFFFh
d 3 0.295
d 2 0.295
d 1 0.295
FFFFh
d 3 0.562
d 2 0.562
d 1 0.562
FFFFh
d 3 0.829
d 2 0.829
d 1 0.829
FFFFh
d1
d2
d3
im = 0.293
d 14
d 15
d 14
0.293
0.293
0.293
3F86h
d1
d2
d3
im = 0.560
3F86h
d 14
d 15
d 14
.....
0.293
0.293
0.293
01D5h
.....
.....
.....
0.560
0.560
0.560
3F86h
d1
d2
d3
d 14
d 15
d 14
.....
0.560
0.560
0.560
01D5h
.....
.....
.....
.....
.....
.....
0.827
0.827
0.827
29AEh
d1
d2
d3
im = 1.000
01D5h
d 14
d 15
d 14
0.827
0.827
0.827
1.000
1.000
1.000
.....
.....
1.000
1.000
1.000
.....
.....
.....
.....
d 3 0.293
d 2 0.293
d 1 0.293
FFFFh
d 3 0.560
d 2 0.560
d 1 0.560
FFFFh
d 3 0.827
d 2 0.827
d 1 0.827
FFFFh
d 3 1.000
d 2 1.000
d 1 1.000
FFFFh
pof(0.027)
pof(0.028)
pof(0.029)
pof(0.030)
3FC1h
DPP0 -> aponta para o inicio de uma das páginas A, B, C ou D
DPP0 = *página ( im )
ptr_gates_RELOAD -> indica o offset page do inicio da tabela gates
ptr_gates_RELOAD = 0 0 0 0 h
ptr_tempos_RELOAD -> indica o offset page do inicio da tabela tempos do actual im
ptr_tempos_RELOAD = *page_offset ( im )
page_offset -> vector para indicar o ptr_gates_RELOAD dos varios im
página -> vector para indicar a página a ser utilizada para cada im
29E9h
29EAh
page offset
3FC1h
3185h
3186h
página
im = 0.028
1
2
3
4
.....
.....
.....
.....
3FC1h
015Dh
015Eh
g
g
g
g
d 3 0.027
d 2 0.027
d 1 0.027
FFFFh
d 1 0.028
d 2 0.028
d 3 0.028
.....
01D5h
0.294
0.294
0.294
Página C
0000h
.....
ptr_tempos
im = 0.294
im = 0.027
0199h
019Ah
0.027
0.027
0.027
offset
DPP0
.....
.....
d 14
d 15
d 14
1
2
3
4
gates
g
g
g
g
ptr_gates_
RELOAD
.....
g 171
g 172
g 173
g 174
0000h
d 1 0.027
d 2 0.027
d 3 0.027
Página B
0000h
im = 0.828
offset
DPP0
im = 0.561
1
2
3
4
im = 0.827
gates
015Dh
015Eh
g
g
g
g
gates
Página A
0000h
gates
offset
DPP0
ptr_gates -> indica o offset page do estado dos interruptores no proximo estado do inversor
ptr_gates -> varia entre ptr_gates_RELOAD e ptr_gates_RELOAD+ 2 * 6 * 2 9
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
3921h
page_offset
.....
pof(0.997)
pof(0.998)
pof(0.999)
pof(1.000)
pag(0.027)
pag(0.028)
pag(0.029)
pag(0.030)
página
.....
pag(0.997)
pag(0.998)
pag(0.999)
pag(1.000)
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
Gates(x)=
Gates(1)=
Gates(2)=
Sequência
P7 -> 7
-
de valores na tabela gates
- g3L g2L g1L g3H g2H g1H
1
0
1
1
0
1
1
1
0
1
0
1
de valores na porta P7 do yC
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
uma interrupção T6INT
quando chegar a zero
gera_pwm
Porta_P7 = Porta_P7 and Proxima_gate
( passo 1 )
Proximo_tempo = [ ptr_tempos ]
ptr_tempos = ptr_tempos + 1
não
Proximo_tempo
=
0
aux_correcção = corrige_tempo
Estado eliminado
Avança para o
próximo
sim
Proximo_tempo = [ ptr_tempos ]
ptr_tempos = ptr_tempos + 1
ptr_gates = ptr_gates + 1
aux_correcção = 2 * corrige_tempo
NOTAS:
As tabelas de "tempos" não podem ter o
primeiro valor igual a zero.
O tempo que decorre entre os passos 1
e 2, é o tempo de sobreposição de
conduçã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
DPP0 (data page pointer 0) está com o
valor correcto.
Proximo_tempo
=
FFFFh
não
sim
Reload da tabela de
tempos
ptr_tempos = ptr_inicio_tempos
Proximo_tempo = [ ptr_tempos ]
ptr_tempos = ptr_tempos + 1
Porta_P7 = Proxima_gate
( passo 2 )
Proxima_gate = [ ptr_gates ]
ptr_gates = ptr_gates + 1
Proxima_gate
=
0
não
sim
Reload da tabela de
gates
ptr_gates = ptr_inicio_gates
Proxima_gate = [ ptr_gates ]
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
Para se garantir a
consistência dos dados,
estas operações têm de ser
realizadas sem serem
interrompidas. É necessário
garantir a sua atomicidade.
aux = ptr_inicio_tempos
guarda o offset inicial do im
anterior
pag = página( G_pwm_im )
off = page_offset( G_pwm_im )
obtem a pá gina e o offset do
novo im
ptr_inicio_tempos = aux
ptr_tempos = ptr_tempos - aux + off
DPP0 = pag
FIM
gera_pwm
ptr_inicio_tempos
ptr_tempos
1
2
3
4
5
6
tabela de tempos do im anterior
1
2
3
4
5
6
tabela de tempos do novo im
apontadores antes da rotina ser executada
ptr_inicio_tempos
ptr_tempos
1
2
3
4
5
6
tabela de tempos do im anterior
1
2
3
4
5
6
tabela de tempos do novo im
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
f =
20ms + n ∗ 174 ∗ 200ns
(4.13)
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:
n=
Trede − 20ms
174 ∗ 200ns
(4.14)
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
174 ∗ 200ns
(4.15)
G _ periodo − 50000
. ∗10 − 3 ∗ G _ periodo − 574.7
= 1149
87
(4.16)
n=
n=
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 
 
50000
G _ periodo − 50000  87 
n=
= 16 G _ periodo −
87
87
2
n≅
A multiplicação por
753
2 16
753 ∗ G _ periodo
− 574
2 16
(4.17)
(4.18)
é realizada segundo o esquema no Anexo B.
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
passagem_zero_rede()
atraso
tempo
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.
Fase R da corrente do
inversor
Fase R da tensão da
rede
passagem_zero_rede()
passagem_zero_rede()
t cal
T3
T3
t fase
t fase
estado 174
estado 174
estado 1
acerta_fase_pwm()
estado 1
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
e prepara-o para a próxima
medida
G_periodo = T1
T1=0
G_periodo > MINIMO
e
G_periodo < MAXIMO
não
Verifica se o período
medido está dentro
dos limites
sim
T3R = 1
sim
não
G_flag_erro_pwm_fase = 1
incrementa G_erro_zero_pwm_fase
G_flag_erro_rede = 1
incrementa G_erro_zero_rede
Verifica se o timer T3 já está
parado.
Se não estiver, significa que a
interrupção que sincroniza o PWM
( acerta_fase_pwm() ) ainda não foi
executada.
calcula_correcao_periodo
calcula_tempo_fase_atribui_T3
T3R=1
Obtem o valor que é necessário somar á
duração de cada estado de forma a ajustar o
período do PWM ao período real da rede
Coloca no timer T3 o valor necessário
para a fase pretendida. O valor é
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
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:
T3360 =
20ms
= 50000
400ns
(4.19)
O valor de T3 correspondente a θº é dado por:
T3θ = 50000∗
θ
≅ 139∗ θ
360
(4.20)
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
T3θ = 
se aux < atraso
aux + t cal
80
(4.21)
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
139 = 20ms / 400ns / 360
aux = fase * 139
não
aux > atraso
G_pwm_fase = aux + tcal
sim
Os valores 'atraso' e 'tcal' são determinados
experimentalmente.
tcal + atraso = 50000
G_pwm_fase = aux - atraso
FIM
muda_fase( fase )
O resultado é guardado na variável global
G_pwm_atraso
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 θ
400ns 360 o
TREAL θ
G _ periodo∗400ns θ
n=
o =
400ns 360
400ns
360 o
G _ pwm_ fase =
81
Conversão de corrente contínua em alternada
n=
G _ pwm_ fase∗ G _ periodo
50000
(4.22)
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
16



2
G _ pwm_ fase∗ G _ periodo  


n=
≅
∗2 (4.23)
16
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
requer sincronização suave
169 170 171 172 173 174
PWM adiantado
requer sincronização abrupta
1
2
3
4
5
6
169 170 171 172 173 174
1
PWM atrasado
requer sincronização suave
169 170 171 172 173 174
1
2
3
4
5
6
2
3
4
5
6
PWM atrasado
requer sincronização abrupta
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
atrasado
dessincronizado
adiantado
7
estado
6
grupo
5
4
3
2
1
0
g1H
g2H
g3H
g1L
g2L
g3L
1
2
3
4
5
6
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
1
0
1
0
0
1
0
0
0
1
0
0
0
0
0
0
1
1
1
1
1
1
0
0
0
0
0
0
169
170
171
172
173
174
0
0
0
0
0
0
0
0
0
1
1
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
0
0
1
0
0
0
1
0
0
0
1
0
0
1
0
1
0
1
bit
Porta P7
grupo
g1H g2H g3H g1L g2L g3L
P7.7 P7.6 P7.5 P7.4 P7.3 P7.2 P7.1 P7.0
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
coloca_PWM_origem
não
Está adiantado.
grupo = 1 0
n_sincr_periodo = 0
sim
Aumenta período
G_erro_pwm_sync_bruta =
G_erro_pwm_sync_bruta + 1
não
n_sincr_periodo =
n_sincr_periodo + 1
Está atrasado.
grupo = 0 1
G_flag_pwm_sync_bruta = 1
sim
Diminui período
n_sincr_periodo
>2
n_sincr_periodo =
n_sincr_periodo - 1
não
n_sincr_periodo
< -2
não
não
sim
Incrementa a variável
que indica o numero
de sincronizações
abruptas e sinaliza a
ocorrencia com a flag.
n_sincr_periodo = 2
sim
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

 I (1) 
( DB)
(4.24)
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) 


I ( n)
= 10 20 
I (1)
(4.25)
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 .
I saida RMS fundamental =
Figura 4.35 - Evolução dos harmónicos
1
.I DC .im
2
(4.26)
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
g1L
g2L
g1L
VR
IRs
ISs
VDC
g1L
g2L
g1L
VS
VT
VR =
VS =
VT =
1
3
1
3
1
3
Vc pico .sin(2 π. f r .t )
Vc pico .sin(2 π. f .r .t − 13 2 π )
Vc pico .sin(2 π. f .r .t − 23 2 π)
Tensão à entrada:
Vdc
ITs
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
VDC =
15
. 2
3
im cos(θ) Vc =
(4.28)
3
2
im cos(θ) Vc
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 DC .im
2
(4.29)
.VC .im.cos(θ)
(4.30)
I REDE =
VDC =
3
2
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(θ)
=
3
2
(4.31)
.I DC .VC .im.cos(θ)
e a reactiva:
Q =
3
2
.I DC .VC .im.sen(θ)
= P.tan(θ)
(4.32)
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
I dc
V DC
P
Inversor
de
corrente
L
IDC
VC
Vf DC
V DC
P,Q
IREDE
Inversor
de
corrente
VC
P,Q
P
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:
im =
Q
3
2
.I DC .VC .sen(θ)
=
P
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(θ)
e como é óbvio, tem de fornecer a potência activa entregue pelo inversor à rede.
102
(4.35)
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).
IDC
L
Vf DC
V DC
IREDE
VC
Inversor
de
corrente
P,Q
P
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
2
.VC
(4.36)
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:
cos(θ) =
VDC
3
2
.VC
(4.39)
103
Conversão de corrente contínua em alternada
pelo que o valor de [ im.sen(θ) ]vale:
2  VDC 

im.sen(θ) = ± 1 − 
3  VC 
2
(4.40)
Desta forma o valor máximo de energia reactiva produzida ou consumida vale:
Q MAX =
3
2
2  VDC 

. I DC . VC . 1 − 
3  VC 
2
(4.41)
2
Q MAX
3  VC 
 −1
= P. 
2  VDC 
(4.42)
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
erro
+15V
- 8V
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.
g PRT
R PRT
E PRT
Detecção
sobretensão
ID C
g 1H
g 2H
g 2H
R 1H
R 2H
R 2H
E 1H
E 2H
E 2H
IR
IS
E VDC
IT
yC
g1H
g 1H
E 1H
g2H
g 2H
E 2H
g3H
g 3H
E 3H
g1L
g 1L
E 1L
g2L
g 2L
E 2L
g3L
g 3L
E 3L
reset_inversor
R 1H R2H R3H
R 1L R 2L R 3L
erro_inversor
set
OR
reset
reset_protecção
R PRT
OR
reset_protecção
actua_protecção
sobretensão
g 1L
g 2L
g 2L
erro_inversor
R 1L
R 2L
R 2L
erro_protecção
E 1L
E 2L
E 2L
g PRT
reset
E VDC
E PRT
set
sobretensão
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
Download

Conversao de corrente continua em alternada