Nota 01 — LaunchPad F28379D, inversor GaN BOOSTXL-3PHGANINV e simulação Simulink
Universidade Federal do Pará
Simular antes de energizar: o modelo deve prever o que o ADC vai medir.
| Recurso | Uso no VSI |
|---|---|
| CPU C28x a 200 MHz, FPU, TMU | ISR de 50 µs: 10 000 ciclos por período de PWM |
| ePWM 1–3, relógio de 100 MHz | PWM simétrico (contador sobe e desce, TBPRD = 2500), banda morta |
| 4 ADC de 12 bits | correntes e tensões, disparados pelo ePWM no início do período |
| CMPSS + trip zone | desligamento por sobrecorrente em hardware, sem passar pela CPU |
| CLA | processador auxiliar: MPC, RLS em paralelo à CPU (etapas futuras) |
A ISR tem folga de sobra: o gargalo será o sensor de corrente, não o processador.
| Item | Valor |
|---|---|
| Barramento CC | 12–60 V (nominal 48 V) |
| Corrente | 10 A de pico, OCP em 12 A |
| Chaves | 3 × LMG5200 (GaN 80 V, < 2 ns) |
| Corrente medida | shunt 5 mΩ + INA240 (× 20): ±16,5 A |
| Tensões medidas | fundo de 81,5 V, RC de 1,1 kHz |
Fonte: BOOSTXL-3PhGaNInv Evaluation Module (2018) e MotorControl SDK da TI.
Enable ativo em nível baixo
GPIO124 = 0 liga o inversor. O firmware atual do VSI01 faz o contrário e a placa não chaveia.
Sinal da corrente
O INA240 tem polaridade invertida: \(v = 1{,}65 - 0{,}1\,i\) (V, A).
\[ \eq{a}{\bar v_{xO}} = \left(\eq{b}{d_x} - \tfrac{1}{2}\right)\eq{c}{V_{cc}} \] \[ \eq{d}{v_{nO}} = \tfrac{1}{3}\left(v_{aO} + v_{bO} + v_{cO}\right) \] \[ \eq{e}{v_{an}} = v_{aO} - v_{nO} \]
Com referências senoidais equilibradas, \(v_{nO}\) só tem componentes de chaveamento: \(\bar v_{an} = v_a^*\).
\(v_{an}\) \(= R\,i_a + L\,\frac{di_a}{dt}\) malha da fase a, neutro isolado
\(\eq{a}{\tau}\) \(= L/R = 0{,}5\ \text{ms}\) constante de tempo
\(\eq{b}{I}\) \(= V_p\,/\,(R' + j\omega L)\) regime a 60 Hz; \(R' = R + R_{on} + R_L\)
\(\eq{b}{I}\) \(= 1{,}555\ \text{A}\ \angle -10{,}56^\circ\) \(V_p\) = 16 V, \(R'\) = 10,12 Ω, \(\omega L\) = 1,885 Ω
\(\tau\) = 0,5 ms ≪ 16,7 ms: carga quase resistiva a 60 Hz.
| Restrição | \(V_p\) máximo com \(V_{cc}\) = 40 V |
|---|---|
| PWM senoidal, região linear: \(V_p \le V_{cc}/2\) | 20,0 V |
| Injeção de sequência zero (≡ SVPWM): \(V_p \le V_{cc}/\sqrt{3}\) | 23,1 V |
| Razão cíclica em [0,08; 0,95], PWM senoidal | 16,8 V |
| Razão cíclica em [0,08; 0,95], sequência zero | 19,4 V |
Escolha: \(V_p\) = 16 V (\(m\) = 0,8), com \(d \in [0{,}10;\ 0{,}90]\).
| Grandeza | Limite | Escolha |
|---|---|---|
| \(V_{cc}\) | placa 12–60 V; GaN 80 V | 40 V: 2× abaixo dos 80 V do GaN |
| Corrente | 10 A de pico; OCP 12 A | 1,56 A de pico (16 %); trip por software em 5 A |
| \(f_{PWM}\) | INA240: ~2 µs após cada comutação | 20 kHz: acima do audível, \(d \ge 0{,}08\) |
| \(T_s\) | ISR no início do período | 50 µs: uma amostra e uma atualização por período |
| Tempo morto | descasamento de poucos ns | 100 ns (SDK da TI: 500–600 ns) |
Herança para as próximas etapas
Esse atraso entra no projeto do PI (VSI02) e na compensação de atraso do MPC (VSI04/05).
\[ \eq{a}{\Delta V_1} = \frac{4}{\pi}\,\eq{b}{f_{PWM}}\,\eq{c}{t_m}\,\eq{d}{V_{cc}} \]
O erro é uma onda quadrada em fase com a corrente; sua 1ª harmônica cresce com a frequência de chaveamento, o tempo morto e o barramento (Holmes & Lipo, 2003).
| \(t_m\) | \(\Delta V_1\) | perda na fundamental | 5ª harmônica de \(v_{an}\) |
|---|---|---|---|
| 500 ns (SDK) | 0,509 V | 3,1 % | 102 mV |
| 100 ns | 0,102 V | 0,6 % | 21 mV |
| \(R\) | \(L\) | \(\tau\) | fase | \(\lvert I\rvert\) de pico | P por resistor |
|---|---|---|---|---|---|
| 10 Ω | 5 mH | 0,5 ms | 10,7° | 1,56 A | 12 W |
| 10 Ω | 10 mH | 1,0 ms | 20,7° | 1,48 A | 11 W |
| 5 Ω | 10 mH | 2,0 ms | 37,0° | 2,52 A | 16 W |
| 5 Ω | 5 mH | 1,0 ms | 20,7° | 2,94 A | 22 W |
10 Ω + 5 mH é segura e serve para a malha aberta, mas é quase resistiva. Para ver a dinâmica e o acoplamento \(dq\) no PI, 5 Ω + 10 mH é mais interessante.
// senoides.c + placa.c (firmware)
*va = V * sinf(theta);
*vb = V * sinf(theta - DOIS_PI_3);
*vc = V * sinf(theta + DOIS_PI_3);
theta += dTheta;
float d = 0.5f + v[i] / Vcc;
if (d < 0.0f) d = 0.0f;
if (d > 1.0f) d = 1.0f;
EPWM_setCounterCompareValue(base,
EPWM_COUNTER_COMPARE_A,
(uint16_t)(d * (float)periodo));Mesmas contas, mesma precisão (float de 32 bits), mesmo truncamento do CMPA.
MalhaAbertaSimples.slx: passo de 0,1 µs, 0,1 s simulado em ~5 s. Serve para aula e estudos rápidos.


| Cenário | \(\lvert I_{a,1}\rvert\) simulado | teoria | fase de \(i_a\) | teoria |
|---|---|---|---|---|
| sem tempo morto | 1,5550 A | 1,5550 A | −12,18° | −12,18° |
| tempo morto de 100 ns | 1,5453 A | 1,5453 A | −12,12° | — |
| tempo morto de 500 ns | 1,5063 A | 1,5064 A | −11,87° | — |
| modelo simples | 1,5544 A | 1,5550 A | −10,56° | −10,56° |
Concordância em quatro algarismos: valida o ePWM emulado, o atraso de \(1{,}5\,T_s\) (−1,62°) e o modelo de tempo morto.


Corrente: pronta para realimentar. Tensão: só para monitorar.

GPIO124 = 1 na configuração, 0 em IniciaPWM().Bloqueantes
Sem os itens 1 e 2, o inversor não chaveia e o ensaio não valida nada.
VSI01
Malha aberta validada contra a bancada
VSI02
PI de corrente em \(dq\) com o atraso de \(1{,}5\,T_s\)
VSI03
Potência \(P\)/\(Q\) sobre o PI de corrente
VSI04–05
MPC-FSC de corrente e de potência
Universidade Federal do Pará
Campus Universitário de Tucuruí
Faculdade de Engenharia Elétrica
UFPA · Prof. Dr. Raphael Teixeira