jueves, 9 de junio de 2011

Tutorial Introductorio de LabVIEW – Parte 2

Tutorial Introductorio de LabVIEW – Parte 1

Continuando con este tutorial introductorio a LabVIEW recordemos que la semana pasada aprendimos las bases de este lenguaje de programación gráfica, la interfaz de usuario, y los elementos que conforman un VI (Instrumento Virtual). Si no has leído la primera parte da clic aquí para revisarla.

En esta segunda parte vamos a construir una pequeña aplicación, algo muy básico, para aprender el funcionamiento de LabVIEW. Asi que simplemente vamos a hacer la suma de dos números; las variables que tendremos serán:

  • Entradas: A y B
  • Salida: C
  • Operación a realizar: A+B=C
Para esto vamos vamos construir una pequeña interfaz de usuario donde tendremos dos controles númericos (para las entradas A y B) y un indicador numérico para la salida C.

Creamos un nuevo VI en LabVIEW, damos clic derecho en el Panel Frontal para abrir la Paleta de Controles. Del grupo Express seleccionamos Numeric Controls y colocamos dos controles numéricos:

labview,multisim,tutorial labview

labview,multisim,tutorial labview

Damos doble clic sobre la etiqueta Numeric y la cambiamos a A. Luego damos clic en el área de trabajo para aceptar el cambio. Repetimos esto y renombramos Numeric 2 a B, tal como se indica:

labview,multisim,tutorial labview


Ya tenemos las dos variables de entrada, ahora coloquemos un indicador numérico donde se visualizará el resultado. Nuevamente clic derecho en el espacio de trabajo para abrir la Paleta de Controles, en grupo Express»Numeric Indicators seleccionamos y colocamos un indicador numérico:

labview,multisim,tutorial labview

Y renombramos este indicador a C. Listo, ya tenemos la interfaz de usuario:

labview,multisim,tutorial labview

De la figura anterior vemos la diferencia entre los controles A y B y el indicador C. Los controles tienen unos pequeños triángulos con los cuales podemos interactuar para aumentar o disminuir el valor.

Ahora viene la parte de la programación, así que vamos al Diagrama de Bloques:

labview,multisim,tutorial labview

Como ya sabemos, cada control e indicador del Panel Frontal tiene un bloque correspondiente en el Diagrama de Bloques. También podemos ver que estos controles son de color naranja, esto indica que el tipo de dato es doble (de hecho el bloque tiene las letras DBL).

Para programar la suma, ¿qué necesitamos? Por supuesto, la función de suma. Clic derecho en el área del Diagrama de Bloques para abrir la Paleta de Funciones, navegamos a Programming»Numeric y tomamos la función de suma (Add):

labview,multisim,tutorial labview

Ahora bien, si colocamos el puntero del mouse a la función suma (o a cualquier otro bloque) notaremos que aparecen entras y/o salidas:

labview,multisim,tutorial labview

Y si acercamos el puntero del mouse a una entrada o salida su forma cambia, es como un pequeño carrete de alambre, esta es la herramienta de alambrado y con ella vamos a conectar entras y salidas de modo que el diagrama tenga un flujo de datos:

labview,multisim,tutorial labview

¡Listo! Esa es toda la programación. Es por eso que LabVIEW es un ambiente de programación gráfica fácil de usar.

Guardamos nuestro VI (menú File»Save). Para ejecutar el programa vamos al Panel Frontal, ingresamos números a los controles A y B, en la barra de herramientas, abajo del menú Edit hay un flecha de ejecución, damos clic en ella para correr el programa una vez:

labview,multisim,tutorial labview

Asi es como funciona el VI:

En el Diagrama de Bloques los controles A y B alimentan las entradas de la función de suma, y esta a su vez hace el cálculo y regresa un valor en su terminal de salida, y dicho valor se manda al indicador C.

Este es un VI muy sencillo, pero imagínense tener que hacer esto en un lenguaje de texto como C, ¿cuánto tiempo ser llevarían en realizarlo? ¿Cuántas líneas de código habría que capturar?

