MCU & FPGA DSP Filtros Estatísticos em Sistemas Embarcados: EMA, Wiener e Kalman Aplicados ao RP2040

Filtros Estatísticos em Sistemas Embarcados: EMA, Wiener e Kalman Aplicados ao RP2040


Table of Contents

Média Móvel Exponencial, Wiener e Kalman aplicados ao RP2040


1. Introdução — Por que filtros são decisores disfarçados

Ao longo desta série, trabalhamos com DSP embarcado aplicado, partindo do sinal bruto até decisões confiáveis em microcontroladores de recursos limitados. Em todos os artigos anteriores, um ponto ficou claro:

Nenhum sinal real é limpo.
Nenhuma decisão deve confiar em uma única amostra.

É exatamente nesse ponto que entram os filtros estatísticos.

Embora muitas vezes apresentados apenas como técnicas matemáticas, filtros como média móvel exponencial, Wiener e Kalman são, na prática, mecanismos de tomada de decisão temporal, capazes de separar:

  • sinal de ruído,
  • tendência de flutuação,
  • informação de incerteza.

Neste artigo, vamos tratar esses filtros não como abstrações matemáticas, mas como ferramentas práticas de engenharia, aplicáveis diretamente a microcontroladores como o RP2040.


1.1 O papel dos filtros na arquitetura embarcada moderna

Em um sistema embarcado real, filtros aparecem em três papéis fundamentais:

  1. Suavização
    • Reduz ruído de sensores
    • Evita decisões instáveis
  2. Estimativa
    • Inferir estados não diretamente observáveis
    • Combinar modelo e medição
  3. Tomada de decisão
    • Controlar histerese
    • Definir quando um evento realmente ocorreu

Nos artigos anteriores, usamos:

  • EMA implicitamente (suavização de score)
  • Estatística para decisão adaptativa

Agora, vamos formalizar isso conscientemente.


1.2 Ordem crescente de complexidade (e poder)

Os filtros que abordaremos seguem uma progressão natural:

FiltroIdeia centralCustoUso típico
Média móvel exponencialSuavizar passadoMuito baixoRuído rápido
WienerMinimizar erro médioMédioSNR conhecido
KalmanEstimar estado ocultoMaiorSistemas dinâmicos

Importante:
👉 mais complexo não significa melhor.
Cada filtro resolve um tipo específico de problema.


1.3 Começando pelo mais importante: Média Móvel Exponencial (EMA)

A média móvel exponencial é, sem exagero, o filtro mais importante do firmware moderno.

Ela aparece em:

  • sensores IoT,
  • controle de ganhos,
  • suavização de scores,
  • debouncing avançado,
  • aprendizado estatístico.

E, ainda assim, é frequentemente subestimada.


1.4 Conceito intuitivo da EMA

A EMA responde a uma pergunta simples:

Quanto do passado eu quero lembrar?

Ela combina:

  • valor anterior filtrado
  • nova amostra

Equação discreta:

\[
y[n] = y[n-1] + \alpha \big(x[n] – y[n-1]\big)
\]

Onde:

  • \(x[n]\): amostra atual
  • \(y[n]\): saída filtrada
  • \(\alpha \in (0,1)\): taxa de resposta

Interpretação física:

  • \(\alpha\) pequeno → memória longa
  • \(\alpha\) grande → resposta rápida

1.5 EMA como filtro passa-baixa de primeira ordem

Embora simples, a EMA é um filtro IIR passa-baixa, com:

  • 1 polo real
  • estabilidade garantida
  • custo O(1) por amostra

Ela elimina:

  • ruído de alta frequência
  • flutuações instantâneas

Sem introduzir:

  • buffers grandes
  • atrasos excessivos

1.6 Implementação incremental em C (base do artigo)

Começamos com a versão mais simples possível:

typedef struct {
    float y;
} ema_filter_t;

static inline void ema_init(ema_filter_t *f, float y0)
{
    f->y = y0;
}

static inline float ema_step(ema_filter_t *f, float x, float alpha)
{
    f->y += alpha * (x - f->y);
    return f->y;
}

Características:

  • Nenhuma alocação dinâmica
  • Uma multiplicação por amostra
  • Ideal para ISR ou loop rápido

1.7 Escolhendo o valor de α (engenharia, não tentativa)

Uma regra prática muito usada em firmware:

αComportamento
0.01Muito suave, lento
0.05Estável, robusto
0.1Boa resposta
0.3+Pouca filtragem

Outra forma de pensar:

  • EMA ≈ média móvel de \(N \approx \frac{2}{\alpha}\) amostras

Exemplo:

  • α = 0.05 → ~40 amostras efetivas

1.8 Onde a EMA falha (e por quê)

Apesar de poderosa, a EMA tem limitações claras:

  • Não modela dinâmica do sistema
  • Não separa ruído de sinal estatisticamente
  • Não incorpora incerteza
  • Não prevê o futuro

Essas limitações nos levam naturalmente aos próximos filtros.


0 0 votos
Classificação do artigo
Inscrever-se
Notificar de
guest
0 Comentários
mais antigos
mais recentes Mais votado
Feedbacks embutidos
Ver todos os comentários

Related Post

0
Adoraria saber sua opinião, comente.x