Arduino Lab 17 – Inversor de tensão senoidal microcontrolado – Versão 1


Neste Lab detalharemos a montagem de um inversor de tensão DC / AC, com modulação por sPWM (PWM senoidal), utilizando o Arduino Mega 1280 como principal controlador. A forma de onda na saída do inversor é igual a encontrada na rede elétrica convencional com uma frequência de 60 Hz. A imagem abaixo ilustra um overview da montagem final do protótipo.

Este trabalho foi referenciado em uma monografia de TCC, pela UFOP, e pode ser lido neste link.

Montagem do conjunto

Topologia de inversores de baixa frequência

Na eletrônica de potência, os inversores são equipamentos que permitem converter uma forma de energia elétrica contínua em alternada. Para os inversores de baixa frequência, a função básica e mais popular é converter 12/24/48 V contínuos (Vcc) em 127 ou 220 Vac a 50/60 Hz.

São três os principais tipos de inversores encontrados no mercado atualmente. O inversor senoidal puro, o inversor senoidal modificado e o de onda totalmente quadrada. A diferença está na forma de onda na saída do inversor que, para o de onda modificada e quadrada pode afetar o funcionamento de equipamentos eletrônicos susceptíveis a distorções e harmônicos de formas diferentes. A figura abaixo ilustra a saída destes inversores.

Formas de onda nos diferentes tipos de inversores

Basicamente a topologia construtiva do bloco de potência dos inversores que empregam a ponte H e com transformador elevador de tensão na saída seguem o esquemático abaixo independente da forma de onda.

Ponte H do inversor de tensão

Quando os MOSFETs Q1 e Q4 estão ativos e Q3 e Q4 desligados, o transformador de saída recebe a corrente da bateria em um sentido no qual será reproduzido o semiciclo positivo. Já quando o contrário ocorre, Q1 e Q4 desligados e Q3 e Q2 ligados o transformador receberá uma corrente que reproduzirá o semiciclo negativo da forma de onda alternada.

Trabalhando da forma descrita anteriormente, sem nenhum tipo de modulação, a carga “enxergará” uma forma de onda quadrada com apenas dois níveis. Para que tenhamos uma forma de onda senoidal na saída, é preciso modular os pulsos fornecidos ao gate dos MOSFETs de forma variável e este é o assunto do próximo tópico.

Modulação sPWM

Pulse Width Modulation (PWM) apresenta a principal função de controlar a tensão entregue a um circuito elétrico ativando e desativando uma carga de forma muito rápida. Nos módulos do Arduino, os pinos que possuem a função PWM também são denominados como saídas analógicas ou Analog Outputs. A figura abaixo ilustra um sinal PWM típico onde a tensão média é de 3V.

Sinal PWM típico

Existem duas propriedades para um sinal PWM básico sendo elas a frequência, que determina o período do sinal e o Duty Cycle que é determinado pela razão entre o tempo ligado e o tempo desligado – Ton e Toff. O sinal da figura anterior possui um período de 250us, o que significa que a frequência aplicada é de 4KHz. Já para o duty cycle D = Ton / Toff = 150us/250us = 0,6 ou 60%. É este parâmetro que determina a tensão média fornecida a uma carga. Na figura acima novamente, para um D = 60% e sendo a tensão de entrada Vin igual a 5V, a tensão media Vout = Vin x D = 5 x 0,6 = 3V como indicado na linha vermelha da mesma figura. Após uma filtragem, uma tensão analógica estável pode ser alcançada.

IMPLEMENTAÇÃO DE UM PWM

Tipicamente, os microcontroladores utilizam timers e contadores e comparadores para implementar um sinal PWM. Os passos descritos neste tópico tomam como exemplo a figura abaixo.

Implementação de um PWM

A onda triangular na cor azul representa o período do sinal e é o valor de contagem que reseta a cada 2666 ticks de clock quando o contador alcança o overflow. Corresponde aos registradores ICR1 e ICR3 para o timer 1 e 3 respectivamente no Arduino Mega.

Os dois outros valores correspondem aos comparadores OC1A e OC1B que estão diretamente ligados aos pinos D9 e D10. Quando o registrador OCR1A contém o valor 1333 e esse valor for alcançado pelo contador, o pino D9 irá para o nível 0. O mesmo acontece com o registrador OCR1B para o valor 1866 e o pino D10. Os valores anteriores correspondem a 50% e 70% de duty cycle. Os pinos irão para o nível alto novamente quando o contador alcançar o overflow e voltar ao estado inicial.

sPWM

Diante da explicação anterior, a implementação de um sinal sPWM se dá apenas mudando dinamicamente o valor dos registradores OCR1A e OCR1B o que mudará o duty cycle do sinal PWM. Pode ser implementado com uma tabela (vetor) já pronto no cabeçalho do software contendo os valores e um laço for para percorrer as posições deste vetor. Outra forma de implementar é montar este vetor dentro da função setup e aloca-lo na memória dinâmica do microcontrolador, produzindo o mesmo resultado.