Saludos,

Fernando

jueves, 2 de junio de 2011

Tutorial Introductorio de LabVIEW – Parte 1

Basado en comentarios y sugerencias que he recibido por parte de ustedes, en esta ocasión decidí escribir una tutorial introductorio de LabVIEW, un software de National Instruments. Voy a dividir el tutorial en varias partes para poder ir explicando las distintas características con cierto nivel de detalle.

LabVIEW es una herramienta bastante poderosa para ingenieros y científicos y además se puede integrar con Multisim para diseño y validación de circuitos.

LabVIEW es un ambiente de programación, tal como C, Visual Basic, etc. La gran diferencia radica en que LabVIEW es totalmente gráfico, ¿qué quiere decir esto? Que no necesitamos aprender la síntaxis de un lenguaje de texto, simplemente tenermos que interconectar bloques que van formando la lógica de la programación. Además, LabVIEW cuenta con muchas librerías para adquisición, procesamiento y análisis de datos.

Se puede descargar una versión de evaluación de LabVIEW en ni.com/trylabview. Por cierto, por el momento la interfaz de LabVIEW solo está disponible en el idioma inglés.

Los programas en LabVIEW son llamados VIs (Instrumentos Virtuales), y constan de dos partes: un Panel Frontal (donde armamos la interfaz de usuario) y un Diagrama de Bloques (donde diseñamos la programación). Una vez que tengamos LabVIEW instalado lo abrimos y en la pantalla inicial seleccionamos el menú File»New VI. LabVIEW creará dos pantallas, la del lado izquierdo es al Panel Frontal, y la del lado derecho el Diagrama de Bloques:

Photobucket

Al dar clic derecho sobre el Panel Frontal se abre la Paleta de Controles. En esta paleta podemos encontrar botones, perillas, indicadores, etc.

Photobucket

Es importante hacer notar que un control es una entrada de datos, y un indicador es una salida. Aqui vemos unos ejemplos:

Photobucket

En la parte superior tenemos un control numérico y uno booleano (botón), mientras que en la inferior vemos un indicador numérico y uno booleano (un LED). Vemos también que cada control e indicador tiene una etiqueta única, dando doble clic sobre la etiqueta la podemos modificar.

Date un tiempo para explorar la Paleta de Controles de LabVIEW, encontrarás una amplia variedad de controles e indicadores, con ellos puedes armar interfaces de usuarios muy amigables y personalizadas, aqui hay más ejemplos:

Photobucket

¿Y cómo programamos la aplicación? Regresando a nuestro ejemplo original con los 2 controles y los 2 indicadores vayamos a la ventana Diagrama de Bloques, ahí podemos ver que automáticamente LabVIEW colocó 4 bloques, cada uno corresponde a los objetos que previamente colocamos en el Panel Frontal:

Photobucket
En resumen, cada control e indicador colocado en el Panel Frontal tiene un bloque correspondiente en el Diagrama de Bloques. Y precisamente estos bloques son los que utilizamos para realizar la programación.

Photobucket

Ahora demos clic derecho en el Diagrama de Bloques, esto abre la Paleta de Funciones:

Photobucket

En la Paleta de Funciones encontramos todas las librerías necesarias para realizar la programación de la aplicación. Por ejemplo, en la categoría Programming tenemos funciones numéricas, de comparación, arreglos, etc.

Ejemplos:

Photobucket


Como es de esperarse, las funciones tienen uno o más entradas y salidas.

Además de las funciones básicas de programación, LabVIEW cuenta con librerías de funciones para usos más avanzados, algunos ejemplos son:

  • Matemáticas: Ajuste de curvas, geometría, interpolación, álgebra lineal , y más.
  • Procesamiento de Señales: Filtros, FFTs, análisis espectral, y más.
  • Adquisición de Datos: Librerías para adquirir datos de instrumentos (vía GPIB), y dispositivos de National Instruments (PCI, USB, PXI).
  • Comunicación de Datos: Serial, TCP/IP, UDP, etc.

