Video-tutorial de la semana

martes, 31 de agosto de 2010

Monitoreo de Ritmo Cardiaco usando la tarjeta de sonido de una PC -- Parte III

Esta es la tercera entrega del monitoreo de señales ECG, trata del desarrollo del software.

Desarrollo del Software

Esta parte fue bastante exhaustiva, puesto que se desconocía completamente como manipular la tarjeta de sonido de una computadora y se requería de algún software o librería que me permitiera por ejemplo obtener los valores de la tarjeta de sonido, analizarlos para después graficarlos, algo que era nuevo para nosotros.

Se inició con búsquedas en la red, usando como lenguaje Java, pensando en alguna clase o paquete de clases para Java, pero no se obtuvo gran cosa por este lado, después pensamos en Microsoft y su plataforma de desarrollo .Net, y se dio en el clavo, se logro encontrar una serie de librerías especialmente usadas para la manipulación del sonido desde la tarjeta de audio de cualquier PC, la librería corre sobre el .Net de Microsoft, es llamada AudioLab de la empresa Mitov Software, se puede descargar desde la página de Mitov.



AudioLab

AudioLab es un conjunto de componentes para el procesamiento de audio. La biblioteca permite la captura, la reproducción, mezcla, complejas manipulaciones de audio, análisis y visualización, con prácticamente cero líneas de código del programa.

La librería estaba perfecta para nuestros propósitos, así que la descargamos desde la página de Mitov, y se inicio el estudio para aplicarla en la adquisición de datos desde la tarjeta de sonido.

La librería está diseñada para que se ejecute en varios entornos de programación entre ellos como ya se mencionó el .Net de Microsot, después de instalar la librería AudioLab, se procedió a descargar alguna herramienta de Microsoft, la elección fue el Visual C# 2008 Express Edition.

Visual C# 2008 Express Edition.

Microsoft Visual C# 2008 es un lenguaje de programación diseñado para crear una amplia gama de aplicaciones que se ejecutan en .NET Framework de Microsoft, C# es simple, eficaz, con seguridad de tipos y orientado a objetos, C# permite desarrollar aplicaciones rápidamente por eso fue el elegido.

Para descargar el Visual C# solo visita el siguiente enlace y desde ahí se puede descargar:


Integración del AudioLab en el Visual C# 2008 Express Edition
El AudiLab se debe integrar al C# para poder usarlo, esto se hace fácilmente siguiendo las instrucciones que nos da Mitov y que viene en la documentación de la librería, la siguiente figura muestra como queda la librería AudioLab ya integrada en C#.

En este punto, basta con arrastrar y soltar los componentes de AudioLab en el Form de C#, aquí radica la facilidad de AudioLab, pero ahora regresemos al proyecto.

Diseño del Software
El diseño del software para el proyecto se dividió en los “Forms” qué se muestran en la tabla siguiente


 Formulario                       Descripción                           
Form de fondo           Formulario de presentación del programa
Form menú               Formulario que presenta el menú con tres opciones
Form registro           Formulario de registro del paciente bajo prueba
Form monitoreo          Formulario de monitoreo del paciente


En la siguiente sección se muestra una imágen de cada uno de los formularios.

Form de Fondo
Este form es la presentación del programa, la form aparece como fondo al inicio, no tiene código de programación solo contiene elementos Picturebox para las imágenes que se ven en ella.
Form Menú Principal
La figura muestra el form Menu o principal, esta contiene tres botones para las tres opciones del menú principal: registro (del paciente), monitoreo (de la señal ECG) y salir.


Al iniciar solo tiene dos funciones habilitadas, el registro y la opción de salir. Al dar clic en el otón de Registro el software abre un nuevo formulario para registrar los datos del paciente, esto con la finalidad de registrar el paciente para poder obtener sobre todo la edad, es la que interesa, recuerde que a diferentes edades la señal ECG es más rápida o más lenta. La imágen siguiente muestra este formulario.
Después de registrar al paciente se procede al monitoreo, dando clic en el botón de monitoreo del menú principal al hacerlo, se abre una form como la siguiente



