Página principal

Osciloscopio

Arduino

JAVA - Processing


En uno de mis artículos anteriores había mostrado varios analizadores digitales - analógicos .
Entre ellos mostraba Arduinoscope que era un visualizador de 6 señales analógicas utilizando el arduino.

Era bastante útil para visualizar señales en baja velocidad, pero el arduino podía convertir señales A/D bastante mas rápido.
El programa arduinoscope estaba programado en JAVA utilizando una biblioteca llamada Processing. processing
Processing es un potente software dedicado a la producción de imágenes, animaciones e interactivos.
Processing está compuesto de todo un entorno de programación en JAVA, (muy similar al del arduino), incluidas un montón de librerías para el tratamiento de imágenes.
Se puede descargar de su própia página, y funciona en Windows, Linux y Mac, además de ser Open Source.

Mis conocimientos en JAVA son bastante limitados, y en muchos casos me vuelvo loco utilizando funciones que en C o C++ están permitidas y en JAVA no.
Me puse manos a la obra para transformar el Arduinoscope en un Osciloscopio de un solo canal, pero con muestreo de 180000 m/S.
En varios artículos había realizado un osciloscopio similar realizado en diferentes lenguajes de programación, Gambas, SDL, Xwin, wxwidgets.
Para mi es un reto programar en JAVA, pero los retos me gustan.

Como soy un tanto particular en la programación, he utilizado el editor Geany y la línea de comandos linux (Debian 10) para compilación (copile) y ejecución (run).
También he colocado todos los archivos en un solo directorio, incluidas las fuentes (un formato de fuentes de lo mas particular formato vlw) .
Los purista me meterían a la cárcel, pero bueno soy autodidacta, y se me puede perdonar.
Forma de onda en mi osciloscópio.
En un oscilocópio comercial.


Señal de 5000 Hz.

El muestreo máximo que permite el arduino en modo Fast es de 183000 m/S , con una resolución de 8 bits.
A esta velocidad la exactitud de la conversión A/D no es muy precisa, pero suficiente.


Como se puede ver he colocado una resistencia entre la entrada A1 y los 3,3V, y esto tiene un motivo.
Resultaba que al hacer pruebas de medida en DC, las medidas no eran correctas, eran algo inferiores.
Revisando voltajes por el circuito descubrí que la tensión en el arduino nano  no era de 5V , era de 4,7V y alteraba todas las mediciones.
Mirando los esquemas del arduino UNO y el arduino NANO , había diferentes formas de alimentar el micro. El primero utilizaba un transistor sin caída de tensión, y el segundo un diodo que hacia caer la tensión entre 0,3V a 0,7V . Este cambio en la alimentación produce errores de lectura .
Para solucionar este problema, realizo una lectura de referencia de los 3,3V en el pin A1. Con esta lectura de referencia calculo la lectura real de la entrada A0.

Espero que le haya gustado este proyecto.
Ha sido mas una lucha por aprender JAVA que por realizar el osciloscopio.

VIDEO

PROGRAMA

Saludos.
Juan Galaz



Bibliografía:
https://github.com/konsumer/arduinoscope
https://processing.org/download/