O sistema

BOOSTXL-3PHGANINV (SLUUBP1A, fig. 4). Bornes: +48V/GND (barramento) e VA, VB, VC (carga).

  • Três meias-pontes GaN LMG5200;
  • Um INA240 com shunt de 5 mΩ por fase;
  • Carga em estrela: 4,7 Ω e 1 mH por fase.
Grandeza Valor
\(\tau = L/R\) 213 µs
Pico com 12 V ≈ 1,4 A
Pico com 24 V ≈ 2,9 A

Diagrama de blocos

SLUUBP1A, fig. 3.

  • Buffer de PWM com /PWM enable, ativo em nível baixo;
  • Proteção própria (TLV3201): 12 A;
  • O barramento alimenta o LM5017, que gera os 5 V e os 3,3 V da placa: sem barramento, o INA240 e o buffer ficam desligados;
  • Até o primeiro teste precisa do barramento.

Modelo da carga nos eixos dq

Num referencial que gira a \(\omega\) (ângulo \(\theta = \omega t\), gerado na placa):

\[ v_d = R\,i_d + L\frac{di_d}{dt} - \omega L\, i_q, \qquad v_q = R\,i_q + L\frac{di_q}{dt} + \omega L\, i_d \]

  • Sem os termos cruzados \(\pm\omega L\), cada eixo é um sistema de 1ª ordem: \(\;G(s) = \dfrac{1}{Ls + R}\);
  • Desacoplamento: o controle soma \(-\omega L\,i_q\) a \(v_d\) e \(+\omega L\,i_d\) a \(v_q\), e cada eixo volta a ser \(G(s)\);
  • Com ω = 2π·60 rad/s, \(\omega L/R \approx 0{,}08\): o acoplamento é fraco nesta carga, mas o modelo vale para qualquer frequência.

Pinos analógicos da LaunchPad

SPRUI77C, tabela 5. A coluna J3 recebe os sinais analógicos do BoosterPack.

  • J3-27, 28, 29: correntes iA, iB, iC (ADCINC2, B2, A2), também as entradas positivas dos comparadores 6, 3 e 1;
  • J3-24, 25, 26: tensões vA, vB, vC; J3-23: barramento (ADCIN14, ligado às quatro ADCs);
  • J3-30: VREF do BoosterPack no ADCINA0, que também é a saída do DACA: não usar o DACA.

Saídas de PWM e sinais digitais

Sinal Periférico GPIO Pino
Fase A (alto / baixo) EPWM1A / 1B 0 / 1 J4-40 / 39
Fase B EPWM2A / 2B 2 / 3 J4-38 / 37
Fase C EPWM3A / 3B 4 / 5 J4-36 / 35
/PWM enable (ativo baixo) GPIO 124 J2-13
/PCB OT alert (ativo baixo) GPIO, INPUTXBAR1 24 J4-34
UART pela USB SCIA 42 / 43 —
  • Entradas de PWM do BoosterPack com pull-down de 10 kΩ e habilitação com pull-up de 10 kΩ: a placa liga desligada (TIDA-00909, tabela 4);
  • O primeiro experimento (VSI01) já usa essa habilitação: começa em 1 e só escreve 0 quando o aluno pede.

Sensor de corrente

TIDA-00909 (TIDUCE7B), fig. 10: fase A. O BOOSTXL repete o circuito nas três fases.

  • INA240A1: ganho de 20 V/V sobre 5 mΩ → 0,1 V/A, ponto médio de 1,65 V (VREF);
  • IN+ e IN− trocados para facilitar o layout: a corrente sai invertida;
  • Banda de 400 kHz e acomodação de 9,6 µs (datasheet do INA240).

Conversão para ampères

Na placa, o sensor dá

\[ v_{ADC} = 1{,}65 - 0{,}1\,i \quad [\text{V}] \]

A LaunchPad usa uma referência de 3,0 V (REF5030, SPRUI77) e um ADC de 12 bits:

\[ \begin{aligned} i &= -k\,(N - N_0) \\ k &= \frac{3{,}0}{4096 \cdot 0{,}1} = 7{,}32\ \text{mA} \end{aligned} \]

\(N_0 \approx 2253\) é medido na inicialização, com o PWM desabilitado.

  • Faixa assimétrica: de −13,5 A a +16,5 A;
  • O SDK usa 27 A / 4096 contagens: erro de ≈ 10 %;
  • 1,4 A de pico ocupa só ≈ 190 contagens.

Tensões de fase e barramento

Divisor de 100 kΩ / 4,22 kΩ com 33 nF (TIDA-00909, fig. 10 e 11):

\[ V = 24{,}7\, v_{ADC}, \qquad V_{\max} = 24{,}7 \cdot 3{,}0 = 74{,}1\ \text{V} \]

com 18,1 mV por contagem. O SDK usa os mesmos 74,1 V.

  • Filtro de 1 kHz: as tensões medidas chegam atrasadas e sem o PWM;
  • Servem para conferir a montagem, não para identificar;
  • Na identificação, grava-se a tensão comandada \(v_{dq}\) (aplicada uma amostra depois).

