En uno de mis artículos anteriores había
mostrado varios analizadores digitales -
analógicos .
Entre ellos mostraba Arduinoscopeque 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.