Página 1 de 1

variação do AD

MensagemEnviado: 24 Nov 2009 10:08
por dyemerson
Boa tarde a todos !!!!

fiz um circuito com um ad 0804 para medir a corrente via shunt e mostrar no LCD, o problema é que o valor esta variando muito , gostaria de fazer um filtro digital na linguagem c, que é a que eu programo o 8051.


Aguardo resposta!!!

MensagemEnviado: 24 Nov 2009 20:13
por Jozias del Rios
que tal simplesmente um filtro suavizador IIR:

Código: Selecionar todos

(...)

int f = get_sample(4);

// aqui vc usa o seu valor já filtrado

(...)

int get_sample(unsigned char SmoothLevel)
{
    static int previous = 0;
   
    previous = ( (previous << SmoothLevel) - previous + read_value_from_AD() ) >> SmoothLevel;

    return previous;
}



perceba que cada valor que vc obtem é passado por uma media ponderada com os anteriores.

brinque com o valor SmoothLevel para dar o "amortecimento" que desejar.

Cuidado com a possível perda de bits na operação shift left. Certifique-se que sizeof(int) == 4

MensagemEnviado: 03 Dez 2009 19:47
por dyemerson
legal deu certo
muito obrigado!!!!!