Ahí se grafican en tiempo real los datos de la señal ECG y hace un análisis para saber si el paciente está sano.

Justo en esta form se agregaron los componenetes de AudioLab, se usaron los siguientes:

• AudioIn .- Para capturar la señal ECG.

• AudiotoReal – Para obtener los valores a graficar se usa junto con el componente GenericReal.

• lowPass –para aplicar un filtro pasabajas por software.

• GenericReal – Junto con el AudiotoReal generan los eventos para la captura de datos que se van a gráficar.

• AudioOut – Para pruebas al programa.

Otro componente que se uso también de Mitov fue el Scope que sirve para graficar, pero está en otra librería no en AudioLab, la figura siguiente muestra los componentes usados de AudioLab dentro de C#


Bueno eso es todo por lo pronto, de esta tercera entrega, en la siguiente se mostrarán algunos resultados del software y hardware.
Clic AQUI para leer más...

miércoles, 25 de agosto de 2010

Monitoreo de Ritmo Cardiaco usando la tarjeta de sonido de una PC -- Parte II

Hoy se va a mostrar la segunda parte del proyecto que gráfica las señales ECG en la computadora, la parte que se muestra es la del desarrollo del hardware.


Desarrollo del hardware

La figura siguiente muestra el diagrama esquemático del sistema desarrollado:

En la figura se notan claramente las tres grandes partes del sistema, el acondicionamiento de señal, el filtro pasa-bajas y la computadora. Enseguida se muestran más detalles técnicos del hardware.

Acondicionamiento de la señal

La adquisición y acondicionamiento de la señal fue realizada por dos circuitos principales:

• Amplificador AD620A
• Amplificador OP97


Enseguida se detallan cada uno de ellos.

Amplificador AD620

El amplificador de instrumentación AD620, es el encargado de la adquisición y amplificación de las señales del corazón, el circuito junto con las resistencias asociadas a él son recomendadas por el fabricante en su hoja de datos, por lo que no se requirió calculo alguno para obtener los valores, pues ¿por qué habríamos de inventar de nuevo la rueda?

El AD620 dispone de 8 terminales y viene en empaquetado tipo DIP, las características generales de este circuito se muestran enseguida:

• La ganancia de voltaje es de 1 a 10,000.
• La ganancia se coloca utilizando una sola resistencia.
• Opera con voltajes BIPOLARES de +- 2.3 a +- 18 volts.
• Disponible en empaquetado de 8 pines.
• Consumo de 1.3 mA.
• El desempeño en DC es excelente ya que solo tiene un máximo de 50 uV de offset.
• Desvío máximo de 0.6 uV/°C

En la figura siguiente muestra las terminales que tiene el amplificador



La descripción de cada terminal es mostrada en la siguiente tabla

# de pin  Nombre        Descripción                         
   1          RG       Conexión de la resistencia de ganancia
   2       In(-)    Etrada inversora
   3       In(+)    Etrada no inversora
   4       Vss      Amentación negativa
   5       Ref      Referencia
   6       Out      Salida
   7       Vcc      Aimentación positiva
   8       RG       Cnexión de resistencia de ganancia

Amplificador de Precisión OP97

Este circuito es el complemento del AD620, el circuito se coloca de forma invertida como se observa en el diagrama esquemático, con el objetivo de cancelar la interferencia que se esté generando por los electrodos, la figura 3.6 muestra el diagrama de terminales de este chip.
La descripción de cada terminal es mostrada en la siguiente tabla

# de pin  Nombre        Descripción     
   1       NULL        
   2       In(-)        Entrada inversora
   3       In(+)        Entrada no inversora
   4       Vss          Alimentación negativa
   5       OVER COMP    Referencia
   6       Out          Salida
   7       Vcc          Alimentación positiva
   8       NULL          