La lista es bastante larga, pero puedo decirles que hay funciones para todo tipo de aplicaciones.

Esto da por finalizado la parte 1 de este tutorial introductorio de LabVIEW, como siempre preguntas y comentarios son bienvenidos. Mantente sintonizado de la siguiente parte donde armaremos un programa sencillo en LabVIEW.

Saludos!

Fernando

martes, 19 de abril de 2011

Utilizando Buses de Datos en Multisim

Hola a todos, ya tengo algunas semanas sin escribir al blog pero siempre estoy al pendiente de sus preguntas y comentarios. El día de hoy les mostraré cómo utilizar buses en Multisim.

Cuando tenemos componentes de muchas terminales y que contienen líneas de datos, por ejemplo, una memoria, un microprocesador, etc, podemos hacer uso de los buses en Multisim para darle una mejor presentación a nuestro circuito. Asi evitamos llenar de alambres el esquemático y le damos una mejor presentación y organización.

Manos a la obra, aprendamos a crear buses de datos en Multisim.

Dados los siguientes componentes, supongamos que necesitamos conectar las terminales RB1-RB7 de U1 a las terminales A0-A6 del componente U2:

multisim,bus,tutorial multisim
Podríamos simplemente ir creando conexiones directas entre ambos componentes, lo cual generaría muchos alambres, para simplificar esto utilicemos un bus de datos. En Multisim seleccionamos Colocar>>Bus y dibujamos una línea, la cual representará al bus, tal como se muestra en la figura siguiente:

multisim,bus,tutorial multisim
Ahora bien, primero vamos a realizar la conexión entre el component U1 y el Bus1, lo podríamos hacer de manera manual, pero es mejor utilizar un modo automático. Para esto damos clic derecho en U1 y seleccionamos Conexión de Bus, esto abre la ventana de configuración de bus:

multisim,bus,tutorial multisim
En la sección Componente seleccionamos las terminales de la Derecha de U1, después seleccionamos la terminales RB1 a RB7 y las pasamos al cuadro inferior:

multisim,bus,tutorial multisim
Ahora vamos a la sección Bus y seleccionamos Bus1. Veremos que Multisim despliega de manera automática una sola línea de bus (Ln1), sin embargo nosotros necesitamos 7 en total. Para agregar más lineas damos clic en el botón Agregar líneas de bus y configuramos como se indica en la siguiente figura:

multisim,bus,tutorial multisim
Una vez que hayamos creado las línea de bus Ln1 a Ln7 las pasamos al cuadro inferior, la ventana Conexión de Bus deberá de verse como se indica:

multisim,bus,tutorial multisim
Finalmente damos clic en Aceptar, Multisim conectará las terminales RB1-RB7 del componente U1 al Bus1 de manera automática:

multisim,bus,tutorial multisim
Para conectar U2 al Bus1 seguimos un procedimiento similar, solo que en esta ocasión damos clic derecho en U2 y seleccionamos Conexión de Bus. Para tu referencia aquí está la configuración:

multisim,bus,tutorial multisim

También es posible conectar buses de manera virtual (o inalámbrica). En la siguiente figura los componentes U1 y U2 está conectados por un mismo bus: Bus1.

multisim,bus,tutorial multisim
El uso de los buses es perfecto cuando tenemos componentes que transportan varias líneas de datos, de esta forma podemos construir un esquemático más organizado.

Hasta la próxima!

Fernando

martes, 22 de marzo de 2011

Creando Subcircuitos en Multisim

En el artículo anterior analizamos cómo el diseño multi-página nos puede ayudar a tener una mejor organización de nuestro circuito. Siguiendo con la filosofía de “divide y vencerás” continuaremos estudiando los bloques de diseño en Multisim, y en esta ocasión aprenderemos a utilizar subcircuitos en nuestros diseños.

Un subcircuito en Multisim es un circuito que reducimos a un solo bloque para tener una mejor organización de nuestro esquemático. Haciando una analogía con programación, un subcircuito sería equivalente a una subrutina. Veamos un ejemplo al respecto.

El siguiente es un extracto de un circuito contador:

multisim

Como se puede apreciar, tenemos un generardor de reloj basado en el 555 (encerrado en el recuadro) que se conecta a la terminal 14 (CLK) del 74190N, aquí se ve más a detalle el generador de señal de reloj:

multisim


Para simplificar nuestro diseño en Multisim, vamos a convertir el generador de señal de reloj en subcircuito, de esta manera quedará representado como un solo bloque en el esquemático. Para realizar esto primero seleccionamos todos los componentes que integran el generador de señal de reloj:

multisim


Ahora seleccionamos el menú Colocar>>Reemplazar por Subcircuito. Ingresamos un nombre para el subcircuito:

multisim


Damos clic en Aceptar y colocamos el subcircuito en el área de trabajo:

multisim


Listo, hemos reducido el generador de señal de reloj a un solo bloque: un subcircuito. En la ventana Herramientas de Diseño podemos ver la jerarquía de nuestro diseño. Tenemos el circuito principal (Contador) y el subcircuito Reloj. Nota que éste último tiene un ícono con una S, esto indica que es un subcircuito.

multisim


Si es necesario visualizar y/o modificar el subcircuito, basta con seleccionarlo en la ventana Herramientas de Diseño en Multisim para abrirlo:

multisim


Los subcircuitos en Multisim se guardan junto con el archivo principal, por lo que si se mueve el archivo principal a otro ubicación, automáticamente se mueve el subcircuito. La desventaja de esto es que el tamaño del archivo puede llegar a ser grande, claro, dependiendo de la complejidad del diseño. Otro aspecto a tomar en cuenta es que un subcircuito no se puede reutilizar en otros diseños de Multisim. Para esto existen los bloques jerárquicos, de ellos hablaremos en una siguiente entrada.

Como siempre bienvenidos los comentarios y preguntas.

Saludos!
Fernando

lunes, 21 de febrero de 2011

Creando un Diseño Multi-página en Multisim

A medida que la complejidad y tamaño de un diseño electrónico crece se hace más necesario tener una mejor organización del mismo. Debemos siempre tener en cuenta que nuestro esquemático debe ser claro, fácil de modificar, y fácil de leer por otras personas. Para ayudarnos con este reto Multisim ofrece Bloques de Diseño, éstos, siguen la filosofía de “divide y vencerás.” La idea principal es dividir un esquemático grande en diagramas pequeños fáciles de manejar y actualizar. Existe tres opciones de bloques de diseño en Multisim: subcircuitos, bloques jerárquicos, y diseño mult-ipágina. De este último hablaremos el día de hoy.

Como mencioné anteriormente, la idea del diseño multi-página es dividir un diseño grande y confuso, en páginas individuales interconectadas entre sí. Como se ilustra en las figuras siguientes, en lugar de tener una sola hoja de gran tamaño, podemos tener nuestro diseño en hojas individuales:

multisim


multisim


Para conectar nuestro circuito de una página a otra utilizamos los Conectores Fuera de Página, que en Multisim se encuentran en el menú Colocar>>Conectores:

multisim
Veamos cómo realizar un diseño multi-página con un diseño sencillo. Tomaremos como referencia el siguiente circuito:

multisim
Vamos a dividir el circuito anterior en dos secciones, A y B. La división se hará en los nodos 3 y 0:

multisim
Ahora vamos a agregar una página más a nuestro diseño, y en dicha página colocaremos la sección B. Para esto seleccionamos Colocar>>Multi-página. Multisim nos preguntará el nombre de esta página, este caso la nombraremos 2. Multisim creará una nueva página con la misma jerarquía que la primera. Esto lo podemos corroborar en la ventana Herramientas de Diseño:

multisim

Podemos cambiar de hoja con tan solo dar clic sobre ellas.

Como paso siguiente vamos a la página 1, seleccionamos y cortamos la sección B del circuito y la pegamos en la página 2; de tal forma que ahora tenemos la Sección A del circuito en la página Filtro#1 y la Sección B en Filtro#2. Para conectar ambas páginas (y por supuesto ambos nodos) vamos a utilizar los conectores fuera de página. Seleccionamos Colocar>>Conectores>>Conector Fuera de Página. Colocamos dos de estos conectores en el área de trabajo:

