Fiz um programa simples para aquisição de corrente CA (RMS) usando o conversor AD do PIC16F876A (com um circuito adequado). Acontece que quando faço poucas amostras o valor oscila muito. Estou pensando em fazer uma média das amostras da seguinte forma: Continuadamente pego o valor lido e divido por uma constante. Um vetor por exemplo de 20 posições. No início vou tem um erro até estabilizar as medidas. Vou gravando os valores e fazendo a média. Quando completar os vinte valores volta a gravar na primeira posição e assim sucessivamente (sobrescrevendo). Segue o trecho do código onde pretendo implementar esta lógica.
void corrente()
{
int i, i_aux;
float i_med; i_rms;
char txt[4];
for (i=0;i<20;i++) //20 = nº de amostras
{
i_aux = read_adc(0);
i_aux = i_aux – 511; //normaliza leitura (offset)
i_med = i_med + pow(i_aux,2);
}
i_med = i_med/20;
i_rms = sqrt(i_med);
**Neste ponto gostaria de implementar o código onde seria feita as médias das leituras.
Já fiz com um “for” dentro do outro e deu certo mas não é o que preciso...
}
Desde já agradeço.
Elcio.