ANTÔNIO JOSÉ SOUSA DIAS JÚNIOR - DEE

Propaganda
UNIVERSIDADE FEDERAL DO CEARÁ
CENTRO DE TECNOLOGIA
DEPARTAMENTO DE ENGENHARIA ELÉTRICA
CURSO DE ENGENHARIA ELÉTRICA
ANTÔNIO JOSÉ SOUSA DIAS JÚNIOR
CONTROLE DIGITAL DE CONVERSOR CC-CC EM CASCATA COM
CONVERSOR CC-CA BIDIRECIONAL
FORTALEZA
2014
ANTÔNIO JOSÉ SOUSA DIAS JÚNIOR
CONTROLE DIGITAL DE CONVERSOR CC-CC EM CASCATA COM
CONVERSOR CC-CA BIDIRECIONAL
Monografia apresentada ao Curso de
Engenharia Elétrica do Departamento de
Engenharia Elétrica da Universidade Federal do
Ceará, como requisito parcial para a obtenção
do Título de Engenheiro Eletricista.
Orientador: Prof. PhD. Fernando Luiz Marcelo
Antunes.
FORTALEZA
2014
___________________________________________________________________________
Página reservada para ficha catalográfica que deve ser confeccionada após apresentação e
alterações sugeridas pela banca examinadora.
Para solicitar a ficha catalográfica de seu trabalho, acesse o site: www.biblioteca.ufc.br, clique
no banner Catalogação na Publicação (Solicitação de ficha catalográfica)
___________________________________________________________________________
ANTÔNIO JOSÉ SOUSA DIAS JÚNIOR
CONTROLE DIGITAL DE CONVERSOR CC-CC EM CASCATA COM
CONVERSOR CC-CA BIDIRECIONAL
Monografia apresentada ao Curso de
Engenharia Elétrica do Departamento de
Engenharia Elétrica da Universidade Federal do
Ceará, como requisito parcial para a obtenção
do Título de Engenheiro Eletricista.
Aprovada em: ___/___/______.
BANCA EXAMINADORA
________________________________________
Prof. PhD. Fernando Luiz Marcelo Antunes (Orientador)
Universidade Federal do Ceará (UFC)
_________________________________________
Eng. Heron Alves dos Santos
Universidade Federal do Ceará (UFC)
_________________________________________
Eng. Aloísio Fernandes Dias
Universidade Federal do Ceará (UFC)
A Deus.
À minha mãe, Ruth.
AGRADECIMENTO
Primeiramente a Deus por me guiar nesta minha caminhada e me dar forças ao
longo de toda a minha vida para sempre seguir em frente.
À minha mãe Ruth Maria Lopes Fernandes por todo o apoio e incentivo durante
toda a minha vida, pois, todas as conquistas que realizei e irei realizar são resultados de seus
ensinamentos.
Ao meu irmão Aloísio Fernandes Dias por sempre me encorajar e instigar ao longo
da minha vida a superar os meus limites, principalmente nos últimos semestres do curso.
Ao Prof. PhD. Fernando Luiz Marcelo Antunes pela sua sublime forma de ensinar
e transmitir os conhecimentos, bem como pela sua excelente orientação durante o
desenvolvimento deste trabalho.
Aos demais membros da banca examinadora Eng. Aloísio Fernandes Dias e Eng.
Heron Alves dos Santos pelo tempo disponibilizado, pelas suas valiosas observações, críticas e
sugestões.
À minha namorada Thais Fernanda Rodrigues Dutra por me apoiar nas difíceis
horas de estudo e dedicação ao longo deste curso, bem como por, além de namorada, ser uma
grande companheira de curso.
Aos meus familiares pelas esperanças depositadas na conclusão deste curso de
graduação.
Aos meus amigos e colegas de graduação Eng. Diego de Sousa Aguiar, Elcid
Rodrigues de Oliveira Filho, Eng. Jorge Luiz Wattes Oliveira Junior e Eng. Marcus Anderson
Almeida Bezerra pelas infindáveis horas de estudo compartilhadas e pelas contribuições na
minha trajetória ao longo do curso.
A todos os professores do Departamento de Engenharia Elétrica da UFC, em
especial aos professores Dr. René Bascopé, Dr. Luiz Henrique Silva Colado Barreto, Dr.
Bismark Claure e Dr. Paulo Peixoto Praça que diretamente ou indiretamente contribuíram para
a escolha e desenvolvimento do tema deste trabalho, aos funcionários do departamento, em
especial ao secretário Mário Sérgio.
À todas as pessoas que me ajudaram na conclusão deste trabalho que por motivo de
esquecimento não foram aqui citadas, peço minhas sinceras desculpas.
“É a teoria que decide o que podemos
observar.”
(Albert Einstein)
“Se cheguei até aqui foi porque me apoiei no
ombro de gigantes.”
(Isaac Newton)
“Não há substituto para o trabalho duro.”
(Thomas Edison)
RESUMO
Este trabalho tem por objetivo projetar controladores digitais de um conversor CC-CC
cascateado com um conversor CC-CA, ambos bidirecionais e de baixa potência (2 kW). São
utilizados controladores PI e controladores Deadbeat para as malhas de tensão e corrente,
respectivamente. A metodologia utilizada para o projeto dos controladores PI é a emulação de
controladores analógicos pelo método da diferença com passo atrás e o projeto dos
controladores Deadbeat é a dedução da lei de controle a partir da análise da forma de onda da
corrente no indutor do conversor. A validação do controle proposto é realizada através de
simulações nos softwares PSIM e Modelsim. Os resultados de simulação demonstram que o
controle proposto atinge altos níveis de performance (THD abaixo de 7 % e fator de potência
acima de 0,997).
Palavras-chave: Controladores PID. Controle Digital. Conversor Bidirecional.
ABSTRACT
This work aims to design digital controllers of DC-DC converter in series with a DC-AC
converter, both bidirectional and the low power (2 kW). The controllers used are PI controllers
and Deadbeat controllers for the voltage loop and current loop, respectively. The methodology
employed to design of the PI controllers is the emulation of analog controllers by the backward
method and to design of the Deadbeat controllers is the deduction of the control law based on
the analysis of the waveform of the inductor current of the converter. The simulations on the
software PSIM and Modelsim do the validation of the proposed control. The results of the
simulation shows that proposed control reach high performance’s levels (THD below 7 % and
power factor above 0,997).
Keywords: PID Controller. Digital Control. Bi-directional Converter.
LISTA DE ILUSTRAÇÕES
Figura 1 – Topologia em estudo. .............................................................................................. 15
Figura 2 – Estratégia de controle do conversor CC-CC. .......................................................... 20
Figura 3 – Estratégia de controle do conversor CC-CA. .......................................................... 20
Figura 4 – Diagrama de Bode malha externa conversor CC-CC Buck. ................................... 21
Figura 5 – Diagrama de Bode malha externa conversor CC-CC Boost. .................................. 22
Figura 6 – Diagrama de Bode malha externa conversor CC-CA Retificador. ......................... 23
Figura 7 – Conversor CC-CC e CC-CA circuitos para validação implementados no PSIM. .. 24
Figura 8 – Diagrama de Bode malha externa conversor CC-CC Buck via simulação. ............ 24
Figura 9 – Diagrama de Bode malha externa conversor CC-CC Boost via simulação. ........... 25
Figura 10 – Diagrama de Bode malha externa conversor CC-CA Retificador via simulação. 25
Figura 11 – Topologia do sensor de tensão do barramento CC e do Link CC. ........................ 27
Figura 12 – Topologia do sensor de tensão da rede elétrica. .................................................... 28
Figura 13 – Topologia do sensor de corrente. .......................................................................... 29
Figura 14 – Corrente amostrada vs tensão de saída ACS756. .................................................. 30
Figura 15 – Encapsulamento do conversor AD9201. ............................................................... 31
Figura 16 – Gráfico de tempo do conversor AD9201. ............................................................. 33
Figura 17 – Sensor do barramento CC. .................................................................................... 35
Figura 18 – Diagrama de Bode do sensor do barramento CC. ................................................. 35
Figura 19 – Sensor do Link CC. ............................................................................................... 36
Figura 20 – Diagrama de Bode do sensor do Link CC............................................................. 36
Figura 21 – Sensor da rede elétrica. ......................................................................................... 37
Figura 22 – Diagrama de Bode do sensor da rede elétrica. ...................................................... 37
Figura 23 – Sensor de corrente. ................................................................................................ 38
Figura 24 – Diagrama de Bode do sensor de corrente. ............................................................. 38
Figura 25 – Diagrama de blocos do sistema DSP. ................................................................... 40
Figura 26 – Kit de desenvolvimento DE1 Board. .................................................................... 41
Figura 27 – Malha externa de tensão. ....................................................................................... 42
Figura 28 – Resposta do conversor CC-CC operando como Buck sem controlador de tensão.
.................................................................................................................................................. 43
Figura 29 – Resposta do conversor CC-CC operando como Buck com controlador de tensão.
.................................................................................................................................................. 44
Figura 30 – Resposta do conversor CC-CC operando como Boost sem controlador de tensão.
.................................................................................................................................................. 45
Figura 31 – Resposta do conversor CC-CC operando como Boost com controlador de tensão.
.................................................................................................................................................. 46
Figura 32 – Resposta do conversor CC-CA operando como Retificador sem controlador de
tensão. ....................................................................................................................................... 47
Figura 33 – Resposta do conversor CC-CA operando como Retificador com controlador de
tensão. ....................................................................................................................................... 48
Figura 34 – Forma de onda da corrente no indutor Lb do conversor CC-CC. .......................... 50
Figura 35 – (a) Circuito equivalente (b) Forma de onda da corrente no indutor Lf do conversor
CC-CA. ..................................................................................................................................... 51
Figura 36 – Circuito q-PLL. ..................................................................................................... 54
Figura 37 – Circuito q-PLL modificado. .................................................................................. 54
Figura 38 – Bloco de controle em linguagem C e PWMs. ....................................................... 59
Figura 39 – Circuito para simulação da rotina de sincronismo. ............................................... 60
Figura 40 – Sinais theta e wc para uma tensão de entrada senoidal. ........................................ 61
Figura 41 – Sinal de saída do PLL e tensão de entrada senoidal.............................................. 61
Figura 42 – Sinal de saída do PLL e tensão de entrada quadrada. ........................................... 62
Figura 43 – Sinal de saída do PLL com variação na tensão de entrada senoidal de 50%. ....... 62
Figura 44 – Simulação do conversor CC-CC operando como Buck. ....................................... 63
Figura 45 – Tensão e corrente de saída do conversor CC-CC operando como Buck. ............. 63
Figura 46 – Detalhe da tensão e corrente de saída do conversor CC-CC operando como Buck
durante o degrau de carga. ........................................................................................................ 64
Figura 47 – Detalhe na corrente do indutor Lb e na tensão de saída do conversor CC-CC
operando como Buck. ............................................................................................................... 64
Figura 48 – Simulação do conversor CC-CC operando como Boost. ...................................... 65
Figura 49 – Tensão e corrente de saída do conversor CC-CC operando como Boost. ............ 65
Figura 50 – Detalhe da tensão e corrente de saída do conversor CC-CC operando como Boost
durante o degrau de carga. ........................................................................................................ 66
Figura 51 – Detalhe na corrente do indutor Lb e na tensão de saída do conversor CC-CC
operando como Boost. .............................................................................................................. 66
Figura 52 – Simulação do conversor CC-CA operando como Retificador. ............................. 67
Figura 53 – Sinal en do conversor CC-CA operando como Retificador. ................................. 68
Figura 54 – Tensão e corrente de saída do conversor CC-CA operando como Retificador..... 68
Figura 55 – Tensão e corrente de entrada do conversor CC-CA operando como Retificador. 69
Figura 56 – Detalhe da tensão e corrente de entrada e saída do conversor CC-CA operando
como Retificador durante o degrau de carga. ........................................................................... 69
Figura 57 – Detalhe da tensão e corrente de entrada e saída do conversor CC-CA operando
como Retificador. ..................................................................................................................... 70
Figura 58 – Simulação do conversor CC-CA operando como Inversor. .................................. 70
Figura 59 – Tensão e corrente de saída do conversor CC-CA operando como Inversor. ........ 71
Figura 60 – Simulação da topologia completa operando como Boost/Inversor. ...................... 72
Figura 61 – Tensão e corrente na rede elétrica operando como Boost/Inversor. ..................... 72
Figura 62 – Tensão no capacitor Cb do Link CC operando como Boost/Inversor. .................. 73
Figura 63 – Corrente no indutor Lb operando como Boost/Inversor. ....................................... 73
Figura 64 – Simulação da topologia completa operando como Buck/Retificador. .................. 74
Figura 65 – Tensão e corrente na rede elétrica operando como Buck/Retificador................... 74
Figura 66 – Tensão no capacitor Cb do Link CC e corrente na rede elétrica operando como
Buck/Retificador....................................................................................................................... 75
Figura 67 – Detalhe da corrente no indutor Lb operando como Buck/Retificador. .................. 75
Figura 68 – Detalhe da corrente e tensão no Barramento CC operando como Buck/Retificador.
.................................................................................................................................................. 76
Figura 69 – THD para diversos níveis de carregamento. ......................................................... 76
Figura 70 – Fator de potência para diversos níveis de carregamento. ...................................... 77
Figura 71 – Fluxograma do código em VHDL......................................................................... 79
Figura 72 – Entrada e saída do PLL para uma entrada com forma de onda senoidal. ............. 80
Figura 73 – Frequência e ângulo do PLL para uma entrada com forma de onda senoidal. ..... 81
Figura 74 – Entrada e saída do PLL para uma entrada com forma de onda quadrada. ............ 81
Figura 75 – Frequência e ângulo do PLL para uma entrada com forma de onda quadrada. .... 82
Figura 76 – Diagrama de Bode do controlador PI do conversor CC-CC operando como Buck.
.................................................................................................................................................. 83
Figura 77 – Diagrama de Bode do controlador PI do conversor CC-CC operando como Boost.
.................................................................................................................................................. 83
Figura 78 – Diagrama de Bode do controlador PI do conversor CC-CA operando como
Retificador. ............................................................................................................................... 84
Figura 79 – Comparação das respostas do controlador Deadbead do conversor CC-CC operando
como Buck. ............................................................................................................................... 85
Figura 80 – Comparação das respostas do controlador Deadbead do conversor CC-CC operando
como Boost. .............................................................................................................................. 85
Figura 81 – Comparação das respostas do controlador Deadbead do conversor CC-CA. ....... 86
Figura 82 – Saídas PWM. ......................................................................................................... 87
LISTA DE TABELAS
Tabela 1 – Parâmetros do projeto do circuito de potência. ...................................................... 16
Tabela 2 – Descrição dos pinos do AD9201. ........................................................................... 31
Tabela 3 – Especificações do kit de desenvolvimento DE1 Board. ......................................... 40
Tabela 4 – Coeficientes angulares ............................................................................................ 51
Tabela 5 – Coeficientes em notação Q0.15 da malha de tensão............................................... 58
Tabela 6 – Coeficientes em notação Q0.15 da malha de corrente ............................................ 58
Tabela 7 – Coeficientes em notação Q0.15 do PI do PLL ....................................................... 58
LISTA DE ABREVIATURAS E SIGLAS
A/D
Analógico/Digital
ADC
Analog Digital Converter
CA
Corrente Alternada
CC
Corrente Contínua
DPWM
Digital Pulse-Width Modulation
DSP
Digital Signal Processor
FPGA
Field-Programmable Gate Array
Msps
Million Samples per Second
PI
Proporcional-Integral
PLL
Phase Locked Loop
p-PLL
PLL baseado na potência ativa instantânea
PWM
Pulse-Width Modulation
q-PLL
PLL baseado na potência reativa instantânea
SSOP
Small Outline Integrated Circuit
THD
Total Harmonic Distortion
ZOH
Zero-Order Hold
LISTA DE SÍMBOLOS
∆ILmax
Ripple máximo no indutor de filtro Lf
ΔILb
Ripple máximo no indutor Boost
∆Vc
Ripple de tensão no Link CC
C(s)
Controlador PI contínuo
C(z)
Controlador PI discreto
CBYP
Capacitância referente ao sensor de corrente ACS756
Cc
Capacitância do Link CC
Cf
Capacitância de filtro do sensor de corrente
Ci1
Capacitância de filtro do sensor de corrente
Cs
Capacitância do barramento CC
Cv1
Capacitância de filtro do sensor de tensão
Cv2
Capacitância de filtro do sensor de tensão
CvBoost(s)
Controlador PI contínuo da malha de tensão do Conversor CC-CC Boost
CvBoost(z)
Controlador PI discreto da malha de tensão do Conversor CC-CC Boost
CvBuck(s)
Controlador PI contínuo da malha de tensão do Conversor CC-CC Buck
CvBuck(z)
Controlador PI discreto da malha de tensão do Conversor CC-CC Buck
CvRetificador(s)
Controlador PI contínuo da malha de tensão do Conversor CC-CC
Retificador
CvRetificador(z)
Controlador PI discreto da malha de tensão do Conversor CC-CC
Retificador
d
Razão cíclica de saída do controlador Deadbeat do Conversor CC-CC
d̂
Perturbação da razão cíclica do conversor CC-CC
dBuck (n)
Razão cíclica do controlador Deadbeat do Conversor CC-CC operando
como Buck
dBoost (n)
Razão cíclica do controlador Deadbeat do Conversor CC-CC operando
como Boost
Db
Razão cíclica do conversor CC-CC operando como Boost
e(n)
Sinal de erro da equação das diferenças do controlador PI
f
Frequência da rede
famos
Frequência de amostragem
fs
Frequência de chaveamento
GviBoost
Função de transferência da malha de tensão do conversor CC-CC
operando como Boost
GviBuck
Função de transferência da malha de tensão do conversor CC-CC
operando como Buck
GviRetificador
Função de transferência da malha de tensão do conversor CC-CA
operando como Retificador
Hi(s)
Função de transferência do sensor de corrente
Hv1(s)
Função de transferência do sensor de tensão (tensões contínuas)
Hv2(s)
Função de transferência do sensor de tensão (tensões alternadas)
ILbmed
Corrente média no indutor Boost
îLb
Perturbação da corrente no indutor Boost
îLf
Perturbação da corrente no indutor de filtro
i̅Lf
Corrente média no indutor de filtro em um período de chaveamento
Lb
Indutância Boost
Lf
Indutância de filtro
Ki
Ganho integral
Kp
Ganho proporcional
m
Sinal modulador saída do controlador Deadbeat do conversor CC-CA
m1
Coeficiente angular
m2
Coeficiente angular
mInversor (n)
Sinal modulador das chaves do conversor CC-CA operando como
Inversor
mRetificador (n)
Sinal modulador das chaves do conversor CC-CA operando como
Retificador
P
Potência nominal do conversor
rC c
Resistência série do capacitor do Link CC
rC s
Resistência série do capacitor do barramento CC
Rf
Resistência de filtro do sensor de corrente (Relacionada à capacitância Cf)
Ri1
Resistência do sensor de corrente
Ro
Resistência de carga
Rv1
Resistência do sensor de tensão
Rv2
Resistência do sensor de tensão
Rv3
Resistência do sensor de tensão
Rv4
Resistência do sensor de tensão
td
Tempo de atraso do controlador
tOD
Tempo de atraso da saída de dados
tMD
Tempo de atraso da seleção do MUX
Tamos
Período de amostragem
Ts
Período de chaveamento
uvBoost (n)
Equação das diferenças do controlador PI do conversor CC-CC operando
como Boost
uvBuck (n)
Equação das diferenças do controlador PI do conversor CC-CC operando
como Buck
uvRetificador (n)
Equação das diferenças do controlador PI do conversor CC-CC operando
como Retificador
uPLL (n)
Equação das diferenças do controlador PI da rotina do PLL
up (n)
Parcela proporcional da equação das diferenças do controlador PI
ui (n)
Parcela integral da equação das diferenças do controlador PI
v̂c
Perturbação da tensão no Link CC
Vc
Tensão no Link CC
̅c
V
Tensão média no Link CC em um período de chaveamento
Vcc
Tensão de offset do sensor de tensão alternado
Vrede
Tensão da rede elétrica
v̂s
Perturbação da tensão no barramento CC
Vs
Tensão no barramento CC
wp1
Polo de filtro dos sensores
wp2
Polo de filtro dos sensores
SUMÁRIO
1 INTRODUÇÃO ................................................................................................................... 13
1.1
Objetivos ........................................................................................................................ 13
1.2
Metodologia ................................................................................................................... 13
1.3
Estrutura do trabalho ................................................................................................... 13
2 PROCESSO EM ESTUDO ................................................................................................. 15
2.1
Introdução ..................................................................................................................... 15
2.2
Topologia do conversor em estudo .............................................................................. 15
2.3
Dimensionamento do circuito de potência .................................................................. 16
2.4
Dimensionamento das chaves S1 – S6 ........................................................................... 17
2.5
Estratégia de controle adotada .................................................................................... 19
2.6
Funções de transferência do conversor ....................................................................... 20
2.7
Validação das funções de transferência ...................................................................... 23
2.8
Conclusão ....................................................................................................................... 26
3 CONTROLE PROPOSTO ................................................................................................. 27
3.1
Introdução ..................................................................................................................... 27
3.2
Sensores de tensão ......................................................................................................... 27
3.3
Sensores de corrente ..................................................................................................... 29
3.4
Conversores A/D ........................................................................................................... 30
3.5
Projeto dos sensores ...................................................................................................... 33
3.6
Seleção do dispositivo DSP ........................................................................................... 38
3.7
Projeto dos controladores............................................................................................. 42
3.8
Tempo morto das chaves S3-S6..................................................................................... 53
3.9
Circuito PLL.................................................................................................................. 53
3.10 Conclusão ....................................................................................................................... 55
4 SIMULAÇÃO DO CONTROLE........................................................................................ 56
4.1
Introdução ..................................................................................................................... 56
4.2
Aritmética de Ponto Fixo.............................................................................................. 56
4.3
Resultados de simulação dos controladores ............................................................... 59
4.4
Resultados de simulação da topologia completa ........................................................ 71
4.5
Fator de Potência e THD para diversos níveis de carregamento ............................. 76
4.6
Conclusão ....................................................................................................................... 77
5 VALIDAÇÃO DO CÓDIGO DO CONTROLADOR EM VHDL .................................. 79
5.1
Introdução ..................................................................................................................... 79
5.2
Estrutura do código na linguagem VHDL .................................................................. 79
5.3
Rotina de sincronismo .................................................................................................. 80
5.4
Controladores das malhas externas ............................................................................ 82
5.5
Controladores das malhas internas ............................................................................. 84
5.6
Sinais de Clock ............................................................................................................... 86
5.7
Sinais de saída PWM .................................................................................................... 87
5.8
Conclusão ....................................................................................................................... 87
6 CONCLUSÃO...................................................................................................................... 89
REFERÊNCIAS ..................................................................................................................... 90
TRABALHOS PUBLICADOS .............................................................................................. 92
ANEXO A – CÓDIGO DO CONTROLADOR IMPLEMENTADO NO PSIM .............. 93
ANEXO B – CÓDIGO DO CONTROLADOR EM VHDL ............................................. 101
ANEXO C – ROTINAS EM MATLAB.............................................................................. 110
13
1
1.1
INTRODUÇÃO
Objetivos
Este trabalho tem por objetivo desenvolver o controle digital de um conversor CCCC cascateado com um conversor CC-CA de baixa potência, bidirecional, de alto fator de
potência e baixa THD injetado na rede elétrica.
1.2
Metodologia
A metodologia utilizada neste trabalho consiste na avaliação da planta em estudo,
neste caso conversores eletrônicos, definição dos parâmetros de performance desejados, projeto
dos controladores e verificação, via simulação, dos controladores propostos.
1.3
Estrutura do trabalho
No capítulo 1 é realizada uma introdução do trabalho descrevendo os objetivos, a
metodologia e os principais temas discutidos ao longo dos demais capítulos.
No capítulo 2 é apresentada a topologia da planta em estudo, bem como as suas
características dinâmicas, isto é, as suas funções de transferências, necessárias para o controle
da topologia. Tais funções de transferência são verificadas via simulação.
No capítulo 3 são desenvolvidos os controladores a serem utilizados para as malhas
externas de tensão (controladores PI) e para as malhas internas de corrente (controladores
preditivos). Também é desenvolvido o PLL utilizado para sincronizar a senóide de referência
do conversor CC-CA com a tensão da rede elétrica e os sensores de tensão e corrente
necessários para o controle proposto.
No capítulo 4 os controladores desenvolvidos no capítulo 3 são verificados via
simulação no software PSIM a fim de atestar se os parâmetros de performance desejados foram
atendidos. Também são obtidas as principais formas de onda da topologia controlada e
verificado o comportamento desta para diversos níveis de carregamento.
No capítulo 5 é proposto o código na linguagem VHDL a ser implementado no
FPGA, sendo as suas diversas rotinas simuladas no software Modelsim e comparadas com os
14
resultados de simulação do código na linguagem C desenvolvido no capítulo 4 para o software
PSIM.
Por fim, no capítulo 6 são feitas as considerações finais sobre este trabalho, bem
como são dadas sugestões para trabalhos futuros.
15
2
PROCESSO EM ESTUDO
2.1
Introdução
Neste capítulo é apresentada a planta em estudo neste trabalho. Também é realizado
o dimensionamento dos componentes do circuito de potência, a definição da estratégia de
controle utilizada, o levantamento das funções de transferências relativas ao controle proposto
e a verificação de tais funções de transferências via simulação utilizando o software PSIM.
2.2
Topologia do conversor em estudo
O conversor em estudo é mostrado na figura 1.
Figura 1 – Topologia em estudo.
S2
Lb
VC
VC
VC
S5
S3
VS
CS
Lf
Cb
S1
Vrede
S4
GND
Conversor CC-CC
GND
S6
GND
Link CC
Conversor CC-CA
Fonte: Elaborada pelo Autor
Conforme pode-se perceber o conversor da figura 1 é formado por um conversor
CC-CC em cascata com um conversor CC-CA. O conversor CC-CC pode operar como elevador
(Boost) e abaixador (Buck) e o conversor CC-CA pode operar como inversor e retificador
monofásico. Portanto a topologia mostrada na figura 2 é bidirecional de corrente.
A modulação utilizada no conversor CC-CA é a SPWM unipolar que de acordo
com CARRAH, 2010 pp. 37 e BEZERRA, 2010 pp. 101 diminui o conteúdo harmônico da
corrente de saída e, consequentemente, requer um filtro menor.
16
2.3
Dimensionamento do circuito de potência
As especificações do projeto do circuito de potência são mostradas na tabela 1.
Tabela 1 – Parâmetros do projeto do circuito de potência.
Parâmetro
Valor
Tensão no barramento CC (Vs)
311 V
Tensão da rede (Vrede)
220 Vrms
Frequência da rede (f)
60 Hz
Tensão no Link CC (Vc)
400 V
Frequência de chaveamento (fs)
21 kHz
Potência nominal do conversor (P)
2 kW
Ripple de tensão no Link CC (∆Vc)
2%Vc
Ripple máximo no indutor de filtro Lf (∆ILmax)
Ripple máximo no indutor Boost Lb (ΔILb)
10%ILpk
50%ILbmed
Fonte: Elaborada pelo Autor
Para o dimensionamento dos componentes do conversor CC-CC utiliza-se as
equações 1 a 4, conforme exposto em BARBI e MARTINS, 2008 pp. 50, pp. 70-82.
ILbmed =
P
= 6,43 A
Vs
(1)
Db = 1 −
Vs
= 0,2225
Vc
(2)
Lb ≥
Vs . Db
= 1 mH
ΔILb . fs
(3)
Cs ≥
Vc
= 4,7 μF
31. Lb . f 2 . ΔVc . Vs
(4)
17
Para o dimensionamento dos componentes do conversor CC-CA utiliza-se as
equações 5 a 7, conforme exposto em NETO, BRITO, JOCA, NUNES e TORRICOBASCOPÉ, 2013.
ILpk =
2 .P
Vrede . √2
= 12,86 A
(5)
Lf ≥
0,25 . Vc
= 1,85 mH
2 . ∆ILmax . fs
(6)
Cb ≥
P
= 1,66 mF
2. π. f. ΔVc . Vc
(7)
Para a indutância de filtro Lf utilizou-se 2 mH e para a indutância Boost Lb utilizouse 1 mH. Para o capacitor do Link CC Cb utilizaram-se quatro capacitores em paralelo de
capacitância 470 μF com resistência série de 70 mΩ, totalizando uma capacitância de 1,88 mF
e uma resistência série de 17,5 mΩ e para o capacitor de entrada Cs utilizou-se um capacitor de
capacitância 680 μF com resistência série de 200 mΩ.
2.4
Dimensionamento das chaves S1 – S6
Inicialmente foram analisadas as chaves S1 e S2 referentes ao conversor CC-CC. A
máxima tensão sobre as chaves S1 e S2, denotada por VS1max e VS2max, é a tensão no Link CC,
isto é, são iguais a 400 V.
A corrente média na chave S1 e S2 são dadas nas equações 8 e 9, analisando-se o
período de chaveamento e considerando que a corrente no indutor não apresente ondulações.
Ts
IS1med
1
= ∫ iLb (t)dt = Db ILbmed = 1,43 A
Ts
(8)
0
Ts
IS2med
1
= ∫ iLb (t)dt = (1 − Db )ILbmed = 5 A
Ts
0
Sendo Ts o período de chaveamento.
(9)
18
Para o cálculo do valor eficaz da corrente nas chaves S1 e S2 procede-se de maneira
semelhante à realizada para o cálculo do valor médio, como mostrado nas equações 10 e 11.
Ts
IS1ef
1
= √ ∫ iLb (t)2 dt = √Db ILbmed = 3,03 A
Ts
(10)
0
Ts
IS2ef
1
= √ ∫ iLb (t)2 dt = √(1 − Db )ILbmed = 5,67 A
Ts
(11)
0
Para o cálculo do valor de pico, utiliza-se o valor médio da corrente nas chaves S1
e S2 juntamente com o valor de ondulação ΔILb, como mostrado nas equações 12 e 13.
IS1pk = IS1med +
∆ILb
= 1,43 + 2,5 = 3,83 A
2
(12)
IS2pk = IS2med +
∆ILb
= 5 + 2,5 = 7,5 A
2
(13)
De forma similar foi analisada a chave S3, haja vista que as chaves S4, S5 e S6 são
idênticas a chave S3. A máxima tensão VS3max sobre a chave S3 é a tensão do Link CC, isto é,
igual a 400 V.
A corrente média e a corrente eficaz na chave S3 são dadas, segundo CARRAH,
2010 pp. 49, pelas equações 14 e 15.
IS3med = ILpk (
1 √2Vrede
+
) = 3,30 A
2π
8Vc
(14)
2
IS3ef
ILpk
64 √2Vrede
√2Vrede
√3 (9 (
=
) + (
) + 12) = 16,06 A
24
Vc
π
Vc
(15)
19
A corrente de pico na chave S3 é, de forma similar a realizada para as chaves S1 e
S2 dada pela equação 16.
IS3pk = ILpk +
∆ILmax
= 12,86 + 1,286 = 13,5 A
2
(16)
Logo, selecionou-se a chave IRGP4062DPbF para as chaves S1 a S6. Tal chave
possui máxima tensão reversa de 600 V, máxima corrente de coletor direta de 48 A @ 25ºC e
24 A @ 100ºC e tensão VCE(on) típica de 1,65 V. Os tempos máximos de subida tr e de atraso
para o estado ligado da chave td(on) são iguais a 31 ns e 53 ns, respectivamente. De modo análogo
os tempos máximos de descida tf e de atraso para o estado desligado da chave td(off) são iguais
a 41 ns e 115 ns, respectivamente.
2.5
Estratégia de controle adotada
A estratégia de controle adotada para o conversor CC-CC baseia-se no exposto em
CHEN, PRÓDIC, ERICKSON e MAKSIMOVIC, 2003 pp. 411-419; HE, XU, 2007 pp. 14661471 e ZHOU, XU, WANG, MU, 2008 pp. 1309-1313. Adota-se uma estrutura com duas
malhas de controle, uma malha externa de tensão (lenta) e uma malha interna de corrente
(rápida). Para a malha externa utiliza-se um controlador Proporcional-Integral (PI) e para a
malha interna um controlador preditivo Deadbeat.
Para o conversor CC-CA utiliza-se o mesmo conceito adotado para o conversor CCCC, isto é, um controle com duas malhas sendo uma malha externa de tensão e uma malha
interna de corrente.
As estratégias de controle do conversor CC-CC e do conversor CC-CA são
mostradas na figura 2 e na figura 3, respectivamente.
As deduções das leis de controle dos controladores Deadbeat e dos controladores
PI serão apresentadas no capítulo 3, contudo definiu-se aqui a estratégia de controle utilizada a
fim de serem analisadas as funções de transferência necessárias para a realização do referido
controle.
20
Figura 2 – Estratégia de controle do conversor CC-CC.
ILb
Vs
Controlador
Deadbeat
(Preditivo)
ADC
Vc
PI
S1
DPWM
S2
Fonte: Elaborada pelo Autor
Figura 3 – Estratégia de controle do conversor CC-CA.
ILf
Vc
ADC
PI
Vrede
S3 , S4
Controlador
Deadbeat
(Preditivo)
DPWM
Controlador
Deadbeat
(Preditivo)
DPWM
S5 , S6
PLL
Controle Conversor CC-CA
Retificador
ILf
ADC
Vrede
S3 , S4
S5 , S6
PLL
Controle Conversor CC-CA
Inversor
Fonte: Elaborada pelo Autor
2.6
Funções de transferência do conversor
As funções de transferência necessárias para o controle da malha externa do
conversor CC-CC são mostradas nas equações 17 e 18. Seu desenvolvimento é baseado no
exposto em VORPÈRIAN, 1990 pp. 490-496 utilizando o modelo da chave PWM. A resistência
série do indutor foi desprezada.
GviBuck (s) =
v̂s (s)
|
îLb (s)
GviBuck (s) =
rCs Cs s + 1
r
1
(1 + RCs ) Cs s + R
o
o
̂ =0
̂c =d
v
(17)
21
Gvi Boost (s) =
v̂c (s)
|
îLb (s)
̂=0
̂s =d
v
(rCb Cb s + 1)(−(R o + rCb )s + R2o (1 − Db )2 )
1
Gvi Boost (s) = (
)
R o (1 − Db )
R o (1 − Db ) + rCb
(R o + rCb )Cb s2 +
s+1
R o (1 − Db ) + rCb
(18)
Os diagramas de bode das equações 17 e 18 são mostrados nas figuras 4 e 5,
respectivamente.
Os diagramas de Bode das figuras 4 e 5 foram traçados somente na região de baixas
frequências (entre 0,1 Hz e 200 Hz), pois a malha externa é lenta, logo não se faz necessário
analisar seu comportamento em altas frequências.
Figura 4 – Diagrama de Bode malha externa conversor CC-CC Buck.
Fonte: Elaborada pelo Autor
22
Figura 5 – Diagrama de Bode malha externa conversor CC-CC Boost.
Fonte: Elaborada pelo Autor
A função de transferência da malha externa do conversor CC-CA é deduzida
considerando o equilíbrio de carga no capacitor do Link CC, como proposto por BUSO e
MATTAVAELLI, 2006, conforme mostrado na equação 19.
Gvi Retificador (s) =
rCb Cb s + 1
v̂c (s) √2Vrede 2Vrede
=
îLf (s)
Vc
P (2Vrede + r ) C s + 1
Cb
b
P
(19)
O diagrama de bode da equação 19 é mostrado na figura 6. Como feito para os
diagramas das figuras 4 e 5, somente a região de baixas frequências é analisada, haja vista que
a malha de tensão deve ser lenta para não distorcer a referência de corrente, conforme exposto
por BUSO e MATTAVAELLI, 2006 pp. 142-144.
23
Figura 6 – Diagrama de Bode malha externa conversor CC-CA Retificador.
Fonte: Elaborada pelo Autor
As funções de transferência das malhas internas de corrente serão estudadas no
capítulo 3, haja vista que tais malhas devem ser analisadas diretamente no domínio de tempo
discreto, pois o controlador escolhido para tais malhas é o controlador Deadbeat existente
somente em sistemas discretos
2.7
Validação das funções de transferência
As funções de transferência foram validadas via simulação utilizando o software
PSIM. Os circuitos utilizados para realizar a validação do conversor CC-CC operando como
Buck e Boost e do conversor CC-CA operando como Retificador são mostrados na figura 7.
Nas figuras 8 e 9 têm-se os diagramas de bode do conversor CC-CC Buck e do
conversor CC-CC Boost, respectivamente, obtidos via simulação. Na figura 10 tem-se o
diagrama de bode do conversor CC-CA Retificador obtido via simulação.
24
Figura 7 – Conversor CC-CC e CC-CA circuitos para validação implementados no PSIM.
Lb
Rcarga
S2
ILb+iLb
Lb
S1
CS
VC
VC
Conversor CC-CC - Buck
S2
ILb+iLb
S1
Conversor CC-CC - Boost
S3
Rcarga
Lf
Cb
ILf+iLf
Vrede
S4
Conversor CC-CA - Retificador
Fonte: Elaborada pelo Autor
Figura 8 – Diagrama de Bode malha externa conversor CC-CC Buck via simulação.
Fonte: Elaborada pelo Autor
Cb
Rcarga
25
Figura 9 – Diagrama de Bode malha externa conversor CC-CC Boost via simulação.
Fonte: Elaborada pelo Autor
Figura 10 – Diagrama de Bode malha externa conversor CC-CA Retificador via simulação.
Fonte: Elaborada pelo Autor
26
Comparando os diagramas de bode das figuras 4, 5 e 6 com os diagramas de bode
das figuras 8, 9 e 10, respectivamente, tem-se que as funções de transferência representam de
forma adequada o conversor em estudo, podendo ser utilizadas no projeto do controle proposto
no capítulo 3.
2.8
Conclusão
Neste capitulo foram definidos os componentes do circuito de potência da planta
em estudo, bem como a estratégia de controle utilizada, sendo esta composta por duas malhas:
uma malha interna de corrente (rápida) e uma malha externa de tensão (lenta), sendo a malha
de corrente controlada por um controlador Deadbeat e a malha externa controlada por um
controlador PI. Também foram estudadas as funções de transferência referentes as malhas
externas do conversor CC-CC e do conversor CC-CA. Observou-se que as funções de
transferência obtidas coadunam com a validação realizada via simulação no software PSIM.
27
3
3.1
CONTROLE PROPOSTO
Introdução
Neste capítulo são definidos os sensores de tensão e corrente a serem utilizados.
Também serão projetados os controladores das malhas de tensão e corrente. Por fim será
projetado o PLL a ser utilizado.
3.2
Sensores de tensão
Os sensores de tensão adotados são sugeridos por CARRAH, 2010 pp. 81-90 e
também utilizados por BEZERRA, 2010 pp. 197. A topologia do sensor utilizado no barramento
CC e no Link CC é mostrada na figura 11.
Figura 11 – Topologia do sensor de tensão do barramento CC e do Link CC.
Rv2
Cv2
Tensão
Rv1
+
-
+
-
Rv3
GND
Rv1
saída
Cv4
Rv2
Cv2
Fonte: Elaborada pelo Autor
A função de transferência do sensor da figura 11 é dada pela equação 20. Percebese que tal sensor possui dois polos de filtro que devem ser alocados de tal forma a atenuar o
efeito de aliasing durante a amostragem da tensão.
28
Hv1 (s) =
R v2
1
R v1 (sR v2 Cv2 + 1)(sR v3 Cv4 + 1)
(20)
A topologia do sensor utilizado na rede elétrica é mostrada na figura 12.
Figura 12 – Topologia do sensor de tensão da rede elétrica.
Rv2
Cv2
Vcc
Rv4
Fase
Rv1
+
-
+
-
Rv3
Neutro
Rv1
saída
Cv4
Rv2
Cv2
Fonte: Elaborada pelo Autor
A função de transferência do sensor da figura 12 é dada pela equação 21. De forma
similar à função de transferência da equação 20, este sensor possui dois polos de filtro que
devem ser alocados de tal forma a atenuar o efeito de aliasing durante a amostragem da tensão.
Hv2 (s) =
R v2
1
R v1 (sR v2 Cv2 + 1)(sR v3 R v4 Cv4 + R v4 + R v3 )
(21)
O valor de Vcc do sensor de tensão alternada (figura 12) não influencia na função
de transferência, sendo utilizado para dar um offset na tensão amostrada, a fim de adequá-la ao
Conversor A/D utilizado.
29
3.3
Sensores de corrente
Os sensores de corrente utilizados tanto para o conversor CC-CC como para o
conversor CC-CA possuem a mesma topologia mostrada na figura 13.
Figura 13 – Topologia do sensor de corrente.
ACS756
4
I
3
+
-
Rf
Cf
2
+
-
Ri1
saída
Ci1
5
1
Cbyp
Vcc
Fonte: Elaborada pelo Autor
O circuito integrado ACS756 da figura 13 é um sensor linear de efeito Hall de
corrente com isolação de tensão de 3 KVrms e baixa resistência de condução. A descrição dos
pinos é seguinte: O pino 1 é a alimentação do circuito integrado ACS756, os pinos 2 e 3 são o
terra e o sinal de saída, respectivamente, e os pinos 4 e 5 são as entradas positiva e negativa da
corrente a ser amostrada, respectivamente.
O sensor ACS756 pode ler correntes entre -50 A e 50 A, sendo o seu sinal de saída
uma tensão compreendida entre 0 V e 5 V. A relação entre a corrente amostrada e a tensão de
saída do sensor é linear, conforme mostrado no gráfico da figura 14.
30
Figura 14 – Corrente amostrada vs tensão de saída ACS756.
Fonte: Elaborada pelo Autor
O datasheet do ACS756 recomenta uma capacitância de 0,1 µF para o capacitor
CBYP da figura 13. A função de transferência do sensor de corrente da figura 13 é mostrada na
equação 22.
Hi (s) =
20
(sR i1 Ci1 + 1)(sR f Cf + 1)
(22)
Conforme visto anteriormente, este sensor possui dois polos de filtro que devem ser
alocados de tal forma a atenuar o efeito de aliasing durante a amostragem da corrente.
3.4
Conversores A/D
O conversor A/D utilizado é o AD9201 mostrado na figura 15.
31
Figura 15 – Encapsulamento do conversor AD9201.
Fonte: Datasheet AD9201
O AD9201 é um conversor A/D de 10 bits, com duas entradas analógicas que
podem ser utilizadas para realizar amostragens simultâneas a uma taxa de até 20 Msps. Pode
operar com tensão de alimentação de 2,7 V a 5,5 V. Seu encapsulamento é compactado do tipo
SSOP com 28 pinos. A descrição da funcionalidade de cada um dos pinos é dada na tabela 2.
Tabela 2 – Descrição dos pinos do AD9201.
Pino
Descrição
1
Terra digital
2
Alimentação digital
3
Bit 0 (LSB)
4
Bit 1
5
Bit 2
6
Bit 3
7
Bit 4
8
Bit 5
32
Tabela 2 – Descrição dos pinos do AD9201 (Continuação).
Pino
Descrição
9
Bit 6
10
Bit 7
11
Bit 8
12
Bit 9 (MSB)
13
Select, 1 – saída do canal I; 0 – saída do canal Q
14
Clock
15
Sleep, 1 – baixo consumo; 0 – consumo normal
16
Canal I entrada A
17
Canal I entrada B
18
Referência positiva do canal I
19
Referência negativa do canal I
20
Terra analógico
21
Seleção da referência
22
Saída da referência interna
23
Alimentação analógica
24
Referência positiva do canal Q
25
Referência negativa do canal Q
26
Canal Q entrada A
27
Canal Q entrada B
28
Chip select, 1 – alta impedância, 0 – operação normal
Fonte: Elaborada pelo Autor
Na figura 16 tem-se o gráfico de tempo retirado do datasheet do conversor A/D em
estudo. Os tempos tOD e tMD são o tempo de atraso dos dados de saída e o tempo de atraso da
seleção do MUX de saída, respectivamente. Tais tempos valem 11 ns e 7 ns, respectivamente,
totalizando 18 ns.
33
Figura 16 – Gráfico de tempo do conversor AD9201.
Fonte: Datasheet AD9201
3.5
Projeto dos sensores
Para realizar o projeto dos sensores é necessário definir a frequência de
amostragem. Segundo BUSO e MATTAVAELLI, 2006 pp. 38-40 recomenda-se que a
frequência de amostragem seja sincronizada com a frequência do PWM, sendo normalmente a
frequência de amostragem igual ou o dobro da frequência de chaveamento. Neste trabalho foi
utilizado o dobro da frequência de chaveamento, como mostrado na equação 23.
famos = 2fs = 42 kHz
(23)
Uma vez definida a frequência de amostragem pode-se proceder com o projeto dos
circuitos dos sensores. Para o sensor do barramento CC deseja-se alocar os polos do filtro em
wp1 e wp2, conforme mostrado em 24 e 25.
1
rad
wp1 = 2π famos = 131946,8915
2
s
(24)
1
rad
wp2 = 2π famos = 131946,8915
2
s
(25)
34
Deseja-se que o sensor do barramento CC possa realizar leituras entre 0 V e 400 V,
transformando-as em leituras compatíveis com o circuito de controle de (0 V a 5 V), portanto
o ganho do primeiro amplificador operacional da figura 11 é dado na equação 26.
R v2 400 V
=
= 0,0125
R v1
5V
(26)
Fazendo Rv2, Rv3 iguais a 10 kΩ, pode-se calcular o valor de Rv1 com base no ganho
da equação 27.
R v1 =
10 kΩ
= 800 kΩ
0,0125
(27)
A resistência Rv1 é dividida em resistências menores dispostas em série a fim de
distribuir a potência dissipada, portanto foram adotadas duas resistências de 100 kΩ e quatro
resistências de 150 kΩ. O cálculo das potências dissipadas em cada resistência é mostrada na
equações 28 e 29.
P100kΩ =
R v1
× 400 V × 100 kΩ = 24,39 mW
R v1 + R v2
(28)
P150kΩ =
R v1
× 400 V × 150 kΩ = 36,58 mW
R v1 + R v2
(29)
Portanto pode-se utilizar resistores comerciais de 1/8 W.
Os capacitores Cv2 e Cv4 são determinados a partir das equações 30 e 31.
Cv2 =
1
= 0,758 nF
wp1 R v2
(30)
Cv4 =
1
= 0,758 nF
wp2 R v3
(31)
35
Portanto o capacitor utilizado para Cv2 e Cv4 é de 680 pF. O circuito projetado é
mostrado na figura 17.
Figura 17 – Sensor do barramento CC.
10k
680p
Vs+
100k
100k
150k
150k
150k
150k
+
-
100k
100k
150k
150k
150k
+
-
10k
GND
150k
Vs
680p
10k
680p
Fonte: Elaborada pelo Autor.
O diagrama de Bode do circuito da figura 17 é mostrado na figura 18.
Figura 18 – Diagrama de Bode do sensor do barramento CC.
Fonte: Elaborada pelo Autor.
De forma análoga foram projetados os sensores de tensão do Link CC e da rede
elétrica. Os polos wp1 e wp2 permaneceram os mesmos, alterando-se somente o ganho do sensor.
O sensor do Link CC deve ler tensões entre 0 V e 500 V e o sensor da rede elétrica tensões entre
-400 V e 400 V.
36
O sensor do Link CC e o seu diagrama de Bode são mostrados nas figuras 19 e 20,
respectivamente.
Figura 19 – Sensor do Link CC.
10k
680p
Vc+
220k
180k
150k
150k
150k
150k
+
-
220k
180k
150k
150k
150k
+
-
10k
GND
150k
Vc
680p
10k
680p
Fonte: Elaborada pelo Autor.
Figura 20 – Diagrama de Bode do sensor do Link CC.
Fonte: Elaborada pelo Autor.
O sensor da rede elétrica e o seu diagrama de Bode são mostrados nas figuras 21 e
22, respectivamente.
37
Figura 21 – Sensor da rede elétrica.
10k
680p 5V
10k
Fase
100k
100k
150k
150k
150k
150k
+
-
100k
100k
150k
150k
150k
+
-
10k
Neutro
150k
Vo
680p
10k
680p
Fonte: Elaborada pelo Autor.
Figura 22 – Diagrama de Bode do sensor da rede elétrica.
Fonte: Elaborada pelo Autor.
Os sensores de corrente são projetados alocando-se um dos seus polos entre um
terço e um quarto da frequência de amostragem e o outro polo em wp1. Fazendo Rf e Ri1 iguais
a 10 kΩ, tem-se que Cf é definido igual a 8,2 nF e Ci1 pode ser calculado de forma análoga ao
exposto em 30. Portanto o capacitor utilizado para Ci1 é de 680 pF.
O circuito projetado é mostrado na figura 23 e seu diagrama de Bode é dado na
figura 24.
38
Figura 23 – Sensor de corrente.
Saída do sensor
ACS756
+
-
10k
+
-
10k
saída
8,2n
680p
Fonte: Elaborada pelo Autor.
Figura 24 – Diagrama de Bode do sensor de corrente.
Fonte: Elaborada pelo Autor.
3.6
Seleção do dispositivo DSP
O processamento digital de sinais, segundo KUO e LEE, 2001 pp. 1-3, consiste na
representação digital de sinais e uso de dispositivos digitais para analisar, modificar e extrair
informações destes sinais.
As principais vantagens do uso de DSPs no controle de processos são listadas a
seguir:
a) Flexibilidade: haja vista que é possível modificar funções de um sistema DSP
atualizando a nível de software sem a necessidade de atualizar o hardware do
controlador;
39
b) Fácil reprodução: seu código pode ser utilizado em diversos sistemas DSPs
sendo garantido que sua performance será a mesma, diferentemente de sistemas
analógicos, pois estes possuem dependências com a precisão e tolerância dos
componentes utilizados;
c) Durabilidade: a memória e a lógica implementada em sistemas DSPs não se
degradam com o passar do tempo, diferentemente dos componentes de sistemas
analógicos;
d) Complexidade: sistemas digitais permitem controladores mais robustos, haja
vista que a sua complexidade é mensurada pelo seu algoritmo e não por
componentes físicos;
e) Funções específicas: os sistemas DSPs possuem funções específicas para o
processamento digital de sistemas de controle, como por exemplo funções de
análise no domínio da frequência (transformada de Fourier, transformada rápida
de Fourier).
Os elementos básicos de um sistema DSP são: amplificador para tornar as
grandezas analógicas compatíveis com o nível de processamento digital; filtro anti-aliasing na
entrada da amostragem do sinal analógico; conversor A/D (ADC) para converter as grandezas
analógicas em grandezas digitais e segurar tal valor convertido durante o período de
amostragem; sistema para processar o sinal de entrada digitalizada e variáveis internas;
conversor digital analógico para gerar o sinal de controle da planta; filtro para reconstrução
analógica do sinal gerado e amplificador para tornar o sinal de controle compatível com as
grandezas da planta.
O diagrama de blocos completo de um sistema DSP pode ser visto na figura 25.
Analisando tal diagrama de blocos percebe-se a versatilidade de sistemas DSPs no controle de
processos. Pois, conforme citado anteriormente, os controladores projetados não mais são
circuitos analógicos de alta complexidade e susceptibilidade a erros, mas sim linhas de código
de fácil entendimento e implementação.
40
Figura 25 – Diagrama de blocos do sistema DSP.
Fonte: Adaptado de KUO, S. M.; LEE, B. H., 2001 pp. 3
A estratégia de controle que foi adotada neste trabalho requer um rápido
processamento, haja vista que, como será visto no tópico 3.7, a velocidade de processamento
dos cálculos dos controladores influencia diretamente na resposta do controle proposto. Logo,
será utilizado um dispositivo FPGA, pois este trata-se de uma solução via hardware, isto é,
diferentemente dos dispositivos DSPs convencionais o FPGA não executa linhas de código
(solução via software), mas sim sintetiza um circuito digital referente ao código proposto,
fazendo com que a sua resposta seja mais rápida.
O dispositivo utilizado é o kit de desenvolvimento DE1 Board do fabricante Altera
mostrado na figura 26.
O kit de desenvolvimento mostrado na figura 26 possui as especificações mostradas
na tabela 3.
Tabela 3 – Especificações do kit de desenvolvimento DE1 Board.
Principais Especificações
Altera Cyclone II 2C20 FPGA com 20000 blocos de Elementos Lógicos;
Dispositivo para configuração serial da Altera (EPCS4) para Cyclone II 2C20;
Circuito USB Blaster on-board para programação e comunicação;
Suporte a programação em modo JTAG e modo AS;
Memória SDRAM de 8 Mbyte (1M x 4 x 16);
41
Tabela 3 – Especificações do kit de desenvolvimento DE1 Board (Continuação).
Principais Especificações
Memória Flash de 4 Mbyte;
Memória SRAM de 512 Kbyte (256Kx16);
Soquete para cartão SD;
4 Botões sem retenção e 10 chaves de dois estados;;
8 leds verdes e 10 leds vermelhos;;
4 displays de sete seguimentos;
Osciladores de 50, 24 e 27 MHz, e fonte de oscilador externo;
Codec de audio de 24 bits, com plug de line-in, line-out e microfone;
Conversores Digital/Analógico (4-bit por canal) para comunicação VGA e conector de saída
em padrão VGA;
Circuito Integrado de interfaceamento e conector para comunicação serial RS-232;
Conector PS/2 para mouse/teclado;
Dois barramentos de 40-pin de uso gera.
Fonte: http://www.terasic.com.tw/
Figura 26 – Kit de desenvolvimento DE1 Board.
Fonte: http://www.terasic.com.tw/
42
3.7
Projeto dos controladores
Inicialmente foi realizado o projeto dos controladores das malhas externas de tensão
do conversor CC-CC e do conversor CC-CA. Tais controladores são projetados utilizando as
funções de transferência levantadas no capítulo 2. A configuração das malhas externas de tensão
é mostrada na figura 27.
O projeto dos compensadores PI é realizado no domínio da frequência com as
especificações de frequência de cruzamento de ganho, margem de ganho e margem de fase. Os
ganhos dos sensores e do ADC não são considerados, haja vista que estes são compensados no
código implementado.
Segundo OGATA, 2002 pp. 461 recomenda-se que em sistemas de controle estáveis
a margem de fase deve ficar entre 30º e 60º e a margem de ganho deve ser maior do que 6dB.
Figura 27 – Malha externa de tensão.
Fonte: Elaborada pelo Autor
Logo, todos os compensadores PI projetados foram especificados para obter uma
margem de fase de 60º e uma margem de ganho mínima de 6 dB. O script elaborado em
MATLAB para o projeto dos coeficientes dos compensadores PI consta no ANEXO C deste
trabalho.
Para o conversor CC-CC operando como Buck tem-se na figura 28 a resposta ao
degrau unitário, o lugar geométrico das raízes, o diagrama de Nyquist e o diagrama de Bode da
planta sem compensador.
43
Observando os gráficos da figura 28 tem-se que apesar do sistema ser estável, como
visto pelo diagrama de Nyquist e pelo diagrama de Bode, a sua resposta é muito lenta, o seu
valor em regime permanente e o seu erro estacionário devem ser ajustados, como pode ser visto
pela resposta ao degrau unitário e pelo lugar geométrico das raízes.
Logo, será utilizado um controlador PI para ajustar o ganho em regime e anular o
erro estacionário.
Figura 28 – Resposta do conversor CC-CC operando como Buck sem controlador de tensão.
Fonte: Elaborada pelo Autor
Para o conversor CC-CC operando como Buck deseja-se uma frequência de
cruzamento de ganho inferior a frequência de corte do filtro LC de saída do conversor, portanto
adotou-se o valor de 20% da frequência do filtro LC. O controlador projetado é dado pela
equação 32.
CvBuck (s) = 0,13 +
25,5
s
(32)
44
Na figura 29 tem-se a resposta ao degrau unitário, o lugar geométrico das raízes, o
diagrama de Nyquist e o diagrama de Bode da planta com compensador.
Figura 29 – Resposta do conversor CC-CC operando como Buck com controlador de tensão.
Fonte: Elaborada pelo Autor
Observa-se na figura 29 que os parâmetros de performance na frequência foram
atingidos: margem de fase de 60º, margem de ganho infinita e frequência de cruzamento de
ganho de 38,6 Hz. O sobressinal da resposta ao degrau unitário foi de 21% com tempo de
assentamento de 36,6 ms.
Para o conversor CC-CC operando como Boost tem-se na figura 30 a resposta ao
degrau unitário, o lugar geométrico das raízes, o diagrama de Nyquist e o diagrama de Bode da
planta sem compensador.
Observando os gráficos da figura 30 tem-se que, similar ao caso anterior, o sistema
é estável, porém extremamente lento, possui erro estacionário não nulo e o seu valor em regime
permanente necessita ser ajustado. Logo será utilizado um controlador PI.
45
Figura 30 – Resposta do conversor CC-CC operando como Boost sem controlador de tensão.
Fonte: Elaborada pelo Autor
Para o conversor CC-CC operando como Boost deseja-se uma frequência de
cruzamento de ganho de 20 Hz, haja vista que segundo SOUZA, 2000 e BUSO e
MATTAVAELLI, 2006 pp. 144 a frequência de cruzamento do compensador da malha de
tensão do Link CC deve ser inferior a frequência da rede a fim de não distorcer a referência de
corrente do inversor. O controlador projetado é mostrado na equação 33.
CvBoost (s) = 0,255 +
20,8
s
(33)
Na figura 31 tem-se a resposta ao degrau unitário, o lugar geométrico das raízes, o
diagrama de Nyquist e o diagrama de Bode da planta com compensador.
46
Figura 31 – Resposta do conversor CC-CC operando como Boost com controlador de tensão.
Fonte: Elaborada pelo Autor
Observa-se na figura 31 que os parâmetros de performance na frequência foram
atingidos: margem de fase de 60º, margem de ganho infinita e frequência de cruzamento de
ganho de 20 Hz. O sobressinal da resposta ao degrau unitário foi de 22,6% com tempo de
assentamento de 71,6 ms.
Para o conversor CC-CA operando como Retificador tem-se na figura 32 a resposta
ao degrau unitário, o lugar geométrico das raízes, o diagrama de Nyquist e o diagrama de Bode
da planta sem compensador.
Observando os gráficos da figura 32 tem-se que, assim como no conversor CC-CA
operando como Retificador, o sistema é estável, porém extremamente lento, possui erro
estacionário não nulo e o seu valor em regime permanente deve ser ajustado. Logo será utilizado
um controlador PI.
47
Figura 32 – Resposta do conversor CC-CA operando como Retificador sem controlador de
tensão.
Fonte: Elaborada pelo Autor
Para o conversor CC-CA operando como Retificador deseja-se uma frequência de
cruzamento de ganho de 10 Hz, pelas mesmas razões expostas para o compensador do
conversor Boost. O controlador projetado é mostrado na equação 34.
CvRetificador (s) = 0,0585 +
3,18
s
(34)
Na figura 33 tem-se a resposta ao degrau unitário, o lugar geométrico das raízes, o
diagrama de Nyquist e o diagrama de Bode da planta com compensador.
48
Figura 33 – Resposta do conversor CC-CA operando como Retificador com controlador de
tensão.
Fonte: Elaborada pelo Autor
Observa-se na figura 31 que os parâmetros de performance na frequência foram
atingidos: margem de fase de 60º, margem de ganho infinita e frequência de cruzamento de
ganho de 10 Hz. O sobressinal da resposta ao degrau unitário foi de 19,4% com tempo de
assentamento de 129 ms.
Os controladores projetados nas equações 34, 35 e 36 são controladores analógicos,
sendo necessário implementá-los digitalmente. Existem inúmeras técnicas para realizar a
emulação dos controladores analógicos, a utilizada neste trabalho é a sugerida por SUNG, 2009
pp. 113. Tal método é chamado de método da diferença com um passo atrás.
Aplicando o método da diferença com um passo atrás pode-se escrever um
controlador PI digital dado um controlador PI analógico e o período de amostragem Tamos, como
mostrado na equação 35.
C(s) = K p +
Ki
1
⇒ C(z) = K p + K i Tamos
s
1 − z −1
(35)
49
Aplicando a equação 35 nas equações 32, 33 e 34 tem-se os controladores digitais
das malhas de tensão externa, conforme mostrado nas equações 36, 37 e 38.
CvBuck (z) = 0,13 +
25,5
1
1
= 0,13 + 0,00060714
−1
42000 1 − z
1 − z −1
CvBoost (z) = 0,255 +
20,8
1
1
= 0,255 + 0,00049524
−1
42000 1 − z
1 − z −1
CvRetificador (z) = 0,0585 +
3,18
1
1
=
0,0585
+
0,00007571
42000 1 − z −1
1 − z −1
(36)
(37)
(38)
Para o projeto dos controladores deadbeats das malhas internas de corrente do
conversor CC-CC utiliza-se uma portadora triangular, conforme sugerido em CHEN, PRÓDIC,
ERICKSON e MAKSIMOVIC, 2003 pp. 411-419 para aplicações cujo controle de corrente é
realizado através de valores médios. A fim de minimizar o atraso computacional utiliza-se a
técnica sugerida por HE e XU, 2007 pp. 1466-1471 e por ZHOU, XU, WANG, e MU, 2008 pp.
1309-131. Tal técnica consiste em atualizar a razão cíclica no mesmo período de chaveamento
que ocorre a amostragem.
Logo, existe um intervalo de valores que a razão cíclica pode assumir, conforme
mostrado na equação 39, pois deve-se considerar o tempo necessário para amostragem e cálculo
computacional dos controladores.
td
Ts − t d
<d<
Ts
Ts
(39)
Sendo Ts o período de chaveamento e td o atraso computacional. O comportamento
da corrente no indutor do conversor CC-CC é mostrado na figura 34.
50
Figura 34 – Forma de onda da corrente no indutor Lb do conversor CC-CC.
TS
iLb(n+1)
iLb(n) i
m1
iref
m2
d(n)TS/2
d'(n)TS d(n)TS/2
Fonte: Elaborada pelo Autor
Observa-se na figura 34 que iLb(n) é a corrente amostrada no instante “n” no indutor
Lb, d(n) é a razão cíclica do instante “n” e iref a corrente de referência por valores médios. Logo,
analisando a forma de onda da figura 34, tem-se que a corrente média no indutor Lb pode ser
dada pela equação 40.
|iLb (n)| = iLb (n) + m1
d(n)Ts
dn Ts
− m2 (1 − d(n))Ts + m1
2
2
(40)
Isolando o valor da razão cíclica da equação 40, tem-se a lei de controle do
conversor CC-CC exposta na equação 41.
d(n) =
|iLb (n)| − iLb (n)
m2
+
(m1 + m2 )Ts
m1 + m2
(41)
Fazendo |iLb(n)| igual a referência iref, tem-se a equação 42.
d(n) =
iref − iLb (n)
m2
+
(m1 + m2 )Ts m1 + m2
(42)
51
Os valores dos coeficientes angulares m1 e m2 dependem da operação do conversor
CC-CC, conforme dado por CHEN, ERICKSON e MAKSIMOVIC, 2007 pp. 411-419 e
reproduzido na tabela 4.
Tabela 4 – Coeficientes angulares
Conversor Buck
m1 =
Conversor Boost
Vc − Vs
Lb
m2 =
m1 =
Vs
Lb
m2 =
Vs
Lb
Vc − Vs
Lb
Fonte: Elaborada pelo autor
De forma análoga a realizada ao conversor CC-CC, a lei de controle da malha de
corrente foi deduzida para o conversor CC-CA. Inicialmente deve-se estudar o comportamento
da corrente no indutor Lf do conversor CC-CA, para tal tem-se o circuito de grandes sinais e a
forma de onda da corrente apresentados na figura 35, segundo BUSO, MATTAVELLI, 2006
pp. 66.
Figura 35 – (a) Circuito equivalente (b) Forma de onda da corrente no indutor Lf do conversor
CC-CA.
TS
Lf
iLf
Vc
i
Vrede
Iref
iLf
Vc
Vc
t
nTS
(a)
Fonte: Elaborada pelo Autor
(n+1)TS
(b)
52
̅c são os valores médios da corrente no indutor
Observa-se na figura 35 que i̅Lf e V
Lf e da tensão de saída do inversor, respectivamente, e Vrede e Iref são a tensão da rede elétrica e
a corrente de referência, respectivamente. Analisando o circuito e a forma de onda apresentada
na figura 35 pode-se escrever a equação 43.
i̅Lf (n + 1) = i̅Lf (n) +
Ts
̅ (n) − Vrede (n))
(V
Lf c
(43)
̅c na equação 43, como consta na equação
Pode-se isolar o sinal a ser controlado V
44.
̅c (n) =
V
Lf
(i̅ (n + 1) − i̅Lf (n)) + Vrede (n)
Ts Lf
(44)
Logo, normalizando a equação 44 em termos do valor instantâneo Vc da tensão no
Link CC, pode-se deduzir a lei de controle da malha de corrente do conversor CC-CA, conforme
exposto na equação 45.
m(n) =
̅c (n)
V
Lf
Vrede (n)
=
(iref − i̅Lf (n)) +
Vc (n) Vc (n)Ts
Vc (n)
(45)
Como este controlador atualiza a razão cíclica no mesmo período de chaveamento
que ocorreu a amostragem, têm-se também os valores máximo e mínimo que o sinal modulador
pode assumir. Semelhante a restrição da equação 39, pode-se escrever a restrição apresentada
na expressão 46.
td
Ts − t d
≤ |m(n)| ≤
Ts
Ts
(46)
Logo, observando as equações 42 e 45, juntamente com a tabela 4, pode-se escrever
as leis de controle da malha de corrente do conversor CC-CC operando como Buck, Boost e do
conversor CC-CA, conforme mostrado nas equações 47, 48 e 49, respectivamente.
53
d(n) =
21
Vs (n)
(iref − iLb (n)) +
Vc (n)
Vc (n)
(47)
d(n) =
21
Vc (n) − Vs (n)
(iref − iLb (n)) +
Vc (n)
Vc (n)
(48)
m(n) =
3.8
42
Vrede (n)
(iref − i̅Lf (n)) +
Vc (n)
Vc (n)
(49)
Tempo morto das chaves S3-S6
A implementação de tempo morto no comando das chaves pertencentes a um
mesmo braço do conversor CC-CA (S3-S4 e S5-S6) se faz necessário a fim de evitar o curtocircuito do capacitor Cc do Link CC. Tendo em vista os parâmetros da chave IRGP4062DPbF
mostrados no capítulo 2, tem-se que um tempo morto de 200 ns é suficiente para evitar um
curto-circuito indevido do capacitor Cc.
De acordo com BUSO e MATTAVELLI, 2006 pp. 76-78 tem-se que a adição de
tempo morto influencia diretamente a corrente de saída do conversor CC-CA ao utilizar-se o
controlador Deadbeat sendo necessária sua compensação quando o tempo morto é superior a
5% do período de chaveamento. Contudo o tempo morto de 200 ns utilizado neste trabalho
representa somente 0,42% do período de chaveamento, conforme mostrado na equação 50.
Logo, os seus efeitos podem ser desprezados.
200 ns
× 100% = 0,42 %
47,62 μs
3.9
(50)
Circuito PLL
O circuito PLL utilizado neste trabalho foi proposto por SASSO, SOTELO,
FERREIRA, WATANABE, AREDES e BARBOSA, 2002 pp. 480-485, sendo baseado na
teoria das potências reais e imaginárias instantâneas. No referido trabalho são propostos dois
circuitos PLL: um baseado na potência real instantânea denominado de p-PLL e outro baseado
na potência imaginária instantânea denominado q-PLL. Como deseja-se que o sinal de saída do
PLL esteja em sincronia com a rede elétrica, optou-se pelo circuito q-PLL mostrado na figura
36.
54
Figura 36 – Circuito q-PLL.
Fonte: Elaborada pelo Autor
Analisando a figura 36 percebe-se que o circuito q-PLL proposto é um circuito
originalmente destinado para aplicações em sistemas trifásicos. Contudo, a aplicação deste
trabalho é em sistemas monofásicos. Sendo assim, a transformada de Clarke não é utilizada,
conforme apresentado no circuito da figura 37.
Figura 37 – Circuito q-PLL modificado.
Fonte: Elaborada pelo Autor
Entretanto, ainda conforme apresentado no circuito da figura 37, apesar de não ser
utilizada a transformada de Clarke, as tensões no sistema de coordenadas αβ são necessárias
55
para o correto funcionamento do PLL. Portanto, o sinal “alfa” é gerado como uma duplicata da
tensão amostrada da rede elétrica e o sinal “beta” é gerado como uma cópia do sinal alfa
atrasado em 90º. Haja vista que a taxa de amostragem do sistema é a mesma utilizada para os
controladores, isto é, 42 kHz, tem-se que em um ciclo de rede são realizadas 700 amostragens,
conforme mostrado na equação 51.
42 kHz
= 700 amostras
60 Hz
(51)
Logo, para que seja efetuado o atraso de 90º entre o sinal “alfa” e o sinal “beta”
deve-se atrasar em 175 amostras o sinal “beta” em relação ao sinal “alfa”.
Os ganhos Kp e Ki do controlador PI da figura 37 os mesmos utilizados por SASSO,
SOTELO, FERREIRA, WATANABE, AREDES e BARBOSA, 2002, conforme mostrado nas
equações 52 e 53, levando-se em conta a taxa de amostragem.
K p = 120
(52)
K i = 15000Tamos =
15000
= 0,35714286
42000
(53)
3.10 Conclusão
Neste capítulo foram definidos e projetados os sensores de tensão e corrente
utilizados. Também foram selecionados o conversor A/D e o dispositivo DSP (FPGA) a ser
utilizado, sendo o principal critério de seleção a velocidade de conversão e processamento, haja
vista que a performance do controle projetado está intrinsicamente relacionada ao atraso
computacional gerado pela conversão e pelo processamento computacional do controle digital.
Os efeitos da utilização do tempo morto nas chaves do conversor CC-CA foram discutidos e
conclui-se que estes podem ser desprezados, haja vista que o tempo morto presenta menos de
5% do período total de chaveamento. Por fim, foi discutido o circuito de sincronismo (q-PLL)
a ser utilizado.
56
4
4.1
SIMULAÇÃO DO CONTROLE
Introdução
Neste capítulo é realizada a simulação do controle digital proposto. Inicialmente é
explicado como os controladores projetados no capítulo 3 com coeficientes reais são
representados internamente no FPGA com coeficientes inteiros (ponto fixo). Em seguida é
realizada a simulação computacional com o auxílio do software PSIM a fim de verificar a
performance do controle e obter as formas de onda da planta em estudo, bem como observar o
seu comportamento para diversos níveis de carga.
4.2
Aritmética de Ponto Fixo
O FPGA selecionado para esta aplicação não sintetiza somente circuitos digitais
com variáveis inteiras. Portanto faz-se necessário utilizar uma notação para representar os
coeficientes reais dos controladores projetados através de números inteiros, para tal utiliza-se a
notação Q (ou notação para números fracionários).
Inicialmente os controladores projetados no capítulo 3 devem ser escritos na forma
de equação das diferenças. Os controladores da malha externa de tensão apresentados nas
equações 36, 37 e 38 são representados pelas equações das diferenças mostradas em 54, 55 e
56, respectivamente.
up (n) = 0,13e(n)
uvBuck (n) = up (n) + ui (n), com {
ui (n) = 0,00060714e(n) + ui (n − 1)
(54)
up (n) = 0,255e(n)
ui (n) = 0,00049524e(n) + ui (n − 1)
(55)
uvBoost (n) = up (n) + ui (n), com {
up (n) = 0,0585e(n)
uvRetificador (n) = up (n) + ui (n), com {
ui (n) = 0,00007571e(n) + ui (n − 1)
(56)
Sendo u(n) o sinal de controle, up(n) o sinal de controle proporcional, ui(n) o sinal
de controle integral e e(n) o sinal de erro.
57
Os controladores da malha interna de corrente apresentados nas equações 47, 48 e
49 são reescritos nas equações 57, 58, 59 e 60 em termos das saídas dos controladores da malha
externa de tensão.
dBuck (n) =
21
21
Vs (n)
uvBuck (n) −
iLb (n) +
Vc (n)
Vc (n)
Vc (n)
(57)
dBoost (n) =
21
21
Vc (n) − Vs (n)
uvBoost (n) −
iLb (n) +
Vc (n)
Vc (n)
Vc (n)
(58)
42
42
Vrede (n)
iref −
i̅Lf (n) +
̅c (n)
Vrede (n)
Vrede (n)
V
(59)
mInversor (n) =
mRetificador (n) =
42
42
Vrede (n)
uvRetificador (n) −
i̅Lf (n) +
̅c (n)
Vrede (n)
Vrede (n)
V
(60)
Por fim, tem-se o controlador PI do circuito q-PLL utilizando as constantes
apresentadas em 52 e 53, como mostrado na equação 61.
uPLL (n) = up (n) + ui (n), com {
up (n) = 120e(n)
ui (n) = 0,35714286e(n) + ui (n − 1)
(61)
Uma vez determinadas todas as equações das diferenças dos controladores
propostos deve-se converter os valores reais em valores de ponto fixo. Neste trabalho optou-se
pela utilização da notação Q. Tal notação consiste em representar uma grandeza real por uma
quantidade fixa de bits para a parte fracionária e para a parte inteira da grandeza representada.
Optou-se pela notação Q0.15 sinalizada, isto é, utiliza-se 0 bits para representar a parte inteira,
15 bits para representar a parte fracionária e 1 bit para sinal.
Os coeficientes reais das equações 54 a 61 representadas em notação Q0.15 são
mostradas nas tabelas 5, 6 e 7.
58
Tabela 5 – Coeficientes em notação Q0.15 da malha de tensão
Conversor
Buck
Boost
Retificador
Valor Real
Malha externa de tensão
Valor
Norma
normalizado
Q0.15
Erro
0,13
1
0,13
4260
0,0038 %
0,00060714
1
0,00060714
20
0,5290 %
0,255
1
0,255
8356
0,0019 %
0,00049524
1
0,00049524
17
4,7571 %
0,0585
1
0,0585
1917
0,0038 %
0,00007571
1
0,00007571
3
20,9187 %
Q0.15
Erro
Fonte: Elaborada pelo autor
Tabela 6 – Coeficientes em notação Q0.15 da malha de corrente
Malha interna de corrente
Valor
Conversor
Valor Real
Norma
CC-CC
21
64
0,32813
10752
0,0000 %
CC-CA
42
64
0,65625
21504
0,0000 %
Q0.15
Erro
normalizado
Fonte: Elaborada pelo autor
Tabela 7 – Coeficientes em notação Q0.15 do PI do PLL
Malha do circuito PLL
Circuito
PLL
Valor
Valor Real
Norma
120
256
0,46875
15360
0,0000 %
0,35714286
256
0,00139
46
0,6250 %
normalizado
Fonte: Elaborada pelo autor
As funções trigonométricas do circuito da figura 37 (seno e cosseno) foram
tabeladas em 128 pontos cada uma, sendo normalizadas em notação Q0.15. Para as restrições
das equações 39 e 46 foi considerado que o tempo máximo td necessário para a aquisição dos
dados e cálculo computacional é de 5% do período do PWM, isto é, 2,38 μs.
59
4.3
Resultados de simulação dos controladores
A simulação dos controladores foi realizada no software PSIM utilizando as
ferramentas da paleta de controle digital juntamente com um código na linguagem C que
emulasse o comportamento do código implementado em VHDL no FPGA, conforme mostrado
no ANEXO A deste trabalho.
Na figura 38 tem-se o bloco em linguagem C que contempla todo o algoritmo de
controle proposto e as saídas PWMs.
Figura 38 – Bloco de controle em linguagem C e PWMs.
Fonte: Elaborada pelo Autor
Os sinais de entrada Vs, Ib, Vc, Vo e Io da figura 38 são a tensão no barramento
CC, a corrente no indutor Lb, a tensão no Link CC, a tensão na rede elétrica e a corrente injetada
através do indutor Lf, respectivamente. A variável modo indica em qual modo de operação o
conversor funciona (se modo igual a zero, o conversor drena corrente da rede elétrica, se modo
igual a um, o conversor injeta corrente na rede elétrica). A variável en habilita as saídas PWMs
e os controladores das malhas de tensão e corrente.
Os sinais de saída u1 e u2 da figura 38 são as saídas dos controladores das malhas
de tensão do conversor CC-CC e do conversor CC-CA, respectivamente. Os sinais d, m1 e m2
são a razão cíclica do conversor CC-CC e as ondas moduladoras dos conjuntos de chaves S3-S4
e S5-S6, respectivamente. Por fim, os sinais theta, wc e PLL são as o ângulo, a frequência e a
saída da rotina de sincronismo, respectivamente.
60
Inicialmente foi simulada a rotina de sincronismo (PLL), conforme mostrado na
figura 39.
Figura 39 – Circuito para simulação da rotina de sincronismo.
Fonte: Elaborada pelo Autor
A variável en na simulação da figura 39 é feita igual a zero, isto é os controladores
estão desabilitados. Os sinais de saída theta e wc são mostrados na figura 40, percebe-se que o
sistema atinge o regime permanente em um tempo inferior a 0,1 segundos, isto é, em menos de
6 ciclos da rede. Conforme consta figura 41, onde tem-se o sinal de saída do PLL e a tensão da
rede elétrica.
61
Figura 40 – Sinais theta e wc para uma tensão de entrada senoidal.
Fonte: Elaborada pelo Autor
Figura 41 – Sinal de saída do PLL e tensão de entrada senoidal.
Fonte: Elaborada pelo Autor
A taxa de distorção harmônica do sinal de saída do PLL após atingir o regime
permanente é de 1,48%.
A fim de verificar a capacidade de rejeitar harmônicos do PLL proposto, foi
simulado uma tensão de entrada quadrada de frequência 60 Hz e tensão de pico de 311 V com
THD de 48,34%. Os sinais de saída do PLL e da tensão de entrada são mostrados na figura 42.
62
Figura 42 – Sinal de saída do PLL e tensão de entrada quadrada.
Fonte: Elaborada pelo Autor
A taxa de distorção harmônica do sinal de saída do PLL após atingir o regime
permanente é de 5,42%. Logo, percebe-se a robustez do PLL proposto para altos níveis de
distorção harmônica tensão de entrada.
Por fim, foi verificado na rotina do PLL a sua resposta frente a uma variação da
magnitude da tensão de entrada de 50%, conforme mostrado na figura 43.
Figura 43 – Sinal de saída do PLL com variação na tensão de entrada senoidal de 50%.
Fonte: Elaborada pelo Autor
Analisando as formas de onda da figura 43 tem-se que a saída do PLL pouco varia
frente a mudanças na amplitude do sinal de entrada.
63
Após a simulação da rotina de PLL, procede-se com a simulação dos controladores
dos conversores CC-CC e CC-CA separadamente. Inicialmente foi simulado o conversor CCCC operando como Buck, conforme consta na figura 44.
Figura 44 – Simulação do conversor CC-CC operando como Buck.
Fonte: Elaborada pelo Autor
Os resultados da simulação do circuito da figura 44 são mostrados nas figuras 45 a
47.
Figura 45 – Tensão e corrente de saída do conversor CC-CC operando como Buck.
Fonte: Elaborada pelo Autor
64
Figura 46 – Detalhe da tensão e corrente de saída do conversor CC-CC operando como Buck
durante o degrau de carga.
Fonte: Elaborada pelo Autor
Figura 47 – Detalhe na corrente do indutor Lb e na tensão de saída do conversor CC-CC
operando como Buck.
Fonte: Elaborada pelo Autor
As formas de onda das figuras 45 e 46 demonstram a resposta do conversor frente
a degraus de 50% da carga. Tem-se que a tensão apresenta picos de 321 V e afundamentos de
301 V, sendo estes valores aceitáveis durante o transitório de carga.
Analisando as formas de onda da figura 47, tem-se que o conversor apresenta em
regime permanente variações inferiores a 0,2 % e da tensão de saída e inferiores a 30 % da
corrente no indutor Lb.
65
De forma análoga foi realizada a simulação do conversor CC-CC operando como
Boost, conforme mostrado nas figuras 48 a 51.
Figura 48 – Simulação do conversor CC-CC operando como Boost.
Fonte: Elaborada pelo Autor
Figura 49 – Tensão e corrente de saída do conversor CC-CC operando como Boost.
Fonte: Elaborada pelo Autor
66
Figura 50 – Detalhe da tensão e corrente de saída do conversor CC-CC operando como Boost
durante o degrau de carga.
Fonte: Elaborada pelo Autor
Figura 51 – Detalhe na corrente do indutor Lb e na tensão de saída do conversor CC-CC
operando como Boost.
Fonte: Elaborada pelo Autor
As formas de onda das figuras 49 e 50 demonstram a resposta do conversor frente
a degraus de 50% da carga. Tem-se que a tensão apresenta picos de 408 V e afundamentos de
394 V, sendo estes valores aceitáveis durante o transitório de carga. Durante a partida tem-se
elevados níveis de tensão e corrente, haja vista que o capacitor Cb inicia descarregado.
67
Analisando as formas de onda da figura 51, tem-se que o conversor apresenta em
regime permanente variações inferiores a 0,15 % e da tensão de saída e inferiores a 30 % da
corrente no indutor Lb.
Após a simulação do conversor CC-CC, procede-se com a simulação do conversor
CC-CA operando como Retificador, conforme consta na figura 52.
Figura 52 – Simulação do conversor CC-CA operando como Retificador.
Fonte: Elaborada pelo Autor
Na simulação do conversor da figura 52, tem-se que os controladores e os sinais
PWMs das chaves são acionados após 0,2 segundos a fim de garantir o sincronismo com a rede,
isto é, após 0,2 segundos a variável en tem o seu valor alterado de zero para um, conforme
mostrado na figura 53.
Os resultados da simulação do circuito da figura 52 são mostrados nas figuras 54 a
57. Observa-se que, semelhante ao conversor CC-CC operando como Boost, na figura 54 temse elevado pico de tensão no capacitor Cb durante a partida do conversor e na figura 55 um
elevado pico negativo de corrente no indutor Lf, tal fato é decorrente da condição inicial do
capacitor Cb que, na simulação, inicia descarregado.
68
Figura 53 – Sinal en do conversor CC-CA operando como Retificador.
Fonte: Elaborada pelo Autor
Figura 54 – Tensão e corrente de saída do conversor CC-CA operando como Retificador.
Fonte: Elaborada pelo Autor
69
Figura 55 – Tensão e corrente de entrada do conversor CC-CA operando como Retificador.
Fonte: Elaborada pelo Autor
Figura 56 – Detalhe da tensão e corrente de entrada e saída do conversor CC-CA operando
como Retificador durante o degrau de carga.
Fonte: Elaborada pelo Autor
Analisando as formas de onda da figura 56, tem-se que o conversor apresenta picos
de tensão de 441 V e afundamento de 381 V na tensão do Link CC durante o transitório de
carga.
70
Figura 57 – Detalhe da tensão e corrente de entrada e saída do conversor CC-CA operando
como Retificador.
Fonte: Elaborada pelo Autor
Analisando as formas de onda da figura 57 tem-se que a THD da corrente ILf é igual
a 3,37%. A tensão Vc apresenta variações inferiores a 0,1%. A corrente ILf está em oposição de
fase à tensão da rede elétrica Es, apresentando um fator de potência de 0,999 e potência ativa
de 2014 W.
Por fim, foram simulados os controladores do conversor CC-CA operando como
Inversor. O circuito utilizado na simulação é mostrado na figura 58.
Figura 58 – Simulação do conversor CC-CA operando como Inversor.
Fonte: Elaborada pelo Autor
71
Na simulação do conversor da figura 58, tem-se que os controladores e os sinais
PWMs das chaves são acionados após 0,2 segundos de forma similar a feita na simulação do
circuito da figura 52.
Os resultados da simulação do circuito da figura 58 são mostrados na figura 59. O
degrau na referência é realizado na programação do controlador.
Figura 59 – Tensão e corrente de saída do conversor CC-CA operando como Inversor.
Fonte: Elaborada pelo Autor
Analisando as formas de onda da figura 59 tem-se a plena carga que a THD da
corrente ILf é igual a 3,36%. A corrente ILf está em fase com a tensão da rede elétrica Es,
apresentando um fator de potência de 0,999 e potência ativa de 1984 W, também em plena
carga.
4.4
Resultados de simulação da topologia completa
A simulação da topologia completa foi realizada no software PSIM utilizando o
controlador simulado no tópico anterior. Inicialmente foi simulada a topologia completa
injetando energia na rede, conforme consta no circuito da figura 60. As limitações impostas
pelas condições equações 41 e 48 (tempo de cálculo e aquisição de dados) são incorporados
como limitadores da razão cíclica nos PWMs da figura 60.
72
Figura 60 – Simulação da topologia completa operando como Boost/Inversor.
Fonte: Elaborada pelo Autor
Os resultados de simulação do circuito da figura 60 são mostrados nas figuras 61 a
63.
Figura 61 – Tensão e corrente na rede elétrica operando como Boost/Inversor.
Fonte: Elaborada pelo Autor
73
Figura 62 – Tensão no capacitor Cb do Link CC operando como Boost/Inversor.
Fonte: Elaborada pelo Autor
Figura 63 – Corrente no indutor Lb operando como Boost/Inversor.
Fonte: Elaborada pelo Autor
Analisando as formas de onda das figuras 61 a 63, tem-se que a corrente injetada
está em fase com a tensão na rede elétrica. A THD da corrente é de 3,31%, o fator de potência
de 0,999 e a potência ativa de 1985 W.
A simulação da topologia completa drenando energia da rede é realizada de forma
similar a anterior, conforme consta na figura 64.
74
Figura 64 – Simulação da topologia completa operando como Buck/Retificador.
Fonte: Elaborada pelo Autor
Os resultados de simulação do circuito da figura 64 são mostrados nas figuras 65 a
68.
Figura 65 – Tensão e corrente na rede elétrica operando como Buck/Retificador.
Fonte: Elaborada pelo Autor
Analisando as formas de onda da figuras 65, tem-se que a corrente drenada está em
oposição de fase com a tensão na rede elétrica. A THD da corrente é de 3,36%, o fator de
potência de 0,999 e a potência ativa de 2049 W.
As distorções apresentadas durante a partida na corrente da figura 65 se devem a
limitação da razão cíclica imposta pela equação 48.
75
Figura 66 – Tensão no capacitor Cb do Link CC e corrente na rede elétrica operando como
Buck/Retificador.
Fonte: Elaborada pelo Autor
Figura 67 – Detalhe da corrente no indutor Lb operando como Buck/Retificador.
Fonte: Elaborada pelo Autor
Analisando as formas de onda de tensão e corrente apresentadas na figura 66, temse que a resposta da malha de tensão do conversor CC-CA operando como Retificador é lenta,
conforme esperado. Apesar dos picos e afundamentos de tensão apresentados no Link CC, a
corrente drenada da rede elétrica mantém-se em valores abaixo de 20 A.
A corrente no indutor Lb mostrada na figura 67 apresenta ondulações, em regime,
inferiores a 29%.
76
Figura 68 – Detalhe da corrente e tensão no Barramento CC operando como Buck/Retificador.
Fonte: Elaborada pelo Autor
As formas de onda da tensão e corrente no barramento CC apresentadas na figura
68 mostram que a tensão no barramento CC é regulada em 311 V com ondulações inferiores a
0,2%.
4.5
Fator de Potência e THD para diversos níveis de carregamento
A variação do fator de potência e a THD para níveis de carregamento variando entre
50% da carga nominal a 100% da carga nominal, nos dois modos de operação do conversor,
isto é, drenando e injetando energia na rede, são mostrados nos gráficos das figuras 69 e 70.
Figura 69 – THD para diversos níveis de carregamento.
Fonte: Elaborada pelo Autor
77
Figura 70 – Fator de potência para diversos níveis de carregamento.
Fonte: Elaborada pelo Autor
Analisando as curvas dos gráficos da figura 69, tem-se que a THD da corrente
permanece abaixo de 5% para uma carga de aproximadamente 70%, ultrapassando este valor
para níveis de carregamento inferiores.
As curvas da figura 70 mostram que, apesar do aumento da THD frente a
diminuição da carga, o fator de potência pouco é alterado, mantendo-se bastante próximo da
unidade, conforme esperado da estratégia de controle adotada, haja vista utilizar-se na malha
de corrente o controlador do tipo Deadbeat ou preditivo que responde rapidamente a variações
da corrente de referência.
4.6
Conclusão
Neste capítulo inicialmente representou-se os controladores através da notação
Q0.15 utilizando números inteiros para representar números reais. Através de simulação
computacional utilizando o software PSIM foi verificado a resposta do controlador,
primeiramente para o conversor CC-CC e o conversor CC-CA separadamente, onde verificouse que a resposta do sistema controlado atendia as especificações de projeto apresentadas nos
capítulos anteriores.
Também foi simulada a resposta da topologia completa nos dois modos de operação
(injetando e drenando energia da rede elétrica). Observou-se as formas de onda de corrente e
tensão de entrada, saída e do Link CC do conversor. Verificou-se que a THD e o fator de
potência, em plena carga, mantêm-se abaixo de 3,5% e superior a 0,999, respectivamente.
78
Por fim, foi analisado o comportamento da THD e do fator de potência frente a
variações da carga. Observou-se que a THD aumenta com a diminuição da carga ultrapassando
o valor de 5% para cargas inferiores a 70% da carga nominal. O fator de potência pouco é
alterado, mantendo-se superior a 0,997 para cargas entre 50% e 100%.
79
5
5.1
VALIDAÇÃO DO CÓDIGO DO CONTROLADOR EM VHDL
Introdução
Neste capítulo é desenvolvido o código na linguagem VHDL a ser implementado
no dispositivo FPGA. Tal código é simulado no software Modelsim e os seus resultados são
comparados com o código na linguagem C, desenvolvido no capítulo 4 para o software PSIM,
a fim de validá-lo.
5.2
Estrutura do código na linguagem VHDL
O código desenvolvido do controlador proposto na linguagem VHDL possui a
estrutura mostrada no fluxograma da figura 71.
Figura 71 – Fluxograma do código em VHDL.
Fonte: Elaborada pelo Autor
80
O código proposto baseado no fluxograma da figura 71 é mostrado no ANEXO B
deste trabalho. As suas diversas rotinas são simuladas no software Modelsim e comparadas com
simulações similares realizadas no software PSIM, conforme exposto nos itens subsequentes
deste capítulo.
5.3
Rotina de sincronismo
A rotina de sincronismo é testada de forma similar ao realizado no capítulo 4, isto
é, são observados o sinal de saída do PLL, a frequência e o ângulo para uma entrada com forma
de onda senoidal e para uma entrada com forma de onda quadrada, ambas com frequência de
60 Hz. Os resultados destas simulações podem ser vistos nas figuras 72 a 75.
Figura 72 – Entrada e saída do PLL para uma entrada com forma de onda senoidal.
Fonte: Elaborada pelo Autor
81
Figura 73 – Frequência e ângulo do PLL para uma entrada com forma de onda senoidal.
Fonte: Elaborada pelo Autor
Figura 74 – Entrada e saída do PLL para uma entrada com forma de onda quadrada.
Fonte: Elaborada pelo Autor
82
Figura 75 – Frequência e ângulo do PLL para uma entrada com forma de onda quadrada.
Fonte: Elaborada pelo Autor
Para a plotagem dos gráficos das figuras 72 a 75 utilizou-se um script desenvolvido
em MATLAB, conforme consta no ANEXO C deste trabalho. Comparando os resultados
obtidos na simulação do software PSIM com os obtidos do software Modelsim tem-se que o
comportamento do código proposto em VHDL é congruente com o comportamento do código
desenvolvido em C, demonstrando assim a funcionalidade doa rotina de sincronismo
desenvolvida para o FPGA.
5.4
Controladores das malhas externas
Para a validação dos controladores das malhas externas de tensão foi traçado o
diagrama de Bode dos controladores PI implementados na linguagem C e na linguagem VHDL,
bem como o controlador PI com coeficientes reais do capítulo 3. Tal traçado foi realizado na
região de baixas frequências, haja vista ser esta a região que os controladores atuam. As
frequências verificadas foram: 10 Hz a 100 Hz com passo de 10 Hz e 100 Hz a 1000 Hz com
passos de 100 Hz, conforme consta nas figuras 76 a 78.
83
Figura 76 – Diagrama de Bode do controlador PI do conversor CC-CC operando como Buck.
Fonte: Elaborada pelo Autor
Figura 77 – Diagrama de Bode do controlador PI do conversor CC-CC operando como Boost.
Fonte: Elaborada pelo Autor
84
Figura 78 – Diagrama de Bode do controlador PI do conversor CC-CA operando como
Retificador.
Fonte: Elaborada pelo Autor
Os scripts desenvolvidos em MATLAB para a plotagem dos diagramas de Bode
das figuras 76 a 78 constam no ANEXO C deste trabalho.
Comparando os resultados das simulações do PSIM e do Modelsim, tem-se que os
diagramas de bode são bastante próximos, validando assim o código desenvolvido em VHDL.
A diferença entre os diagramas de bode dos controladores implementados em linguagem C e
VHDL com o teórico do capítulo 3 se deve a utilização da representação em notação Q0.15 dos
coeficientes dos controladores, conforme visto na tabela 5 do capítulo 4, pois tal representação
acarreta em erros de arredondamento e truncamento.
5.5
Controladores das malhas internas
Para validação dos controladores das malhas internas avaliou-se as saídas dos
controladores para entradas conhecidas, comparando os resultados de simulação dos softwares
PSIM e Modelsim.
As entradas de tensão foram feitas iguais aos seus valores nominais esperados e as
entradas de corrente foram variadas por todos os possíveis valores de leitura, conforme consta
nas figuras 79 a 81.
85
Figura 79 – Comparação das respostas do controlador Deadbead do conversor CC-CC
operando como Buck.
Fonte: Elaborada pelo Autor
Figura 80 – Comparação das respostas do controlador Deadbead do conversor CC-CC
operando como Boost.
Fonte: Elaborada pelo Autor
86
Figura 81 – Comparação das respostas do controlador Deadbead do conversor CC-CA.
Fonte: Elaborada pelo Autor
O script desenvolvidos em MATLAB para a plotagem dos gráficos das figuras 79
a 81 constam no ANEXO C deste trabalho.
Avaliando os resultados obtidos nas figuras 79 a 81 tem-se que, de forma similar
aos controladores PI, os controladores Deadbeats desenvolvidos em linguagem VHDL são
bastante similares aos controladores implementados em linguagem C no PSIM, demonstrando
assim a validade do código proposto em VHDL. Em especial, a diferença apresentada nas saídas
m1 e m2 da figura 81 se devem ao fato do passo de simulação do software PSIM e Modelsim
serem diferentes, ocasionando pequenas diferenças nos pontos calculados da rotina de
sincronismo e, consequentemente, nas saídas m1 e m2.
5.6
Sinais de Clock
Os sinais de clock utilizados no código em VHDL possuem frequências de 42 kHz
e 84 MHz, sendo utilizados para o Process do controle proposto e para o Process dos sinais
PWM, respectivamente Para gerar tais sinais utiliza-se o PLL interno do FPGA através da
megafunction altpll disponibilizada pela Altera.
87
5.7
Sinais de saída PWM
Os sinais de saída PWM foram simulados no software Modelsim a fim de validá-lo
e de verificar o tempo morto entre os comandos das chaves. O resultado da simulação é
mostrado na figura 82.
Figura 82 – Saídas PWM.
Fonte: Elaborada pelo Autor
O script desenvolvido em MATLAB para a plotagem dos gráficos da figura 82
consta no ANEXO C deste trabalho.
O tempo morto entre os sinais PWMs verificado na simulação da figura 82 é de
202,3809 ns, sendo este valor bastante próximo do valor definido anteriormente no capítulo 3
de 200 ns. A frequência dos sinais PWMs verificada na simulação é de 21 kHz.
5.8
Conclusão
Neste capítulo foi comparado o código desenvolvido em linguagem C para
simulação no PSIM e o código em linguagem VHDL proposto para o FPGA. Tal comparação
foi realizada utilizando-se os softwares PSIM e Modelsim. A partir de tais resultados de
simulação notou-se que os controladores desenvolvidos em VHDL são bastante similares aos
88
controladores simulados no capítulo 4, tornando válido o código proposto para ser
implementado no FPGA.
89
6
CONCLUSÃO
Neste trabalho foi proposta uma estratégia de controle digital para um conversor
CC-CC cascateado com um conversor CC-CA. As funções de transferência obtidas para os
modos de operação dos conversores CC-CC e CC-CA utilizando a técnica da chave PWM
mostraram-se válidas quando comparadas com os resultados obtidos via simulação,
demonstrando que a técnica empregada para a linearização da topologia em estudo foi
adequada.
A técnica utilizada no capítulo 3 para projetar os controladores PI utilizando a
resposta da planta linearizada e os controladores Deadbeat utilizando a análise temporal da
forma de onda da corrente no indutor mostrou-se válida através dos resultados encontrados nas
simulações realizadas capítulo 4, pois, as ondulações de tensão e corrente mantiveram-se dentro
dos limites desejados no capítulo 2.
Pelas curvas de variação da THD e do fator de potência apresentadas no capítulo 4,
conclui-se que a estratégia de controle proposta é adequada para manter a THD inferior a 7 %
e o fator de potência superior a 0,997 para níveis de carregamento a partir de 50 % da carga
nominal.
O código proposto em linguagem VHDL validado através de simulações no
software Modelsim mostrou-se bastante similar ao código implementado em linguagem C nas
simulações do capítulo 4, demonstrando que o código proposto para ser implementado no
FPGA de fato representa os controladores projetados neste trabalho.
Como proposta para trabalhos futuros, sugere-se a aplicação experimental da
estratégia de controle desenvolvida e a aplicação da metodologia de desenvolvimento do
controle adotada para estruturas trifásicas.
90
REFERÊNCIAS
ALLEGRO MICROSYSTEMS INC.: Datasheet ACS756-DS, Rev 6.
ANALOG DEVICES INC.: Datasheet AD9201, Rev D.
BARBI, I., MARTINS, D. C.: Eletrônica de potência: Conversores CC-CC básicos não
isolados. 3. Ed. Florianópolis-SC. Edição dos autores, pp. 50, pp. 70-82, 2008.
BEZERRA, L. D. S.: Conversor CC-CA para aplicação em sistemas autônomos de energia
elétrica. Fortaleza, Fevereiro de 2010, pp. 101, pp. 197 Apêndice B. Tese de Mestrado,
Universidade Federal do Ceará.
BUSO, S.; MATTAVELLI, P.: Digital Control in Power Electronics. 1. ed. EUA. Morgan &
Claypool, pp. 38-40, pp. 66, pp. 76-78, pp. 142-144, 2006.
CARRAH, I. F. D.: Inversor monofásico tipo ponte completa com controle digital.
Fortaleza, Dezembro de 2010, pp. 37, pp. 49, pp. 81-90. Monografia, Universidade Federal do
Ceará.
CHEN, J., PRÓDIC, A., ERICKSON, R. W., MAKSIMOVIC, D.: Predictive digital current
programmed control. IEEE Transactions on Power Electronics, 2003, vol. 18, no. 1, pp. 411419.
HE, M., XU, L.: Improved digital predictive control of switching dc-dc converters. IEEE
Applied Power Electronics and Exposition, 2007, pp. 1466-1471.
KUO, S. M., LEE, B. H.: Real-Time Digital Signal Processing. 1 ed. Editora Jonh Wiley &
Sons Ltd, pp. 1-3, 2001.
NETO, J. A. F., BRITO JR, F. J. B., JOCA, D. R., NUNES, M. A. N., TORRICO-BASCOPÉ,
R. P. A.: Five-level NPC bidirectional converter based on multi-state switching cell
91
operating as boost rectifier, Gramado-RS. XII COBEP Congresso Brasileiro de Eletrônica
de Potência, 2013.
OGATA, K.: Engenharia de Controle moderno. 4 Ed. Editora Prentice Hall, pp. 461, 2002.
SASSO, E. M.; SOTELO, G. G.; FERREIRA, A. A.; WATANABE, E. H.; AREDES, M.;
BARBOSA, P. G.: Investigação dos modelos de circuitos de sincronismo trifásicos
baseados na teoria das potências real e imaginária instantâneas (p-PLL e q-PLL). XIV
CBA, 2002, pp. 480-485.
SUNG, S. W.; LEE, J.; LEE In-B.: Process Identification and PID Control. 2 ed. IEEE Press.
Editora Jonh Wiley & Sons (Asia) Pte Ltd, pp. 113, 2009.
Terasic Technologies – Expertise in FPGA/ASIC Design. Disponível em: <
http://www.terasic.com.tw/>. Acesso em: 01 mar. 2014.
VOPRPERIAN, V.: Simplified Analysis of PWM Converters Using the Model of the PWM
Switch: Parts I. IEEE Transactions on Aerospace and Electronic Systems, 1990, vol 26, no.3,
pp. 490-496.
ZHOU, G., XU, J., WANG, J., MU, Q.: Improved digital average current control of buck
converter with dual-edge modulation. IEEE Applied Power Electronics and Exposition,
2008, pp. 1309-1313.
92
TRABALHOS PUBLICADOS
SANTOS H. A., DIAS JÚNIOR, A. J. S., ANTUNES, F. L. M.: Projeto de conversor C.C. C.A. controlado para uma Microrrede. V Congresso Brasileiro de Energia Solar, Inversores
e Outros Dispositivos I, 2014.
93
ANEXO A – CÓDIGO DO CONTROLADOR IMPLEMENTADO NO PSIM
// Variáveis utilizadas SOMENTE no PSIM
static double n = 0., Tperiod=1./42000.; //variáveis para simular o clock de 42kHz: n, Tperiod
// Definindo constantes
#define Kp_Buck 4260
// 0,13 em Q16
#define Ki_Buck 20
// 0,00060714 em Q16
#define Vsref 25477
// 311V, com norma 400V em Q16
#define Vcref1 1593
// 400V, com norma 500V, para a malha de corrente
#define Lfs1 10752
// 21, com norma 64 em Q16
#define Lfs2 21504
// 42, com norma 64 em Q16
#define Kp_Boost 8356
// 0,255 em Q16
#define Ki_Boost 17
// 0,00049524 em Q16
#define Vcref2 26214
// 400V, com norma 500V
#define Kp_Ret 1917
// 0,0585 em Q16
#define Ki_Ret 3
// 0,00007571 em Q16
#define Kp_PLL 15360
// 120, com norma 256 em Q16
#define Ki_PLL 46
// 0,35714286, com norma 256 em Q16
#define Ki2_PLL 211
// 0,00002381, pré-multiplicado por 256*800*800/311/311
// com norma 2pi = 6,283185307
#define u1max_Buck 3*1229
// 45A, com norma 400V
#define u1max_Boost 655
// 10A, com norma 500V
#define u2max_Ret 1311
// 20A, com norma 500V
// Entradas do ADC
static signed int Vs, Ib, Vc, Vo, Io;
Vs = in[0];
94
Ib = in[1];
Vc = in[2];
if(Vc==0) Vc = 1;
// evitar divisão por zero
Vo = in[3];
Io = in[4];
// Variáveis de controle
static signed int u1, errv1, up1, ui1, uiprev1;
static signed int iref1, erri1, d, aux1, aux2;
static signed int u2, errv2, up2, ui2, uiprev2;
static signed int iref2, erri2, m, m1, m2, aux3, aux4;
static signed int Valfa, Vbeta;
static signed int u, errq, up, ui, uiprev;
static unsigned int theta, thetaprev;
// Variáves alocadas na memória
static int Ibeta[128] = {16365 ,
16306 ,16207 ,16070 ,15893 ,15679 ,15427 ,15137 ,14811 ,
14450 ,14054 ,13623 ,13160 ,12666 ,12140 ,11586 ,11003 ,
10394 ,9760 ,9103 ,8424 ,7724 ,7006 ,6270 ,5520 ,
4757
,3981 ,3197 ,2405 ,1606 ,804
,1
,-803 ,
-1605 ,-2404 ,-3196 ,-3980 ,-4756 ,-5519 ,-6269 ,-7005 ,
-7723 ,-8423 ,-9102 ,-9759 ,-10393 ,-11002 ,-11585 ,-12139 ,
-12665 ,-13159 ,-13622 ,-14053 ,-14449 ,-14810 ,-15136 ,-15426 ,
-15678 ,-15892 ,-16069 ,-16206 ,-16305 ,-16364 ,-16384 ,-16364 ,
-16305 ,-16206 ,-16069 ,-15892 ,-15678 ,-15426 ,-15136 ,-14810 ,
-14449 ,-14053 ,-13622 ,-13159 ,-12665 ,-12139 ,-11585 ,-11002 ,
-10393 ,-9759 ,-9102 ,-8423 ,-7723 ,-7005 ,-6269 ,-5519 ,
-4756 ,-3980 ,-3196 ,-2404 ,-1605 ,-803 ,0
,804 ,
1606
,2405 ,3197 ,3981 ,4757 ,5520 ,6270 ,7006 ,
7724
,8424 ,9103 ,9760 ,10394 ,11003 ,11586 ,12140 ,
95
12666 ,13160 ,13623 ,14054 ,14450 ,14811 ,15137 ,15427 ,
15679 ,15893 ,16070 ,16207 ,16306 ,16365 ,16384};
static int Ialfa[128] = {804
,
1606
,2405 ,3197 ,3981 ,4757 ,5520 ,6270 ,7006 ,
7724
,8424 ,9103 ,9760 ,10394 ,11003 ,11586 ,12140 ,
12666 ,13160 ,13623 ,14054 ,14450 ,14811 ,15137 ,15427 ,
15679 ,15893 ,16070 ,16207 ,16306 ,16365 ,16384 ,16365 ,
16306 ,16207 ,16070 ,15893 ,15679 ,15427 ,15137 ,14811 ,
14450 ,14054 ,13623 ,13160 ,12666 ,12140 ,11586 ,11003 ,
10394 ,9760 ,9103 ,8424 ,7724 ,7006 ,6270 ,5520 ,
4757
,3981 ,3197 ,2405 ,1606 ,804
,1
,-803 ,
-1605 ,-2404 ,-3196 ,-3980 ,-4756 ,-5519 ,-6269 ,-7005 ,
-7723 ,-8423 ,-9102 ,-9759 ,-10393 ,-11002 ,-11585 ,-12139 ,
-12665 ,-13159 ,-13622 ,-14053 ,-14449 ,-14810 ,-15136 ,-15426 ,
-15678 ,-15892 ,-16069 ,-16206 ,-16305 ,-16364 ,-16384 ,-16364 ,
-16305 ,-16206 ,-16069 ,-15892 ,-15678 ,-15426 ,-15136 ,-14810 ,
-14449 ,-14053 ,-13622 ,-13159 ,-12665 ,-12139 ,-11585 ,-11002 ,
-10393 ,-9759 ,-9102 ,-8423 ,-7723 ,-7005 ,-6269 ,-5519 ,
-4756 ,-3980 ,-3196 ,-2404 ,-1605 ,-803 ,0};
static int buffer[176], i;
// Variáveis de controle de operação
static signed int modo, enable;
modo = in[5];
// Modo de operação
enable = in[6];
// Habilitar controle
if(t >= n*Tperiod){ n = n + 1; // Process
/* Rotina de sincronismo - PLL*/
Valfa = 32*(Vo-512);
96
for(i=0;i<175;i=i+1)
buffer[i] = buffer[i+1];
buffer[175] = Valfa;
Vbeta = buffer[0];
// Integrador da rotina de sincronismo
theta = (Ki2_PLL*u);
theta = theta/32768;
theta = theta + thetaprev;
if(theta<=0 || theta >=32768) theta = 0;
thetaprev = theta;
out[5] = theta;
// PI da rotina de sincronismo
errq = (Vbeta*Ialfa[theta/256])+(Valfa*Ibeta[theta/256]);
errq = errq/32768;
up = (Kp_PLL*errq);
ui = (Ki_PLL*errq + uiprev);
u = (ui + up)/32768;
uiprev = ui;
out[6] = u;
out[7] = Ialfa[theta/256];
/* Controladores do conversor operando como Buck/Retificador*/
if(modo==0 && enable==1){
// Malha externa de tensão - PI Buck
errv1 = Vsref-32*Vs;
// em Q16
up1 = (Kp_Buck*errv1);
// em Q31
ui1 = (Ki_Buck*errv1 + uiprev1);
// em Q31
u1 = (ui1 + up1)/32768;
// em Q16
uiprev1 = ui1;
// em Q31
97
// Anti-windup e saturação do controlador PI Buck
if (u1 >= u1max_Buck){
u1 = u1max_Buck;
uiprev1 = u1max_Buck*32768;
}
if(u1 <= 0){
u1 = 0;
uiprev1 = 0;
}
out[0] = u1;
// Malha externa de tensão - PI Retificador
errv2 = 32*Vc-Vcref2;
// em Q16
up2 = (Kp_Ret*errv2);
// em Q31
ui2 = (Ki_Ret*errv2 + uiprev2);
// em Q31
u2 = (ui2 + up2)/32768;
// em Q16
uiprev2 = ui2;
// em Q31
// Anti-windup e saturação do controlador PI Retificador
if (u2 >= u2max_Ret){
u2 = u2max_Ret;
uiprev2 = u2max_Ret*32768;
}
if(u2 <= -u2max_Ret){
u2 = -u2max_Ret;
uiprev2 = -u2max_Ret*32768;
}
out[1] = u2;
98
// Referência de corrente sincronizada com a rede elétrica
iref2 = 5*Ialfa[theta/256]*u2/16365; // em Q16
}
/* Controladores do conversor operando como Boost/Inversor*/
else if(modo==1 && enable==1){
errv1 = Vcref2-32*Vc;
// em Q16
up1 = (Kp_Boost*errv1);
// em Q31
ui1 = (Ki_Boost*errv1 + uiprev1);
// em Q31
u1 = (ui1 + up1)/32768;
// em Q16
uiprev1 = ui1;
// em Q31
// Anti-windup e saturação do controlador PI Boost
if (u1 >= u1max_Boost){
u1 = u1max_Boost;
uiprev1 = u1max_Boost*32768;
}
if (u1 <= 0){
u1 = 0;
uiprev1 = 0;
}
out[0] = u1;
// Degrau da referência de corrente sincronizada com a rede elétrica
if(t<0.35)
iref2 = 4214*Ialfa[theta/256]/16365;
// em Q16
else if(t>0.35 && t<0.5)
iref2 = 2107*Ialfa[theta/256]/16365;
// em Q16
else
iref2 = 4214*Ialfa[theta/256]/16365;
// em Q16
99
}
} // Fim do Process
/* Deadbeat do conversor operando como Buck*/
if(modo == 0 && enable==1){
iref1 = u1*4;
erri1 = iref1 + ((Ib-512)*32);
aux1 = (erri1*Lfs1)/32768;
aux2 = (aux1 + Vcref1)*32768;
d = aux2/(5*Vc);
d = d/16;
if (d < 0) d = 0;
if (d > 2000) d = 2000;
}
/* Deadbeat do conversor operando como Boost*/
else if(modo == 1 && enable==1){
iref1 = u1*5;
erri1 = iref1 - ((Ib-512)*32);
aux1 = (erri1*Lfs1)/32768;
aux2 = (aux1 + 5*Vc-4*Vs)*32768;
d = aux2/(5*Vc);
d = 2000-d/16;
if (d < 0) d = 0;
if (d > 2000) d = 2000;
}
/* Deadbeat do conversor CC-CA*/
if(enable==1){
erri2 = iref2 - ((Io-512)*32);
aux3 = (erri2*Lfs2)/32768;
100
aux4 = (aux3 + 8*(Vo-512))*32768;
m = aux4/(5*Vc);
m1 = ((+m/33)+1000);
if (m1 < 0) m1 = 0;
if (m1 > 2000) m1 = 2000;
m2 = ((-m/33)+1000);
if (m2 < 0) m2 = 0;
if (m2 > 2000) m2 = 2000;}
/* Razão cíclica e sinais moduladores com controle habilitado*/
if(enable==1){
out[2] = d;
out[3] = m1;
out[4] = m2;
}
/* Razão cíclica e sinais moduladores com controle desabilitado*/
if(enable==0){
out[2] = 0;
out[3] = 0;
out[4] = 0;
}
101
ANEXO B – CÓDIGO DO CONTROLADOR EM VHDL
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.all;
ENTITY Controle IS
GENERIC
(
Kp_Buck: NATURAL:= 4260;
Ki_Buck: NATURAL:= 20;
Vsref: NATURAL:= 25477;
Vcref1:
NATURAL:= 1593;
Lfs1:
NATURAL:= 10752;
Lfs2:
NATURAL:= 21504;
Kp_Boost:NATURAL:= 8356;
Ki_Boost:NATURAL:= 17;
Vcref2:
NATURAL:= 26214;
Kp_Ret:
NATURAL:= 1917;
Ki_Ret:
NATURAL:= 3;
Kp_PLL:
NATURAL:= 15360;
Ki_PLL: NATURAL:= 46;
Ki2_PLL: NATURAL:= 211;
u1max_Buck: NATURAL:= 3*1229;
u1max_Boost:NATURAL:= 655;
u2max_Ret:
);
PORT
NATURAL:= 1311
102
(
modo, enable: IN BIT;
Vs, Ib, Vc, Vo, Io: IN NATURAL RANGE 0 to 1023;
pwm1, pwm2, pwm3, pwm4, pwm5, pwm6: OUT BIT;
Clock_42k, Clock_84M: IN BIT
);
END Controle;
ARCHITECTURE do OF Controle IS
TYPE vec_128 IS ARRAY (0 to 127) OF INTEGER;
CONSTANT Ialfa: vec_128 := (804 ,
1606,2405,3197,3981 ,4757,5520,6270,7006,
7724,8424,9103,9760 ,10394 ,11003 ,11586 ,12140 ,
12666,13160,13623,14054,14450,14811,15137,15427,
15679,15893,16070,16207,16306,16365,16384,16365,
16306,16207,16070,15893,15679,15427,15137,14811,
14450,14054,13623,13160,12666,12140,11586,11003,
10394,9760,9103,8424,7724 ,7006,6270,5520,
4757,3981,3197,2405 ,1606,804,1,-803,
-1605,-2404,-3196,-3980,-4756,-5519,-6269,-7005 ,
-7723,-8423,-9102,-9759,-10393,-11002,-11585,-12139,
-12665 ,-13159,-13622,-14053,-14449,-14810,-15136,-15426,
-15678 ,-15892,-16069,-16206,-16305,-16364,-16384,-16364,
-16305 ,-16206,-16069,-15892,-15678,-15426,-15136,-14810,
-14449 ,-14053,-13622,-13159,-12665,-12139,-11585,-11002,
-10393 ,-9759 ,-9102 ,-8423 ,-7723,-7005 ,-6269 ,-5519 ,
-4756,-3980,-3196,-2404,-1605,-803,0);
CONSTANT Ibeta: vec_128 := (16365,
16306,16207,16070,15893,15679,15427,15137,14811,
14450,14054,13623,13160,12666,12140,11586,11003,
10394,9760,9103,8424,7724 ,7006,6270,5520,
4757,3981,3197,2405 ,1606,804,1,-803,
103
-1605,-2404,-3196,-3980,-4756,-5519,-6269,-7005 ,
-7723,-8423,-9102,-9759,-10393,-11002,-11585,-12139,
-12665 ,-13159,-13622,-14053,-14449,-14810,-15136,-15426,
-15678 ,-15892,-16069,-16206,-16305,-16364,-16384,
-16364 ,-16305,-16206,-16069,-15892,-15678,-15426,-15136,-14810,-14449,-14053,-13622,
-13159 ,-12665,-12139,-11585,-11002,-10393,-9759,-9102 ,-8423,-7723,-7005,-6269,-5519,
-4756,-3980,-3196,-2404,-1605,-803,0,804,
1606,2405,3197,3981 ,4757,5520,6270,7006,
7724,8424,9103,9760 ,10394 ,11003 ,11586 ,12140 ,
12666,13160,13623,14054,14450,14811,15137,15427
,
15679,15893,16070,16207,16306,16365,16384);
TYPE vec_176 IS ARRAY (0 to 175) OF INTEGER;
SIGNAL d_s, m1_s, m2_s: INTEGER;
BEGIN
PROCESS(Clock_42k)
--PLL
VARIABLE Va_buffer: vec_176 :=(
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
VARIABLE Valfa, Vbeta
: INTEGER:=0;
VARIABLE u, errq, up, ui, uiprev
: INTEGER:=0;
VARIABLE theta, thetaprev
: INTEGER:=0;
VARIABLE u1, errv1, up1, ui1, uiprev1
: INTEGER:=0;
VARIABLE iref1, erri1, d, aux1, aux2
: INTEGER:=0;
104
VARIABLE u2, errv2, up2, ui2, uiprev2
: INTEGER:=0;
VARIABLE iref2, erri2, m, m1, m2, aux3, aux4
: INTEGER:=0;
VARIABLE index
: INTEGER:=0;
BEGIN
IF Clock_42k'EVENT AND Clock_42k='1' THEN
-- PLL
Valfa:=32*(Vo-512);
Va_buffer:=Va_buffer(1 to 175) & Valfa;
Vbeta:=Va_buffer(0);
theta:=(Ki2_PLL*u);
theta:=theta/32768;
theta:= theta + thetaprev;
IF theta<=0 OR theta>=32768 THEN theta:=0; END IF;
thetaprev:=theta;
index := theta/256;
errq:=(Vbeta*Ialfa(index))/32768 + (Valfa*Ibeta(index))/32768;
up:=Kp_PLL*errq;
ui:=(Ki_PLL*errq + uiprev);
u:=(ui+up)/32768;
uiprev:=ui;
IF enable='1' THEN
--Controladores do conversor operando como Buck/Retificador
IF modo='0' THEN
errv1 := Vsref-32*Vs;
up1 := (Kp_Buck*errv1);
ui1 := (Ki_Buck*errv1 + uiprev1);
u1 := (ui1 + up1)/32768;
105
uiprev1 := ui1;
IF u1>=u1max_Buck THEN
u1:=u1max_buck;
uiprev1:=u1max_Buck*32768;
ELSIF u1<=0 THEN
u1:=0;
uiprev1:=0;
END IF;
errv2 := 32*Vc-Vcref2;
up2 := (Kp_Ret*errv2);
ui2 := (Ki_Ret*errv2 + uiprev2);
u2 := (ui2 + up2)/32768;
uiprev2 := ui2;
IF u2 >= u2max_Ret THEN
u2 := u2max_Ret;
uiprev2 := u2max_Ret*32768;
ELSIF u2 <= -u2max_Ret THEN
u2 := -u2max_Ret;
uiprev2 := -u2max_Ret*32768;
END IF;
iref2:=5*Ialfa(theta/256)*u2/16365;
-- Deadbeat do conversor operando como Buck
iref1 := u1*4;
erri1 := iref1 + ((Ib-512)*32);
aux1 := (erri1*Lfs1)/32768;
aux2 := (aux1 + Vcref1)*32768;
IF Vc=0 THEN d := aux2/(5*1);
ELSE d := aux2/(5*Vc); END IF;
106
d := d/16;
--Controladores do conversor operando como Boost/Inversor
ELSIF modo='1' THEN
errv1:=Vcref2-32*Vc;
up1:=(Kp_Boost*errv1);
ui1:=(Ki_boost*errv1 + uiprev1);
u1 := (ui1 + up1)/32768;
uiprev1 := ui1;
IF u1 >= u1max_Boost THEN
u1 := u1max_Boost;
uiprev1 := u1max_Boost*32768;
ELSIF (u1 <= 0) THEN
u1 := 0;
uiprev1 := 0;
END IF;
--Deadbeat do conversor operando como Boost
iref1 := u1*5;
erri1 := iref1 - ((Ib-512)*32);
aux1 := (erri1*Lfs1)/32768;
aux2 := (aux1 + 5*Vc-4*Vs)*32768;
IF Vc=0 THEN d := aux2/(5*1);
ELSE d := aux2/(5*Vc); END IF;
d := 2000-d/16;
END IF;
--Deadbeat do conversor CC-CA
erri2 := iref2 - ((Io-512)*32);
aux3 := (erri2*Lfs2)/32768;
aux4 := (aux3 + 8*(Vo-512))*32768;
IF Vc=0 THEN m := aux4/(5*1);
107
ELSE m := aux4/(5*Vc); END IF;
m1 := ((+m/33)+1000);
m2 := ((-m/33)+1000);
ELSE
d:=0;
m1:=0;
m2:=0;
END IF;
END IF;
IF d < 0 THEN d := 0; END IF;
IF d > 2000 THEN d := 2000; END IF;
d_s<=d;
IF m1 < 0 THEN m1 := 0; END IF;
IF m1 > 2000 THEN m1 := 2000; END IF;
m1_s<=m1;
IF m2 < 0 THEN m2 := 0; END IF;
IF m2 > 2000 THEN m2 := 2000; END IF;
m2_s<=m2;
END PROCESS;
PROCESS(Clock_84M)
VARIABLE Portadora: NATURAL RANGE 0 to 2000:=0;
VARIABLE up_dw: BIT:='0';
BEGIN
IF Clock_84M'EVENT AND Clock_84M='1' THEN
IF up_dw='0' THEN
IF Portadora=2000 THEN
Portadora:=1999;
up_dw:='1';
ELSE
Portadora:=Portadora+1;
108
END IF;
ELSE
IF Portadora=0 THEN
Portadora:=1;
up_dw:='0';
ELSE
Portadora:=Portadora-1;
END IF;
END IF;
IF enable='1' THEN
IF d_s>=(Portadora + 17) THEN
pwm1<='1'; pwm2<='0';
ELSIF d_s<=(Portadora - 17) THEN
pwm1<='0'; pwm2<='1';
ELSE
pwm1<='0'; pwm2<='0';
END IF;
IF m1_s>=(Portadora + 17) THEN
pwm3<='1'; pwm4<='0';
ELSIF m1_s<=(Portadora - 17) THEN
pwm3<='0'; pwm4<='1';
ELSE
pwm3<='0'; pwm4<='0';
END IF;
IF m2_s>=(Portadora + 17) THEN
pwm5<='1'; pwm6<='0';
ELSIF m2_s<=(Portadora - 17) THEN
pwm5<='0'; pwm6<='1';
ELSE
pwm5<='0'; pwm6<='0';
END IF;
ELSE
pwm1<='0';
pwm2<='0';
pwm3<='0';
109
pwm4<='0';
pwm5<='0';
pwm6<='0';
END IF;
END IF;
END PROCESS;
END do;
110
ANEXO C – ROTINAS EM MATLAB
C.1. Rotina para o projeto dos controladores PI do conversor CC-CC
% Autor Antônio José Sousa Dias Júnior
% Trabalho de Conclusão de Curso
%% PROJETO DAS MALHAS DE TENSÃO (LENTAS)
clc;
clear all;
close all;
%% CONVERSOR CC-CC PARÂMETROS (OPERAÇÃO BUCK)
L = 01e-3;
% [H]
C = 680e-6;
% [F]
Rse = 200e-3;
% [ohm]
Ro = 311*311/2000; % [ohm]
fs = 21000;
% [Hz]
%% FUNÇÕES DE TRANSFERÊNCIAS
Gvi = tf(Ro*[Rse*C,1],[(Ro+Rse)*C,1]);
% ganhos unitários, pois são compensados no algoritmo desenvolvido
Hv = 1;
% ganho do sensor de tensão com ADC de 12 bits
Hi = 1;
% ganho do sensor de corrente com ADC de 12 bits
Gmav = Gvi*Hv/Hi; % ganho de malha aberta sem controlador
%% CONTROLADOR PI
wcv = 0.20/sqrt(L*C); % 20% da frequência do filtro LC de saída
opts = pidtuneOptions('PhaseMargin',60);
[Cv,info] = pidtune(Gmav,'pi',wcv,opts);
Cv = pid(Cv);
display('Regulador Buck');
display(Cv)
display(info)
% [Gm,Pm,Wcg,Wcp] = margin(Gmav*Cv);
% Malha aberta
figure(1)
subplot(2,2,1)
step(Gmav)
title('Resposta ao Degrau unitário - Buck')
subplot(2,2,2)
rlocus(Gmav);
title('Lugar Geométrico das Raízes - Buck com controlador')
subplot(2,2,3)
nyquist(Gmav)
title('Diagrama de Nyquist - Buck sem controlador')
subplot(2,2,4)
margin(Gmav)
111
% Malha fechada
figure(2)
subplot(2,2,1)
step(feedback(Cv*Gmav,1))
title('Resposta ao Degrau Unitário - Buck com controlador')
subplot(2,2,2)
rlocus(Cv*Gmav);
title('Lugar Geométrico das Raízes - Buck com controlador')
subplot(2,2,3)
nyquist(Cv*Gmav)
title('Diagrama de Nyquist - Buck com controlador')
subplot(2,2,4)
margin(Cv*Gmav)
clear all;
%% CONVERSOR CC-CC PARÂMETROS (OPERAÇÃO BOOST)
L = 01e-3;
% [H]
C = 01.88e-3;
% [F]
Rse = 70e-3;
% [ohm]
Ro = 400*400/2000; % [ohm]
Vin = 311;
% [V]
Vo = 400;
% [V]
D = 1- Vin/Vo;
% razão cíclica
D1 = 1-D;
% razão cíclica complementar
%% FUNÇÕES DE TRANSFERÊNCIAS
Gvi = tf(D1,[C,1/Ro]); % FT simplificada, desconsiderando o zero
incluindo pelo capacitor
Hv = 1;
Hi = 1;
Gmav = Gvi*Hv/Hi;
%% CONTROLADOR PI
wcv = 2*pi*20;
opts = pidtuneOptions('PhaseMargin',60);
[Cv,info] = pidtune(Gmav,'pi',wcv,opts);
Cv = pid(Cv);
display('Regulador Boost');
display(Cv)
display(info)
% [Gm,Pm,Wcg,Wcp] = margin(Gmav*Cv);
% Malha aberta
figure(3)
subplot(2,2,1)
step(Gmav)
title('Resposta ao Degrau unitário - Boost')
subplot(2,2,2)
rlocus(Gmav);
title('Lugar Geométrico das Raízes - Boost sem controlador')
112
subplot(2,2,3)
nyquist(Gmav)
title('Diagrama de Nyquist - Boost sem controlador')
subplot(2,2,4)
margin(Gmav)
% Malha fechada
figure(4)
subplot(2,2,1)
step(feedback(Cv*Gmav,1))
title('Resposta ao Degrau Unitário - Boost com controlador')
subplot(2,2,2)
rlocus(Cv*Gmav);
title('Lugar Geométrico das Raízes - Boost com controlador')
subplot(2,2,3)
nyquist(Cv*Gmav)
title('Diagrama de Nyquist - Boost com controlador')
subplot(2,2,4)
margin(Cv*Gmav)
clear all
113
C.2. Rotina para o projeto dos controladores PI do conversor CC-CA
% Autor Antônio José Sousa Dias Júnior
% Trabalho de Conclusão de Curso
%% PROJETO DAS MALHAS DE TENSÃO (LENTAS)
clc;
clear all;
close all;
%% CONVERSOR CC-CC PARÂMETROS (OPERAÇÃO BUCK)
L = 02e-3;
% [H]
C = 1.88e-3;
% [F]
Rse = 70e-3;
% [ohm]
Vs = 311;
% [V]
Vcc = 400;
% [V]
fs = 21e3;
% [Hz]
M = Vs/Vcc;
n = 0.95;
Pin = 2000/n;
%% FUNÇÕES DE TRANSFERÊNCIAS
Gvi = M*(Vs*Vs/Pin)*tf([Rse*C,1],[((Vs*Vs/Pin)+Rse)*C,1]);
Hv = 1;
Hi = 1;
Vsample_avg = 2;
Gmav = Gvi*Vsample_avg*Hv/Hi;
%% CONTROLADOR PI com filtro
wcv = 2*pi*10;
opts = pidtuneOptions('PhaseMargin',60);
[Cv,info] = pidtune(Gmav,'pi',wcv,opts);
Cv = pid(Cv);
display('Regulador Inversor/Retificador');
display(Cv);
display(info);
% [Gm,Pm,Wcg,Wcp] = margin(Gmav*Cv);
% Malha aberta
figure(3)
subplot(2,2,1)
step(Gmav)
title('Resposta ao Degrau unitário - Retificador')
subplot(2,2,2)
rlocus(Gmav);
title('Lugar Geométrico das Raízes - Retificador sem controlador')
subplot(2,2,3)
nyquist(Gmav)
title('Diagrama de Nyquist - Retificador sem controlador')
subplot(2,2,4)
114
margin(Gmav)
% Malha fechada
figure(4)
subplot(2,2,1)
step(feedback(Cv*Gmav,1))
title('Resposta ao Degrau Unitário - Retificador com controlador')
subplot(2,2,2)
rlocus(Cv*Gmav);
title('Lugar Geométrico das Raízes - Retificador com controlador')
subplot(2,2,3)
nyquist(Cv*Gmav)
title('Diagrama de Nyquist - Retificador com controlador')
subplot(2,2,4)
margin(Cv*Gmav)
clear all;
115
C.3. Rotina para plotagem dos resultados de simulação da rotina de sincronismo
% Autor Antônio José Sousa Dias Júnior
% Trabalho de Conclusão de Curso
%% Rotina para plotagem das simulações da rotina de sincronismo
clc;
clear all;
close all;
%% LEITURA DOS DADOS DO PSIM e dos DADOS DO MODELSIM salvos em um arquivo
% .xlsx do Excel
% Entrar com arquivo o caminho do arquivo
[filename,pathname] = uigetfile('*.xlsx');
file = [pathname,filename];
%% Simulação para PLL com entrada em forma de onda quadrada
% Dados de simulação do PSIM
[DADOS] = xlsread(file,1);
t = DADOS(:,1);
Vo = DADOS(:,2);
PLL = DADOS(:,3);
u = DADOS(:,4);
theta = DADOS(:,5);
clear DADOS
% Dados de simulação do MODELSIM
% Ajuste dos valores de tempo, pois o arquivo .list gerado pelo MODELSIM
% limita a quantidade de digitos impressos no arquivo e repete os dados a
% cada evento de borda (subida e descida), isto é, duas vezes
[DADOS] = xlsread(file,2);
aux = DADOS(:,1)*1e-12;
j
= 1;
aux2 = 1;
for i = 3:1:length(aux)
if i>1
if(aux(i) < aux(i-1))
aux2 = aux2*10;
end
end
if (mod(i,2) == 0)
t1(j) = aux2*aux(i);
j = j + 1;
end
end
aux = DADOS(:,2);
j
= 1;
for i = 3:1:length(aux)
if (mod(i,2) == 0)
Vo1(j) = aux(i);
j = j + 1;
end
end
aux = DADOS(:,3);
j
= 1;
for i = 3:1:length(aux)
if (mod(i,2) == 0)
PLL1(j) = aux(i);
116
j = j + 1;
end
end
aux = DADOS(:,4);
j
= 1;
for i = 3:1:length(aux)
if (mod(i,2) == 0)
u1(j) = aux(i);
j = j + 1;
end
end
aux = DADOS(:,5);
j
= 1;
for i = 3:1:length(aux)
if (mod(i,2) == 0)
theta1(j) = aux(i);
j = j + 1;
end
end
% Plotagem dos pontos de simulação do PSIM e do MODELSIM para comparação
figure(1)
subplot(2,2,1)
plot(t,Vo);
grid on
h_legend = legend('PSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('Tensão da rede','FontName','Times','FontSize',16)
subplot(2,2,2)
plot(t,PLL);
grid on
h_legend = legend('PSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('Saída do PLL','FontName','Times','FontSize',16)
subplot(2,2,3)
plot(t1,Vo1,'r');
grid on
h_legend = legend('MODELSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('Tensão da rede','FontName','Times','FontSize',16)
subplot(2,2,4)
plot(t1,PLL1,'r');
grid on
h_legend = legend('MODELSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('Saída do PLL','FontName','Times','FontSize',16)
figure(2)
subplot(2,2,1)
plot(t,u);
grid on
h_legend = legend('PSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('frequência','FontName','Times','FontSize',16)
subplot(2,2,2)
plot(t,theta);
grid on
h_legend = legend('PSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('ângulo','FontName','Times','FontSize',16)
subplot(2,2,3)
117
plot(t1,u1,'r');
grid on
h_legend = legend('MODELSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('frequência','FontName','Times','FontSize',16)
subplot(2,2,4)
plot(t1,theta1,'r');
grid on
h_legend = legend('MODELSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('ângulo','FontName','Times','FontSize',16)
clear all
pause
close all
%% LEITURA DOS DADOS DO PSIM e dos DADOS DO MODELSIM salvos em um arquivo
% .xlsx do Excel
% Entrar com arquivo o caminho do arquivo
[filename,pathname] = uigetfile('*.xlsx');
file = [pathname,filename];
%% Simulação para PLL com entrada em forma de onda senoidal
% Dados de simulação do PSIM
[DADOS] = xlsread(file,3);
t = DADOS(:,1);
Vo = DADOS(:,2);
PLL = DADOS(:,3);
u = DADOS(:,4);
theta = DADOS(:,5);
clear DADOS
% Dados de simulação do MODELSIM
% Ajuste dos valores de tempo, pois o arquivo .list gerado pelo MODELSIM
% limita a quantidade de digitos impressos no arquivo e repete os dados a
% cada evento de borda (subida e descida), isto é, duas vezes
[DADOS] = xlsread(file,4);
aux = DADOS(:,1)*1e-12;
j
= 1;
aux2 = 1;
for i = 3:1:length(aux)
if i>1
if(aux(i) < aux(i-1))
aux2 = aux2*10;
end
end
if (mod(i,2) == 0)
t1(j) = aux2*aux(i);
j = j + 1;
end
end
aux = DADOS(:,2);
j
= 1;
for i = 3:1:length(aux)
if (mod(i,2) == 0)
Vo1(j) = aux(i);
j = j + 1;
end
118
end
aux = DADOS(:,3);
j
= 1;
for i = 3:1:length(aux)
if (mod(i,2) == 0)
PLL1(j) = aux(i);
j = j + 1;
end
end
aux = DADOS(:,4);
j
= 1;
for i = 3:1:length(aux)
if (mod(i,2) == 0)
u1(j) = aux(i);
j = j + 1;
end
end
aux = DADOS(:,5);
j
= 1;
for i = 3:1:length(aux)
if (mod(i,2) == 0)
theta1(j) = aux(i);
j = j + 1;
end
end
% Plotagem dos pontos de simulação do PSIM e do MODELSIM para comparação
figure(3)
subplot(2,2,1)
plot(t,Vo);
grid on
h_legend = legend('PSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('Tensão da rede','FontName','Times','FontSize',16)
subplot(2,2,2)
plot(t,PLL);
grid on
h_legend = legend('PSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('Saída do PLL','FontName','Times','FontSize',16)
subplot(2,2,3)
plot(t1,Vo1,'r');
grid on
h_legend = legend('MODELSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('Tensão da rede','FontName','Times','FontSize',16)
subplot(2,2,4)
plot(t1,PLL1,'r');
grid on
h_legend = legend('MODELSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('Saída do PLL','FontName','Times','FontSize',16)
figure(4)
subplot(2,2,1)
plot(t,u);
grid on
h_legend = legend('PSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('frequência','FontName','Times','FontSize',16)
subplot(2,2,2)
119
plot(t,theta);
grid on
h_legend = legend('PSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('ângulo','FontName','Times','FontSize',16)
subplot(2,2,3)
plot(t1,u1,'r');
grid on
h_legend = legend('MODELSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('frequência','FontName','Times','FontSize',16)
subplot(2,2,4)
plot(t1,theta1,'r');
grid on
h_legend = legend('MODELSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('ângulo','FontName','Times','FontSize',16)
clear all
120
C.4. Rotina para plotagem dos diagramas de Bode dos controladores da malha de tensão:
Buck
% Autor Antônio José Sousa Dias Júnior
% Trabalho de Conclusão de Curso
%% PI DO CONVERSOR CC-CC OPERANDO COMO BUCK
clc
clear all
close all
% Frequências verificadas 10 Hz, 20 Hz, 30 Hz, 40 Hz, 50 Hz, 60 Hz, 70 Hz,
%
80 Hz, 90 Hz, 100 Hz, 200 Hz, 300 Hz, 400 Hz,
%
500 Hz, 600 Hz, 700 Hz, 800Hz, 900 Hz, 1 kHz
% Total de 19 pontos.
w = 2*pi*[10:10:100,200:100:1000];
% Pre-alocando variáveis para plotagem dos diagramas de Bode
magnitude = zeros(1,length(w));
magnitude_PSIM = zeros(1,length(w));
magnitude_MODELSIM = zeros(1,length(w));
ph = zeros(1,length(w));
ph_PSIM = zeros(1,length(w));
ph_MODELSIM = zeros(1,length(w));
%% Controlador teórico - MATLAB
% Vonstrução do vetor de magnitude, fase para posterior plotagem
PI_Buck =
pid(0.13,42000*0.00060714,0,0,1/42000,'IFormula','BackwardEuler');
[mag, phase, wout] = bode(PI_Buck,w);
for i = 1:length(w)
magnitude(i) = 20*log10(mag(1,1,i));
end
for i = 1:length(w)
ph(i) = phase(1,1,i);
end
%% Controlador implementado em linguagem C - PSIM
% Leitura dos dados de simulação .txt
% Cálculo do ganho em dB e da fase em graus
k = 1;
for l = 1:length(w)
% Leitura do arquivo com os pontos de simulação do PSIM
freq = num2str(w(l)/(2*pi));
string = strcat('PSIM_freq_',freq,'_modo_buck.txt');
buck=importdata(string);
dados = buck.data;
clear buck
% Idenficando máximo e mínimo no mesmo ciclo
u1max = max(dados(1:length(dados)/k,2));
u1min = min(dados(1:length(dados)/k,2));
clc;
Vsmax = max(dados(:,3));
Vsmin = min(dados(:,3));
% Cálculo da magnitude em dB
magnitude_PSIM(k) = 20*log10((u1max-u1min)/(32*(Vsmax-Vsmin)));
% Identificando a defasagem entre o sinal de entrada e o sinal de saída
121
for i = 1:length(dados)
if dados(i,2) == u1max
t1 = dados(i,1);
break;
end
end
for j = i:-1:1
if dados(j,3) == Vsmax
t2 = dados(j,1);
break;
end
end
delta = t1 - t2;
% Cálculo da fase em graus
ph_PSIM(k) = 180 - 360*w(l)*delta/(2*pi);
k = k + 1;
clear dados
end
%% Controlador implementado em linguagem VHDL - MODELSIM
% Leitura dos dados de simulação e cálculo do ganho em dB e da fase em
graus
k = 1;
for l = 1:length(w)
% Leitura do arquivo com os pontos de simulação do MODELSIM
freq = num2str(w(l)/(2*pi));
string = strcat('MODELSIM_freq_',freq,'_modo_buck.txt');
buck=importdata(string);
dados = buck.data;
clear buck
% Ajuste dos valores de tempo, pois o arquivo .list gerado pelo
% MODELSIM limita a quantidade de digitos impressos no arquivo
aux2 = 1;
for i = 2:1:length(dados)
if(dados(i,1) < dados(i-1,1)/aux2)
aux2 = 10*aux2;
end
dados(i,1) = aux2*dados(i,1);
end
% Idenficando máximo e mínimo no mesmo ciclo
% Separando os últimos 100 ms de dados
ms100 = length(dados)/6; % 100 ms de dados
dados_aux = dados(5*ms100:length(dados),:);
u1max
u1min
clc;
Vsmax
Vsmin
= max(dados_aux(1:length(dados_aux)/k,7));
= min(dados_aux(1:length(dados_aux)/k,7));
= max(dados_aux(:,4));
= min(dados_aux(:,4));
% Cálculo da magnitude em dB
magnitude_MODELSIM(k) = 20*log10((u1max-u1min)/(32*(Vsmax-Vsmin)));
% Identificando a defasagem entre o sinal de entrada e o sinal de saída
for i = 1:length(dados_aux)
122
if dados_aux(i,7) == u1max
t1 = 1e-12*dados_aux(i,1);
break;
end
end
for j = i:-1:1
if dados_aux(j,4) == Vsmax
t2 = 1e-12*dados_aux(j,1);
break;
end
end
delta = t1 - t2;
% Cálculo da fase em graus
ph_MODELSIM(k) = 180 - 360*w(l)*delta/(2*pi);
k = k + 1;
clear dados
clear dados_aux
end
%% Plotagem
espessura = 2;
figure(1)
subplot(2,1,1)
handle = semilogx(w/(2*pi),magnitude,'*-');
set(handle,'LineWidth',espessura);
grid on
hold on
handle = semilogx(w/(2*pi),magnitude_PSIM,'or--');
set(handle,'LineWidth',espessura);
handle = semilogx(w/(2*pi),magnitude_MODELSIM,'g+-.');
set(handle,'LineWidth',espessura);
xlabel('Frequência em Hz','FontName','Times','FontSize',16)
ylabel('Ganho em dB','FontName','Times','FontSize',16)
h_legend = legend('MATLAB','PSIM','MODELSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('Diagrama de Bode - Ganho','FontName','Times','FontSize',16)
subplot(2,1,2)
handle = semilogx(w/(2*pi),ph,'*-');
set(handle,'LineWidth',espessura);
grid on
hold on
handle = semilogx(w/(2*pi),ph_PSIM,'or--');
set(handle,'LineWidth',espessura);
handle = semilogx(w/(2*pi),ph_MODELSIM,'g+-.');
set(handle,'LineWidth',espessura);
xlabel('Frequência em Hz','FontName','Times','FontSize',16)
ylabel('Fase em graus','FontName','Times','FontSize',16)
title('Diagrama de Bode - Fase','FontName','Times','FontSize',16)
clear all
123
C.5. Rotina para plotagem dos diagramas de Bode dos controladores da malha de tensão:
Boost
% Autor Antônio José Sousa Dias Júnior
% Trabalho de Conclusão de Curso
%% PI DO CONVERSOR CC-CC OPERANDO COMO BOOST
clc
clear all
close all
% Frequências verificadas 10 Hz, 20 Hz, 30 Hz, 40 Hz, 50 Hz, 60 Hz, 70 Hz,
%
80 Hz, 90 Hz, 100 Hz, 200 Hz, 300 Hz, 400 Hz,
%
500 Hz, 600 Hz, 700 Hz, 800Hz, 900 Hz, 1 kHz
% Total de 19 pontos.
w = 2*pi*[10:10:100,200:100:1000];
% Pre-alocando variáveis
magnitude = zeros(1,length(w));
magnitude_PSIM = zeros(1,length(w));
magnitude_MODELSIM = zeros(1,length(w));
ph = zeros(1,length(w));
ph_PSIM = zeros(1,length(w));
ph_MODELSIM = zeros(1,length(w));
%% Controlador teórico - MATLAB
PI_Boost =
pid(0.255,42000*0.00049524,0,0,1/42000,'IFormula','BackwardEuler');
[mag, phase, wout] = bode(PI_Boost,w);
for i = 1:length(w)
magnitude(i) = 20*log10(mag(1,1,i));
end
for i = 1:length(w)
ph(i) = phase(1,1,i);
end
%% Controlador implementado em linguagem C - PSIM
% Leitura dos dados de simulação. txt
% Cálculo do ganho em dB e da fase em graus
k = 1;
for l = 1:length(w)
% Leitura do arquivo com os pontos de simulação do PSIM
freq = num2str(w(l)/(2*pi));
string = strcat('PSIM_freq_',freq,'_modo_boost.txt');
boost=importdata(string);
dados = boost.data;
clear boost
% Idenficando máximo e mínimo no mesmo ciclo
u1max = max(dados(1:length(dados)/k,2));
u1min = min(dados(1:length(dados)/k,2));
clc;
Vsmax = max(dados(:,3));
Vsmin = min(dados(:,3));
% Cálculo da magnitude em dB
magnitude_PSIM(k) = 20*log10((u1max-u1min)/(32*(Vsmax-Vsmin)));
% Identificando a defasagem entre o sinal de entrada e o sinal de saída
for i = 1:length(dados)
124
if dados(i,2) == u1max
t1 = dados(i,1);
break;
end
end
for j = i:-1:1
if dados(j,3) == Vsmax
t2 = dados(j,1);
break;
end
end
delta = t1 - t2;
% Cálculo da fase em graus
ph_PSIM(k) = 180 - 360*w(l)*delta/(2*pi);
k = k + 1;
clear dados
end
%% Controlador implementado em linguagem VHDL - MODELSIM
% Leitura dos dados de simulação e cálculo do ganho em dB e da fase em
graus
k = 1;
for l = 1:length(w)
% Leitura do arquivo com os pontos de simulação do MODELSIM
freq = num2str(w(l)/(2*pi));
string = strcat('MODELSIM_freq_',freq,'_modo_boost.txt');
boost=importdata(string);
dados = boost.data;
clear boost
% Ajuste dos valores de tempo, pois o arquivo .list gerado pelo
% MODELSIM limita a quantidade de digitos impressos no arquivo
aux2 = 1;
for i = 2:1:length(dados)
if(dados(i,1) < dados(i-1,1)/aux2)
aux2 = 10*aux2;
end
dados(i,1) = aux2*dados(i,1);
end
% Idenficando máximo e mínimo no mesmo ciclo
% Separando os últimos 100 ms de dados
ms100 = length(dados)/6; % 100 ms de dados
dados_aux = dados(5*ms100:length(dados),:);
u1max
u1min
clc;
Vsmax
Vsmin
= max(dados_aux(1:length(dados_aux)/k,7));
= min(dados_aux(1:length(dados_aux)/k,7));
= max(dados_aux(:,4));
= min(dados_aux(:,4));
% Cálculo da magnitude em dB
magnitude_MODELSIM(k) = 20*log10((u1max-u1min)/(32*(Vsmax-Vsmin)));
% Identificando a defasagem entre o sinal de entrada e o sinal de saída
for i = 1:length(dados_aux)
if dados_aux(i,7) == u1max
125
t1 = 1e-12*dados_aux(i,1);
break;
end
end
for j = i:-1:1
if dados_aux(j,4) == Vsmax
t2 = 1e-12*dados_aux(j,1);
break;
end
end
delta = t1 - t2;
% Cálculo da fase em graus
ph_MODELSIM(k) = 180 - 360*w(l)*delta/(2*pi);
k = k + 1;
clear dados
clear dados_aux
end
%% Plotagem
espessura = 2;
figure(1)
subplot(2,1,1)
handle = semilogx(w/(2*pi),magnitude,'*-');
set(handle,'LineWidth',espessura);
grid on
hold on
handle = semilogx(w/(2*pi),magnitude_PSIM,'or--');
set(handle,'LineWidth',espessura);
handle = semilogx(w/(2*pi),magnitude_MODELSIM,'g+-.');
set(handle,'LineWidth',espessura);
xlabel('Frequência em Hz','FontName','Times','FontSize',16)
ylabel('Ganho em dB','FontName','Times','FontSize',16)
h_legend = legend('MATLAB','PSIM','MODELSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('Diagrama de Bode - Ganho','FontName','Times','FontSize',16)
subplot(2,1,2)
handle = semilogx(w/(2*pi),ph,'*-');
set(handle,'LineWidth',espessura);
grid on
hold on
handle = semilogx(w/(2*pi),ph_PSIM,'or--');
set(handle,'LineWidth',espessura);
handle = semilogx(w/(2*pi),ph_MODELSIM,'g+-.');
set(handle,'LineWidth',espessura);
xlabel('Frequência em Hz','FontName','Times','FontSize',16)
ylabel('Fase em graus','FontName','Times','FontSize',16)
title('Diagrama de Bode - Fase','FontName','Times','FontSize',16)
clear all
126
C.6. Rotina para plotagem dos diagramas de Bode dos controladores da malha de tensão:
Retificador
% Autor Antônio José Sousa Dias Júnior
% Trabalho de Conclusão de Curso
%% PI DO CONVERSOR CC-CA OPERANDO COMO RETIFICADOR
clc
clear all
close all
% Frequências verificadas 10 Hz, 20 Hz, 30 Hz, 40 Hz, 50 Hz, 60 Hz, 70 Hz,
%
80 Hz, 90 Hz, 100 Hz, 200 Hz, 300 Hz, 400 Hz,
%
500 Hz, 600 Hz, 700 Hz, 800Hz, 900 Hz, 1 kHz
% Total de 19 pontos.
w = 2*pi*[10:10:100,200:100:1000];
% Pre-alocando variáveis
magnitude = zeros(1,length(w));
magnitude_PSIM = zeros(1,length(w));
magnitude_MODELSIM = zeros(1,length(w));
ph = zeros(1,length(w));
ph_PSIM = zeros(1,length(w));
ph_MODELSIM = zeros(1,length(w));
%% Controlador teórico - MATLAB
PI_Ret = pid(0.0585,3.18,0,0,1/42000,'IFormula','BackwardEuler');
[mag, phase, wout] = bode(PI_Ret,w);
for i = 1:length(w)
magnitude(i) = 20*log10(mag(1,1,i));
end
for i = 1:length(w)
ph(i) = phase(1,1,i);
end
%% Controlador implementado em linguagem C - PSIM
% Leitura dos dados de simulação. txt
% Cálculo do ganho em dB e da fase em graus
k = 1;
for l = 1:length(w)
% Leitura do arquivo com os pontos de simulação do PSIM
freq = num2str(w(l)/(2*pi));
string = strcat('PSIM_freq_',freq,'_modo_retificador.txt');
retificador=importdata(string);
dados = retificador.data;
clear retificador
% Idenficando máximo e mínimo no mesmo ciclo
u2max = max(dados(1:length(dados)/k,2));
u2min = min(dados(1:length(dados)/k,2));
clc;
Vsmax = max(dados(:,3));
Vsmin = min(dados(:,3));
% Cálculo da magnitude em dB
magnitude_PSIM(k) = 20*log10((u2max-u2min)/(32*(Vsmax-Vsmin)));
% Identificando a defasagem entre o sinal de entrada e o sinal de saída
for i = 1:length(dados)
if dados(i,2) == u2max
127
t1 = dados(i,1);
break;
end
end
for j = i:-1:1
if dados(j,3) == Vsmax
t2 = dados(j,1);
break;
end
end
delta = t1 - t2;
% Cálculo da fase em graus
ph_PSIM(k) = - 360*w(l)*delta/(2*pi);
k = k + 1;
clear dados
end
%% Controlador implementado em linguagem VHDL - MODELSIM
% Leitura dos dados de simulação e cálculo do ganho em dB e da fase em
graus
k = 1;
for l = 1:length(w)
% Leitura do arquivo com os pontos de simulação do MODELSIM
freq = num2str(w(l)/(2*pi));
string = strcat('MODELSIM_freq_',freq,'_modo_retificador.txt');
retificador=importdata(string);
dados = retificador.data;
clear retificador
% Ajuste dos valores de tempo, pois o arquivo .list gerado pelo
% MODELSIM limita a quantidade de digitos impressos no arquivo
aux2 = 1;
for i = 2:1:length(dados)
if(dados(i,1) < dados(i-1,1)/aux2)
aux2 = 10*aux2;
end
dados(i,1) = aux2*dados(i,1);
end
% Idenficando máximo e mínimo no mesmo ciclo
% Separando os últimos 100 ms de dados
ms100 = length(dados)/6; % 100 ms de dados
dados_aux = dados(5*ms100:length(dados),:);
u2max
u2min
clc;
Vsmax
Vsmin
= max(dados_aux(1:length(dados_aux)/k,8));
= min(dados_aux(1:length(dados_aux)/k,8));
= max(dados_aux(:,4));
= min(dados_aux(:,4));
% Cálculo da magnitude em dB
magnitude_MODELSIM(k) = 20*log10((u2max-u2min)/(32*(Vsmax-Vsmin)));
% Identificando a defasagem entre o sinal de entrada e o sinal de saída
for i = 1:length(dados_aux)
if dados_aux(i,8) == u2max
t1 = 1e-12*dados_aux(i,1);
128
break;
end
end
for j = i:-1:1
if dados_aux(j,4) == Vsmax
t2 = 1e-12*dados_aux(j,1);
break;
end
end
delta = t1 - t2;
% Cálculo da fase em graus
ph_MODELSIM(k) = - 360*w(l)*delta/(2*pi);
k = k + 1;
clear dados
clear dados_aux
end
%% Plotagem
espessura = 2;
figure(1)
subplot(2,1,1)
handle = semilogx(w/(2*pi),magnitude,'*-');
set(handle,'LineWidth',espessura);
grid on
hold on
handle = semilogx(w/(2*pi),magnitude_PSIM,'or--');
set(handle,'LineWidth',espessura);
handle = semilogx(w/(2*pi),magnitude_MODELSIM,'g+-.');
set(handle,'LineWidth',espessura);
xlabel('Frequência em Hz','FontName','Times','FontSize',16)
ylabel('Ganho em dB','FontName','Times','FontSize',16)
h_legend = legend('MATLAB','PSIM','MODELSIM');
set(h_legend,'FontName','Times','FontSize',16)
title('Diagrama de Bode - Ganho','FontName','Times','FontSize',16)
subplot(2,1,2)
handle = semilogx(w/(2*pi),ph,'*-');
set(handle,'LineWidth',espessura);
grid on
hold on
handle = semilogx(w/(2*pi),ph_PSIM,'or--');
set(handle,'LineWidth',espessura);
handle = semilogx(w/(2*pi),ph_MODELSIM,'g+-.');
set(handle,'LineWidth',espessura);
xlabel('Frequência em Hz','FontName','Times','FontSize',16)
ylabel('Fase em graus','FontName','Times','FontSize',16)
title('Diagrama de Bode - Fase','FontName','Times','FontSize',16)
clear all
129
C.7. Rotina para plotagem dos resultados de simulação dos controladores da malha de
corrente
% Autor Antônio José Sousa Dias Júnior
% Trabalho de Conclusão de Curso
%% SIMULAÇÃO DOS CONTROLADORES DEADBEAT
% Deadbeat Buck
clc
clear all
close all
% Leitura dos dados de simulação .txt
deadbeat=importdata('PSIM_Deadbeat_Buck.txt');
dados = deadbeat.data;
tempo_PSIM = dados(:,1);
Ib_PSIM = dados(:,2);
Vc_PSIM = dados(:,3);
Vs_PSIM = dados(:,4);
d_PSIM = dados(:,5);
clear dados
% Leitura dos dados de simulação .txt
deadbeat=importdata('MODELSIM_Deadbeat_modo_0.txt');
dados = deadbeat.data;
tempo_MODELSIM = 1e-12*dados(:,1);
aux2 = 1;
for i = 2:1:length(tempo_MODELSIM)
if(tempo_MODELSIM(i) < tempo_MODELSIM(i-1)/aux2)
aux2 = 10*aux2;
end
tempo_MODELSIM(i) = aux2*tempo_MODELSIM(i);
end
Ib_MODELSIM = dados(:,3);
Vc_MODELSIM = dados(:,5);
Vs_MODELSIM = dados(:,6);
d_MODELSIM = dados(:,8);
clear dados
% Plotagem das saídas PWMs
figure(1)
espessura = 2;
subplot(2,2,1)
handle = plot(tempo_PSIM,Ib_PSIM,'r');
set(handle,'LineWidth',espessura);
hold on
handle = plot(tempo_PSIM,Vs_PSIM,'b');
set(handle,'LineWidth',espessura);
130
handle = plot(tempo_PSIM,Vc_PSIM,'g');
set(handle,'LineWidth',espessura);
grid on
xlabel('Tempo em segundos','FontName','Times','FontSize',16)
h_legend = legend('Ib-adc','Vs-adc','Vc-adc');
set(h_legend,'FontName','Times','FontSize',16)
title('PSIM - Entradas','FontName','Times','FontSize',16)
subplot(2,2,2)
handle = plot(tempo_PSIM,d_PSIM,'r');
set(handle,'LineWidth',espessura);
hold on
grid on
xlabel('Tempo em segundos','FontName','Times','FontSize',16)
h_legend = legend('d');
set(h_legend,'FontName','Times','FontSize',16)
title('PSIM - Saída','FontName','Times','FontSize',16)
subplot(2,2,3)
handle = plot(tempo_MODELSIM,Ib_MODELSIM,'r');
set(handle,'LineWidth',espessura);
hold on
handle = plot(tempo_MODELSIM,Vs_MODELSIM,'b');
set(handle,'LineWidth',espessura);
handle = plot(tempo_MODELSIM,Vc_MODELSIM,'g');
set(handle,'LineWidth',espessura);
grid on
axis([0.01,0.04,0,1000]); % Altera limites do grafico.
xlabel('Tempo em segundos','FontName','Times','FontSize',16)
h_legend = legend('Ib-adc','Vs-adc','Vc-adc');
set(h_legend,'FontName','Times','FontSize',16)
title('MODELSIM - Entradas','FontName','Times','FontSize',16)
subplot(2,2,4)
handle = plot(tempo_MODELSIM,d_MODELSIM,'r');
set(handle,'LineWidth',espessura);
hold on
grid on
axis([0.01,0.04,0,1000]); % Altera limites do grafico.
xlabel('Tempo em segundos','FontName','Times','FontSize',16)
h_legend = legend('d');
set(h_legend,'FontName','Times','FontSize',16)
title('MODELSIM - Saída','FontName','Times','FontSize',16)
clear all;
% Deadbeat Boost
% Leitura dos dados de simulação .txt
deadbeat=importdata('PSIM_Deadbeat_Boost.txt');
dados = deadbeat.data;
tempo_PSIM = dados(:,1);
Ib_PSIM = dados(:,2);
Vc_PSIM = dados(:,3);
Vs_PSIM = dados(:,4);
d_PSIM = dados(:,5);
clear dados
131
% Leitura dos dados de simulação .txt
deadbeat=importdata('MODELSIM_Deadbeat_modo_1.txt');
dados = deadbeat.data;
tempo_MODELSIM = 1e-12*dados(:,1);
aux2 = 1;
for i = 2:1:length(tempo_MODELSIM)
if(tempo_MODELSIM(i) < tempo_MODELSIM(i-1)/aux2)
aux2 = 10*aux2;
end
tempo_MODELSIM(i) = aux2*tempo_MODELSIM(i);
end
Ib_MODELSIM = dados(:,3);
Vc_MODELSIM = dados(:,5);
Vs_MODELSIM = dados(:,7);
d_MODELSIM = dados(:,8);
clear dados
% Plotagem das saídas PWMs
figure(2)
espessura = 2;
subplot(2,2,1)
handle = plot(tempo_PSIM,Ib_PSIM,'r');
set(handle,'LineWidth',espessura);
hold on
handle = plot(tempo_PSIM,Vs_PSIM,'b');
set(handle,'LineWidth',espessura);
handle = plot(tempo_PSIM,Vc_PSIM,'g');
set(handle,'LineWidth',espessura);
grid on
xlabel('Tempo em segundos','FontName','Times','FontSize',16)
h_legend = legend('Ib-adc','Vs-adc','Vc-adc');
set(h_legend,'FontName','Times','FontSize',16)
title('PSIM - Entradas','FontName','Times','FontSize',16)
subplot(2,2,2)
handle = plot(tempo_PSIM,d_PSIM,'r');
set(handle,'LineWidth',espessura);
hold on
grid on
xlabel('Tempo em segundos','FontName','Times','FontSize',16)
h_legend = legend('d');
set(h_legend,'FontName','Times','FontSize',16)
title('PSIM - Saída','FontName','Times','FontSize',16)
subplot(2,2,3)
handle = plot(tempo_MODELSIM,Ib_MODELSIM,'r');
set(handle,'LineWidth',espessura);
hold on
handle = plot(tempo_MODELSIM,Vs_MODELSIM,'b');
set(handle,'LineWidth',espessura);
handle = plot(tempo_MODELSIM,Vc_MODELSIM,'g');
set(handle,'LineWidth',espessura);
132
grid on
axis([0.01,0.04,500,1100]); % Altera limites do grafico.
xlabel('Tempo em segundos','FontName','Times','FontSize',16)
h_legend = legend('Ib-adc','Vs-adc','Vc-adc');
set(h_legend,'FontName','Times','FontSize',16)
title('MODELSIM - Entradas','FontName','Times','FontSize',16)
subplot(2,2,4)
handle = plot(tempo_MODELSIM,d_MODELSIM,'r');
set(handle,'LineWidth',espessura);
hold on
grid on
axis([0.01,0.04,1000,2000]); % Altera limites do grafico.
xlabel('Tempo em segundos','FontName','Times','FontSize',16)
h_legend = legend('d');
set(h_legend,'FontName','Times','FontSize',16)
title('MODELSIM - Saída','FontName','Times','FontSize',16)
clear all;
% Deadbeat Retificador
% Leitura dos dados de simulação .txt
pwm=importdata('PSIM_Deadbeat_Retificador.txt');
dados = pwm.data;
tempo_PSIM = dados(:,1);
Io_PSIM = dados(:,2);
Vc_PSIM = dados(:,3);
Vo_PSIM = dados(:,4);
m1_PSIM = dados(:,5);
m2_PSIM = dados(:,6);
% Leitura dos dados de simulação .txt
pwm=importdata('MODELSIM_Deadbeat_modo_0.txt');
dados = pwm.data;
tempo_MODELSIM = 1e-12*dados(:,1);
aux2 = 1;
for i = 2:1:length(tempo_MODELSIM)
if(tempo_MODELSIM(i) < tempo_MODELSIM(i-1)/aux2)
aux2 = 10*aux2;
end
tempo_MODELSIM(i) = aux2*tempo_MODELSIM(i);
end
Io_MODELSIM
Vc_MODELSIM
Vo_MODELSIM
m1_MODELSIM
m2_MODELSIM
=
=
=
=
=
dados(:,4);
dados(:,5);
dados(:,7);
dados(:,9);
dados(:,10);
clear dados
% Plotagem das saídas PWMs
figure(3)
espessura = 2;
133
subplot(2,2,1)
handle = plot(tempo_PSIM,Io_PSIM,'r');
set(handle,'LineWidth',espessura);
hold on
handle = plot(tempo_PSIM,Vo_PSIM,'b');
set(handle,'LineWidth',espessura);
handle = plot(tempo_PSIM,Vc_PSIM,'g');
set(handle,'LineWidth',espessura);
grid on
xlabel('Tempo em segundos','FontName','Times','FontSize',16)
h_legend = legend('Io-adc','Vo-adc','Vc-adc');
set(h_legend,'FontName','Times','FontSize',16)
title('PSIM - Entradas','FontName','Times','FontSize',16)
subplot(2,2,2)
handle = plot(tempo_PSIM,m1_PSIM,'r--');
set(handle,'LineWidth',espessura);
hold on
grid on
handle = plot(tempo_PSIM,m2_PSIM,'b');
set(handle,'LineWidth',espessura);
xlabel('Tempo em segundos','FontName','Times','FontSize',16)
h_legend = legend('m1','m2');
set(h_legend,'FontName','Times','FontSize',16)
title('PSIM - Saídas','FontName','Times','FontSize',16)
subplot(2,2,3)
handle = plot(tempo_MODELSIM,Io_MODELSIM,'r');
set(handle,'LineWidth',espessura);
hold on
handle = plot(tempo_MODELSIM,Vo_MODELSIM,'b');
set(handle,'LineWidth',espessura);
handle = plot(tempo_MODELSIM,Vc_MODELSIM,'g');
set(handle,'LineWidth',espessura);
grid on
axis([0.01,0.1,0,1200]); % Altera limites do grafico.
xlabel('Tempo em segundos','FontName','Times','FontSize',16)
h_legend = legend('Io-adc','Vo-adc','Vc-adc');
set(h_legend,'FontName','Times','FontSize',16)
title('MODELSIM - Entradas','FontName','Times','FontSize',16)
subplot(2,2,4)
handle = plot(tempo_MODELSIM,m1_MODELSIM,'r--');
set(handle,'LineWidth',espessura);
hold on
grid on
axis([0.01,0.1,0,2000]); % Altera limites do grafico.
handle = plot(tempo_MODELSIM,m2_MODELSIM,'b');
set(handle,'LineWidth',espessura);
xlabel('Tempo em segundos','FontName','Times','FontSize',16)
h_legend = legend('m1','m2');
set(h_legend,'FontName','Times','FontSize',16)
title('MODELSIM - Saídas','FontName','Times','FontSize',16)
clear all;
134
C.8. Rotina para plotagem dos resultados de simulação dos sinais PWM
% Autor Antônio José Sousa Dias Júnior
% Trabalho de Conclusão de Curso
%% SIMULAÇÃO DAS SAÍDAS PWMs
clc
clear all
close all
% Leitura dos dados de simulação .txt
pwm=importdata('MODELSIM_PWM.txt');
dados = pwm.data;
tempo = 1e-6*dados(:,1);
d = dados(:,5);
m1 = dados(:,6);
m2 = dados(:,7);
pwm1 = dados(:,8);
pwm2 = dados(:,9);
pwm3 = dados(:,10);
pwm4 = dados(:,11);
pwm5 = dados(:,12);
pwm6 = dados(:,13);
% Plotagem das saídas PWMs
figure(1)
espessura = 2;
subplot(3,1,1)
handle = plot(tempo,pwm1,'r--');
set(handle,'LineWidth',espessura);
hold on
axis([60,tempo(length(tempo)),0,2]); % Altera limites do grafico.
handle = plot(tempo,pwm2);
set(handle,'LineWidth',espessura);
grid on
xlabel('Tempo em microssegundos','FontName','Times','FontSize',16)
h_legend = legend('pwm1','pwm2');
set(h_legend,'FontName','Times','FontSize',16)
subplot(3,1,2)
handle = plot(tempo,pwm3,'r--');
set(handle,'LineWidth',espessura);
hold on
axis([60,tempo(length(tempo)),0,2]); % Altera limites do grafico.
handle = plot(tempo,pwm4);
set(handle,'LineWidth',espessura);
grid on
xlabel('Tempo em microssegundos','FontName','Times','FontSize',16)
h_legend = legend('pwm3','pwm4');
set(h_legend,'FontName','Times','FontSize',16)
subplot(3,1,3)
handle = plot(tempo,pwm5,'r--');
set(handle,'LineWidth',espessura);
135
hold on
axis([60,tempo(length(tempo)),0,2]); % Altera limites do grafico.
handle = plot(tempo,pwm6);
set(handle,'LineWidth',espessura);
grid on
xlabel('Tempo em microssegundos','FontName','Times','FontSize',16)
h_legend = legend('pwm5','pwm6');
set(h_legend,'FontName','Times','FontSize',16)
clear all;
Download