Osciloscopio USB
Proyecto de fin de carrera
Pablo Hoffman | Martin Szmulewicz
Contenido
Introducción
El presente documento es un resumen de la información recopilada y los conocimientos adquiridos hasta el momento por los estudiantes Pablo Hoffman y Martin Szmulewicz en su proyecto de fin de carrera. La misma contiene apuntes y conclusiones sobre la evolución y el progreso de las investigaciones, las decisiones tomadas, y un esbozo de los próximos pasos a seguir. La información que aquí se presenta es solo un resumen. Para ver la información completa sobre la investigación y el desarrollo del proyecto (incluyendo esquemáticos) consultar su página web en:
http://pablohoffman.com/oscusb/
Objetivo
Este proyecto se basa en la construcción de un osciloscopio USB para PC que sea lo suficientemente robusto y confiable como para poder comercializarlo a nivel educativo (liceos, facultades, escuela técnica). Para lograr dicho objetivo el osciloscopio deberá competir en prestaciones y costos con el de un osciloscopio típico de laboratorio universitario.
Prestaciones básicas
El osciloscopio deberá poseer todos los requisitos básicos para que pueda ser usado con comodidad, es decir: protección contra descargada, manejo confortable (buena interfaz de control), etc. Si tenemos en cuenta que hoy en día un osciloscopio analógico típico en Uruguay (Tektronix 2205 / 20 Mhz) está en el entorno de los U$S 600, la meta es lograr construir un dispositivo sensiblemente más barato y de características similares o, en algunos casos, superiores para compensar la gran robustez de un osciloscopio de marca.
Prestaciones adicionales
Además de cumplir con los requisitos básicos, nuestro osciloscopio contará con algunas prestaciones adicionales derivadas de su naturaleza digital, como ser:
- Capacidad de detección de transitorios por software
- Capacidad de procesar digitalmente los resultados, ya sea guardar imagen de las capturas o planillas con los valores capturados para luego trabajar sobre ellos en alguna aplicación externa
Planificación del proyecto
La primeras dos semanas del proyecto fueron dedicadas a la planificación del mismo. Fijamos las pautas generales a seguir, definimos etapas, objetivos y plazos. En estas dos primeras semanas también escogimos la herramienta principal para trabajar en el proyecto: TWiki.
TWiki es una aplicación web que sirve para que muchas personas trabajen sobre una misma tarea, proyecto o actividad afín. Una de sus características es la edición compartida de documentos lo cual permite a varias personas colaborar en el desarrollo.
Esta fue la herramienta madre que escogimos para trabajar con el proyecto. Hasta ahora hemos venido utilizando (y seguiremos utilizando) TWiki para todo tipo de tareas relacionadas con el proyecto, como ser:
- bitácora de reuniones con el tutor
- apuntes y seguimiento de las investigaciones
- registro de mails importantes importante
- repositorio de documentos e información administrativa concerniente al proyecto
- tormenta de ideas para el diseño
- desarrollo de documentos a entregar (este documento esta siendo fue escrito en TWiki)
- glosario de términos relacionados con el proyecto
- seguimiento del progreso del proyecto con la posibilidad de ver cuales fueron los últimos documentos o secciones que cambiaron con notificaciones vía email
- al ser web automáticamente nos permite tener una web del proyecto sin ningún esfuerzo adicional (acceso público solo lectura).
TWiki es una herramienta de software libre con código abierto y está disponible en Internet en
http://twiki.org.
Cronograma y estado actual del proyecto
En las primeras dos semanas de planificación se definieron las etapas del proyecto junto con el cronograma del mismo:
| | Jun.05 | Jul.05 | Ago.05 | Set.05 | Oct.05 | Nov.05 | Dic.05 | Ene.06 | Feb.06 | Mar.06 | Abr.06 |
| Planificación | | |
| Análisis | | |
| Presentación oral | | |
| Diseño | | |
| Implementación | | |
| Documentación | | |
| Entrega | | |
| Defensa | |
Entre ellas se pueden destacar 3 etapas básicas:
- Análisis
- Diseño
- Implementación
Actualmente el proyecto se encuentra en la etapa final de análisis y en las primeras etapas del diseño. Ya tenemos un prototipo de los esquemáticos para la implementación con PIC (ver Links al final del documento).
Funcionamiento básico de un osciloscopio
Mecanismos de disparo
En los osciloscopio existen 3 tipos de mecanismos de disparo (trigger) según la finalidad con la que se utilice. Estos son:
- Mecanismo de disparo básico. Este es el trigger que usan los osciloscopios analógicos para poder mantener fija la imágenes que se muestra en la pantalla. En nuestro osciloscopio no precisaremos de dicho trigger puesto que el software tendrá la inteligencia de decidir como mostrar desplegar en pantalla los datos recibidos por la placa.
- Mecanismo de disparo como detección de transitorios. Utilizado por los osciloscopios digitales (con memoria) para capturar eventos anómalos en una señal y desplegar la forma de la señal en el momento que estos ocurren. Esta tarea también será llevada a cabo por el software.
- Disparo externo. Este es el mecanismo de disparo que permite observar lo que pasa por una de las puntas del osciloscopio cuando llega un disparo (pulso, transitorio, etc) por la otra punta (de ahí el nombre disparo externo). Este mecanismo, sin embargo, es más difícil de implementar por software pues el trigger externo puede durar "mucho tiempo" en llegar, y no ser repetitivo.
Métodos de muestreo
Tiempo real
- Método ideal para 2fs < fm ( fs = frec. señal , fm = frec max del ADC )
- única forma de capturar transitorios
- interpolación:
- lineal: unir puntos con lineas
- senoidal - sin(x)/x - preferido para 3 fs < fm < 5fs
Este método de muestreo es el mas simple de todos y permite digitalizar señales no periódicas y transitorias.
Cada muestra y el tiempo en que fue tomada tiene una correspondencia directa con su equivalente en tiempo real.
A mayor tasa de muestreo en comparación al ancho de banda de la señal, se obtiene una mayor definición en el resultado.
Nyquist desarrolló un teorema que dice que para reconstruir una señal de frecuencia Fm, se debe muestrear a un índice mayor a 2Fm. Sin embargo, esto no se aplica tan directamente como parece. Esta teoría se aplica solamente a señales de ancho de banda limitado que no contienen ningún componente sobre la frecuencia Fm, y los bordes rápidos de las señales encontradas en circuitos digitales de alta velocidad pueden contener armónicos significativos sobre sus frecuencias fundamentales. Mas aún, cuando uno muestrea una señal, no lo hace por un tiempo infinito, sino que esta señal se ve acotada en el tiempo. Al recortar esta señal se le agregan componentes de frecuencia mas altas. He aquí entonces el problema de muestrear dichas señales: no se puede muestrear sólo al doble de la frecuencia Fm, sino que hay que hacerlo a una frecuencia mayor. Por lo tanto, no importa cuan rápido se muestree, nunca se podrá recomponer esta señal a la perfección.
Sin embargo, en la práctica se ha encontrado que muestreando a una velocidad cuatro veces mayor que la mayor componente de frecuencia de la señal, se puede obtener un resultado muy confiable y con bajo error.
Si se muestrea a una frecuencia menor a 4Fm pero mayor a 2Fm, obtendremos un resultado mas lejano al ideal, y cuanto mas nos acerquemos al limite de 2Fm, más errores contendrá nuestra reconstrucción. Así mismo, si pasamos por debajo del umbral de 2Fm para la frecuencia de muestreo, el
aliasing es inevitable.
- Ventajas:
- La única opción para una medida correcta de señales no periódicas.
- Desventajas:
- Ancho de banda relacionado directamente con la tasa de muestreo.
- Susceptible al aliasing a velocidades de muestreo lentas.
Tiempo equivalente
- única forma para 2fs > fm
- solo para señales periódicas
- la señal se va construyendo en barridos sucesivos
- 3 tipos de barridos:
- aleatorio repetitivo
- secuencial
- submuestreo
Muestreo aleatorio repetitivo
Este tipo de muestreo se utiliza para aumentar la frecuencia máxima de medicion de la señal de entrada.
El muestreo aleatorio repetitivo captura datos sobre la forma de onda adquiriendo puntos en más de una ocurrencia del
trigger. Esto significa que la forma de onda en sí misma debe ser repetitiva (periodica) y no un acontecimiento transitorio, puesto que la tasa de muestreo en estos casos es típicamente demasiado baja para señales transitivas de alta frecuencia.
En cada ocurrencia del disparador se adquieren algunos puntos de referencia, luego todos los puntos muestreados se juntan en un cuadro compuesto de la forma de onda. Cada punto es puesto en su lugar apropiado midiendo el tiempo transcurrido entre el
trigger y la propia muestra.
A medida que muestreamos mas ciclos, más muestras obtenemos, y luego son ubicadas en un mismo ciclo pero en la posicion correspondiente medida a partir del
trigger.
- Ventajas:
- Ofrece mayor ancho de banda que el muestreo en tiempo real.
- No es suceptible al aliasing en señales repetitivas.
- Desventajas:
- No es apto para mediciones de señales no periodicas y de alta velocidad.
Muestreo secuencial
Los capturadores digitales de gran ancho de banda tienden a utilizar el muestreo secuencial.
Este método captura una muestra por ciclo (o cada
x cantidad de ciclos) pero con un determinado tiempo muy exacto entre el disparador y el punto de captura.
Para este tipo de muestreo es necesario, al igual que en el caso anterior, una señal periódica.
Cada muestra es tomada pasado cierto intervalo de tiempo luego de disparado el
trigger. Para la siguiente captura, el intervalo de espera es incrementado, y por lo tanto dicha muestra va a ser tomada un instante de tiempo después en el ciclo que la muestra anterior.
Los puntos son tomados siempre en puntos diferentes del ciclo de la señal de entrada, sin importar en qué ciclo fue tomada la muestra. De este modo, al finalizar la captura de todas las muestras, cada una de ellas es posicionada en un único ciclo, pero en la posición que le corresponde a partir del tiempo transcurrido desde el
trigger.
- Ventajas:
- Ofrece el mayor ancho de banda disponible (hasta 50Ghz).
- Muy bajo ruido.
- puede utilizar un A/D lento y de alta presicion.
- Desventajas:
- No puede capturar eventos previos al trigger e incluso pasado un mínimo tiempo tras el.
- Susceptible al aliasing a velocidades de muestreo lentas.
- No puede medir transitorios.
Submuestreo
Se conoce que el teorema de Nyquist dice que la frecuencia de muestreo tiene que ser mayor al doble del ancho de banda de la señal a muestrear. Sin embargo muchos confunden
ancho de banda con
frecuencia mas alta. El error aquí es que una señal contenida en los 100Khz, puede tener un ancho de banda de 1Khz. De este modo, según el teorema de Nyquist bien aplicado, se podría muestrear dicha señal a una frecuencia mayor a 2Khz (la que es mucho menor a 200Khz). La imagen siguiente muestra gráficamente cómo se superponen los espectros de señales de gran ancho de banda muestreadas a una frecuencia menor a su ancho de banda.
Este método de explicación es conocido como el método
fanfold.
Ahora tomamos por ejemplo el caso antes mencionado, de una señal de ancho de banda acotado, y centrado en una frecuencia alta.
A su vez hacemos que pase por filtros para estar seguros de que evitamos el
aliasing, entonces tenemos un resultado fiable de la señal muestreada.
- Ventajas:
- Permite medir señales de alta frecuencia con conversores de baja frecuencia.
- Desventajas:
- La señal debe ser de ancho de banda acotado.
- Necesidad de filtrado anti-aliasing.
- No apto para medición de grandes anchos de banda.
- Carece de sentido en señales de banda base.
Análisis
La etapa de análisis, que en estos momentos se encuentra llegando a su fin, consistió básicamente de 4 sub-etapas:
- estudio del fundamento teórico
- planificación y división de las áreas de diseño del proyecto
- estudio sobre las alternativas disponibles en el mercado
- investigación de las distintas arquitecturas disponibles para implementar el osciloscopio.
Áreas de diseño
Las áreas de diseño que definimos son las siguientes:
| | Área de diseño | Tareas involucradas |
| 1 | Hardware-analógico | Adaptación y protección de la entrada (etapa de entrada) |
| 2 | Hardware-digital | Control de la placa, adquisición de los datos y comunicación con la PC |
| 3 | Software | Desarrollo del protocolo de comunicación y el software (driver) para controlar el osciloscopio |
A su vez cada una de ellas se divide en pequeñas sub-etapas de: estudio, diseño y realización. En otras palabras, cada área de diseño es como un pequeño proyecto en si misma. Y cada área tiene bien definido lo que debe recibir de su área anterior y lo que debe entregar a su área siguiente.
Las áreas en sí no son parte separadas e independientes sino que en muchos casos deben interactuar directamente entre si, por ejemplo, el procesador (área 2) debe ajustar el nivel de ganancia de la etapa de entrada (área 1) respondiendo a los ajustes que haya recibido desde el PC (área 3).
De todas ellas, sin duda la más importante (y la que es necesario definir primero) es la del Hardware-digital pues dicha decisión define la
arquitectura del sistema y de ella dependen en gran medida las otras dos.
Por lo tanto, la etapa de diseño comienza con esta tarea, y es aquí donde estamos hoy en día. Actualmente ya tenemos pronta una según revisión de los esquemáticos del Hardware-analógico. Todas estas cosas están disponibles en la página web del Proyecto (ver Links).
Arquitecturas disponibles
En nuestro análisis estudiamos 3 tipos diferentes de arquitecturas de diseño. Ellas fueron:
- usar un único integrado con conversor analógico-digital (ADC) y USB incluido
- usar un sistema de tipo linux embedded
- usar un PIC con ADCs y memoria externos
Arquitectura: chip único
La opción de utilizar un chip que ya tuviera integrado el ADC y el controlador USB resultó muy tentadora al principio pues simplificaba enormemente muchas otras decisiones de diseño.
Sin embargo, al profundizar el estudio nos dimos que la meta de los 20 MHz era inalcanzable utilizando esta arquitectura, puesto que los ADC que vienen incorporados en este tipo de chips ronda en los 500 Khz - 1 Mhz y, aun aplicando técnicas de submuestreo (y suponiéndolas exitosas) la frecuencia máxima que era posible muestrear caía muy lejos del mínimo requerido.
Ademas esta alternativa tenía la desventaja de la falta de flexibilidad, puesto que de haber escogido este modelo hubiéramos realizado un diseño completamente atado al integrado en cuestión y para nada extensible.
Por lo tanto, debidos a estas dos desventajas (velocidad de captura y portabilidad del diseño) decidimos descartar esta alternativa.
Arquitectura: linux embedded
Otra opción que investigamos muy a fondo es la posibilidad de utilizar una arquitectura del tipo linux embedded, en el cual el sistema consta básicamente de un PC, pero con menor potencia de procesamiento.
En éste área analizamos en particular el procesador ETRAX de la compañía Axis (ver Links). El procesador ETRAX es un procesador de 32 bits que trabaja a 100 MHz y está diseño para trabajar con el sistema operativo linux.
La gente de Axis pone a disposición una placa de desarrollo que es apropiada para una gran variedad de aplicaciones, entre ellas nuestro proyecto. La misma cuenta de:
- 2 puertos USB
- 1 puertos ethernet
- 2 puertos seriales
- 8 contactos secos
Y todo esto con la flexibilidad y sencillez de programar directamente en C, ya que la placa de desarrollo no es más que una PC corriendo linux.
Otra de las grandes ventajas de este enfoque es la de poder implementar un osciloscopio de red "standalone", es decir, que funcione independiente de cualquier PC. La interfaz por excelencia en dispositivos embebidos hoy en día web, y este caso no sería una excepción. Alguien con una Palm y acceso a la red del osciloscopio podría perfectamente manejarlo. La misma aplicación se puede extender para casos en los que el usuario no se encuentra físicamente en el mismo lugar que el osciloscopio.
Conexionado del ADC
Debido a la alta velocidad de trabajo del conversor analógico digital (40 Mhz) la única forma de conectar el ADC es usando DMA, de forma que los datos vayan a parar directamente a la memoria, sin requerir al procesador como intermediario. El ETRAX justamente viene con dos canales DMA externos (ademas de los típicos internos) que son ideales para conectar los dos ADC que va a tener nuestro osciloscopio.
Los canales de DMA externo del ETRAX pueden trabajar de dos formas diferentes: modo handshake y modo burst (ráfagas). Sin embargo, aun trabajando en modo ráfagas un ciclo completo de DMA dura no menos de 5 ciclos de reloj, por lo cual esto nos reduciría a frecuencia de muestreo a un máximo de 20 Mhz, restringiendo así en 10 MHz el ancho de banda de las señales a medir.
Por más información ver link de referencia de diseño del ETRAX.
Linux en tiempo real
Debido a las exigencias tan estrictas de tiempo uno de los requisitos para poder implementar el osciloscopio con el ETRAX es la utilización de un linux compilado para poder poder trabajar en tiempo real (característica no disponible en los linux estándar). Actualmente existen varias distribuciones de linux en tiempo real (real-time linux), entre ellas, las dos más conocidas son: RTLinux y RTAL. RTLinux nació como un proyecto de código abierto pero luego se hizo comercial, cerrando el código y la comunidad de software libre que lo impulsa. De esta, mucha gente que trabaja en RTLinux se fue a trabajar en otro proyecto muy similar ya existente llamado RTAI el cual, entre la permanencia del código como libre es uno de sus principios básicos. Hoy en día RTAI es la distribución de real-time linux con mas movimiento, aunque RTLinux sigue siendo la preferencia para proyectos crítico de medicina y aeronáutica.
Afortunadamente para nosotros, un par de señores ya portó el RTAI para el ETRAX como tesis de maestría (ver Links) y por lo tanto lo tenemos disponible para usar en el proyecto.
Prestaciones adicionales de un osciloscopio IP
La interfaz web podría tener un menú de
captura fuera de linea, es decir, una página donde se llena el formulario con los parámetros de la captura y luego se envía la solicitud de captura, devolviendo el osciloscopio inmediatamente los datos medidos, ya sea en forma de un imagen o una tabla de datos en formato CSV (para abrir en Excel, por ejemplo).
También dentro de la interfaz web se podría proveer una
aplicación Java para controlar el osciloscopio, evitando de esta forma tener que instalar un software en todas las PCs donde se lo quiera usar: bastaría solo con tener Java instalado, lo cual es algo muy común en las PCs de hoy en día y además le agregaría la ventaja de ser multiplataforma (correría en Windows, Linux y Mac).
Otra idea interesante disponible en el caso de utilizar el procesador ETRAX es la de tener la posibilidad de conectarle al osciloscopio un disco duro USB (tipo pendrive) y realizar captura de datos allí para luego analizarlos posteriormente en una PC.
Otras ventajas
Otras ventajas respecto a la alternativa linux embedded son las siguientes:
- es algo innovador (no hemos encontrado ningún proyecto similar existente)
- deberíamos tener menos sorpresas armando el sistema con el ETRAX puesto que hay menos lógica de hardware implementada por nosotros y la placa de desarrollo ya viene pensada para trabajar a altas frecuencias
- la sencillez y flexibilidad de programación que brinda el poder programar C en un entorno linux
Desventajas
Sin embargo, si bien esta alternativa es muy tentadora, el costo de la placa de desarrollo es un poco elevado (U$S 300) lo cual nos aleja un poco de los límites estipulados en los objetivos y los del propio presupuesto del proyecto.
Arquitectura: PIC + ADC + memoria
Por último, la tercera arquitectura analizada es la de utilizar un PIC que se encargue de controlar la placa e implementar la lógica, y utilizar otros componentes para la captura de datos.
El PIC que seleccionamos es el PIC18F4550 puesto que viene con un controlador USB incorporado. De hecho, este PIC también contiene un ADC pero es de muy baja velocidad. Por lo tanto, se deberá usar ADCs externos (cada uno con su memoria) para realizar las capturas a alta velocidad. Para poder manejar las memorias se utilizaran contadores binarios en cascada.
El PIC funcionará a 48 Mhz, pues dicha frecuencia es un requisito para poder transmitir por USB en modo High Speed (USB 1.1). Pero además, esa frecuencia es adecuada para alimentar al ADC y la circuitería de captura puesto que está por arriba de los 40 Mhz requeridos para capturar señales de 20 Mhz.
Software
El software del osciloscopio es el programa que corre en la PC y se encarga de controlar el osciloscopio y desplegar en pantalla los datos capturados por la placa.
El desarrollo de una aplicación gráfica, tanto para linux como para Windows, es una proceso bastante complejo y está claramente fuera del contexto de este proyecto. Es por ello que hemos decidido no dedicar tiempo del mismo al desarrollo a esta tarea, sino aprovechar alguna aplicación ya existe con código libre e implementarle un driver de nuestro osciloscopio. Una de las aplicaciones más completas en este área es el xoscope (ver Link en las referencias).
Por consiguiente, nuestro trabajo del lado de la PC será el de la implementación de un driver de comunicación y control para el xoscope (u otra aplicación similar).
Diseño
Es la etapa en la cual estamos actualmente, si bien aun en sus comienzos.
Los próximos pasos a seguir son:
- redondear el diseño del hardware-digital
- diseñar protocolo de comunicación PC-placa
- escribir programa sencillo de comunicación con el PIC como prueba de concepto
- diseñar el hardware analógico (adaptación y protección de la entrada)
Esta configuración, utilizando dos ADCs (uno por cada canal) es la única que permite efectivamente capturar en tiempo real a velocidades de 20 Mhz. Tantos los ADC, como los contadores y las memorias deben ser capaces de trabajar a 48 Mhz, que es la velocidad a la cual trabaja el reloj del PIC.
El PIC seleccionado fue el PIC18F4550 que viene con un controlador USB incorporado, y trabaja a 48 Mhz lo cual permite utilizar la misma señal de reloj para los componentes de adquisición de datos (ADCs, memorias, contadores).
El esquema de funcionamiento es básicamente el siguiente.
- el PIC recibe ordenes de la PC y controla absolutamente todo el comportamiento de la placa
- el PIC está conectado a un par de contadores de alta frecuencias, los cuales proveen el mecanismo para direccionamiento de memoria en la captura de datos a alta frecuencia. Dado que el PIC sería incapaz de capturar datos a más de 1 Mhz de frecuencia, el uso de contadores de alta frecuencia para controlar la memoria es un requisito
- los contadores (comandados por el PIC) proveen