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;