O resultado é pulsos de pequena largura no início e final do ciclo e de grande largura, 100 % de duty cycle, no meio do ciclo. A figura abaixo ilustra esta dinâmica.

Implementação de um sinal sPWM

Na imagem abaixo, feita no osciloscópio, podemos observar que os pulsos nas extremidades são de menor largura em relação aos pulsos do meio, onde temos 100% do duty cycle.

Imagem sPWM osciloscopio

Combinando dois pinos do microcontrolador, D9 e D10 respectivamente, teremos o sinal alternado, representando o semiciclo positivo e negativo, montado por cada um dos pinos. Na imagem abaixo, a ponta de prova do osciloscópio foi conectada ao pino D9 e o terra da ponta foi conectado ao pino D10.

Sinal alternado osciloscópio

Esquema de ligação

O esquema de ligação completo desta aplicação está indicado na figura abaixo. As etapas importantes do sistema serão detalhada posteriormente.

Esquema completo

ETAPA DE POTÊNCIA

Nesta etapa, os drivers TLP250 recebem o sinal chaveado (PWM) do Arduino e os repassa ao gate dos MOSFETs. A parte alta da ponte H, também denominado High Side necessita de um circuito que provê uma tensão maior do que 12V devido ao source não está conectado a referência do circuito. Esta tensão precisa ser 10 a 15 V maior do que a tensão de alimentação. Este circuito é chamado de bootstrap e é representado pelo diodo de sinal (chaveamento rápido) e do capacitor de Tantalum conectado ao Source e alimentação do TLP250. Alguns drivers para MOSFEt já apresentam o circuito de bootstrap embutidos no encapsulamento do chip.

Sem este circuito a tensão mínima VGS não é alcançada e o MOSFET irá trabalhar em sua região linear (não saturado como deve ser) funcionando como um amplificador e, consequentemente, irá aquecer com uma mínima corrente aplicada levando a ruptura de sua junção. No começo dos testes deste tutorial não atentamos para o uso do bootstrap e 4 MOSFETs queimaram-se.

Na saída da ponte temos um TRAFO elevador de tensão de 12 para 220Vac e um capacitor de 1uf para filtrar a tensão entregue a carga. A imagem abaixo detalha esta etapa.

Circuito de potência

ETAPA QUE MONITORA A TENSÃO DE SAÍDA

Nesta etapa, a tensão de saída do inversor é aplicada ao transformador TR2 abaixador de 220V para 15V, o resistor R9 e o capacitor C6 formam um filtro passa baixas (~72 Hz) e o sinal é aplicado a ponte de diodos BR1 para uma retificação completa do sinal.

O capacitor C7 elimina os ripples e os resistores R10 e R11 formam um divisor de tensão. O capacitor cerâmico C8 filtra novamente os ruídos em alta frequência. A figura abaixo ilustra esta etapa.

Etapa de monitor de tensão

ETAPA QUE MONITORA A TENSÃO DA BATERIA

Nesta etapa temos apenas um capacitor C10 que estabiliza a amostra da tensão da bateria, um divisor de tensão composto por R12 e R13 e um capacitor cerâmico C11 para eliminar os ruídos em alta frequência. O circuito é indicado abaixo.

Etapa de monitor de tensão da bateria

ETAPA QUE MONITORA A CORRENTE DC DE ENTRADA

Esta etapa foi elaborada com um shield de Arduino já com o CI ACS712 de 20 A já montado. Toda a corrente DC que passa pelo circuito é monitorada pelo CI. O capacitor C12 é de desacoplamento e o C9 faz parte do filtro de altas frequências. Ambos já estão montados no shield. A figura abaixo ilustra esta etapa.

Etapa que monitora a corrente DC

A imagem abaixo ilustra os blocos de leitura dos sinais de entrada e gerados pelo inversor.

Bloco de leitura dos sinais do inversor

A imagem abaixo detalha a montagem do protótipo na parte de potencia, detalhando os MOSFETs junto ao trocador de calor e os drivers TLP250.

Detalhe da parte de potencia do inversor

Algoritmo

O algoritmo que implementa este inversor está indicado abaixo. O Arduino Mega foi utilizado devido ao número de timers disponíveis e optamos por utilizar o timer 1 e 3, ambos de 16 bits.

Um detalhe importante a ser considerado é que a declaração dos pinos de saída feita com o uso do bitwise na função OR é apenas para o Arduino Mega. Para outras plataformas, a deve-se consultar o datasheet e declarar da forma correta.
[crayon-672651c6632e3291672561/]
Após vários testes sobre o melhor método para aplicar a modulação sPWM aos MOSFETs, o teste mais satisfatório com respeito a forma de onda e comportamento com diferentes cargas foi o modelado por um Aplication Note da Texas Instruments.

