Ir ao conteúdo
  • Cadastre-se
Queiros19

Estabilização de Sinal via software

Recommended Posts

boa noite, tenho uma pequena duvida hoje, estou a fazer um pequeno codigo em C Arduino para estabilizar um sinal recebido via porta analogica, estou constantemente fazendo uma media do sinal, e ele já está bem fixo e bem bonitinho, mas estou com um pequeno problema ainda:

acontece que sempre que eu reinicio o meu controlador, até o valor parar no valor da medição passam prai 5 segundos, e eu queria que o meu programa controla-se isso e analisa-se o valor continuamente e daria um ok depois de 50 leituras com o mesmo valor, ou seja, mais ou menos isto

20, 21, 22, 23, 24, 25, 26, 26, 26, 26, 26,|->| 26, 26

ou seja, quero que ele de ok quando fizer X leituras iguais.

tudo via software,

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

Amigo, você quer contar o numero de leituras iguais e imprimir um "OK" quando chegar a certa quantidade é isso??... Já pensou em criar uma variável e incrementar o valor dela a cada leitura igual, depois é só testar os alor e imprimir se for o numero que você quer.... Tipo assim:

 [B]int[/B] Leitura;
[B]char [/B]Conta=0;
Serial.begin(9600);
[B]while[/B](true)
{
Leitura=analogRead(A0);
[B]if[/B](Leitura==26) Conta++; //Não sei que algorítimo estas usando para obter este resultado..
[B]if[/B](Conta==50) Serial.println("OK");
}

dê uma margem de erro na leitura, pois é difícil ter como retorno dois valores iguais, ainda mais 5 vezes....

Não sei com qual IDE você esta trabalhando, este programa que eu fiz foi feito em Processing (linguagem nativa da IDE Arduino), mas nesse caso acho que vale mais o Conceito.rsrs. :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde amigos, desde já obrigado pela ajuda e pelo conceito, a ideia esta lá sim, mas o meu problema é que desde que inicializo o microcontrolador, até o valor chegar a sua média podem passar 20seg, e eu queria que ele me apresenta-se a temperatura apenas quando me der 30 valores iguais, e apartar dai apresentaria sempre.

Assim o valor ficaria bem estável e bonito

Obrigado

Queiros19

PS: os 30 valores iguais teriam de ser consecutivos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo, o problema com esta ideia de valores iguais consecutivos é que como o leitor é muito preciso, 10 bits de conversão, fica muito difícil, praticamente impossivel tirar 30 valores iguais, uma diferença de 0,004V já da diferença na leitura, a temperatura do CI já influencia no valor da sua leitura, os ruídos externos já alteram sua leitura..... ou seja, quase impossível

faça a média de 30 valores que vai ser melhor

flowww

Compartilhar este post


Link para o post
Compartilhar em outros sites

boa noite amigo, obrigado pela sua resposta

eu ja estou a fazer uma media de valores


calculo = sensorValue * 0.01;
calculo2 = valorantigo * 0.99;
valor = calculo + calculo2;
valorantigo = valor;
amostra = valor;
Serial.println(valor);
  sensorValue = analogRead(sensorPin);

o valor fica parado nos 23º por exemplo, mas eu preciso de saber quando é que o valor para.

por exemplo, ele começa em 0 e gradualmente sobe até aos 23º por exemplo, e assim que o valor parar nos 23 eu queros saber para começar apresentar o valor, vamos imaginar que estou a mostrar o valor num LCD16x2 e estão 23º e o display esta a dizer 1º e depois diz 2º e depois 3º e isso fica feio e eu não quero, e quando ele parar nos 23º começa apresentar até ai apresenta sempre ---º que é para ficar a espera que me retorne um valor aceitavel

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que voce tem de fazer é monitorar o gradiente da variação da temperatura.

Coloque as medidas em um vetor, e calcule a taxa de variação, quando ela estiver abaixo do valor que voce considera o mínimo necessário voce considera que a leitura estabilizou.

Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

ou seja divido o valor novo, pelo antigo, e tendo em conta que ele sobe (porque começa no zero), tem de dar um valor maior que um, quando der um valor perto de um tipo 1,001 significa que está perfeito...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Continue calculando as médias, e guarde o resultado delas, pelo menos os ultimos 5 resultados, e veja a variação desses 5 ultimos resultados, quando pararem de variar, é que está estabilizado.

Mas para isso dar certo, tem de ver qual é o intervalo de tempo que voce vai usar para calcular a média e guardar esse resultado. Se for um tempo muito pequeno, vai parecer que estabilizou, mesmo que na realidade ainda esteja subindo.

Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×