Filtro pasa-bajas


El filtro pasa-bajas fue realizado con un amplificador de propósito general el LM741

Amplificador LM741.

La serie LM741 son de uso general amplificadores operacionales está dirigido a una amplia gama de aplicaciones analógicas. La figura siguiente muestra el diagrama de conexión para el encapsulado típico de un amplificador operacional.
La descripción de cada terminal es mostrada en la siguiente tabla:


# de pin  Nombre            Descripción               
   1      OFFSET       Anulamiento sobrecompensación
   2      In(-)        Entrada inversora
   3      In(+)        Entrada no inversora
   4      Vss          Alimentación negativa
   5      OFFSET       Anulamiento sobrecompensación
   6      Out          Salida
   7      Vcc          Alimentación positiva
   8      NC           No conectar      


En este proyecto el LM741 se configura como filtro activo pasa bajas, el filtro se hace con el circuito RC y el operacional se utiliza como amplificador de ganancia unitaria como se observo en el diagrama esquemático del sistema, en este caso los valores de las resistencias, si fueron calculadas para una frecuencia de corte de aproximadamente 60 Hz.

Tarjeta de sonido de la computadora

La señal que se genera en la salida del filtro pasa bajas se inyecta a la tarjeta de sonido de la PC, usando la entrada del micrófono, a continuación se muestran las características generales de una tarjeta de sonido de una PC, la figura siguiente muestra el diagrama bloques de la tarjeta de sonido.

Como se puede observar la tarjeta de sonido tiene incluido un convertidor analógico digital (ADC) entre muchos otros componentes que no se describirán aquí.

El ADC es el encargado de recibir la señal ECG por medio de la entrada del micrófono, la adquisición de esta señal, por medio de la tarjeta, es realizada por el software que se desarrollo, en otras palabras aquí es donde entra el software creado, esto con la finalidad de manipular la tarjeta de sonido, el software se describe después, en la próxima entrada.

Clic AQUI para leer más...

viernes, 20 de agosto de 2010

Monitoreo de Ritmo Cardiaco usando la tarjeta de sonido de una PC -- Parte I

Hoy se va a mostrar el reporte del último de los proyectos realizados en el grupo de sistemas digitales, este fue realizado por el alumno Edgar Eduardo Franco Arguijo.

Edgar Eduardo le ha dado grandes satisfacciones al ITESI ya que ha ganado en varios concursos a nivel estatal, pero esa es otra historia, por lo pronto veamos de que se trato es te proyecto.

Resumen del proyecto
El sistema desarrollado permite captar las señales cardiacas para después graficarlas y hacer un análisis de la señal mostrando algunos indicadores más relevantes, por ejemplo, el sistema indica cuando una persona puede tener riesgos en base a los latidos por minuto del corazón.

En cuanto al hardware del sistema desarrollado, se compone por dos elementos un sistema electrónico capaz de captar las señales del corazón y una computadora que se uso para la graficación y análisis de las señales cardiacas.

Cabe mencionar que el proyecto realiza la captura de la señal haciendo uso de la tarjeta de sonido que todas las computadoras tienen, algo innovador al menos aquí en el ITESI puesto que, este, es el primer proyecto que hace uso de la tarjeta de sonido de una computadora como sistema de adquisición de datos.

Diagrama a bloques del sistema desarrollado
El diagrama a bloque del sistema que se desarrollo se muestra en la figura siguiente:

Una rápida descripción de lo que hace cada bloque es mostrada enseguida:

1. La detección de la señal de del corazón es obtenida por medio de tres electrodos.
2. La señal es trasportada por los cables con punta de broche.
3. La señal es recibida por el bloque de amplificación donde los amplificadores realizan una diferencia de potencial y ana amplificación para obtener la señal del corazón.
4. Después la señal es filtrada para eliminar el ruido indeseado.
5. Finalmente, la señal ingresa a la computadora por la tarjeta de sonido, (la entrada del micrófono) .
Enseguida se muestran más detalles de cada uno de los bloques.