Este método não segue o convencional em aplicar pulsos ao MOSFET Q1 e Q4 simultaneamente assim como em Q2 e Q3. Ao invés disso, ele trabalha aplicando os sinais no lado alto da ponte (Q1 e Q3) e complementando estes sinais em Q2 e Q4. A figura abaixo exemplifica o discutido.

Diagrama de chaveamento dos MOSFETs

Para o semiciclo negativo da onda senoidal, desligamos Q1, complementamos seu sinal ativando Q2, aplicamos modulação em Q3 e complementamos seu valor em Q4. Para o semiciclo positivo, aplicamos modulação em Q1, complementamos seu sinal em Q2, desligamos Q3 e complementamos seu sinal em Q4. O rascunho abaixo ilustra este procedimento.

Rascunho sobre o método de modulação

O resultado desta modulação é uma onda senoidal com a forma indicada na figura abaixo.

Resultado onda senoidal

A imagem abaixo ilustra dois sinais em complemento sendo aplicados a Q1 (Arduino D11) e Q2 (Arduino D12) respectivamente.

Imagen dos sinais em complemento

Resultados

Os seguintes resultados foram obtidos durante os teste do inversor com duas cargas de natureza distintas, sendo uma lâmpada incandescente de 100A / 220V e uma lâmpada eletrônica de LED de 8W bivolt.

As leituras AC apresentadas abaixo são em RMS.

Inversor sem carga:

  • Tensão da bateria: 12.8 Vcc
  • Tensão de saída da ponte H: 9.31 Vcc (~Vout=12.8/1.44= 9.05V)
  • Tensão de saída TRAFO: 166.5 Vac (~Vout=166.5*1,44=235.5 V)
  • Corrente DC de entrada da ponte H: 0.30 A
  • Corrente AC de saída do TRAFO: 0 A

Lâmpada de LED (8W – Bivolt):

  • Tensão da bateria: 12.3 Vcc
  • Tensão de saída da ponte: 9.09 Vcc (Vout=12.3/1.44= 8.7 V)
  • Tensão de saída TRAFO: 152.4 Vac (Vout=152.4*1.44=215.5 V)
  • Corrente DC de entrada da ponte H: 1.02 A
  • Corrente AC de saída do TRAFO: 0.05 A

Lâmpada Incandescente (100W – 220V):

  • Tensão da bateria: 12.1 Vcc
  • Tensão de saída da ponte: 8.09 Vcc (Vout=12.1/1.44= 8.4 V)
  • Tensão de saída TRAFO: 118.0 Vac (Vout=118.0*1.44=167.0 V)
  • Corrente DC de entrada da ponte H: 2.89 A
  • Corrente AC de saída do TRAFO: 0.195 A

Podemos notar que a eficiência está muito baixa para ambas as cargas. Isto se deve à falta de um regulador de tensão na saída do inversor e de um TRAFO com maior corrente no lado de alta tensão.

Observações e Melhorias

Nos testes realizados em laboratório, antes da implementação do circuito de bootstrap, perdemos 4 MOSFETs IRF540N devido ao aquecimento excessivo e ruptura de uma das junções. Após a montagem deste circuito, o sistema operou normalmente e com testes de cargas que drenaram 15A de corrente da fonte.

Tentamos implementar uma forma de corrigir a amplitude da tensão de saída do inversor porém, devido a implementação do circuito de bootstrap não ser a ideal, uma deformação na forma de onda foi observada. Uma solução para este problema é utilizar o driver correto para chaveamento da parte alta da ponte H.

O transformador de elevação de 12 Vca para 220 Vca apresenta uma corrente máxima de operação muito baixo no lado de alta tensão (0,229A). Desta forma, um novo TRAFO deve ser adquirido para testes futuros.

O sensor de corrente utilizado nesta aplicação apresenta um alto ruído no sinal de saída. Um dos motivos é a utilização de um sensor de 20A para medição de correntes menores do que 1A, como no modo idle do inversor onde temos um consumo de 390mA sem carga. Um sensor de menor corrente ou outro método como um resistor Shunt de precisão deve ser aplicado para melhor leitura da corrente DC drenada da bateria.

A implementação da leitura AC de saída não é feita com base em um algoritmo RMS (Root Mean Square). Este algoritmo será implementado na próxima versão.

Esta versão não permite a conexão à rede de energia, On Gride. A próxima versão deverá contemplar esta opção já que a bateria poderá ser carregada neste modo, funcionando assim como um UPS.

Conclusão

Neste tutorial discutimos a implementação de um inversor de tensão DC / AC com o Arduino. Concluímos que a relação entre teoria e prática daquela apresentada em faculdades apresenta um gap grande já que as dificuldades na implementação de projetos e divergências de resultados calculados relacionados a eletrônica de potência só são enfrentados quando realmente “sujamos as mãos”.