Amostragem sincronizada com o PWM

  • O EPWM1 dispara as conversões (SOCA) no zero do contador; cada ADC converte a corrente e a tensão de uma fase, e a ADCD converte o barramento;
  • Com a saída A em nível alto enquanto o contador < CMPA, o zero cai no meio do pulso: a amostra pega o valor médio da ondulação da corrente;
  • O shunt fica em linha com a fase e mede a corrente qualquer que seja a chave conduzindo;
  • O fim da conversão (ADCA INT1) chama o laço de controle: não há espera ativa;
  • Janela de aquisição de 100 ns (o mínimo é 75 ns em 12 bits; o SDK usa 70 ns).

Proteção contra sobrecorrente

iA → CMPSS6 ┐
iB → CMPSS3 ├─ H ou L ─→ XBAR TRIP4 → DCAEVT1 → OST nos EPWM1, 2, 3
iC → CMPSS1 ┘               ↑
                   GPIO24 (sobretemperatura)
  • Comparadores contra o DAC interno (referência VDDA = 3,3 V), com filtro digital de ≈ 3 µs;
  • OST (one-shot): as saídas ficam em nível baixo (as duas chaves de cada braço desligadas) até o software liberar;
  • A parada do emulador (CBC6) também desliga as saídas;
  • Acima disso, a proteção da própria placa atua em 12 A.

Limiar do comparador

O SDK calcula o DAC do CMPSS como \(2048 \pm 2048\,I_{lim}/13{,}5\):

  • Com a referência de 3,3 V, 2048 = 1,65 V: o ponto médio está certo;
  • A inclinação 2048/13,5 equivale a 0,122 V/A, mas o sensor dá 0,1 V/A: o limite de 9 A do SDK dispara, na verdade, perto de 11 A;
  • No VSI02, o limiar fica em torno do offset medido de cada fase:

\[ N_{DAC} = \frac{4096}{3{,}3}\left(\frac{3{,}0\,N_0}{4096} \pm 0{,}1\,I_{lim}\right) \]

  • Limite inicial: \(I_{lim}\) = 3 A (≈ 2 vezes a corrente de pico com 12 V).

Tempo morto

  • O VSI02 usa 0,5 µs (o mesmo valor do SDK), o VSI01 usa 100 ns e o TIDA-00909 opera o LMG5200 com só 12,5 ns;
  • Durante o tempo morto, a tensão do braço depende do sinal da corrente: o erro médio é

\[ \Delta v \approx V_{dc}\, t_m\, f_{PWM} = 12 \cdot 0{,}5\,\mu\text{s} \cdot 20\ \text{kHz} = 0{,}12\ \text{V} \]

  • Com 1 A na carga (\(v \approx 4{,}7\) V), isso é ≈ 2,5 %: uma não linearidade que aparece na identificação perto de corrente nula;
  • Reduzir \(t_m\) é um ensaio a fazer depois, com o osciloscópio (o LMG5200 tem atraso de propagação de 29,5 ns).

O projeto VSI02ControleCorrente

Arquivo Conteúdo
main.c parâmetros (struct), inicialização, laço de controle, supervisor
hal.c/h EPWM com tempo morto, ADC sincronizado, habilitação, CMPSS + trip, SCI
controle.c/h Clarke/Park e inversas, ângulo de frequência fixa, PI, SVPWM, excitações
tarefas.c/h registro dos dados (4 canais × 2000 amostras) e comandos pela UART
  • driverlib da C2000Ware, sem a FCL nem a CLA;
  • \(f_{PWM}\) = 20 kHz e \(T_s = n_{controle}/f_{PWM}\) (nControle = 1 → 50 µs);
  • Compila nas configurações RAM e FLASH.

O laço de controle

zero do contador ─→ SOCA ─→ ADC (7 canais) ─→ ADCA INT1 ─→ LacoControle():
    HAL_Le            correntes, tensões e barramento em A e V
    proteção          trip, |i| > Ilim, barramento fora da faixa → desabilita
    Controle_Passo    nível 1..4 → razões cíclicas
    HAL_AplicaRazoes  CMPA com sombra: vale no próximo zero
    Tarefas_Registra  gravação síncrona
  • O ângulo usado na Park inversa é adiantado de 1,5 \(T_s\) (cálculo + meio período);
  • A duração do laço fica em sup.tLaco [µs], medida pelo contador do EPWM1.

Os quatro níveis

Nível Tensão aplicada O que observar
1 razão cíclica de 50 % nas três fases PWM complementar, tempo morto, offsets
2 \(v_d = V\), \(v_q = 0\), ângulo em rampa \(i_{abc}\) senoidais; \(i_{dq}\) constantes
3 PI em dq com desacoplamento degrau de \(i_d^*\), \(i_q^*\)
4 ponto de operação + excitação \(v_{dq}\), \(i_{dq}\) gravados juntos