multisim

Abrimos las propiedades del primer conector (FueraPágina 1) y lo renombramos a 3 (el nodo de interés). Hacemos lo mismo con el conector FueraPágina 2, solo que en este caso lo renombramos a 0. Después conectamos los conectores a los repectivos nodos:

multisim
Ahora vamos a la hoja Filtro#2 y repetimos la misma operación. Multisim nos alertará de que conectores con los mismos nodos (0 y 3) ya existen, vamos a aceptar este cambio para realizar la conexión ‘virtual’ entre las dos páginas del circuito:

multisim
¡Listo! Tenemos ahora un diseño multi-página. Los conectores fuera de página realizar conexiones virtuales (o inalámbricas) entre las distintas hojas. Podemos simular el circuito y transferirlo a Ultiboard sin ningún problema pues Multisim ve nuestro diseño como uno solo.

Algunas notas antes de finalizar:

  1. El diseño multi-página es recomendado cuando tenemos circuitos que tienden a ser planos/horizontales.
  2. Todas las hojas del circuito en un diseño multi-página se guardan en un solo archivo.
  3. El tamaño del archivo guardado tiende a ser grande dado que contiene varias páginas.
  4. No es posible reutilizar páginas de un diseño multi-página en otros circuitos.

Como siempre preguntas y comentarios son bienvenidos.

Hasta pronto,

Fernando

miércoles, 2 de febrero de 2011

Creando Código VHDL desde Multisim – Parte 2

Creando Código VHDL desde Multisim – Parte 1

Continuando con el tutorial de la creación de código VHDL desde un esquemático de Multisim en la primera parte creamos un nuevo diseño PLD en Multisim donde definimos las entradas y la salida del circuito lógico. Ahora vamos a capturar el esquemático, recordemos que nuestro objetivo es la función X=AB+CD, donde A, B, C y D serán entradas de switches (SW0, SW1, SW2, SW3) y X será un LED (LED0).

Seleccionamos el menú Colocar>>Componente… para abrir el buscador de componentes. Cabe mencionar que dado que estamos en modo PLD, la base de datos maestra está limitada y solo encontraremos componentes relacionados con lógica digital. Date un momente para explorar los distintos grupos y familias disponibles en la base de datos de Multisim.

Ahora vamos al Grupo PLD Logic, Familia LOGIC_GATES y seleccionemos el componente AND2 (vamos a necesitar dos compuertas AND), también requerimos una OR. Conectamos el circuito tal como se muestra en la figura siguiente:

multisim fpga

A manera de resumen recordemos q las entradas SW0 hasta SW3 correspondería a switches reales, y la salida LED0 a un indicador, la función lógica estaría embebida en el chip FPGA. Aquí hay una parte de la tabla de verdad para este circuito:

X=AB+CD

A

B

C

D

AB

CD

X

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

1

0

0

0

0

0

0

1

1

0

1

1

Para probar nuestro circuito podemos simplemente conectar señales de entrada y un indicador a la salida, o incluso podemos crear otro circuito que sea de prueba (eso lo dejaremos para otro artículo), por el momento vamos a enfocarnos en la generación del código VHDL. Para esto en Multisim vamos al menú Transferir>>Exportar a PLD…

multisim fpga

En la ventana anterior vemos que hay varias opciones, suponiendo que no tenemos conectada ninguna tarjeta con chip FPGA vamos únicamente a generar los archivos VHDL. Damos clic en Siguiente, seleccionamos una ruta para guardar el archivo, clic en Finalizar y listo. Multisim crea dos archivos con extensión vhd. Estos archivos se pueden abrir con un editor de texto. Aquí está una parte:

multisim fpga

