Eliminar las variaciones de lectura del adc del pic16f887

Tengo un problema con la lectura analogica del pic, estoy adaptando un termopar al pic y lo compenso con el sensor LM35, los voltajes de cada uno de los sensores son correctas segun la simulacion pero en la LCD me registra mucha variacion en la temperatura de aprox +-2grados. El problema esta en que si mido el voltaje en la entrada analoga del pic estas no varian. Que puedo hacer para solucionar este problema?
 
Prueba con un condensador a la entrada del ADC del Pic o sino también podrías implementar un filtro en el Pic.
 
ya intente con condensadores y resistencias tratando de hacer un flitro pasa bajos pero me sigue haciendo lo mismo, como puedo implementar un filtro en el pic?

Me parece que solo en los DSPic se pueden implementar filtros. Pero puedes optar por otra forma... leer unas 10 muestras por cada sensor y realizar un promedio de las 10, este resultado será el que se muestre en el LCD. No olvides colocar aún así algún filtro pasabajas.

La idea de hacer el promedio es para descartar posibles medidas sobre de y bajo de la temperatura sensada
Saludos
 
mira amigo el problema es que seguramente tu adc esta leyendo 5/255 = 0.0196078431 y tu sensor lee de esta manera 1º es igual a 10mV entonses si tu adc mide como minimo 19mv=1 lo que aqui deves de hacer es un multimplicador lo puedes hacer con un operacional con un arreglo de un no inversor multimplicado por 2 y con eso puedes resolver dicho problema saludos
 
corrigiendo al amigo xmatrix, el ADC de los PIC's es de 10bits lo que da un rango de aprox 4.9mV por unidad. Se puede entonces ajustar la salida del LM35 por medio de un divisor resistivo para que por cada °C de una salida de ≈4.9 mV, de esta forma se simplificaría la lectura de este por el PIC
 
Una cosa que tienen que tener en cuenta es que debido a que la masa el termopar es despreciable tiene una respuesta muy rapida pero es inherentemente ruidoso..., de echo cualquier tipo de sensor tiene cierto rango de variacion y esta depende mucho del cuidado a la hora de elegir los componentes y acomodarlos en la placa....

En el termopar trata primero de usarlo lo mas corto posible... y velo alargando poco a poco... no intentes leer usando cables de 10 o 15 metros hasta no estar seguro que tu circuiteria funciona bien...

Me parece que solo en los DSPic se pueden implementar filtros. Pero puedes optar por otra forma... leer unas 10 muestras por cada sensor y realizar un promedio de las 10, este resultado será el que se muestre en el LCD. No olvides colocar aún así algún filtro pasabajas.

La idea de hacer el promedio es para descartar posibles medidas sobre de y bajo de la temperatura sensada
Saludos

De echo lo optimo son 8, 16 o 32 muestras... asi solo se hace un corrimiento para sacar el promedio...
 
Última edición:
Me parece que solo en los DSPic se pueden implementar filtros. Pero puedes optar por otra forma... leer unas 10 muestras por cada sensor y realizar un promedio de las 10, este resultado será el que se muestre en el LCD. No olvides colocar aún así algún filtro pasabajas.

La idea de hacer el promedio es para descartar posibles medidas sobre de y bajo de la temperatura sensada
Saludos

esto si que funciona!! :cool:
 
Me parece que solo en los DSPic se pueden implementar filtros. Pero puedes optar por otra forma... leer unas 10 muestras por cada sensor y realizar un promedio de las 10, este resultado será el que se muestre en el LCD. No olvides colocar aún así algún filtro pasabajas.

La idea de hacer el promedio es para descartar posibles medidas sobre de y bajo de la temperatura sensada
Saludos

buenas queria que me expliques como escribo en ccs el codigo para sacar promedio de 10 lecturas
 
los guardas en un array unidimensional como:
int temp;
int16 s;
main(){
s=0;
for (i=0,i<=10,i++)
{ setup_adc(i);
delay_us(50); tiempo de cambio de canal
temp=read_adc();
s=s+temp;
delay_ms(tiempo de muestreo que desees);
}
temperatura_final=s/10;
}

esa es la idea adaptalo a tu codigo y listo
 
Atrás
Arriba