Hola:
Este es un proyecto reciente que consiste en la interfaz grafica de usuario (GUI) de una balanza digital (primera parte) que estoy construyendo. El objetivo en realidad era probar conceptos relacionados con lograr alta resolucion y desarrollar y mejorar algunos instrumentos virtuales que ya habia construido. Tambien queria construir y tener disponible un graficador como el mostrado. Yo habia incursionado en lograr alta resolucion anteriormente en algunos de mis proyectos; pero nada comparable a lo aqui observado. Utilizando el mismo conversor A/D de Arduino, que en condiciones normales solo puede resolver 1024 diferentes niveles de voltaje en el intervalo de 0 a 5V, en el video se puede apreciar que en la escala de gramos por ejemplo, el sistema resuelve aproximadamente 100000 valores diferentes, lo que equivale a 5V/100000~5 microvolts (voltage steps). En otras escalas, la resolucion lograda es aun mayor como puede apreciarse al final del video. El metodo empleado es un tipo de promediacion con varias modificaciones introducidas. Es importante destacar, que aunque el sistema no tiene implementado ningun metodo de reduccion de ruido por hardware, ni emplea amplificacion, la estabilidad lograda es bastante aceptable. Tambien es bueno enfatizar, que el ruido constituye un gran problema para lograr estabildad en las lecturas obtenidas y es indispensable mantenerlo en los niveles adecuados. Yo trate de anadir "dithering"; pero sin cambios apreciables, quizas porque no lo hice bien o porque ya hay suficiente ruido en la senal y no se necesita. Aun no tengo una respuesta acertada para esta pregunta. Actualmente estoy construyendo un amplificador de instrumentacion y utilizando un sensor real de balanza digiatal. Los resultados no llegan a los aqui presentados con el potenciometro y tuve que disminuir la resolucion en un orden de magnitud para lograr resultados aceptables. El ruido es un gran problema com ya se menciono. Tambien queria mencionar que al no disponer de la instrumentacion con la precision necesaria para realizar las mediciones, no he realizado pruebas de precision, linealidad o repetibilidad serias, aunque tampoco tengo indicaciones claras de que alguno de estos parametros se haya degradado el el proceso. Las mediciones realizadas con los instrumentos a mi alcance, no permiten llegar a conclusions definitivas. Tengo la impression de todas formas, de que si la lectura permanence estable, entonces, los errores que pudieran presentarse se podrian considerar como sistematicos y en consecuencia proceder a cancelarlos matematicamente en el software.
Para poder lograr altos niveles de resolucion, obviamente hubo que reducir drasticamente la respuesta de frecuencia del sistema para eliminar la mayor cantidad de ruido posible y obtener una lectura estable. Esto provoca como es de esperar, que la respuesta en el tiempo del sistema en su conjunto sea lenta. En general, solo variables extremadamente lentas podrian tolerar tal situacion extrema. La lentitud en la respuesta es facilmente appreciable en la velocidad de movimiento de la aguja, aunque en realidad yo esperaba mucho mas deterioro del que se observa. Hay una delicada linea divisoria entre la reduccion drastica de frecuencia que permite lograr estabilidad y la lentitud en la respuesta que puede considerarse como acceptable para la variable en cuestion.
Este es un ejemplo intencionalmente extremo, realizado con el proposito de probar ideas y conceptos y llegar a algunas conclusioines practicas. Aun tengo muchas preguntas sin respuesta en muchos aspectos; pero los resultados observados en la practica, resultan alentadores.
Gracias.
Aqui esta el video:
Hola, buscando métodos que reduzcan el ruido de las lecturas de un Arduino di con este post tuyo. Pero me encuentro que no compartes demasiado como conseguiste tu solución que luce impresionante.
Puedes dar mas detalles? Gracias y excelente trabajo.