Electrodos para ECG tipo broche

Los electrodos tipo broche se pegan al paciente, la finalidad de los parches es obvia captar las señales eléctricas del corazón. Electrodos para ECG tipo broche utilizados en el sistema son mostrados en la figura

Cables para electrodos ECG.
Los cables para ECG conducen los potenciales captados por los electrodos hacia la etapa de acondicionamiento de señal, los cables con punta de broche los llevara el paciente por debajo de su ropa conduciendo las señales del corazón a la etapa de acondicionamiento de la señal, los cables usados se muestran en la figura:


Amplificador de instrumentación.
Los amplificadores de instrumentación realizan una diferencia de potencial percibida en sus terminales de entrada, proveniente de los electrodos que porta la persona, y la multiplica por un factor de amplificación. El amplificador usado es el AD620 de National Instrument, es un amplificador de instrumentación de alta precisión que sólo requiere una resistencia externa para establecer las ganancias de 1 a 1000. El amplificador usado es mostrado en la figura siguiente.


2.2.3 Filtro Pasa-Bajas
El filtro se utiliza para limpiar la señal que sale con ruido de la etapa de acondicionamiento de señal con el propósito de eliminar el ruido indeseado que no es propio de la señal del corazón y que aparte dificulta el procesamiento de la señal pudiendo diagnosticar erróneamente.

Para realizar el filtro se utilizo un simple amplificador operacional LM741 cuya imagen es mostrada en la figura
2.2.4 Tarjeta de sonido de la computadora
La tarjeta de sonido permite la entrada de la señal analógica a la computadora, la señal es recibida por la entrada del micrófono. La señal recibida se transforma a su equivalente digital en la misma tarjeta de sonido. De esta forma se puede manipular la señal por medio del software programado en la PC.

Esa es la primera parte del reporte, después se mostrará con detalle el diseño del hardware y software del sistema desarrollado.
Clic AQUI para leer más...

lunes, 16 de agosto de 2010

Ejemplo #1 (Arduino) Programación del Arduino

Hoy se muestra un video tutorial del ejemplo más sencillo que puede haber para la plataforma Arduino, aquí no se va a explicar que es y las ventajas que tiene esta plataforma por sobre otras, ya existe muchísima información de ello, cientos, miles de páginas hablan del Arduino, basta colocar en Google la palabra Arduino y encuentra miles de páginas de Arduino, no se va a repetir la teoría, en este blog se van a mostrar los ejercicios que se hagan con esta plataforma, los ejemplos prácticos, los programas, muchos de ellos se mostrarán como video-tutoriales, el objetivo es que el lector aprenda a programar en el lenguaje de Arduino.

Agrego algunos links de página oficial de Arduino en ingles, para que el lector revise la teoría:


Aquí está en español:


Y solo se pondrá un link más el de la famosa WiKipedia para el Arduino:


Arduino Duemilanove

La tarjeta en la que se han probado los ejercicios es la tarjeta Arduino Duemilanove, la cual se muestra en la siguiente imagen:
En los enlaces anteriores se encuentra mucha de la documentación para esta tarjeta.

Software para programar el Arduino

Para programar Arduino necesito el software donde voy a editar, compilar y programar, este se puede bajar de forma gratuita en el enlace siguiente:


Ahí eliges la versión del sistema operativo y listo. El archivo esta comprimido, simplemente se descomprime y se guarda en algún lado de tu PC, no se requiere instalar nada de software, la carpeta contiene todo listo para ejecutar el programa.

Ejemplo #1

El ejemplo que se muestra es el de simplemente encender y apagar un LED cada segundo.

Conexión a la tarjeta

