Control de un gráfico en el PC con LabVIEW

El objetivo de este pequeño proyecto es crear en el ordenador una gráfica en dos dimensiones en la que presentaremos un punto cuyas coordenadas estarán controladas dinámicamente por los sensores de rotación de dos servomotores del NXT. Vamos a ver que es posible realizar el control de un gráfico en el PC con LabVIEW. Para ello introduciremos varios conceptos nuevos, que serán necesarios para entender el funcionamiento del programa. Aunque este nuevo programa no tiene ninguna finalidad en sí mismo, nos abrirá las puertas para la creación de proyectos más complejos.

Creamos un nuevo VI en blanco y seleccionamos el panel frontal. Vamos a diseñar el panel que veremos como usuarios de la aplicación. Dado que queremos presentar una gráfica en dos dimensiones, necesitamos un indicador que pueda mostrarnos la información de ese modo. Se trata en concreto del Gráfico XY. Lo podemos localizar en varias paletas. Los iconos disponibles pueden ser muchos y puede darse el caso de que en un momento dado sepamos el nombre del icono que buscamos pero no sepamos en qué paleta se encuentra. Para ello podemos hacer uso de la función de búsqueda. En nuestro caso seleccionamos el icono de la siguiente forma:

Indicador XY-Graph
El icono de esta gráfica nos crea en el panel la imagen del siguiente indicador. Podemos modificar sobre el mismo tanto los fondos de escalas como el nombre de los mismos sin más que pinchando sobre ellos. Estas modificaciones también pueden hacerse en tiempo real, mientras se está ejecutando la aplicación. Es útil probar todas las opciones para familiarizarnos con los indicadores. En nuestro caso hemos seleccionado los fondos de escala de la figura, entre -360 y 360, y hemos desactivado el autoescalado en ambos ejes. Podemos modificar la forma de presentación del punto, su tamaño, color, etc. Las posibilidades de presentación son enormes.

xy-indicador
Si abrimos el diagrama de bloques vemos que automáticamente se nos ha creado el símbolo correspondiente a dicho indicador. Como consejo, es conveniente tener activada la ayuda contextual, que nos presenta información del icono sobre el que se encuentra el cursor en cada instante.

Ayuda contextual XY-Graph
Esta ayuda nos está indicando cuales son las entradas con las que debemos alimentar el gráfico. Vemos que es posible emplear esta gráfica para la presentación múltiple de varios gráficos, aunque en nuestro caso es suficiente con la presentación individual.

La entrada de este gráfico debe ser del tipo cluster. Un cluster no es más que una agrupación de datos de cualquier tipo. En muchas ocasiones el objetivo de agrupar los datos no es otro que el de simplificar el gráfico y evitar que se convierta en un amasijo de buses y cables. Lo que debe contener este cluster son dos arrays, uno con las coordenadas X de los puntos que queremos representas, y otro con las coordenadas Y de los mismos. Es decir, si quisiéramos representar N puntos, la longitud de los dos arrays del cluster sería N (de 0 a N-1). Pero nuestro caso es el más simple de todos, porque sólo queremos representar un único punto. La longitud de cada uno de los arrays del cluster debe ser 1.

Ahora que ya sabemos qué tipo de datos espera el XY-Graph, debemos generarlos. Para agrupar los dos arrays en el cluster necesitamos hacer uso de un icono que se denomina bundle. Si no sabemos dónde se encuentra el icono, lo más práctico es hacer la búsqueda en la casilla de búsqueda de las funciones del menú flotante.

bundle

El siguiente paso es conectar la entrada del icono XY-Graph con la salida del bundle. Realizada la conexión el programa marcará el hilo como erróneo, indicando que hemos realizado una conexión entre dos clusters con elementos diferentes. El problema que existe ahora mismo es que todavía no hemos definido cuáles son las entradas de bundle. Cuando las definamos el error desaparecerá, por lo que de momento haremos caso omiso de esta advertencia.

Para crear el array disponemos de un icono denominado Initialize Array. Como sólo queremos representar un punto el array será de tamaño unidad. Este valor es una constante. La forma más rápida de introducir el bloque de constante es, en lugar de buscarlo, pinchando con el botón derecho sobre el icono de Initialize Array cuando el ratón está posicionado en la entrada de la dimensión 0 y seleccionar create, constant.
Esto no sólo presenta el icono de constante, sino que lo cablea y nos pregunta directamente el valor de la constante.

Después de haber realizado varios cableados, nos damos cuenta de que el color de los mismos no es siempre el mismo. Al trabajar con datos en LabVIEW, es importante entender los tipos de datos diferentes, ya que algunas funciones sólo funcionará con un cierto tipo.

  • Los terminales de color Naranja representar números en coma flotante, que son números que pueden tener una cifra decimal.
  • Los terminales de color azul representar enteros, que son números que no pueden tener una cifra decimal.
  • Los terminales de color rosa representan las cadenas (strings), que pueden incluir letras y números y algunos caracteres.
  • Los terminales verdes representan booleanos, que son verdadera o falsa.
  • Los terminales marrones representan las agrupaciones, que resultan de la combinación de varios conjuntos de datos.

El siguiente paso del programa es introducir el valor del array. Queremos controlar la posición del punto presentado mediante los sensores de rotación de los motores. Haremos uso en concreto de un joystick que ya hemos comentado en otros artículos. Este joystick tiene los motores conectados en los puertos A y B.

selección del icono de lectura de sensor

Debemos especificar que la lectura que debemos realizar es, en concreto, de un sensor de rotación. También debemos definir los puertos del NXT en los que están situados los servo motores porque el programa trabaja por defecto con el puerto A. Hemos añadido además unos indicadores para poder visualizar el valor de la lectura numérica del sensor, un indicador por cada sensor de rotación. Cableando todo lo anterior tenemos el siguiente programa, que además introducimos dentro de un bucle while (con su respectivo botón de parada) para que el programa se ejecute de forma contínua hasta que presionemos el botón de stop.

programa completo

El funcionamiento de la aplicación lo podeis ver en el video siguiente.

De nuevo volvemos a ver que la versatilidad y potencia del LabVIEW es muy superior a la del NXT-G. Se trata de una aplicación en la que el NXT está funcionando como sistema de adquisición de datos, que están siendo procesados y presentados en el PC.

Para cualquier duda, podeis comentar en el foro.

Comments are closed.