Bastidores de projeto · CH3

Por que recalculei o cutoff do meu filtro Sallen-Key de 500 Hz para 664 Hz

ELETROHEURO — Bastidores do CH3 (Analisador de Espectro)

O filtro anti-aliasing do CH3 é um Sallen-Key Butterworth de 4ª ordem, posicionado antes do ADC para garantir que nenhuma componente acima da metade da taxa de amostragem contamine o espectro por dobramento (aliasing). A primeira versão do projeto usava um cutoff de 500 Hz — um valor redondo, conservador, que parecia a escolha óbvia dado que a taxa de amostragem do sistema é fs = 2000 Hz e, portanto, a frequência de Nyquist fica em 1000 Hz.

Só que ao validar as leituras de amplitude harmônica com mais rigor, percebi que esse cutoff estava introduzindo um erro sistemático justamente onde eu menos queria: na 7ª harmônica.

O problema escondido no passband

Um filtro Butterworth é "maximamente plano" na banda de passagem, mas isso não quer dizer plano de verdade — ele já começa a atenuar antes do próprio ponto de corte, só que de forma suave e monotônica. Em 60 Hz de fundamental (padrão da rede elétrica brasileira), a 7ª harmônica cai em 420 Hz — bem dentro da banda que eu precisava medir com precisão para análise de qualidade de energia.

Com cutoff em 500 Hz, a atenuação do filtro em 420 Hz já não é desprezível:

CutoffAtenuação em 420 Hz (7ª harm.)Atenuação em 1000 Hz (Nyquist)
500 Hz (original)≈ −0,81 dB≈ −24,1 dB
664 Hz (recalculado)≈ −0,11 dB≈ −14,4 dB

Menos de 1 dB pode parecer irrelevante à primeira vista, mas para leitura precisa de amplitude harmônica — especialmente quando o objetivo é caracterizar THD e distorção com fidelidade — esse erro sistemático se acumula justamente na componente que eu mais queria capturar bem.

Recalculando o cutoff

A pergunta virou: até onde eu posso empurrar o cutoff para cima sem comprometer a proteção contra aliasing na frequência de Nyquist? Refiz o dimensionamento do estágio Sallen-Key com R = 51 kΩ, chegando a um cutoff efetivo de fc ≈ 664 Hz.

// Butterworth 4ª ordem, resposta em módulo:
// |H(f)|² = 1 / (1 + (f/fc)^(2n)),  n = 4

// fc = 500 Hz, f = 420 Hz → atenuação ≈ -0,81 dB
// fc = 664 Hz, f = 420 Hz → atenuação ≈ -0,11 dB

O ganho na banda de interesse foi claro. Mas isso não veio de graça.

O trade-off Ao subir o cutoff de 500 Hz para 664 Hz, a margem de atenuação na frequência de Nyquist (1000 Hz) caiu de aproximadamente −24 dB para −14 dB. Ou seja: ganhei fidelidade na 7ª harmônica, mas abri mão de parte da proteção contra aliasing.

Por que aceitei essa troca

A decisão de manter os 664 Hz se apoiou em três pontos:

observação

Esse é um daqueles casos em que não existe "valor certo" de cutoff — existe a pergunta certa: o que eu estou priorizando nesse filtro? Um projeto de referência para caracterização de espectro amplo provavelmente manteria os 500 Hz, ou até menos, para maximizar a rejeição de aliasing. Já para um instrumento cujo propósito central é ler amplitude harmônica com precisão, empurrar o cutoff um pouco além do "óbvio" fez mais sentido.

Fica registrado o raciocínio para quem for dimensionar um anti-aliasing parecido: comece pela pergunta de qual componente do seu sinal você não pode errar, e dimensione o filtro em função dela — não só em função da metade da taxa de amostragem.

Do blog para o artigo completo

Veja o filtro completo dentro da cadeia de aquisição do CH3

Sampling chain completa (fs=2000 Hz, N=1024, janela de Hamming), o dimensionamento do estágio Sallen-Key e a arquitetura dual-core de aquisição + FFT + display no artigo técnico do Analisador de Espectro.

Ler artigo 3 →