Lo primero que se debe hacer es conectar el LED a la tarjeta, es un solo LED el que se desea encender y apagar, se conecta por facilidad a la terminal 13 del Arduino, esto porque al lado está la terminal de tierra, la conexión queda como se observa en la imagen.



Programa

Las instrucciones de Arduino, que hacen lo que se pide en el ejercicio están ampliamente comentadas en la página de Arduino, aquí les dejo el link



Volver a explicarlas sería repetir lo que ahí dice, simplemente se muestra el video-tutorial donde se observa la edición, compilación y programación del ejemplo #1.



Nota: Este ejemplo ya viene en el software de Arduino simplemente se abre el ejemplo llamado “blink”, esto se hace desde:

file > Examples > Digital > Blink

En el video no se hizo así porque este video fue parte de un taller de Arduino que se impartió en el ITESI y se requería ingresar las instrucciones línea por línea para fines didácticos.
Clic AQUI para leer más...

viernes, 13 de agosto de 2010

Ejemplo #2 (VHDL-FPGA) Programación de la tarjeta DE2 de Altera

Siguiendo con la serie de video-tutoriales, de lógica programable, se presenta ahora como programar la tarjeta DE2 de la compañía Altera usando el programa realizado en el ejemplo #1 el de la compuerta XOR que se edito y simulo en el software Active-HDL.

La tarjeta DE2 de Altera
La figura siguiente muestra los componentes de la tarjeta DE2

Como corazón de la tarjeta se usa un FPGA de la familia Cyclone II de Altera, el cual se puede observar fácilmente en la figura anterior, tiene muchos componentes esta tarjeta, poco a lo largo del blog se verá como programar algunos componentes, en este ejemplo se usa solamente un LED y dos Switch.


Programación de un FPGA

Recuerde el flujo de diseño que yo uso para programar el FPGA:

   1. Editar, compilar y simular usando el software Active-HDL.
   2. Programar el FPGA de Altera, usando el software Quartus II (obviamente también de la empresa Altera).
   3. Probar el funcionamiento de la práctica.

En la entrada anterior de este blog se mostró en el Ejemplo #1, el paso 1 del flujo de diseño, se uso el Active-HDL para editar compilar y simular un programa en VHDL, el programa era el de una simple compuerta XOR, ahora se muestra como se programa ese ejemplo.

Programar la tarjeta DE2 usando el Software Quartus II de Altera

Ahora se muestra el paso #2 del flujo de diseño, programar el FPGA.

Primero se obtiene el software Quartus II de la compañía Altera que nos permite programar sus FPGAs, se usa la versión Web Edition en su versión , totalmente gratuita y sin necesidad de licencia para su uso, se puede descargar del siguiente enlace:


Hay que tener paciencia el software pesa más de 2 gigas, de hecho yo lo baje, lo instale y por alguna razón no lo pude ejecutar en mi máquina, así que tuve que bajar la versión 9.2 con el service pack 2, no hay un enlace directo o al menos no lo encontre, pero la página de altera trae la opció para buscar, justo ahi se puede buscar el enlace para bajar el Quartus II 9.1

Antes de iniciar recuerde que el programa en VHDL ya esta realizado, se hizo en el Active-HDL, lo que se necesita es conocer la ruta donde esta guardado para después seleccionarlo en el Quartus II, la imagen siguiente muestra la ruta exacta donde Active-HDL almaceno el archivo fuente de VHDL para la compuerta XOR.


En la figura se observa la ruta, por otro lado, la tarjeta DE2 requiere la primera vez que se conecta los controladores, afortunadamente estos ya vienen en el Quartus así que automáticamente se instalan.

Finalmente se requiera conocer las conexiones de la tarjeta DE2, esto se puede ver fácilmente en el manual de usario de la tarjeta DE2 dando clic en el siguiente enlace la puedes bajar:


En el documento se observa que terminal del FPGA se va a usar para nuestro diseño, recuerde el diseño es una compuerta XOR, que tiene dos entradas (A y B) y una salida (X), las dos entradas se agregaran a switch y la salida a un LED, la figura siguiente muestra donde están ubicados los switches en la tarjeta y el LED

