Um fenômeno aleatório pode ocorrer na leitura do seu LM 35, resultando em valores errado na leitura e instabilidade.
Uma das etapas mais importantes na construção o diz respeito à modelagem dos dados de entrada, no processo de modelagem de dados são feitos os seguintes passos:
1º- Coleta - o objetivo é garantir que a amostra seja a mais representativa possível do fenômeno
2º- Tratamento - o objetivo é identificar possíveis falhas nos valores amostrados e aumentar o conhecimento acerca do fenômeno.
3º- Inferência - O objetivo é aplicar os conhecimentos de probabilidades para inferir o comportamento a partir da amostra.
Uma amostra de leitura do sensor LM 35 deve ter no minimo 100 observações e no máximo 200, amostras com menos de 100 observações podem comprometer a identificação do melhor modelo probabilístico, e amostras com mais de 200 observações não trazem ganhos significativos ao estudo.
Na leitura do seu LM35 pode acontecer um outlier,outilier é ponto fora da curva, valores é atípicos ou discrepantes na amostra e precisam ser retirados.
Segue abaixo o algoritmo de modelagem de entrada de dados para LM35:
float ModelagemDeDados(int x) //x= numero do pino analógico
{
int leituras[100],i,j,aux,a,q1,q3,TotalDeElementos=100,soma=0;
float MenorOutlier,MaiorOutlier;
for (i=0;i<100;i++) //um segundo de leituras
{
leituras[i]=analogRead(x);
delay(10);
}
//Ordenação do vetor por bubble sort
for(j=100-1;j>=1;j--)
{
for(i=0;i<j;i++)
{
if(leituras[i]>leituras[i+1])
{
aux=leituras[i];
leituras[i]=leituras[i+1];
leituras[i+1]=aux;
}
}
}
//Calculo de Amplitude e Outliers utilizando técnicas de modelagem de entrada de dados
q1=leituras[24];
q3=leituras[74];
a=q3-q1;
MenorOutlier=q1-1.5*a;
MaiorOutlier=q3+1.5*a;
//Retirando os outiliers (Leituras fora de padrão)
for(i=0;i<100;i++)
{
if((float)leituras[i]<MenorOutlier)
{
leituras[i]=0;
TotalDeElementos--;
}
if((float)leituras[i]>MaiorOutlier)
{
leituras[i]=0;
TotalDeElementos--;
}
}
//Media das leituras retirando as leituras foda do padrão
for(i=0;i<100;i++)
{
soma=soma+leituras[i];
}
return (soma/TotalDeElementos); //Valor ainda não convertido em ºC
}
Comentar
MEU EMAIL É miragempro@hotmail.com
Oi Wellington Cássio, aceitaria fazer uma vídeo aula sobre a modelagem de dados? me ensinando a faze-la? lhe pago se quiser;
Depois eu pesquisei e achei essa sua resposta. abraço
Eduardo, Modelagem de dados é para deixar suas medições de temperatura mais seguras e confiáveis.
Me diga uma coisa, posso usa-la no ARDUINO?
Muito útil esta rotina, fazer apenas a média dos valores absorvendo os "picos" não é suficiente. Parabéns !
Obrigado Marcelo! :D
Parabéns, muito instrutivo esse artigo.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)