No nível 1 as três fases ficam com a mesma tensão: não há corrente na carga (a menos do tempo morto). A modulação é SVPWM (até \(V_{dc}/\sqrt{3}\)) ou senoidal (até \(V_{dc}/2\)), escolhida por #define.

Malha de corrente

Cancelamento do polo da carga, para cada eixo:

\[ C(s) = k_p + \frac{k_i}{s} = \omega_c\,\frac{Ls + R}{s} \quad\Rightarrow\quad \frac{i}{i^*} = \frac{1}{s/\omega_c + 1} \]

Parâmetro Valor
Banda \(f_c\) 500 Hz
\(k_p = 2\pi f_c L\) 3,14 Ω
\(k_i = 2\pi f_c R\) 14 765 V/(A·s)
Saturação \(\lvert v_{dq} \rvert \le \min(v_{\max},\ V_{dc}/\sqrt{3})\)

O integrador é limitado à mesma tensão (anti-windup simples).

Excitações da identificação

Excitação Configuração Faixa útil
PRBS 9 bits, \(x^9 + x^5 + 1\), 4 amostras por bit (\(T_b\) = 200 µs) até ≈ 2 kHz
Degrau onda quadrada, 10 ms em cada nível regime e transitório
Multisseno 100 harmônicas de 20 Hz, fases de Schroeder 20 Hz a 2 kHz
  • Somadas ao ponto de operação \((v_{d0}, v_{q0})\), em \(v_d\), \(v_q\) ou nos dois eixos;
  • O período da PRBS (\(511 \cdot 200\) µs = 102 ms) cobre o registro de 2000 amostras (100 ms);
  • O comando G zera a excitação e começa a gravação na mesma amostra.

Comandos pela UART

Comando Ação
S estado: nível, habilitado, falhas, Vdc, \(i_{dq}\), \(i_{abc}\), offsets, duração do laço
H / D habilita / desabilita o PWM
L / C limpa as falhas / calibra os offsets
N n nível 1 a 4 (só com o PWM desabilitado)
I i limite de corrente da proteção [A]

115200 bit/s, 8N1, um comando por linha, resposta OK ou ERRO. Depois de H, conferir com S se o PWM habilitou.

Comandos de ensaio e de registro

Comando Ação
F f / V v frequência do ângulo [Hz] / amplitude no nível 2 [V]
R id iq referências de corrente no nível 3 [A]
P vd0 vq0 ponto de operação no nível 4 [V]
E t a e excitação (0 PRBS, 1 degrau, 2 multisseno), amplitude [V], eixo (0 d, 1 q, 2 dq)
M m dec registro: 0 → \((v_d, v_q, i_d, i_q)\), 1 → \((i_a, i_b, i_c, \theta)\); decimação
G / B inicia a gravação / baixa o registro em texto (uma linha por amostra)

Sequência segura

  1. Partida: habilitação em 1 e saídas forçadas em nível baixo (OST) antes de ligar os contadores; a proteção é configurada antes;
  2. Barramento de 12 V com limite de corrente na fonte (≈ 1 A);
  3. L (limpa a falha registrada sem o barramento) e C (calibra os offsets);
  4. N 1, H: PWM de 50 %; conferir no osciloscópio;
  5. D, N 2, V 1, H: correntes pequenas; conferir o sinal;
  6. Só depois os níveis 3 e 4 e o barramento de 24 V.

O PWM só habilita sem falhas, com offsets válidos (1,65 ± 0,15 V) e com o barramento entre 10 e 30 V.

Pontos a conferir na bancada

Item Como conferir
Revisão da LaunchPad na revisão 1.1, ADCINA2 (iC) está em curto com VREFHIB (SPRUI77)
Sinal da corrente nível 2: \(v_A > 0 \Rightarrow i_A > 0\) em regime
Par de PWM da fase A osciloscópio em J4-40/39 no nível 1
Jumper J6 do BoosterPack retirar quando a LaunchPad é alimentada pela USB
Onde atua o TLV3201 esquemático do BoosterPack (pacote SLUC631)
Escala de \(V_{dc}\) comparar S com um multímetro

Documentos da TI usados

  • SLUUBP1A: guia do BOOSTXL-3PhGaNInv (diagrama, foto, jumper J6, OCP);
  • TIDUCE7B: TIDA-00909, inversor GaN de 48 V (pinagem, INA240, divisores, filtros);
  • TIDUCE8A: TIDA-00913, medição de corrente em linha com o INA240;
  • SPRUI77C: LAUNCHXL-F28379D (pinos, REF5030, erratas);
  • SPRS880P: datasheet do TMS320F2837xD (ADC, CMPSS);
  • Datasheets do INA240 e do LMG5200; SPRACO3: projeto de dois eixos do SDK.

Os PDFs ficam em Notas/ControleCorrenteVSI/docs/ (fora do repositório).