A manera de resumen concluimos que con el nuevo esquemático PLD de Multisim podemos crear un circuito lógico y generar el código VHDL (necesario para programar un FPGA) de manera automática. Por otro lado, este módulo de PLD trabaja muy bien con la tarjeta NI Digital Electronics FPGA Board de National Instruments, la cual es ideal para prácticas de laboratorio. A esta tarjeta se le puede descargar directamente el código VHDL desde Multisim.

Espero les haya gustado este introducción al esquemático PLD, no olviden mandar sus preguntas y comentarios.

Hasta pronto,

Fernando

martes, 25 de enero de 2011

Creando Código VHDL desde Multisim – Parte 1

Creando Código VHDL desde Multisim – Parte 2

El diseño electrónico está cambiando y una de las tendencias es utilizar dispositivos embebidos como los FPGA. Estos dispositivos contienen internamente millones de compuertas lógicas programables y reconfigurables. Nosotros podemos tomar una función lógica, por ejemplo: X=AB+CD, y descargarla al chip FPGA; de manera interna el FPGA ‘quema’ las rutas necesarias para crear dicha función. La ventaja principal de esto radica en el hecho de que la función lógica está en hardware, lo cual ofrece mayor confiabilidad en un sistema.

Para programar FPGAs se utilizar un lenguaje descriptor de hardware, o HDL, siendo el más utilizando VHDL. Este lenguaje está basado en texto por lo cual es necesario conocer la sintáxis del mismo. Para aprender un poco más del código VHDL te recomiendo un tutorial del blog de Ayuda Electrónica, solo da clic aquí.

En Multisim 11 (y posterior) versiones Educacional y Estudiantil existe una nueva carácterística llamada Esquemático PLD (Dispositivo Lógico Programable), y la idea es crear un circuito lógico utilizando compuertas, flip flops,, buffers, etc., y posteriormente crear de manera automática el código VHDL necesario para programar un chip FPGA. Con esto nos ahorramos mucho tiempo de diseño.

Quiero hacer notar que el Esquemático PLD de Multisim se diseñó de tal forma que trabaja de la mano con una tarjeta de National Instruments llamada NI Digital Electronics FPGA Board. Esta tarjeta es excelente para prácticas de electrónica digital y contiene un chip FPGA Xilinx Spartan-3E, además de periféricos como LEDs, switches, etc. Esta tarjeta se conecta via USB a la PC y una vez que el código VHDL que genera Multisim está listo lo podemos descargar al chip FPGA de la tarjeta.

Es posible programar otros chips FPGA que sean de 32 bits y soportados por el software Xilinx ISE, esto requiere de un poco más de trabajo. Si estás interesado házmelo saber para referirte a más recursos.

Veamos un ejemplo del uso del Esquemático PLD en Multisim. Nuestro objetivo será realizar la función X=AB+CD, asi que necesitaremos cuatro entradas (A, B, C y D) y una salida (X), tal como se indica en la figura siguiente:

multisim

Vamos a abrir Multisim y seleccionar Archivo>>Nuevo>>Diseño PLD…

multisim

En este primer paso Multisim nos pregunta si vamos a utilizar la tarjeta digital que les mencioné anteriormente, un nuevo archivo de configuración, o simplemente un proyecto vacío. Voy a seleccionar la primer opción y dar clic en Siguiente:

multisim

El nombre de mi diseño es Funcion Lógica, y el chip FPGA utilizado por la tarjeta digital de NI es XC3S500E. Damos clic en Siguiente:

multisim

En la ventana anterior podemos ver la lista de conectores de entradas/salidas disponibles en la tarjeta digital de NI. Voy a seleccionar los switches SW0, SW1, SW2 y SW3 que corresponderán a las entradas A, B, C y D de mi función lógica; y para la salida X utilizaré el LED0.

Damos clic en Finalizar, Multisim crea un diseño en blanco y coloca las entradas y salidas seleccionadas en el espacio de trabajo:

multisim
Lo que sigue es capturar nuestra circuito lógico, pero eso lo dejaremos para la siguiente parte del tutorial.

Mantente sintonizado y no olvides agregarte a la lista de seguidores del blog, asi te llegarán las actualizaciones.

Saludos!

Fernando