ADC del PIC: ¿es normal esto?

El año pasado hice un sensor de temperatura utilizando un micro AT89S52 y un ADC0804, y me encontre con el mismo problema que vos. No se si es una "verdadera" solucion al problema, pero yo hice lo siguiente: tomaba una medicion cada 200ms y la almacenaba en un vector. Luego cuando llegaba a las 5 mediciones (es decir 1 segundo) hacia el promedio y actualizaba el valor mostrado en el LCD.
 
Hola a todos,

Pues debo comentarles que hoy he terminado de armarlo en tabla fenolica siguiendo todos sus consejos y hasta me daba algo de temor probarlo, pero al final lo hice, ¿y que creen?... ¡¡¡¡0 variaciones!!! Lo arme tal como lo puse en el simulador (imagen anterior) y quedo perfecto, claro cuidando que las conexiones quedaran lo mas limpias, cortas (como me recomendaron aquí ustedes) y bien hechas posibles.

Como referencia de 5.0v finalmente utilice el LM385Z, tal y como el fabricante recomienda para 5v. Solo tuve que pasarme como dos horas ajustándolo, (jajaja no es cierto, en unos minutos queda)

http://www.ortodoxism.ro/datasheets/nationalsemiconductor/DS005250.PDF

Finalmente les agradezco mucho a todos los que contribuyeron con soluciones, me han servido de mucho, sobre todo para formarme un mejor criterio sobre este problema que, por lo visto, no le es ajeno a nadie de los que trabajamos con los convertidores AD. Estoy seguro que este tema le servirá mucho a quien(es) en el futuro ande sobre lo mismo.

Loktar
eidtech
thebearmac
yamazaky1984
Turkito
Trent
rampage

Muchas gracias a ustedes.

Saludos,
 
Hola alejandro, entonces, y resumiendo, qué crees que fueron lños puntos clave para solucionar el problema? reducir el tamaño de los cables?, usar el regulador de voltaje? alguna mas? por cierto, alguien me recomienda algún ADC de 16 bits que sea rápido y estable? GRACIAS A TODOS
 
Hola mga_78,

Ya analizando, lo mas importante creo yo para lograr una lectura estable en mi caso, es que venia tomando Vref+ directamente de la salida de un L7805 el cual alimenta la carga del circuito en general que requiere 5v y por lo tanto es posible que hubiera pequeñas variaciones, situación que resolví (como bien mencionas) usando un circuito generador de referencia de voltaje de precisión, para ajustarla debes usar trimpots de 15 o 20 vueltas, a menos que quieras pasarte un mal rato o seas muy bueno con el pulso.

Luego yo lo tenía montado en una protoboard, que ya anteriormente me había dado dolores de cabeza por falsos contactos, y como comentaba en anterior mensaje: mis puentes eran algo largos, esto debido a la incomodidad que me presentaba el montaje de algunas de las piezas en la proto. Así que yo personalmente no recomendaría el montaje de un ADC en una proto, a menos que se estuviera seguro tanto del estado de los puentes como de la misma protoboard fueran óptimos, pero lo mejor es realizar el montaje de un dispositivo de estos directamente sobre alguna tabla fenolica perforada o de plano en circuito impreso, todo con el fin de asegurarse que los contactos sean perfectos, también debe usarse cableado en buen estado, nada de cables podridos, yo me fui a usar cable blindado para las salidas del circuto (las que toman las lecturas).

En cuanto a los tiempos de adquisición, hablando de PICs y del CCS, va bien con más de 50us entre el cambio de canal y la lectura del mismo. Un truco interesante para no abusar de los retardos es establecer el canal de lectura, luego correr alguna rutina intermedia para ganar tiempo y ahora si leer el canal, de este modo los retardos pueden ser mínimos, lo que hace más eficiente la aplicación.

Algo que me ayudo bastante, es el poder simular el montaje para verificar el correcto funcionamiento.

Ojala esto te ayude a evitar líos innecesarios.

Saludos,

PD: Espero que alguien te recomiende ese ADC de 16 que andas buscando.
 
