Período de amostragem, PRBS (Nb e Tb), modelo ARX e validação (simulação em MATLAB)
Universidade Federal do Pará
2026-10-14
Grandezas totais (maiúsculas) = ponto de operação + variação (minúsculas):
\[ D = D_0 + d, \qquad V_o = V_{o0} + y \]
com \(D_0 = 1/3\) e \(V_{o0}\) = 10 V (\(V_{in}\) = 30 V). O modelo médio relaciona as variações:
\[ G(s) = \frac{Y(s)}{D(s)} = \frac{1{,}532\cdot 10^{9}}{s^2 + 2400\,s + 5{,}106\cdot 10^{7}} \]
| Grandeza | Valor |
|---|---|
| Ganho estático \(K\) | 30 V (\(= V_{in}\)) |
| Frequência natural \(f_n\) | 1137 Hz |
| Amortecimento \(\xi\) | 0,168 |
| Período da oscilação \(T_d\) | 0,89 ms |
| Sobressinal ao degrau | 58 % |
| Acomodação (2 %) | 3,2 ms |
Tudo a seguir é simulado em MATLAB (analise/ident_buck.m), com este \(G(s)\) no papel da planta.
Degrau de \(D\) = 1/3 → 0,4. Com \(T_s\) = 200 µs, cada oscilação tem só 4 ou 5 pontos: os dados quase não mostram a forma do transitório, e o modelo discreto fica mal determinado.
| \(T_s\) | 10 µs | 25 µs | 50 µs | 100 µs | 200 µs |
|---|---|---|---|---|---|
| \(\omega_n T_s\) | 0,07 | 0,18 | 0,36 | 0,71 | 1,43 |
| Amostras por oscilação | 89 | 36 | 18 | 9 | 4,5 |
| \(\lvert z \rvert\) dos polos | 0,988 | 0,970 | 0,942 | 0,887 | 0,787 |
Modelo discreto esperado (ZOH), com o atraso de uma amostra do firmware: o novo CMPA só vale no período seguinte, então \(d(k)\) só aparece em \(y(k+2)\):
\[ y(k) = 1{,}768\,y(k-1) - 0{,}887\,y(k-2) + 1{,}821\,d(k-2) + 1{,}750\,d(k-3) \]
Estrutura a identificar: ARX(2,2,2) — 2 polos, 2 coeficientes de entrada, atraso de 2 amostras.
Sequência binária pseudoaleatória \(q(k) = \pm 1\), gerada por um registrador de deslocamento de \(n\) = 9 bits (\(x^9 + x^5 + 1\)):
Aplicada como variação em torno do ponto de operação:
\[ d(k) = A\,q(k), \quad A = 1/30 \qquad\Rightarrow\qquad D \in \{0{,}300;\ 0{,}367\} \]
Em regime, \(V_o\) ficaria entre 9 e 11 V; a ressonância amplia essa faixa nos transitórios.
Os mesmos bits nos dois casos: com \(N_b\) = 4, cada bit fica 4 amostras no mesmo nível. A duração do bit é \(T_b = N_b\,T_s\); \(T_s\) continua 50 µs.
| Grandeza | Expressão | \(n\) = 9, \(N_b\) = 4, \(T_s\) = 50 µs |
|---|---|---|
| Duração do bit | \(T_b = N_b T_s\) | 200 µs |
| Pulso mais longo | \(n\,T_b\) | 1,8 ms |
| Faixa excitada (−3 dB) | \(\approx 0{,}44/T_b\) | 2,2 kHz |
| Primeiro nulo do espectro | \(1/T_b\) | 5 kHz |
| Período da sequência | \((2^n - 1)\,T_b\) | 102,2 ms |
| Amostras por período | \((2^n - 1)\,N_b\) | 2044 |
\(T_s\) fixa a resolução no tempo; \(N_b\) escolhe \(T_b\) sem mudar \(T_s\).
Dois requisitos que puxam em sentidos opostos:
Os dois se encontram em \(T_b \approx\) 200 µs, ou seja, \(N_b\) = 4 com \(T_s\) = 50 µs.
\(N_b\) = 1 espalha a energia até 9 kHz, onde o buck já atenua: sobra pouco sinal na saída. \(N_b\) = 8 tem um nulo em 2,5 kHz, muito perto da ressonância.
100 ensaios simulados por \(N_b\), ruído de medida \(\sigma\) = 20 mV; ajuste na validação (sem ruído):
| \(N_b\) | \(T_b\) [µs] | Pulso mais longo [ms] | Ajuste [%] | Erro em \(K\) [%] | Erro em \(\omega_n\) [%] | Erro em \(\xi\) [%] |
|---|---|---|---|---|---|---|
| 1 | 50 | 0,45 | 96,9 | 0,8 | 0,7 | 16 |
| 2 | 100 | 0,90 | 98,2 | 0,6 | 0,4 | 9,1 |
| 4 | 200 | 1,80 | 98,5 | 0,8 | 0,3 | 5,9 |
| 8 | 400 | 3,60 | 98,3 | 1,0 | 0,5 | 5,9 |
| 16 | 800 | 7,20 | 95,8 | 1,1 | 2,4 | 21 |
\(N_b\) = 4 tem o melhor ajuste e o menor erro no amortecimento, como previsto pelos dois requisitos.
PWM_prbs#define PRBS_NB 4U // amostras por bit: Tb = 4 x 50 us = 200 us
static inline float Gerar_Proximo_PRBS_Simulink(void) {
if (prbs_cont == 0) { // so a cada PRBS_NB amostras
uint16_t bit9 = (lfsr >> 8) & 0x0001;
uint16_t bit5 = (lfsr >> 4) & 0x0001;
uint16_t feedback = bit9 ^ bit5;
lfsr = ((lfsr << 1) | feedback) & 0x01FF; // 9 bits
prbs_duty = (feedback != 0) ? PRBS_DUTY_HIGH : PRBS_DUTY_LOW;
}
prbs_cont++;
if (prbs_cont >= PRBS_NB) prbs_cont = 0;
return prbs_duty;
}TAM_EXP = 2044 amostras: um período completo da sequência.A ressonância amplifica a resposta aos bits curtos: \(V_o\) oscila entre 7 e 13 V, ainda longe dos 30 V da entrada.
Com \(d\) e \(y\) = variações em torno do ponto de operação (na prática, tira-se a média dos dados):
\[ y(k) = -a_1\,y(k-1) - a_2\,y(k-2) + b_1\,d(k-2) + b_2\,d(k-3) \]
| Coeficiente | Nominal (ZOH) | ARX |
|---|---|---|
| \(a_1\) | −1,768 | −1,761 |
| \(a_2\) | 0,887 | 0,880 |
| \(b_1\) | 1,821 | 1,828 |
| \(b_2\) | 1,750 | 1,778 |
Todos os coeficientes a menos de 2 % dos valores do modelo nominal discretizado.
Conversão do ARX para tempo contínuo (d2c, sem o atraso do firmware):
\[ G_{id}(s) = \frac{1{,}553\cdot 10^{9}}{s^2 + 2552\,s + 5{,}136\cdot 10^{7}} \]
| Nominal | Identificado | Erro | |
|---|---|---|---|
| \(K\) | 30,0 V | 30,2 V | 0,8 % |
| \(\omega_n\) | 7146 rad/s | 7167 rad/s | 0,3 % |
| \(\xi\) | 0,168 | 0,178 | 6 % |
O amortecimento é o parâmetro mais sensível ao ruído de medida.
Mesma PRBS com outro estado inicial do registrador (dados não usados na identificação): simulação livre do modelo ARX contra o sistema conhecido \(G(s)\), ajuste de 96,5 %.
Entrada do BK01Degrau (\(D\) = 1/3 ↔︎ 0,4): ajuste de 98,5 %; o módulo da resposta em frequência coincide com o do sistema conhecido, inclusive na ressonância.
| \(\sigma\) | 5 mV | 10 mV | 20 mV | 50 mV |
|---|---|---|---|---|
| Ajuste na validação | 99,9 % | 99,6 % | 98,5 % | 91,9 % |
| Erro em \(K\) | 0,05 % | 0,2 % | 0,8 % | 4,7 % |
| Erro em \(\xi\) | 0,4 % | 1,5 % | 5,9 % | 36 % |