Ya que se identificaron los switch y leds se procede a ver el manual de usuario de la DE2 para saber que terminal del FPGA está conectado a esos componentes, para los switch son las terminales que se muestran en la imagen siguiente:


La imagen siguiente muestra las terminales del FPGA para el LED que se va a usar:


Con esto ahora si se tiene todo para programar el FPGA de la tarjeta DE2, el siguiente video tutorial muestra como se programa la DE2 usando el Quartus II.


Clic AQUI para leer más...

martes, 3 de agosto de 2010

VHDL-Ejemplo #1 Como editar, compilar y simular usando el software Active-HDL

Se presenta en este post el primer video tutorial de una serie de videos que estoy preparando sobre lógica programable, específicamente de VHDL y programación de CPLDs y FPGAs.

El software Active-HDL es usado en varias materias de la especialidad de sistemas digitales de la carrera de ingeniería electrónica del Instituto Tecnológico Superior de Irapuato, se usa para editar, compilar y simular los programas creados en el lenguaje de descripción de hardware llamado VHDL, puedes ver más detalles de lo que es el VHD, CPLDs y FPGAs desde la famosa Wikipedia dando clic en los enlaces de arriba.

Este es el flujo de diseño que se usa por nosotros para la programación de los dispositivos lógicos programables:

Paso 1: Usar el software Active-HDL para crear el programa en el lenguaje VHDL.

Paso 2: Se elige una de dos variantes:

        • Usar el software Xilinx ISE para programar CPLDs o FPGAs de la compañía Xilinx.
        • Usar el software Quartus II para programar FPGAs de la compañía Altera.

Paso 3: Programar el FPGA y se prueba físicamente para ver si hace lo que se pidió.

Eso hacemos aquí en el Instituto, nosotros no nos consideramos expertos en esta área aquí solo se muestra lo que hacemos, si a alguien le sirve excelente para nosotros.

Active-HDL

Este software es sin duda uno de los mejores programas, como ya se mencionó, para editar, compilar y simular los programas en VHDL, el software es diseñado por la compañía estadounidense ALDEC cuya dirección electrónica es la siguiente:

Afortunadamente para nosotros Aldec tiene un programa universitrio y nos ofrece una versión estudiantil 100% funcional totalmente gratuita y que puede ser bajada desde:

 
Solo hay que registrarse para obtenerlo, despues se registra el Active-HDL para obtener una licencia valida para usar el software por todo un año.

Ejemplo #1 Compuerta Ex-Or


Se muestra el uso del Active-HDL realizando un programa en VHDL que describa el funcionamiento de una compuerta or-exclsiva (XOR), la figura siguiente muestra el símbolo y tabla de verdad de esta compuerta para recordarla:







Un programa en VHDL consta de tres partes principales:

          • Librerias
          • Entidad
          • Arquitectura

Dando clic aquí puedes ver detalles del VHDL de su sintaxis desde la wikipedia, el código VHDL para resolver el programa de la ExOR qué es la que nos interesa, se muestra en el siguiente listado, se incluyen comentario para que se entienda mejor.


-- Declaración de librerías
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

-- Declaración de la entidad ---
entity CompuertaXOR is
Port (
  A,B : in std_logic; -- Se declaran las entradas de la compuerta
  F : out std_logic -- Se declara la salida

);
end CompuertaXOR;
-- Declaración de la arquitectura ---
architecture Compuerta of CompuertaXOR is
begin
  F <= A XOR B; -- código para la compuerta XOR
end simple;

Active-HDL crea automáticamente mucho del código anterior usando un asistente (wizard del Active-HDL), prácticamente para este ejemplo, solo se teclea la ecuación, como se verá en el siguiente video, se muestra también como se simula un programa en VHDL.
Clic AQUI para leer más...