Esto que cuentas suele pasar, y se suele solucionar manteniendo un promedio de las mediciones en lugar de tomar la última solamente.
Si mantienes un promedio, la medición será más estable. La estabilidad será mayor cuanto más mediciones promedies hacia atrás. Claro que también influye a qué repetición mides. Si estás midiendo cada 1 ms y promedias los últimos 10 valores, una medición que varíe muy rápido se achata en respuesta y tardará más o menos 5 ms en llegar a un valor correcto. Si mides algo que varía lentamente, no hay problema. Y sino lo que se puede hacer es medir más seguido o incluir menos mediciones hacia atrás en el promedio.
Otra cosa que se hace es descartar los valores que se alejan mucho del valor anterior.
De todos modos, también vale lo que ya se ha hablado en los mensajes, sobre reducir el ruido y filtrar la senal que se mide.
Edu
 
saludos: si la variacion de la que se habla es poco significativa no hay problema. hay que recordar que el micro tiene resolucion hasta de 10 bits, lo que significa que las variaciones permitidas son muy pequeñas. además, el voltaje de la bateria o lo que se desee controlar por mas exacto que sea nunca es constante, sumandole además los ruidos de os pines... mucha suerte
 
soy nuevo en este foro, pues a mi me esta pasando algo similar, estoy tratando de visualizar temperatura con display y usando el pic16f877 pero la salida es inestable osea presenta oscilaciones y el valor no es fijo, ya he probado la configuracion del ADC Y parece que todo esta bien, pero no me esta funcionando, si alguno de ustedes me puede ayudar se lo agradeceria. (estoy programando en ASM)

GRACIAS
 
Esto que cuentas suele pasar, y se suele solucionar manteniendo un promedio de las mediciones en lugar de tomar la última solamente.
Si mantienes un promedio, la medición será más estable. La estabilidad será mayor cuanto más mediciones promedies hacia atrás. Claro que también influye a qué repetición mides. Si estás midiendo cada 1 ms y promedias los últimos 10 valores, una medición que varíe muy rápido se achata en respuesta y tardará más o menos 5 ms en llegar a un valor correcto. Si mides algo que varía lentamente, no hay problema. Y sino lo que se puede hacer es medir más seguido o incluir menos mediciones hacia atrás en el promedio.
Otra cosa que se hace es descartar los valores que se alejan mucho del valor anterior.
De todos modos, también vale lo que ya se ha hablado en los mensajes, sobre reducir el ruido y filtrar la senal que se mide.
Edu

Bien por la info, me gustaria saber o si tiene un codigo sencillo de ejemplo sobre promediar las medicion ya que no se como iniciar o como es que se hace. es para haber si lo pruebo con un potenciometro que es donde tengo el problema.

Gracias.
 
Estoy completamente seguro que lo que te pasa es porque lo tienes montado en una protoboard y tienes ruido en la entrada del conversor ADC. Si lo montas en una placa de fibra de vidrio de topos te funcionara perfectamente (ademas pon ese condensador de 10 o 100nF en la entrada del conversor hacia masa.

La protoboard es una fuente de ruido enorme, nunca se deberia usar mas que para hacerse una "ligera" idea de si el montaje funcionara.
 
Excelente.
Tambien a mi ha ayudado mucho esta discución XD.
Lo mejor es no dejar cables como si fueran antenas. El monteje en protoboard, puede ser muy fastidioso, ya que por la inductancia puede variar levemente nuestros valores. lo mejor es aislar lo mas posible la señal que vamos a medir del circuito de alimentacion y poner condensadores lo mas serca posible de la entrada del ADC.
 
hola : estoy haciendo el control de nivel de un tanque el cual lo represento con un potenciometro,
el problema que tengo es que al momento de montarlo y probarlo pasa de la maxima ala minima y no queda en niveles intermedios....
la simulacion me da perfecta .. pero en el montaje sucede el problema

muchas gracias por su colaboracion......
 

Adjuntos

  • tanque.png
    tanque.png
    25.3 KB · Visitas: 33
Atrás
Arriba