Osciloscopio
Construye, utiliza y entiende tu propio osciloscopio
OSCAR y OSCARET nacen de una misma idea: construir un osciloscopio controlado desde un ordenador utilizando hardware sencillo y software abierto.
El objetivo no es solamente visualizar una señal, sino experimentar con adquisición de datos, conversión analógica-digital, trigger, procesamiento digital, análisis espectral y resolución efectiva.
Arduino UNO Tcl/Tk Adquisición de señales DHT CA3306 DSO183
El proyecto forma parte del trabajo desarrollado para el libro Arduino, Tcl/Tk osciloscopio, aunque tanto el código fuente como los programas ejecutables pueden utilizarse gratuitamente.
Diferentes temas
OSCAR: un Arduino UNO y dos cables
La forma más sencilla de empezar es probablemente también la más sorprendente.
Necesitas:
- un Arduino UNO
- un cable USB para conectarlo al ordenador
- dos cables para conectar la señal que quieres medir
Nada más.
El convertidor ADC del propio ATmega328P se utiliza para digitalizar la señal y el ordenador se encarga de visualizarla y analizarla.
De esta forma, un Arduino UNO puede transformarse en un pequeño osciloscopio digital controlado desde el PC.
La idea esencial
Arduino se ocupa de adquirir las muestras y el ordenador aporta la pantalla, la interfaz gráfica y buena parte del procesamiento.
Eso permite mantener el hardware extremadamente sencillo y trasladar muchas funciones al software.
¿Qué puedes hacer?
Entre otras cosas, puedes:
- visualizar señales en tiempo real
- medir tensiones
- medir frecuencia y periodo
- utilizar distintos modos de disparo
- analizar las muestras adquiridas
- estudiar el espectro de la señal
- exportar las capturas para analizarlas posteriormente
Y, sobre todo, puedes experimentar.
OSCAR no pretende sustituir a un osciloscopio profesional. Su objetivo es demostrar cuánto puede hacerse con hardware extremadamente sencillo y permitir entender qué ocurre realmente dentro de un instrumento de medida digital.
Una limitación importante
Si utilizas directamente Arduino UNO, las señales deben encontrarse aproximadamente dentro del intervalo:
$$ 0\text{ V} \leq V_{in} \leq 5\text{ V} $$Arduino no está preparado para recibir directamente tensiones negativas ni tensiones superiores a su alimentación.
Esto significa que hay que tener cuidado con las señales que se conectan.
A cambio, para señales digitales, sensores, pequeños circuitos electrónicos, PWM, audio de bajo nivel acondicionado adecuadamente y muchas experiencias de laboratorio, puede convertirse en una herramienta sorprendentemente útil.
Si no dispones de entorno de desarrollo, he creado un ejecutable para que puedas usarlo también.
Arduino UNO original y clones
El programa está pensado para usarlo con Arduino UNO original.
Si tienes un clon también puedes usarlo, pero tendrás que indicar tu puerto serie en el fichero serial_port.txt. Por ejemplo: COM8.
Yo recomiendo utilizar Arduino UNO original porque los clones tienden a fallar en su comunicación serie y pueden llegar a dejar de enviar datos al programa. Con el original nunca he tenido ese problema.
No es una caja negra
Una de las principales características del proyecto es que puedes estudiar cómo funciona.
OSCAR no es solamente un programa que dibuja una señal en la pantalla.
El proyecto permite experimentar con cuestiones como:
Frecuencia de muestreo ADC Cuantificación Trigger Buffers Comunicación serie Ventanas Ruido SINAD ENOB
También permite estudiar procesamiento digital de señales y transformadas espectrales.
Es, por tanto, tanto un instrumento como una plataforma de aprendizaje.
Puedes modificar el código, hacer pruebas, equivocarte y comprobar qué ocurre.
OSCAR en funcionamiento
¿Y si quieres algo más parecido a un osciloscopio real?
Aquí entra en juego OSCARET.
La filosofía sigue siendo la misma: utilizar el ordenador para proporcionar capacidades de adquisición, visualización y procesamiento que normalmente asociamos a instrumentos mucho más complejos.
Pero el siguiente paso consiste en añadir un verdadero front-end de osciloscopio.
OSCARET
OSCARET conserva la filosofía de OSCAR, pero amplía el hardware para acercarse mucho más al comportamiento de un osciloscopio de sobremesa.
Utilizando un DSO183
El DSO183 es un pequeño osciloscopio autónomo muy económico.
Por sí mismo ya permite visualizar señales, pero su hardware también puede aprovecharse como punto de partida para construir algo más interesante.
Al conectarlo al sistema desarrollado en este proyecto, puede convertirse en una especie de osciloscopio de sobremesa controlado desde el ordenador.
La ventaja es combinar su electrónica de entrada con capacidades software que el DSO183 original no proporciona.
Por ejemplo:
- una interfaz gráfica más amplia
- visualización de la señal desde el ordenador
- almacenamiento de capturas
- procesamiento posterior de las muestras
- análisis espectral
- cálculo automático de medidas
- exportación de datos
- generación de ficheros CSV
- utilización de las capturas con otras herramientas de análisis
Una captura deja así de ser simplemente una curva que aparece durante unos segundos en una pequeña pantalla.
Puede convertirse en un conjunto de datos que puedes guardar, analizar, comparar o procesar posteriormente.
OSCARET tomando muestras a 5 Msps
Análisis espectral
Una de las funciones que considero especialmente interesantes es poder observar una señal tanto en el dominio temporal como en el dominio frecuencial.
El osciloscopio permite estudiar cómo cambia una tensión con el tiempo.
El análisis espectral permite responder a otra pregunta:
¿Qué frecuencias contiene esa señal?
Esto permite experimentar con:
- señales senoidales
- señales cuadradas
- armónicos
- ruido
- PWM
- distorsión
- filtros
- aliasing
Para realizar este análisis, el proyecto utiliza una Transformada de Hartley (DHT).
No se trata solamente de añadir un gráfico atractivo a la aplicación. La implementación de estas funciones permite comprender muchos de los conceptos que existen detrás de un analizador de espectro digital.
Tus datos son tuyos: exportación a CSV
Las muestras adquiridas pueden guardarse en ficheros CSV.
Esto permite analizarlas posteriormente con prácticamente cualquier herramienta:
LibreOffice Calc Excel Python GNU Octave MATLAB R
Y, naturalmente, también con tus propios programas.
Esto resulta especialmente útil para docencia y experimentación: puedes realizar una captura, guardar las muestras y estudiar después exactamente los mismos datos sin necesidad de repetir el experimento.
Software libre y gratuito
Todo el código desarrollado para OSCAR y OSCARET está disponible gratuitamente.
La intención es que puedas:
- utilizarlo
- estudiarlo
- modificarlo
- experimentar con él
- construir tu propia versión
También se proporciona un ejecutable, de forma que no es necesario conocer Tcl/Tk ni preparar un entorno de desarrollo simplemente para probar el osciloscopio.
Quien quiera profundizar siempre puede descargar el código fuente y ver cómo está construido.
El libro
Todo este proyecto ha servido también como hilo conductor para escribir Arduino, Tcl/Tk osciloscopio.
Si el proyecto te resulta útil y quieres apoyar su desarrollo, una forma de hacerlo es comprar el libro.
Y si además quieres entender cómo se ha construido todo, reproducir los experimentos y seguir el camino que llevó desde unas primeras muestras obtenidas con un Arduino hasta un sistema completo de adquisición y análisis, entonces probablemente disfrutarás también del libro.
El libro no pretende ser simplemente un manual de instalación de OSCAR.
Explica progresivamente muchas de las decisiones, experimentos, errores y soluciones que aparecen al intentar construir un osciloscopio digital desde cero.
A lo largo del proceso se estudian temas como:
- adquisición de señales
- programación del Arduino
- funcionamiento del ADC
- aumento de la frecuencia de muestreo
- comunicación entre el microcontrolador y el ordenador
- creación de una interfaz gráfica con Tcl/Tk
- representación de señales
- trigger
- procesamiento digital
- análisis espectral
- ventanas
- ruido y resolución efectiva
- SINAD y ENOB
- limitaciones reales del hardware
También intento explicar por qué funciona, dónde están sus límites y qué ocurre cuando intentamos llevar un hardware sencillo más allá de aquello para lo que inicialmente fue diseñado.
Un Arduino, dos cables y una pregunta
Una de las ideas que más me gustan de este proyecto es que puede empezar de una forma extremadamente sencilla:
El punto de partida
Arduino UNO + ordenador + dos cables.
A partir de ahí aparecen preguntas:
- ¿Cómo puedo muestrear más rápido?
- ¿Por qué la señal cambia cuando aumento la frecuencia?
- ¿Qué es realmente la resolución de un ADC?
- ¿Por qué aparecen frecuencias que no existen en la señal original?
- ¿Cuánta información estoy perdiendo?
- ¿Puedo calcular el espectro?
- ¿Puedo mejorar el hardware?
- ¿Puedo convertirlo en un instrumento real?
OSCAR y OSCARET son, en buena medida, el resultado de intentar responder a esas preguntas.
Y todavía quedan muchas por responder.
Más información
Sobre el nombre
Me pareció simpático porque:
- OSCAR: OSCiloscopio ARduino
- OSCARET: OSCiloscopio ARduino ExTendido
y también porque tengo dos amigos con ese nombre :-P
Contacto
Si tienes alguna sugerencia o consulta, estoy disponible en:
tdso112a at hykrion com







