Usando Arduino como DAQ en Labview

Desde hace tiempo estaba buscando alguna forma de hacer o conseguir de manera barata una tarjeta de adquisición de datos que jubilen las improductivas PCLAB-812pg. Estas tarjetas de adquisición de datos las tenemos de dotación en el instituto y solo tienen un "pequeño" problema… el bus ISA, que hace que solo se puedan usar en ordenadores más que obsoletos y de los que cada vez quedan menos.

Hace algún tiempo Angel Perles (gran profesor y mejor director de proyecto) me mando el siguiente enlace por si me interesaba, y vaya si me ha interesado.

NI LabVIEW Interface for Arduino Toolkit – Utilice E/S Arduino con LabVIEW – National Instruments

Por cierto, Angel es el autor de cheapDAQ, del que ya hablaré más adelante.

Bueno, pues resulta que los amigos de NI nos han hecho un traje a medida. Han creado componentes para Labview (VI) y el firmware necesario para convertir una placa de arduino en una tarjeta de adquisición de datos y poder manejarla por USB desde labview. Las características de la DAQ resultante no es que sea como para tirar cohetes (200hz), pero es mejor que lo que teníamos (nada).

Pues nada os explico como he conseguido que funcione. Al lío!

Requisitos:

  • Un arduino (Obvio) basado en el ATMEGA328 o superior (en el ATMEGA168 no cabe el firmware). Vale un Duemilanove, pero en nuestro caso será un Arduino UNO.
  • El IDE de Arduino (versión 1)
  • Labview 2009 o superior (vale la versión trial)
  • Kit de drivers VISA.
  • VIPM (VI package manager).
  • Labview Interface for Arduino (en adelante LIFA)

Lo primero que necesitamos instalar es Labview. Podemos descargar la versión de evaluación del siguiente enlace, aunque para hacerlo primero tendremos que registrarnos.

http://www.ni.com/trylabview/

Una vez unstalado Labview, procedemos a instalar el pack de drivers de VISA, que podemos descargarlo desde la siguiente página. Yo he instalado la versión 5.1.1, pero funciona con la versión 5.0.3 y ya han sacado la 5.1.2.

NI-VISA 5.1.1

Después instalamos el gestor de paquetes VI (VIPM). Podemos descargar la versión de la comunidad (free) de la siguiente página. Este programa será el que descargue e instale los VI de Arduino en Labview.

JKI VI Package Manager.

Una vez instalado todo esto, ejecutamos el gestor de VI (VIPM) y buscamos "Arduino". Solo tenemos que seleccionar el paquete de la lista e instalarlo. Los paquetes de componentes del LIFA se pueden descargar e instalar manualmente, pero esta forma es mucho más fácil. Cuando termine, habremos completado la parte de instalación del Labview, nos queda la parte del Arduino.

VIPM- Busqueda de LIFA

El IDE de arduino lo descargamos directamente de la página de GoogleCode. En la página de Arduino en Español, los enlaces a las últimas versiones no están actualizados, se quedaron en la versión 0019. Yo he utilizado la versión 1.0. En el siguiente enlace está la lista de las últimas versiones del IDE.

http://code.google.com/p/arduino/downloads/list

Una vez descargado lo descomprimimos y nos creamos un enlace en el menú de programas o el escritorio si lo prefieres. Con esto ya está todo instalado y solo tenemos que cargar el firmware del LIFA al Arduino para que se pueda comunicar con Labview.

Dispositivo desconocidoLo primero es conectar la placa de arduino al USB. Si es la primera vez que lo haces, deberás instalar los drivers de windows (si es que todavía usas este SO). No te preocupes que el IDE de arduino ya los trae, solo hay que decirle al sistema en que carpeta se encuentran. Conectamos el Arduino y nos aparece el típico globo que avisa de que no se han encontrado los drivers del nuevo dispositivo, hacemos clic en el y nos da la opción de buscar los drivers. Si no aparece, podemos ir directamente al administrador de dispositivos haciendo clic derecho sobre "Equipo" (Mi PC en XP) y seleccionando Administrar en el menú emergente. Una vez abierto el administrador de dispositivos nos encontraremos con el arduino desconocido.

