Simulação MATLAB de Inversor Trifásico com Controle PI em Malha Fechada e Desacoplamento

Esta simulação aborda o projeto de controle para um inversor trifásico, empregando uma estrutura de malha fechada baseada em controladores PI, com o objetivo de mitigar o acoplamento entre os eixos d e q no sistema de coordenadas rotativo. A implementação é realizada no ambiente MATLAB/Simulink.

Um passo fundamental é a transformação de coordenadas, que converte as correntes trifásicas do sistema estático (abc) para o sistema rotativo (dq). O código a seguir exemplifica essa transformação, alterando variáveis e adicionando clareza nos cálculos:

function [corrente_d, corrente_q] = transformar_abc_para_dq(ia, ib, ic, angulo)
    % Componentes no referencial estático (alfa-beta)
    alfa = (2/3) * (ia - 0.5*ib - 0.5*ic);
    beta = (2/3) * ((sqrt(3)/2)*ib - (sqrt(3)/2)*ic);
    % Projeção no referencial síncrono (d-q)
    corrente_d = alfa * cos(angulo) + beta * sin(angulo);
    corrente_q = -alfa * sin(angulo) + beta * cos(angulo);
end

O controlador PI é implementado com um mecanismo de anti-windup para evitar saturação do integrador. A estrutura da classe segue:

classdef ControladorPI
    properties
        ganho_proporcional = 0.5;
        ganho_integral = 20;
        periodo_amostragem = 1e-5;
        saida_maxima = 100;
        integrador = 0;
    end
    methods
        function saida = calcular(obj, erro)
            % Atualização condicional do integrador
            if abs(obj.integrador) < obj.saida_maxima
                obj.integrador = obj.integrador + obj.ganho_integral * erro * obj.periodo_amostragem;
            end
            saida = obj.ganho_proporcional * erro + obj.integrador;
            % Limitação da saída
            saida = max(min(saida, obj.saida_maxima), -obj.saida_maxima);
        end
    end
end

Para desacoplar os eixos d e q, são adicionados termos compensatórios baseados na velocidade angular e indutâncias do motor. O código utiliza um filtro passa-baixa para suavizar a leitura da velocidade:

function [tensao_d, tensao_q] = aplicar_desacoplamento(id, iq, velocidade_angular, indutancia_d, indutancia_q)
    persistent velocidade_anterior;
    if isempty(velocidade_anterior)
        velocidade_anterior = velocidade_angular;
    end
    % Filtragem da velocidade angular
    velocidade_filtrada = 0.2 * velocidade_angular + 0.8 * velocidade_anterior;
    % Cálculo das tensões de compensação
    vd_desacoplado = -velocidade_filtrada * indutancia_q * iq;
    vq_desacoplado = velocidade_filtrada * indutancia_d * id;
    velocidade_anterior = velocidade_filtrada;
    tensao_d = vd_desacoplado;
    tensao_q = vq_desacoplado;
end

Na geração de sinais PWM, é crucial incluir a compensação do tempo morto para evitar curto-circuitos nos semicondutores. A função abaixo implementa essa correção digital:

function [saida_a, saida_b, saida_c] = compensar_tempo_morto(ua, ub, uc, tempo_morto_ns, frequencia_chaveamento)
    % Conversão do tempo morto para unidades normalizadas
    dt_normalizado = tempo_morto_ns * 1e-9 * frequencia_chaveamento * 1e3;
    saida_a = ua - sign(ua) * dt_normalizado;
    saida_b = ub - sign(ub) * dt_normalizado;
    saida_c = uc - sign(uc) * dt_normalizado;
end

Ao executar a simulação no Simulink, recomenda-se pré-carregar o valor enicial do integrador do PI no regime permanante para reduzir oscilações na partida. A análise espectral via powergui permite avaliar a distorção harmônica total (THD), que deve ser inferoir a 2% em condições adequadas.

Tags: MATLAB Simulink inversor trifásico controle PI desacoplamento

Publicado em 6-21 23:08