como te comentan solo saca el set_acd_channel de tu while y poras hacer lecturas continuas.Hola rivale al canal tengo conectado un simple potenciometro de 250K.
que tienes conectado a tu canal?, puede que el ruido sea de tu sensor
Hola rivale al canal tengo conectado un simple potenciometro de 250K.
setup_adc_ports(AN0|VSS_VDD); for(i=0; i<200;i++) //Tomas 200 muestras y las sumas
{
adc_valor+= read_adc();
delay_us(11); //Demos tiempo al ADC para terminar la conversión anterior (TAD)
}
adc_valor /= 200; //aqui calculas el promedio de 200 muestras
Intenta:Hola Picuino esta noche voy a hacer pruebas, aunque por lo que lei en el datasheet solo puedo configurar hasta 32.
setup_adc(ADC_CLOCK_DIV_128);
Y no hace falta que añadas ningún delay_ms();
Saludos.
Tambien voy a estudiar tu opcion, aunque en el manual de CCs la instruccion que tu propones, setup_adc_ports(AN0|VSS_VDD) da error de compilacion tiene que ser sin VSS_VDD.CitarHola rivale al canal tengo conectado un simple potenciometro de 250K.
Pon el esquema espero que tenga las refencias a cero y a VREF y asegurate que las tensiones son estables, por ejemplo con pequeños condensadores, lo más cerca posible del PIC
¿La tension de referencia es VDD?:Código: [Seleccionar]setup_adc_ports(AN0|VSS_VDD);
Y haz un filtrado, es imprescindible en todos los DAC, por ejemplo así:Código: [Seleccionar]for(i=0; i<200;i++) //Tomas 200 muestras y las sumas
{
adc_valor+= read_adc();
delay_us(11); //Demos tiempo al ADC para terminar la conversión anterior (TAD)
}
adc_valor /= 200; //aqui calculas el promedio de 200 muestras
El ADC en las protoboards suele dar muchas lecturas erroneas y oscilan mucho, los condensadores ayudan algo, aun asi no esperes precision en una protoboard, ya de por si la resistencia entre pistas/cables hace que la vref sea incorrecta.En esto estoy MerLiNz, en cuanto tenga el modulo analogico terminado para poder conectar a la entrenadora os cuento los resultados.
Lo ideal es una board y soldado todo.
A mi el ADC no me da problemas. No necesito ni condensadores ni calcular el promedio de muchas muestras.Perdona mi torpeza Picuino, pero como puedes configurar el setup_adc(ADC_CLOCK_DIV_128); si en el datasheet te dice:
El único caso que me dió problemas (la lectura variaba mucho arriba y abajo) fue el de un programa en el que configuré el oscilador del ADC con una frecuencia demasiado elevada. Me costo bastante llegar a la solución.
De todas formas, deberías descartar que haya ruido en la entrada del ADC o en la referencia positiva del ADC (la alimentación). Se puede conseguir llevando la entrada a un potenciómetro, alimentas el potenciómetro entre Vdd y GND y el cursor a la entrada del ADC.
En una protoboard con distancias cortas y sin ruido eléctrico cercano, la lectura debería ser estable.
Saludos.
En principio ADC_CLOCK_DIV_8 te debería valer hasta 5Mhz. Puedes probar con ADC_CLOCK_DIV_32 a ver si mejora.Hola de nuevo Picuino, el ADC_CLOCK_DIV_32 precisamente acabo de probarlo con un cristal de 20MHz y sigue haciendo lo mismo, al oscilar no tiene unos valores fijos, mueves el potenciometro a cualquier posicion y aunque dejes de moverlo el valor de la medicion va subiendo y bajando sin parar.
Otro punto a considerar es el tiempo de adquisición, pero para una medida de una tensión constante no debería darte problemas.
¿Entre qué valores oscila?
Saludos.
¿Y si conectas la entrada a Vdd o a GND?Conectando directamente a Vdd o Vss la medicion es correcta, lo que si me he dado cuenta es que el A/D es muy sensible, teniendo el pin de entrada sin conectar en ningun sitio con acercarlo a una fuente los valores oscilan, por lo cual doy por seguro que el problema que tengo es de interferencias.
¿Has probado con resistencias fijas?
Pero si la señal de entrada va a una resistencia, las interferencias no pueden ser muy grandes.Gracias Picuino, he probado con el divisor de tensión y la medición es mucho más perfecta, apenas oscila.
Prueba conectando una resistencia a GND y otra a Vdd (un divisor de tensión) a ver si es estable.
Puede que el potenciómetro esté mal.
Saludos.
¿El pote es de 250K? Yo probaría con un pote de 5KGracias AngelGris, intentare encontrar uno de 5k para probar.