En este tutorial vamos a aprender a controlar con LabVIEW la luminosidad de un LED a través una de las salidas PWM de Arduino.
Recomiendo que antes de comenzar hayáis seguido los pasos para conectar y configurar correctamente la comunicación entre Arduino y LabVIEW: Arduino & LabVIEW (I). Conexión y configuración.
Una vez que lo tengamos todo configurado, procedemos a realizar el siguiente montaje físico:
Como se puede observar es un montaje muy sencillo: conectamos el cátodo (polo negativo) del diodo LED al pin GND, y conectamos el ánodo (polo positivo) al pin PWM 11.
Es importante respetar la polaridad de los terminales para no dañar el LED. En la imagen de la derecha se puede consultar un pequeño esquema para conectar correctamente nuestro diodo, fijándonos en la muesca que tiene en un lateral del encapsulado o en la longitud de los terminales.
Conectamos nuestra placa de Arduino al PC mediante el cable USB.
Para controlar el brillo del LED vamos a usar una de las salidas PWM de Arduino (en nuestro caso la 11, pero vale cualquiera que venga marcada con el símbolo ~ ).
PWM (pulse-width modulation) significa modulación por ancho de pulso. Con esta técnica podemos usar una salida digital para emular a una salida analógica (en vez de dos valores -0 y 1- podremos mandar valores comprendidos entre 0 y 255 – 8 bits = 256 valores). Para más información podéis echar un vistazo al siguiente enlace: Arduino – PWM.
Abrimos LabVIEW y creamos un nuevo proyecto en blanco. Seleccionamos la plantilla «Blank VI«.
Se nos abrirán dos ventanas: «Block diagram» y «Front panel».
En la primera de ellas, «Block diagram» podremos insertar los bloques que conformarán nuestro programa. Será nuestra «mesa de trabajo».
En el «Front panel» podremos controlar las acciones y visualizar los resultados. Será la ventana que nos permita interactuar con Arduino.
Si hacemos click con el botón derecho en cualquier parte del espacio de trabajo, se nos desplegará un menú con una lista de funciones y controles, similar al de la imagen de la izquierda.
Desde este menú podemos navegar hasta encontrar las diferentes funciones que necesitamos.
Para incorporarlas a nuestro espacio de trabajo, simplemente debemos pinchar sobre el icono adecuado, arrastrar y soltar en el lugar deseado.
Se trata de un método fácil y rápido de programar.
Para empezar, debemos situar los elementos necesarios para interactuar con nuestro Arduino. Como ya he mencionado, esto se hace desde el Front Panel.
Debemos situar un control que nos permita seleccionar el valor que enviaremos al pin 11 para modificar el brillo del LED. Dicho control se sitúa, dentro del menú que hemos visto anteriormente, en Numeric > Horizontal Pointer Slide. Pinchamos sobre él, arrastramos y soltamos sobre la cuadrícula.
Podemos ajustar las dimensiones del bloque, cambiar los parámetros, las etiquetas… Lo modificamos para que el intervalo numérico vaya de 0 a 255, aumentamos el tamaño y modificamos la etiqueta para poner el nombre que deseemos. Para ello, simplemente pulsamos sobre los parámetros que queramos modificar y nos permitirá editarlos.
De la misma forma, añadimos otro elemento para visualizar la forma y amplitud de onda de los pulsos que mandaremos. Dicho elemento se encuentra en Modern > Graph > Wavefrom Chart. Para poder ver mejor la onda, aumentamos el tamaño y cambiamos los valores del eje Y de 0 a 260.
También añadimos un botón para parar el programa, que encontramos en Modern > Boolean > Stop Button.
De esta forma, se nos queda un Front Panel como el de la imagen siguiente:
Como podemos observar, podemos modificar los valores a nuestro antojo y disponer los elementos como mejor nos convengan. Haciendo click derecho sobre el elemento, podemos configurar otras opciones importantes.
El control que hemos insertado es deslizante: podemos desplazarlo horizontalmente para alcanzar los valores deseados. En cuanto a la ventana para visualizar la onda del pulso enviado, nos permite realizar una pequeña «monitorización».
Ahora procemos a programar el diagrama de bloques de nuestro programa. Al añadir los dos elementos anteriores al Front Panel, simultáneamente se han añadido dos elementos a la venta Block Diagram, como se puede ver en la imagen:
Esta ventana de Block Diagram opera igual que el Front Panel: podemos modificar la posición de los elementos, añadir otros, cambiar las propiedades, etc. La única diferencia, es que si hacemos click derecho en el espacio de trabajo, en vez de un menú de control, aparecerá un menú de funciones que nos permitirá realizar nuestro programa. Como véis, es bastante sencillo.
En primer lugar vamos a añadir una estructura While Loop. Para ello, la seleccionamos del menú de funciones (se encuentra en Programming > Structures) y dibujamos un rectángulo en el espacio de trabajo.
Dentro de el rectángulo que acabamos de dibujar, que representa la estructura While Loop, metemos los tres elementos anteriores, y conectamos el elemento STOP al botón rojo de la parte inferior derecha del rectángulo. Esto indica la condición de parada. De esta manera, al pulsar el botón desde el Front Panel, el programa cesará su ejecución. Para conectarlos basta con posicionarse sobre el icono, y se resaltarán unos puntos de conexión; pulsamos y arrastramos hasta el elemento deseado. Así de sencillo resulta programar mediante diagramas de bloques.
Es importante que los tipos de datos que maneja Arduino y los de nuestros bloques estén en concordancia. Para cambiarlos, pulsamos con el botón derecho y seleccionamos «Properties»:
En la pestaña Data Type, seleccionamos el icono U8 (Unsigned byte). De esta forma ya podemos enviar datos a Arduino.
Una vez hecho esto, unimos los bloques Control PWM (o el nombre que le hayamos dado al control numérico) y Wavefrom Chart:
Para que nuestro programa tenga conexión con Arduino, debemos añadir dos elementos que sircen para iniciar y finalizar el «puente» de conexión. Estos elementos están dentro de Functions > Arduino, y son Init y Close. Los situamos fuera del bucle while.
Ahora debemos definir los pines y las funciones.
En primer lugar añadimos un bloque «PWM Write Pin«, que se encuentra en Arduino > Low level.
Añadimos una constante numérica para seleccionar el pin (en nuestro caso el 11). Las constantes se encuentran en Programming > Numeric. Le cambiamos el valor de 0 a 11 clickando sobre dicho valor.
También añadiremos un constante que nos permita decidir si el pin se comportará como salida (output) o entrada (input). Este bloque se llama Enum Constant. Modificamos sus propiedades, como ya hemos hecho anteriormente, modificando el tipo de datos a Unsigned Byte. Dentro de la pestaña «Edit Items» de las propiedades del elemento, añadimos la siguiente configuración:
Una vez hayamos hecho esto, y seleccionando el pin como Output, conectamos los bloques a los terminales correspondientes, de esta manera:
Ahora procedemos a realizar la escritura del pin. Para ello, arrastramos otro bloque PWM Write Pin (como el anterior). Lo conectamos de la siguiente forma:
Como se puede ver, las variables se pueden aprovechar en varios bloques, ahorrando así espacio.
Ahora añadiremos el bloque necesario para que al pulsar el botón STOP, el led se apague. Añadimos otro bloque PWM Write Pin fuera del bucle, y seleccionamos las variables para el pin (11) y el valor de escritura (en este caso 0, porque queremos apagarlo):
Ahora procedemos a conectarlo todo, de la siguiente manera:
Al empezar, para no liaros mucho, sería conveniente que los cables no se cruzasen y así evitar despistaros. Como podemos mover los bloques a nuestro antojo, podemos dejarlo todo un poco más organizado. También es importante cambiar un detalle para que no haya problemas en el bucle:
Debemos cambiar las propiedades (click derecho sobre el elemento) y remplazar los cuadraditos de cada pareja por un «Shift Register». Se nos quedaría todo el esquema del siguiente modo:
Para finalizar guardamos el proyecto. Solo nos queda probarlo. Conectamos nuestro Arduino al puerto USB del ordenador. Para iniciar el programa, lo hacemos desde el Front Panel, en la barra de tareas, donde podemos encontrar el botón Run (una flecha apuntando hacia la derecha).
Os dejo con un vídeo que he grabado del funcionamiento del programa:
Como se puede comprobar, a medida que deslizamos el control, el brillo del LED aumenta o disminuye en consecuencia. También podemos observar la onda (cuadrada) que describe el envío de los pulsos al pin PWM. Además, cuando presionamos el botón STOP, el LED se apaga.
Eso es todo por ahora. Cualquier duda que tengáis podéis dejarla en los comentarios. ¡Muchas gracias por vuestro tiempo!
Imágenes, texto y vídeo propios.