Hacemos clic con el botón derecho sobre el dispositivo desconocido y elegimos la opción "Actualizar software de controlador". En la siguiente ventana  elegimos la opción "Buscar software de controlador en el equipo". Ahora se nos pedirá que indiquemos en que carpeta están los drivers de arduino. Tendremos que seleccionar la carpeta "drivers" que hay dentro del directorio de Arduino.

Ruta de los drivers de arduino

y aceptamos la instalación del driver, tras lo cual, nuestro arduino estará reconocido en el sistema como un puerto serie. El número de puerto serie lo necesitaremos en los siguientes pasos.

Instalación del driverArduino reconocido como dispositivo

Directorio del sketch de arduinoYa tenemos arduino conectado al usb y reconocido por el sistema, ahora toca programar el arduino con el sketch que comunica la placa con labview. El sketch de arduino se instala con LIFA, por lo que tenemos que ir a la carpeta donde se ha instalado.  La ruta es un poco larga, así que mejor lo miráis en el pantallazo de la derecha. En el directorio LVIFA_Base, se encuentra el archivo LVIFA_Base.pde que es el sketch que debemos abrir. Se nos abrirán además todas las librerías. Cuando lo tenemos todo abierto lo programamos en la placa de arduino. Primero seleccionamos el tipo de placa que estamos utilizando, que en nuestro caso es una arduino UNO. Se selecciona desde el menú tools, en la opción Board.

Sellecionamos Arduino UNO en el menú Tools, opción Board

Selección del puerto serieAhora elegimos el puerto serie (COM) que utiliza el sistema para comunicarse con la placa de arduino. En mi caso es el COM14, pero el sistema nos puede haber asignado cualquier otro. Lo puedes averiguar en el Administrador de dispositivos. El puerto se selecciona en la opción "Serial Port" del menú Tools.

Y ya podemos programar la placa con el botón de la flecha de la parte superior.

Programar

Eso es todo. Con esto ya tenemos lista la placa de arduino para comunicarse con Labview y en Labview tenemos montones de VI que nos van a permitir hacer facilmente aplicaciones para controlar procesos usando arduino como tarjeta de adquisición de datos.

Carpeta de ejemplos de LIFASi abrimos labview podemos usar alguno de los ejemplos que vienen con LIFA. Como ejemplo vamos a ver el hace uso de una entrada analógica. Los ejemplos de LIFA para Labview se instalan por defecto en la carpeta de ejemplos de Labview, y el ejemplo que buscamos es Arduino Analog Read Pin.

Este ejemplo consiste en leer una entrada analógica de Arduino y mostrar la tensión de entrada en un indicador. Primero montamos un circuito que nos varíe la tensión en una entrada con un potenciómetro por ejemplo. El propio ejemplo nos da una esquema para hacerlo:

Esquema para el ejemplo

Front Panel del ejemplo

Una vez montado el  circuito y  abierto el ejemplo tendremos que modificar en el VI  (Arduino Init) los datos referentes a la placa de arduino: Puerto de comunicación y  modelo de Arduino. En la ventana del front end del ejemplo, seleccionamos "Show Block Diagram" del menú Window.

En el diagrama de bloques haremos doble clic sobre el VI de inicialización de Arduino. Este es el encargado de iniciar la comunicación con la placa, por lo que es aquí donde hay que configurar el modelo de placa de Arduino que utilizamos y el puerto serie.

Diagrama de bloques del ejemplo

En la ventana que nos aparece al hacer doble clic, seleccionamos el modelo de Arduino y el puerto serie que utiliza. Se muestra que opciones hay que modificar en la siguiente imagen.

Configuración del VI de arduino

Con eso lo tenemos listo; cerramos las dos ultimas ventanas, y en la ventana del front end ejecutamos la aplicación de Labview. Si la placa está conectada y hemos configurado correctamente la aplicación; al modificar la tensión de la entrada con el potenciómetro, se mueve el indicador de la aplicación. En el siguiente vídeo se puede ver el funcionamiento.

httpv://www.youtube.com/watch?v=BhIa7FT4Gm0

Por último os dejo aquí los enlaces a las páginas de las que he sacado toda esta información:

Espero que os sea tan útil como nos va a ser a nosotros.

Salu2!

26 comments for “Usando Arduino como DAQ en Labview

Comments are closed.