Arduino + LabVIEW
Arduino + LabVIEW
Ver. 1.0
Arduino
Jos Manuel Ruiz Gutirrez Jos Manuel Ruiz Gutirrez
Serie: Herramientas Grficas para la programacin de Arduino 1
INDICE
1. 2. 3. 4. 5. Introduccin Cinco razones para utilizar Arduino + LabVIEW Dnde encontrar ayuda y herramientas para usar NI LabVIEW y Arduino? Instalacin del Software y el Hardware. Instalacin del Firmware de comunicacin entre LabVIEW Interface y Arduino Uno? 6. Algunas preguntas sobre la interface LIFA 7. Desarrollo de aplicaciones bsicas. 7.1. Lectura de una entrada digital. 7.2. Test1 7.3. Comparador 7.4. Contador de impulsos 7.5. Contador de impulsos con puesta a cero 7.6. Intermitente 7.7. Semforo Simple 7.8. Semforo Ajustable 7.9. Gobierno de una Salida Analgica PWM 7.10. Gobierno de una salida digital seleccionada 7.11. Escritura/Lectura de todos los canales 7.12. Control de Servos 7.13. Funcin AND 7.14. Temperatura 1 7.15. Control Motor de cc. Velocidad y Sentido 7.16. Medida de Temperatura mediante el Bus I2C 7.17. Dilogo con Arduino Ethernet. 7.18. Lectura de una Entrada Analgica. 7.19. Conexin de un Mdulo BlinkM. 7.20. Lectura de un valor Analgico Continuamente tomando muestras. 7.21. Adquisicin de un nmero determinado de muestras de un canal analgico. 7.22. Medida de Luz 7.23. Control de un Diodo LED Tricolor (RGB). 7.24. Medida de Temperatura. 7.25. Manipulacin de un Mando Joystick. 7.26. Generador de Tonos ANEXOS Material Bsico Libreras de LIFA
Agradecimientos y reconocimientos.
La elaboracin de este trabajo no hubiese sido posible sin recurrir a las fuentes de conocimiento y a la experiencia de numerosas personas que de manera libre o adscritos a una entidad pblica o privada han trabajado en el desarrollo de aplicaciones tanto hardware como Software para la Plataforma Open Hardware Arduino. Debo reconocer y agradecer en primer lugar la valiosa labor de NI (National Instruments) al atender esta demanda de la comunidad acadmica en el desarrollo de LIFA (LabVIEW Interface for Arduino). De ellos he utilizado gran parte de la informacin que me ha permitido desarrollar este manual. Quiero tambin agradecer a todos los innumerables investigadores que desde sus distintos mbitos han colocado en la Web sus trabajos para poder ser utilizados por la comunidad. Algunos ejemplos que figuran en este manual proceden de algunas pginas que se referencian en ellos. Recordar especialmente a toda la comunidad de seguidores de Arduino con los que he compartido gratas sesiones de intercambio real, en vivo y directo, sus conocimientos, en los Congresos, Barcamps y Jornadas que se viene realizando en Espaa y en el resto de pases del mundo.
Este trabajo est bajo licencia Creative Commons Attribution 3.0 Unported License
Agosto de 2012 Versin de Documento: Versin. (Beta en Revisin) Blog de referencia: http://josemanuelruizgutierrez.blogspot.com
1.
INTRODUCCIN
La interfaz de LabVIEW para Arduino (LIFA) Toolkit es una herramienta gratuita que se puede descargar desde el servidor de NI (National Instruments) y que permite a los usuarios de Arduino adquirir datos del microcontrolador Arduino y procesarlos en el entorno de programacin grfica de LabVIEW. Para utilizar la aplicacin LIFA no es necesario disponer de una versin comercial de LabVIEW basta con adquirir el software LabVIEW Student Edition que se distribuye por destinos medios a un precio muy asequible (Sparkfun Electronics lo distribuye junto con la tarjeta Arduino UNO a un precio de unos 50 $). Este trabajo pretende ser una respuesta a la necesidad que existe en el mbito acadmico universitario de poder disponer de un entorno de Diseo y Prototipado de Aplicaciones de Medida, Control y Automatizacin de Procesos y Espacios Fsicos. La plataforma Open Hardware Arduino ha demostrado en su corta, pero intensa vida, ser una opcin muy interesante para incluir en un Laboratorios de Prototipado. Son muchas sus ventajas, entre las que destacamos su costo, su libre difusin y exencin de costos de patentes por desarrollo as como la gran comunidad de usuarios que se ha creado y que esta generando una cantidad de aplicaciones increble. La participacin de una empresa como NI National Instruments en este proyecto de desarrollo de aplicaciones Software para Arduino pone de manifiesto el gran inters de la herramienta. No solo se ha sumado esta empresa al proyecto sino tambin Google con sus aplicaciones escritas en lenguaje Android, Telefnica con el desarrollo de una tarjeta para programar desde telefona mvil, y otras compaas. En este manual he recogido informacin dispersa y sobre todo he incluido numerosos ejemplos que pretenden ser una ayuda y un estimulo para que quien lo desee pueda experimentar con esta herramienta Software que por otra parte funciona soportada con una simple Licencia de estudiante de LabVIEW.
2.
El microcontrolador Arduino es una plataforma de bajo costo de electrnica de prototipos. Con la interfaz de LabVIEW para Arduino LIFA se puede aprovechar la potencia del entorno de programacin grfica de LabVIEW para interactuar con Arduino en una nueva dimensin.
2. Programacin Grafica
Arrastrar y soltar
En lugar de tratar de recordar un nombre de funcin, se encuentra en la paleta y colquelo en su diagrama de bloques.
Documentacin simple
Pase el ratn sobre cualquier VI o funcin con el ratn y ver al instante la documentacin con ayuda contextual.
6
3. Desarrollo Interactivo
Animar la ejecucin Diagrama de bloques
Consulte los valores de datos que se transmiten de una funcin a otra con resaltado de ejecucin.
4. Utilizacin de libreras
Conexin con libreras.
850 bibliotecas integradas Aprovechar cientos de bibliotecas integradas de procesamiento de seales, matemticas y anlisis.
Bibliotecas Conectividad Interfaz con los servicios web, bases de datos, archivos ejecutables y ms con funcionalidad integrada en el ncleo de LabVIEW.
En el lado Arduino
Quiere modificar el Sketch Arduino proporciona para su aplicacin especfica? Se incluye la modificacin de la caja de herramientas.
7
3.
En el proceso de instalacin del software de Arduino para Labview se recomienda recurrir a los siguientes enlaces en donde se podr descargar el software y leer las recomendaciones en el proceso de instalacin esta paginas estn el servidor de National Instrument (LabVIEW) El paquete LabVIEW Interface for Arduino es totalmente gratuito y se puede descargar en: https://decibel.ni.com/content/groups/labview-interface-for-arduino Las instrucciones para la instalacin se encuentran aqu: https://decibel.ni.com/content/docs/DOC-16204 Si se desea adquirir el Kit NI LabVIEW + Arduino se puede adquirir aqui: http://www.sparkfun.com/products/10812 En el siguiente enlace se pueden encontrar las respuestas a las dudas para utilizar el toolkit de NI LabVIEW para Arduino: https://decibel.ni.com/content/docs/DOC-16024 La gua de usuario para NI LabVIEW y Arduino se puede encontrar aqu: http://nitalk.natinst.com/docs/DOC-39019 Para utilizar NI LabVIEW + Mac se puede encontrar ayuda aqu: https://decibel.ni.com/content/thread/9782 A continuacin se muestran los enlcaces en donde poder encontrar ejemplos realizados con la el Kit.NI LabVIEW + Arduino: Show de luces: https://decibel.ni.com/content/docs/DOC-16070 Usando libreras de Arduino con NI LabVIEW: https://decibel.ni.com/content/thread/12931 Ejemplo del control de un motor de pasos con Arduino
8
https://decibel.ni.com/content/docs/DOC-20084 Leer la intensidad de luz en una celda solar con Arduino https://decibel.ni.com/content/docs/DOC-16069 Manipular los LEDs de la tarjeta arduino https://decibel.ni.com/content/docs/DOC-16261
4.
A continuacin describimos los pasos que se recomiendan para la puesta en marcha de la herramienta LIFA ( LabVIEW para Arduino): La configuracin de la Interfaz de LabVIEW para Arduino es un proceso de seis pasos que usted slo tendr que completar una sola vez. Por favor, siga las siguientes instrucciones para comenzar a crear aplicaciones con la interfaz de LabVIEW para Arduino. (Para una breve descripcin de la interfaz de LabVIEW para Arduino ver post Michaels aqu). 1. Instalar LabVIEW Si ha adquirido el paquete de LabVIEW y del Sparkfun.com Arduino puede instalar LabVIEW desde el DVD incluido. Si usted no posee una copia de LabVIEW, usted puede descargar e instalar la versin de evaluacin de 30 das aqu. 2. Instale los controladores VISA NI-. Windows Download. Linux Download. Mac Download. 3. Instale JKI VI Package Manager (VIPM) Community Edition (gratuito). Todos los sistemas operativos.All Operating Systems. 4. Instalacin de la Interfaz de LabVIEW para Arduino como se describe en KB 5L38JQYG KB 5L38JQYG 5. Conectar la placa Arduino a su PC como se describe en KB 5INA7UYG KB
5INA7UYG
6. Carga de la interfaz de LabVIEW para firmware Arduino en su Arduino como se describe en KB 5LPAQIYG
10
Arduino \ Firmware \ LVIFA_Base. Utilizar el IDE de Arduino para implementar este firmware de la placa Arduino.) Ahora est listo para usar la interfaz de LabVIEW para Arduino.
11
5.
Para poder comunicar Labview con Arduino, previamente, debemos instalar en la tarjeta el firmware correspondiente. Partimos del supuesto de que ya tenemos instalado en nuestro PC el entorno IDE Arduino. El fichero que debemos cargar en el IDE de Arduino para luego descargar en la tarjeta se encuentra en la carpeta en dinde tengasmos instaldo Labview \National Instruments\LabVIEW 20XX\vi.lib\LabVIEW Interface for Arduino\Firmware\LVIFA_Base Ejecutamos el IDE Arduino y cargamos el fichero. Pasos a seguir: Abrir el IDE Arduino . Pulsando sobre arduino.exe Con la opcin Fichero->Abrir Buscamos el fichero LVIFA_Base.pde
Seguidamente una vez cargado el fichero en el IDE Arduino seleccionamos la tarjeta con la que trabaremos.
12
Seguidamente seleccionamos el puerto con el que realizaremos la descarga del firmaware sobre la tarjeta Arduino.
13
Una vez realizadas estas operaciones basta con que pulsemos el botn de carga de sketch del IDE para que el fichero se transfiera a la tarjeta y, una vez transferido, ya hemos dejado Arduino listo para comunicarse con LabVIEW
14
6.
(Traducido de https://decibel.ni.com/content/docs/DOC-16024) 1. Qu es la interfaz de LabVIEW para Arduino? La interfaz de LabVIEW para Arduino (LIFA) Toolkit Free Toolkit es un conjunto de herramientas gratuitas que permiten a los desarrolladores adquirir datos desde el microcontrolador Arduino y procesarlo en el entorno de programacin grfica de LabVIEW. 2. Qu versiones del entorno LabVIEW permiten la conexin con Arduino? La interfaz de LabVIEW para Arduino es actualmente compatible con cualquier versin de Windows o Mac OS que soporta LabVIEW 2009 o posterior. El kit de herramientas tambin funcionan en cualquier versin de Linux que soporta LabVIEW 2009 o posterior, sin embargo actualmente no existe un instalador (JKI VI Package Manager) para Linux. JKI est trabajando actualmente en VIPM 2010 para Linux, que estar disponible aqu cuando haya terminado. 3. Qu versin de LabVIEW Qu necesito para utilizar la interfaz de LabVIEW para Arduino? 2009 o posterior. 4. Qu hardware es necesario para utilizar la interfaz de LabVIEW para Arduino? Para empezar, el nico hardware que se necesita es una tarjeta Arduino, cable USB y un ordenador con LabVIEW y la interfaz de LabVIEW para Arduino. La interfaz de LabVIEW para Arduino fue desarrollado y probado usando Arduino UNO y Arduino MEGA 2560 5. Cmo se instala la interfaz de LabVIEW para Arduino? Siga los pasos de este documento. Instalacin. 6. Dnde se puede obtener soporte para la interfaz de LabVIEW para Arduino? Soporte para la interfaz de LabVIEW para Arduino se proporciona en los foros de la comunidad community forums. La interfaz de LabVIEW para Arduino no est
15
soportada por Ingenieros de Aplicaciones a travs del telfono, correo electrnico, o de otra manera. 7. Cmo puedo empezar a utilizar la interfaz de LabVIEW para Arduino? Despus de instalar el kit de herramientas que puede ver aqu la mejor manera de empezar es mediante los ejemplos que viene en el paquete LIFA de LabVIEW. Se encuentran en \National Instruments\LabVIEW 2012\examples\LabVIEW Interface for Arduino 8. Puedo implementar el Cdigo de LabVIEW a mi Arduino? No. En este momento no es posible implementar el Cdigo de LabVIEW para la placa Arduino. Solo es posible utilizar la interfaz de LabVIEW para Arduino para comunicarse con la placa Arduino utilizando LabVIEW en modo esclavo On-line 9. Tengo que ser tener a un ordenador para utilizar la interfaz de LabVIEW para Arduino? S, sin embargo, puede ser "sin cables " mediante el uso de una o XBee BlueSMiRF
Cmo configuro la interfaz de LabVIEW para Arduino para usar una conexin Bluetooth a mi Arduino? o XBee or BlueSMiRF o How Do I Setup the LabVIEW Interface for Arduino to use a Bluetooth Connection to my Arduino? 10. Puedo agregar mis propios sensores a la interfaz de LabVIEW para Arduino? S. Tanto el firmware y el VIS son de cdigo abierto pensado para la personalizacin. 11. Cmo funciona la interfaz de LabVIEW para Arduino (LIFA) de trabajo? En pocas palabras, la interfaz de LabVIEW para Arduino enva paquetes de datos de LabVIEW para Arduino. Arduino procesa los paquetes y enva paquetes de retorno. Los paquetes de retorno se analizan por LabVIEW para proporcionar informacin til para el usuario final. Cada paquete es de 15 bytes por defecto y contiene un encabezado, un byte de comando, los bytes de datos, y una suma de comprobacin. La longitud del paquete se puede cambiar para adaptarse a aplicaciones especficas mediante la modificacin del firmware y especificar el tamao del paquete a la VI Init en LabVIEW (La mayora de los usuarios no tendrn que hacer esto). El firmware LIFA en el Arduino procesa los paquetes, asegurando que los datos no se han daado durante la transmisin. A continuacin, una vez ledo el paquete, comprueba el byte de comando y ejecuta las instrucciones con los bytes de datos proporcionados basndose en el byte de comando.
16
7.
Para empezar debemos configurar Arduino y lo hacemos poniendo el bloque Init al que le asignamos los parmetros: Puerto de comunicacin Velocidad de transmisin Tipo de tarjeta Arduino Numero de bits de los paquete de comunicacin Tipo de puerto de comunicacin.
17
No olvidemos que estos parmetros a excepcin del puerto de comunicacin los asume por defecto el sistema, es decir que si no los ponemos el sistema los toma con esos valores. Para asignar las constantes mencionadas basta ponerse sobre el terminal con la herramienta de edicin en modo wire y pulsando el botn derecho del ratn podemos seleccionar el control a aadir con la opcin Create (Constant, Control, Indicador).
que se ejecutara continuamente hasta que pulsemos el botn Cerrar puerto, viene a ser el equivalente al loop de un programa escrito para Arduino. Dentro de esta estructura pondremos el bloque de configuracin de E/S y el de lectura de valor de Entrada de la tarjeta Arduino
18
En la entrada Pin Mode debemos seleccionar INPUT y la entrada Digital I/O PIN deberemos unirla a un bloque PIN Digital que creara el control correspondiente en el Panel y que en modo de ejecucin permitir cambiar la entrada a leer. IMPORTANTE: Es muy importante que se sepa que los PIN 0 y PIN 1 digitales estn ocupados en la comunicacin con LabVIEW por lo tanto nunca se deben seleccionar ni para leerlos ni para escribir en ellos. No debemos olvidarnos de realizar el cableado de los buses de conexin entre mdulos:
La salida del dato ledo es un dato tipo Integer de 8 bits por lo tanto se deber realizar la conversin a dato tipo booleano Para despus llevarlo a un indicador de tipo array booleano TRUE FALSE.
Pulsando para detener la ejecucin siempre se debe hacer pulsando en el botn del Panel Cerrar En la figura vemos el montaje de la aplicacin en el caso de testear la entrada 2 PIN 2
19
20
7.2.
Test 1
En el siguiente ejemplo se pretende realizar la lectura y escritura de valores en la tarjeta Arduino. Se enviar un valor analgico a la salida PWM PIN 3 que obtendremos de un elemento de panel. Se leer el valor del canal de entrada analgica A0 y se mostrar en un instrumento de aguja en el panel a la vez que en un instrumento termmetro. Finalmente se escribir un valor digital en el PIN 8 mediante un interruptor en el panel.
En la figura vemos el aspecto de nuestro Panel. Tal y como se puede observar en el diagrama de funciones de las siguiente figura procederemos de la siguiente manera. En primer lugar colocamos el bloque de inicializacin Init y le asignamos el parmetro de nmero de puerto, el resto le dejamos los que toma por defecto. Seguidamente configuramos el PIN 8 como salida. Dentro del bucle While loop procederemos a colocar los siguiente elementos: Un bloque de lectura de seal analgica Analog Read Pin tal como se muestra en la figura.
21
Este bloque necesita que le pongamos el valor del canal de entrada analgica Analog Input Pin y en su salida nos entrega un valor tipo Double que se corresponde con la lectura realizada. La salida la encaminamos a los instrumentos de medida MedidaA0 que ese corresponde con el medidor de aguja del panel.
El valor que representa el numero de PIN lo recibe de la correspondiente constante 8 que ya tenemos puesta para la configuracin del PIN y el valor Value que queremos sacar en la salida lo tomamos de un interruptor PIN 8 que a la vez tambin sacamos a un Led LED 8. Ambos en el panel. 22
El ltimo bloque de funcin que colocaremos dentro del bucle es el de escritura del valor analgico PWM en el PIN 3. Lo haremos configurando el numero de PIN 3 y mediante un mando tipo potencimetro Valor analgico designaremos el valor de la entrada Duty Cycle (0-255), conectando tambin un indicador tipo termmetro Salida.
Recordemos que para Arduino UNO las salidas tipo PWM son los pines digitales 3,5,6,9,10 y 11 Finalmente, ya fuera del bucle colocamos el bloque de cierre del canal Close y el bloque de tratamiento de error, que nos permita mostrar en la pantalla una ventana con informacin sobre los posibles errores que se produzcan.
23
7.3.
Comparador
En este ejercicio vamos a realizar una aplicacin que implica un sencillo clculo matemtico: una comparacin. Mediremos un valor analgico tomado del canal A0 y lo compararemos con una consigna, en este caso 2,5 realizaremos la comparacin > y < y recogeremos el resultado de estas dos comparaciones sobre unos Leds indicadores
En la figura anterior se muestra el aspecto del panel. El procedimiento de elaboracin del diagrama funcional es muy sencillo. Dentro de estamento While loop colocamos el bloque de lectura de valor analgico Analog Read pin que ya hemos utilizado en la anterior practica. La comparacin se realiza con dos bloques de funcin comparacin tal como se muestra en la figura. Por un lado ponemos el valor de comparacin 2.5 y por otro la seal leda del canal. Las salidas de los bloques se llevan a sendos diodos Leds indicadores: Mayor que 2.5 y Menor que 2.5
24
No debemos olvidar colocar dentro del bucle de lectura un botn cuya activacin sea la que nos saque de l: Desconectar. Finalmente se colocar el bloque de Cierre y el de Errores.
25
7.4.
Contador de Impulsos
Vamos a implementar una aplicacin que nos permita contar los impulsos que se reciben a travs de un pulsador en la entrada PIN (seleccionado por nosotros) y lo muestre en el panel. Colocaremos un LED que nos indique que el impulso recibido y un botn para parar
En la figura anterior se muestra el aspecto del Panel. Para realizar el diagrama funcional, como siempre colocaremos el bloque de Inicio. Dentro del bloque While loop pondremos dos bloque de la librera de Arduino: Un bloque para configurar el PIN de entrada Set Digital Pin Mode y otro para leer el valor Digital Read Pin. El contador propiamente dicho se implementa con la ayuda de un bloque del tipo Case Structure.
Este bloque tendr dos estados posibles tal como se muestra en las siguientes figuras:
26
En el caso False no hay impulso de cuenta el contador no sufre incremento y su valor se trasmite directamente a la salida. En el caso True, la entrada al bloque sera TRUE y se activa el contador incrementndose en 1. Para obtener la seal de gobierno de esta estructura se ha recurrido a un bloque que detecta transiciones de TRUE a FALSE.
La salida del bucle Case Structure se obtiene un valor tipo Integer que se lleva a un indicador. Finalmente se conectan los bloques de Cierre de canal y tratamiento de errores. En la figura siguiente se muestra u esquema de conexionado para realizar las pruebas fsicas de funcionamiento.
27
28
7.5.
En el siguiente ejemplo aadimos al contador explicado en el anterior la posibilidad de poner a cero el contador. Para ello todo ser igual a excepcin de que colocaremos un botn de Puesta a cero que llevara el contador al valor 0
En el esquema de bloques funcionales vemos que el sistema es el mismo a excepcin de que hemos aadido una funcin del tipo Select.
Esta funcin saca el valor de t cuando la entrada s es TRUE y saca f cuando su entrada s es FALSE.
29
30
7.6.
Intermitente
Abordamos en este ejemplo el clsico ejemplo con el que se comienza a estudiar Arduino: una salida intermitente en uno de los Pines digitales. Vamos a activar la salida digital PIN 8 de modo intermitente con intervalos de tiempo ajustables desde el Panel de control en tiempo de ejecucin. En este caso recurrimos a la ejecucin cada cierto tiempo del contenido de nuestro bucle While loop
En la anterior imagen vemos el aspecto del Panel y en la siguiente vemos el esquema de bloques funcional de la aplicacin. Como siempre inicializamos Arduino y despus definimos el PIN 8 como una salida. Dentro el bucle colocamos la funcin de escritura Digital Write Pin. Este bloque recibe la seal digital de la estructura que constituye el oscilador de frecuencia variable: Implementacin del reloj
31
Implementacin de un reloj En el bucle While Loop aadimos un Shift Register simplemente pulsado en botn derecho del ratn estando exactamente sobre el contorno del bucle, opcin Add Shift Register. De esta forma conseguimos que se ejecute sistemticamente cada cierto tiempo (el indicado en la opcin Tiempo) la operacin que hay dentro del bucle. Se trata de sacar TRUE y FALSE a travs de la seal Reloj.
Se ha colocado un operador AND para habilitar mediante un interruptor (Salida PIN 8) el paso de la seal de reloj al bloque Digital Write Pin de Arduino. Se han colocado tambin dos indicadores LED para muestra las seales de Reloj Salida Clock y la que activa la entrada del bloque Arduino de salida digital Habilitada Salida
32
33
7.7.
Semforo Simple.
Los circuitos de tiempo son muy utilizados en los automatismos. Uno de los mas clsicos ejemplos de estos circuitos es un semforo. En la siguiente practica realizaremos un semforo simple. Utilizaremos las siguientes salidas digitales para cada una de las tres lmparas del semforo: PIN Digital 8 9 10 Salida Rojo mbar Verde Tiempo 1000 ms. 1000 ms. 700 ms.
El tiempo de activacin de cada lmpara en este primer ejemplo ser fijo y de 1seg. En la figura siguiente vemos el aspecto del Panel en modo ejecucin.
Se muestran las tres lmparas y el botn Parar. El proceso que seguiremos en el montaje es el siguiente: 1. Inicializamos la conexin de Arduino mediante el bloque Init. 2. Configura como salidas de cada una de las tres lmparas: PIN (8) Roja, PIN (9) mbar y PIN (10) Verde. Esto lo hacemos mediante los tres bloque de funcin Set Digital Pin Mode de la librera de Arduino
34
3. Genera las seales Rojo, Amarillo y Verde. Mediante una estructura tipo Case Structure que en nuestro caso le aadiremos hasta tres casos o estados que se asociaran a cada uno de los estados de nuestro semforo.
En las figuras siguientes se muestra cada uno e los casos creados. Hemos definido como estado de inicio en la secuencia de ejecucin el Rojo
Estado Rojo. En el vemos que el estado siguiente debe ser Verde y que la secuencia ser: Rojo (TRUE), mbar (FALSE) y Verde (FALSE). Tiempo 1000 ms.
Estado mbar. En el vemos que el estado siguiente debe ser Rojo y que la secuencia ser: Rojo (FALSE), mbar (TRUE) y Verde (FALSE). Tiempo 1000 ms.
Estado Verde. En el vemos que el estado siguiente debe ser mbar y que la secuencia ser: Rojo (FALSE), mbar (FALSE) y Verde (TRUE). Tiempo 700 ms.
35
4. Escribe los valores de las seales Rojo, mbar y Verde en los PINES de salida Digital correspondientes. Es importante que observemos como las salidas del secuenciador so de tipo TRUE/FALSE por eso debemos convertirlas al tipo de seal admisible por los bloques Digital Write Pin que escriben los valore en las salidas fsicas de Arduino. 5. Cierra el puerto mediante el bloque Close 6. Tratamiento de los errores. Mediante el bloque Simple Error
36
7.8.
Semforo Ajustable
A continuacin proponemos u ejercicio de semforos en el que los tiempos de encendido de cada lmpara sean ajustables por el operador. Los pines de salida son los mismos y en el Panel se han incluido los objetos de entrada de valor para cada uno de los tiempos: T. Rojo, T. Ambar y T. Verde.
La realizacin funcional de la aplicacin es la misma que la explicada anteriormente con la nica diferencia de que en cada uno de los tres estados de la estructura Case Structure se ha incluido un elemento distinto para la designacin de tiempo. En las figuras que se muestra a continuacin podemos distinguir cada uno de los bloque de captura de valor
38
7.9.
Sabemos que Arduino tiene la posibilidad de programar algunas de sus salidas digitales como salidas del tipo PWM (seal de pulso modulados en amplitud) que viene a ser una cuasi salida analgica. Estos pines para Arduino UNO son (Pines digitales 3,5,6,9,10 y11) En este montaje vamos a enviar a la salida PWM del PIN 9 un valor comprendido entre 0 y 255
El diagrama funcional de esta aplicacin muy sencillo. Por ser una salida digital no es necesario programarla como tal ya que por defecto todas los los Pines digitales estn programados como salidas.
Se comienza con el bloque Init fuera del bloqe While Loop y dentro se utiliza el bloque PWM Write Pin en el qe designamos que el PIN ser el 9. La entrada de seal para este bloque la cableamos de un objeto del tipo Slide al que configuramos en la escala 0-255.
39
40
El diagrama funcional es muy sencillo. Se realiza la inicializacin de Arduino y luego, ya dentro el bloque de control de bucle se han colocado un elemento Select Digital Pun Mode para configurar el modo de trabajo de la salida seleccionada y un bloque Digital Write Pin que permite el envo de la seal al PIN seleccionado mediante el bloque Digital Pin que hemos etiquetado como Seleccin de PIN Al bloque Digital Write Pin se le ha colocado en su entrada un interruptor que hemos etiquetado como Activa/Desavctiva que entrega un valor de tipo True/False y que convertimos en un valor tipo Integer se ha colocado tambin el indicador de estado mediante un LED al que hemos etiquetado como Estado salida
41
La siguiente imagen muestra un circuito para probar el funcionamiento del programa. Se han conectado hasta tres diodos leds en las salidas 8, 9 y 10 para probar, pudindose cambiar las conexiones.
42
Aqu recurrimos a dos bloques de funcin de la librera Arduino hasta ahora no utilizados: Digital ReadPort, Analog Read Port y Digital Write Port. Despus de inicializar arduino con el bloque Init, dentro del bucle de control colocamos estos tres bloques. Lectura del puerto digital: En este caso se trata de realizar la lectura del estado de todas las entradas digitales de Arduino. Se realiza con el vbloque de la figura
Es muy importante que se sepa que los canales digitales 0 y 1, PIN 0 y PIN 1 estn reservados para la comunicacin con LabVIEW por lo tanto su lectura obedece al trfico de datos que se est realizando y en ningn caso se podrn colocar interruptores de entrada en esos canales.
43
El dato que entrega el bloque es un Array de dimensin 1D. para poder visualizar estos datos tenemos que seleccionar un elemento de visualizacin de tipo Indicador que mostrar todo el array. Bastara, en el Panel de visualizacin estirar la caja del indicador para mostrar todo el contenido del array. Las salida en este caso se ha llevado a un indicador que hemos etiquetado con el nombre Lectura Canales Digitales
Para leer en un array todo el bloque de entradas analgicas, dese el canal A0 hasta el A5 se recure a este bloque Analog Read Port que entrega en su salida un array con los valores de los 6 canales analgicos.
Para escribir datos en el puerto de salida digital se utiliza el bloque Digital Write Port poniendo en su entrada un valor en forma de Array de datos, mediante el control que hemos etiquetado como Datos a escribir que saca por su salida.
44
Este es el montaje para poder probar el gobierno de salidas. Bastara con cambiar el hilo de la salida para comprobar que funciona.
45
En la imagen vemos como quedara el panel de control. Se podr seleccionar el nmero de servos a controlar, cerrar el canal de comunicacin y luego controlar cada uno de los servos. Servo 0: Se controlara la velocidad y el anulo mximo girado Servo 1: Se controlar el ngulo girado. Para el desarrollo del diagrama funcional tenemos que contar con cuatro nuevos tipos de bloques de funcin de la librera Arduino. 1. Inicializar la conexin a la placa Arduino. Si no se conecta a la entrada de recursos VISA del bloque Init intentar auto conectarse a la placa Arduino. Para acelerar la conexin o para conectarse de forma inalmbrica utilizar un recurso VISA constante para especificar el puerto COM a utilizar. 2. Establecer el nmero de servos a utilizar. Esto crea una matriz de cero ndice de los servos en el Arduino. Despus de especificar el nmero de servos que desea utilizar se puede hacer referencia a ellos por el nmero (comenzando con 0). 3. Configuracin de los dos servos digitales asignndoles pines I / O (10, 11)
46
4. Escribir un ngulo de 0 servo basado en la repeticin del bucle. Servo 0 barre desde los 0 grados en el ngulo de usuario y la repeticin. Este ngulo tambin se lee desde el servo y se muestra en el panel frontal. 5. Ajuste manualmente el ngulo del servo 2. Este ngulo tambin se lee desde el servo y se muestra en el panel frontal. 6. Cierra la conexin con el Arduino 7. Controlar los errores.
Para empezar, una vez que hemos colocado el bloque de funcin Init se procede a configurar los servos. Primero debemos decir cuntos son los servos que se van a tener en cuenta: Set Numbers of servos se llevar a la entrada un valor elemento de control que genere un numero de tipo Integer se hace pulsado el botn derecho sobre la entrada y seleccionando Create-Control en el men contextual que aparece. Asi creamos la caja de seleccin Numero de servos
A continuacin pondremos dos bloques del tipo Configure Servo uno para cada uno e los dos servos que vamos a gobernar. Este objeto debe parametrizarse con el numero de servo y el pin de salida que utilizaremos para llevar al servo: Servo Number y DIO Pin
47
Una vez dentro del bloque de control controlaremos los servos de la manera siguiente: En primer lugar escribiremos en el Servo 0 mediante el bloque de funcin Servo Write Angle mediante un control el Angulo a girar en grados
La seal creada se lleva a la entrada Angle del bloque El siguiente bloque Servo Read Angle sirve para leer la posicin del Servo devolviendo el valor en Angle (Degrees) que se lleva a un indicador analgico Servo 0
El Servo 1 se gobernar de la misma forma que el anterior con un bloque de tipo Servo Write Angle cuya entrada conectamos a un control de tipo analgico al que hemos denominado Angulo Finalmente se colocar un bloque Servo Read Angle que nos indicara la posicin del servo y la mostraremos con un instrumento analgico denominado Servo 1
48
49
En la figura se muestra el aspecto del Panel. La implementacin como siempre comienza por el bloque Init seguido de los bloques de configuracin de PIN Set Digital PIN Mode
Dentro del bucle de ejecucin se deben colocar dos bloques de lectura de PIN Digital Read Pin y uno de escritura Digital Write Pin. La seal que gobierna este ltimo bloque se obtiene de realizar la funcin AND de las salidas obtenidas de las lecturas del PIN 9 y PIN 10. Los elementos de visualizacin de estado se han colocado en las salidas de los tres bloques. No olvidemos que las seales deben convertirse de Array 1D a Array booleano mediante el bloque de funcin:
50
Para convertir
Finalmente se deben colocar el bloque de Close y el de Simple Error Handler. El esquema de montaje para realizar las pruebas es el siguiente
51
7.14. Temperatura 1
(traducido y adaptado del original Electronique Innovate) http://innovelectronique.fr/2012/05/04/arduino-et-lifa-labview-interface-for-arduino/ Este ejemplo esta sacado de la pagina Web que se indica anteriormente y bsicamente sirve para demostrar cmo es posible representar grficamente el valor de un canal analgico en un grafico. En este caso se fija un tiempo de muestreo de la seal con el fin de realizar la lectura del modo que hacen los sistemas de adquisicin de datos reales.
En la figura anterior se muestra el aspecto del Panel en el que se hace uso de un indicador analgico Knob etiquetado como Temperatura instantnea de tipo circular y un trazador grafico tipo Chart etiquetado como Evolucin de la temperatura en intervalos de tiempos. Se puede observar tambin un slider para ajustar el tiempo de muestreo. Finalmente figura el Botn de parada etiquetado como Detener Para realizar la toma de muestras se ha recurrido a un generador de intervalos que
52
ejecuta cclicamente el contenido del bucle esta funcin se alimenta con una entrada de valor proporcionada por un Slide etiquetado como Intervalo de medida en s.
Los valores ledos del canal de entrada analgico Temperatura instantnea muestran en un medidor de aguja a la vez que en el registrador grfico
se
La figura anterior muestra el esquema funcional completo y la siguiente el esquema de montaje para las pruebas.
53
54
L293D Tabla de funcionamiento del Motor 1 CHIP INHIBIT 1 H H H H L INPUT 1 L H L H X INPUT 2 H L L H X FUNCION Gira a la Derecha Gira a la Izquierda Para rpida del motor Para rpida del motor Para rpida del motor
Este circuito es relativamente fcil de implementar y lo haremos con un solo motor que simplifica an ms el conjunto. Tngase en cuenta que se trata de drivers para el gobierno de dos motores de corriente continua ( http://www.lextronic.fr/P5073-platinede-commande-de-moteurs-dc.html ). Descripcin de pines para el control del Motor 1: El Pin 1 (CHIP INHIBIT 1) sirve para activar el Motor 1. Si este pin est conectado a una salida de Arduino del tipo PWM, se puede variar la velocidad del motor haciendo variar el valor de salida de este PIN. Los Pines 2 (INPUT 1) y 7 (INPUT 2) permiten fijar el sentido de giro del motor o la parada. Los pines 3 (OUT 1) y 6 (OUT 2) son los pines de salida de potencia del motor.
55
Pin 16 (VSS) recibe una alimentacin de 5V de la placa Arduino. El pin 8 (Vcc2) est conectado a una pila de 9 V para asegurar el suministro de potencia del motor. Para el MOTOR 2 se utilizan los pines del otro lado del chip (9 al 16) Finalmente, los pines 4,5,12, 13 estn conectados a tierra (GND del Arduino y el polo negativo de la batera). Se obtiene el diagrama de cableado siguiente:
Los pines 7 y 8 de la tarjeta Arduino son salidas digitales para controlar la direccin del motor, el pin 11 el modo PWM. La direccin de rotacin sigue la siguiente tabla: La parte frontal de este ejemplo es muy simple (un mando nico que evoluciona desde 100% a 100%, el smbolo utilizado para fijar la direccin de rotacin):
56
El programa de LabVIEW se pueden presentar de la siguiente manera (la nica parte que vara de uno a captar el otro es el interior de la prueba de la caja: Verdadero y Falso:
En la figura anterior se muestra el esquema funcional de trabajo. Para empezar se inicializa la conexin con Arduino. Seguidamente se configura el PIN digital 8 como salida sentido Derecha. y el PIN 9 como salida sentido Izquierda. Dentro del bucle se ha colocado una estructura tipo Case Estructure que se encargara del gobierno del motor. La ejecucin del bucle se realiza en intervalos de 200 ms. Los casos a tener en cuenta en esta estructura son dos, que se corresponden con los dos posibles sentidos de giro del motor.
57
En el primer caso True el sentido de giro es a la Izquierda por lo que debemos sacar los valores correspondientes en las salidas PIN 7 y PIN 8 de Arduino. La velocidad se recoge del control tipo numrico de aspecto circular que hemos etiquetado como Velocidad y sentido de giro PIN Arduino Valor PIN L293D INPUT 1 0 PIN L293D INPUT 1 1 Giro
PIN 7 PIN 8
0 1
Izquierda
En el segundo caso False el sentido de giro es a la Derecha por lo que debemos sacar PIN Arduino Valor PIN L293D INPUT 1 1 PIN L293D INPUT 1 0 Giro
PIN 7 PIN 8
1 0
Derecha
58
Se han colocado dos indicadores de giro Derecha e Izquierda para saber en que sentido esta girando el motor. La conmutacin de la estructura Case Structure se realiza mediante un operador del tipo Greater or Equal To 0
La velocidad se genera en una escala de -100 a 100 por lo que se debe multiplicar por 2.5 para alcanzar los 255 que es el valor mximo que se puede sacar en una salida PWM equivalente a 5v. en el PIN 11 Finalmente en la salida del bucle se detiene el motor enviando un 0 a la salida PWM PIN 11 se cierra el puerto y se tratan los errores.
59
La secuencia de inicializacin para integra este elemento en el bus I2C es la que sigue (contamos con que los pines A0, A1 y A2 se conectan a masa GND): 1. Condiciones de inicio (start) 2. Escriba 0 90: se selecciona la casilla A2A1A0 = 000 escribir 3. Escribir 0xac: se escribe en el registro de configuracin 4. Escriba 0 00: conversin de la temperatura continua 5. Condicin de parada (stop) 6. Esperar 20 ms: escribir eeprom de la configuracin anterior 7. Condiciones de inicio (start) 8. Escriba 0 90: se selecciona la casilla A2A1A0 = 000 escribir 9. Escribir 0xEE son: lanzamiento de la conversin a la temperatura constante 10. Condicin de parada (stop) La siguiente secuencia se usa para leer la temperatura: 1. 2. 3. 4. 5. 6. 7. 8. Condiciones de inicio (start) Escriba 0 90: se selecciona la casilla A2A1A0 = 000 escribir Escribir 0xAA: solicitud de lectura de la ltima temperatura la muestra Condiciones de inicio (reinicio) Escriba 0 91: se selecciona la casilla A2A1A0 = 000 readLeer todos los 8 bits de la temperatura Leer todos los 8 bits de la configuracin de la temperatura y un NACK! Condicin de parada (stop)
60
Te das cuenta que no es fcil, pero vamos a tratar de poner en prctica todas las funciones de LabVIEW con Arduino. Dependiendo de la versin de la tarjeta Arduino UNO tiene el SCL y SDA pines no son el mismo lugar (ONU Rev2: A4 = SDA, SCL = A5; UNO Rev3: dos pines en un dedicado SCL y SDA). Al escribir este tutorial tengo una placa Arduino rev2 UNO, el siguiente diagrama de cableado es adecuado para esta plataforma:
61
Nota: Un indicador que se utiliza para seleccionar la direccin del sensor DS1621 en el bus I2C. Bajo el ttulo "Datos I2C" es en realidad una forma de tabla de indicadores, se puede ver los datos ledos del bus I2C. El diagrama se puede presentar como sigue:
En primer lugar para entender cmo trabaja el VI sub I2C mir a las seales procedentes de la Arduino I2C en un osciloscopio y debo decir que me ayud. La lectura del diagrama de izquierda a derecha:
62
1. La inicializacin del bus I2C (TWI en el arduino terminologa) 2. La inicializacin del DS1621. Primera direccin del componente. La direccin es de 7 bits (MSB primero), los primeros 4 son fijos (ver la documentacin en el 1001), el ltimo 3 estn fijados con los pines A2A1A0. En nuestro caso A2A1A0 = 000 por lo que la direccin es 0b1001000 componente en el sistema binario o hexadecimal 0 48 o 72 en decimal. As que tienes la explicacin de los 72 valores en la parte delantera. Entonces usted tiene que escribir los valores 0xac (172) y 0 00 (0): el papel de la primera sub VI "Write I2C". 3. Despus de la inicializacin. Normalmente se tarda alrededor de diez intervalos de tiempo, con la transmisin de 15 bytes hacia LabVIEW para el Arduino lleva su tiempo, podemos considerar que la operacin se lleva a cabo. Se escribe el valor de 0xEE son (238). En este punto el DS1621 se inicializa correctamente.
63
4. A continuacin, entra en un bucle infinito. La temperatura ser solicitada cada 500 ms. Para aplicar la temperatura final, escribir el valor 0xAA (170). 5. A continuacin, lea el resultado: aqu el DS1621 tiene que enviarnos dos bytes, donde el valor 2 en la sub VI "Lee I2C". Este sub VI tambin es responsable de hacer el NACK final (verificado con un osciloscopio). Esto produce una matriz 1D con dos cajas que contienen de 8-bits sin signo. Estos datos se muestran como los datos en bruto en el indicador en el frente "de datos I2C". 6. Debemos tratar a los dos valores proporcionados por el DS1621. Empezamos por la extraccin de los datos de la Tabla VI, en el marco del "ndice de matriz". El ndice de '0 ': 8 MSB del resultado de la temperatura y el ndice de tipo entero firmado '1': 8 LSB de la conversin: en nuestro caso, este byte tomar dos valores: o bien 128 para indicar es necesario aadir 0,5 C o 0. 7. A continuacin se recogen las seales y la temperatura real se muestra en el termmetro. 8. Esto funciona, pero tenga en cuenta que no se ocupa de temperaturas negativas. Ese es un ejercicio que se queda sin hacer. Intntelo usted.
64
65
El cdigo de Arduino se muestra a continuacin. Se basa enteramente en el "Servidor Web" ejemplo, es entonces suficiente para simplificar. El cdigo est comentado as que lea con cuidado!
/* Serveur TCP O. DARTOIS, le 23/05/12 Source directement base sur l'exemple Web Server */ #include <SPI.h> #include <Ethernet.h> // Adresses MAC et IP changer suivant vos besoins byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192,168,1, 177); // Initialisation de la librairie ethernet // et cration d'un objet "Server" qui va accepter // les connexions extrieures l'adresse IP defini plus // haut et sur le port indiqu (ici 8000) EthernetServer server(8000); void setup() { Ethernet.begin(mac, ip); // Initialisation de la pile TCP/IP server.begin(); // Dmarrage du serveur pinMode(3,OUTPUT); // Broche 2 en sortie (DEL) digitalWrite(3,LOW); // Broche 2 0 => DEL eteinte analogReference(INTERNAL); // Rfrence du CAN 1,1V } void loop() { // Attente des connexions et cration d'un objet client s'il y a lieu EthernetClient client = server.available(); if (client) { // Un client existe while (client.connected()) { // il est connect if (client.available()) { // et il a envoy des caractres char c = client.read(); // on lit le caractre reu if (c == 'A') digitalWrite(3,HIGH); // si c'est 'A' on allume la DEL if (c == 'a') digitalWrite(3,LOW); // si c'est 'a' on teint la DEL } // on renvoie au client une chaine de caractre qui reprsente le rsultat de // la conversion AN (par ex: '236') suivi des caractres CR+LF server.println(analogRead(0)); delay(100); // On ralenti un peu le flot de donnes } client.stop(); // Fermeture de la connexion } }
Una vez que el cdigo compilado e instalado en el arduino con su ethershield, vamos a hacer un panel frontal de LabVIEW para controlar el conjunto.
66
Como se puede ver, el esquema es muy simple ... es especializado en el LabVIEW VI que lleguemos a ese nivel de simplicidad. Una pequea explicacin de todos modos: el lado del servidor arduino implementa una pila TCP / IP pero es bastante fcil hablar en una red ethernet. Que utiliza las direcciones IP y la versin 4 de IP que se puede hacer de enrutamiento, lo que significa que usted puede poner una caja de montaje detrs de su casa y acceder a ellos desde cualquier lugar en Internet. El protocolo de transporte TCP se utiliza aqu, es un protocolo de transporte de datos en modo conectado y confiable. Esto normalmente significa que sus datos siempre llegarn con seguridad! La prdida de paquetes ser administrado por TCP y no por usted. Como puede verse, se utiliza TCP como el protocolo de transporte y para hacer el intercambio de datos de trabajo con "conexiones" de redes. Todo esto va a ser tapado por el VI disponibles en la paleta "Comunicaciones de datos" y "Protocolos" y "TCP". Para interactuar con el arduino, debe seguir los siguientes pasos: 1. VI puso una "conexin TCP Abrir" y luego configurarlo. En nuestro caso, la direccin IP del arduino es 192.168.1.177 y el puerto de escucha es el 8000. Para ello ser necesario que el equipo est en la misma red que el arduino. Por ejemplo, aqu la direccin IP de su computadora porttil podra ser 192.168.1.15. 2. Una vez que la conexin est abierta, puede enviar datos con el VI "TCP escribir". Toma como entrada de caracteres o cadenas. Aqu, segn el estado de la tecla "Control del LED", le enviaremos el carcter 'A' (para la luz LED, vea el cdigo arduino) o 'a' del personaje.
67
3. Para recibir datos, se utiliza el VI "TCP Lea" lo llama un "buffer" bytes para almacenar los datos recibidos (en este caso he puesto 10, incluso si vamos a recibir menos caracteres). En contra de lo que es importante es el "modo" de operacin de este VI. Aqu est en "CRLF": es decir, se espera que el bfer est lleno para ajustar su salida de los caracteres recibidos, cuando se recibe "CRLF", lo pone en sus caracteres de salida recibido NO CRLF. Usted puede entender mejor por qu este es el mtodo "println" y no "impresin" que se utiliz (println aade de forma automtica despus de los caracteres CRLF que ha pasado). La cadena recibida se muestra como "raw" en el indicador de "recibido datos". Desea mostrar la temperatura en un metro, pero debe transformar al resultado de la conversin AD del arduino que hemos recibido un nmero. Es el papel de la sub VI "nmero decimal de la cadena" y se multiplica por el coeficiente de encontrar la temperatura (quantum = sensibilidad 1074.10-3 y sensor de 10 mV / C). Finalmente mostrar la temperatura en C en el metro. 4. Cuando se detiene el bucle infinito con botn de parada correctamente debe cerrar la conexin TCP con el VI "Cerrar conexin TCP". A continuacin, muestra los errores. Pruebe todo y ver que es funcional. Modifique el diagrama de bloques y el cdigo de Arduino para controlar el LED PWM por ejemplo ...
68
La construccin de Bloques Funcionales mostrada en la figura siguiente es muy sencilla. Vemos que se colocan los dos bloques Init y Close que facilitan la configuracin de la tarjeta y el cierre del puerto respectivamente. En el bucle del programa (dentro de la recinto While Loop se colocara un bloque de lectura de canal analgico Analog Read Pin que recoge el valor de la seal del pin que seleccionemos mediante el bloque de Seleccin de Entrada Analgica La salida de este bloque (valor ledo) se llevara por un lado a la caja de texto que visualiza el valor Voltage .
69
Para salir del bucle de ejecucin While Loop se utiliza un botn Stop y a la vez tambin se puede salir si se produce un error mediante el bloque Status
70
Modulo BlikM Para empezar configuramos Arduino como siempe con el modulo Init en este caso no le hemos puesto los conectores de parametros porque suponemos que ya se han colocado en el SubVI Init pulsando dos veces sobre el bloque se muestra la venta desde donde podemos designar estos valores. En la figura se ve.
Pulsando dos veces sobre el icono del blorque aparecer la pantalla vi del objeto de a librera y vemsos que se pueden modificar aqu os parametros que por defecto presenta
71
No olvimos que el sistema de LabVIEWes capaz de reconocer lo qe tiene conecatdo en el puerto es decir autodetectar la conexin, lo cual ayuda a la configuracion de la aplicacin. El siguiente bloqe a conectar es el que permite hacer constancia de que tenemos un elemento BlinkM Init que como sabemos se comunicara con Arduino a tarves del protocolo I2C uniendose al bus como master para controlar e componente BlinkM
Una vez dentro del bucle lo que debemos hacer es crear la seal Color bloque RGB To Color con la que alimentaremos el bloque BlinkM GoToRGB
En la siguiente figura venos el esquema completo que lo cierran, como siempre los bloques Close y Error
72
El montaje es el de la figura.
73
En este ejemplo se trata de realizar la medida de una seal de entrada toamndo muestras de su valor con una frecuencia de mutreo que podemos definir mediante una objeto de asignacin de valor Frecuencia de Muestreo (Hz). Una vez realizada la incializacion de la tarjeta debemos colocar el bloque Continuous adquisition en el que sus parmetros de configuracin son dos:
Pin Entrada Analogica Designa el pin por donde leeremos Frecuencia de Muestreo (Hz) que permite asignar la frecuencia con la que se tomaran las muestras
Dentro del bucle se colocara la funcin Continuous Adquisition Sample que es la que devuelve el valor ledo en su salida Date que se llevara a un objeto de representacin
74
Montaje de pruebas
75
El ncleo de nuestra programa ser el bloque Get Finite Analog Sample que realiza las funciones p`ropias de adquisicin de las muestras y su entrega a un bloque de representacin grafica.
Observamos en este ejemplo que no se ha colocado un bloque tipo While Loop dado que una vez recogidas y mostradas las muestras el programa se debe detener.
76
77
Se trata de realizar una aplicacin para medir la cantidad de luz del ambiente. Para ello recurrimos a un bloque de funcin de la librera LIFA que realiza justo esta tarea. Bloque Phocell Read Los Parmetros que hemos de configurar en este bloque se muestra n la figura
El pin a la que conectaremos la fotoclula Photcell Pin la tensin de referencia mxima que colocamos en este montaje, normalmente es 5v. sacada de la propia tarjeta Arduino La salida del bloque es el valor equivalente a la luz medida comprendido entre 0 y 100
En este montaje la salida del bucle se ha colocado mediante un botn Stop y tambin si se produce un evento de error En la figura siguiente se muestra el aspecto de la ventana Panel en modo ejecucin
78
Montaje de pruebas
79
El Bloque RGB LED Configure permite designar los pines por dinde sacaremos el valor analgico tipo PWM para cada uno d elos pines RGB del LED. Red Pin Green Pin Blue Pin PIN 6 PIN 5 PIN 3
80
No olvidemos que deben ser pines del tipo PWM (en Arduino UNO son los pines 3,5,6,9,10,11) Una vez dentro del bucle se colocara un bloque de escritura para sacar los valores por cada una de las salidas: RGB LED Write. La informacin de los PIN de las salidas se recoge del bloque de configuracin anterior RGB LED Pins
La entrada Color de este bloque de escritura la recogemos a travs del bloque RGB to Color que a su vez tiene como entradas cada uno de los valores que colocamos en elos sliders de entrada de color (Rojo, Azul y Verde) salida de este bloque nos permite
Se ha colocado un indicador de color en la salida de este bloque para mostrarnos una muestra del color que estamos sacando por el LED RGB: Color A continuacin mostramos el esquema funcional completo.
81
82
Estos valores los pondremos, en esta ocasio0n, a travs del Panel de visualizacin. La visualizacin del valor analgica (temperatura) ledo la mostraremos con una barra de color Temperatura y un cuadro numrico.
83
Este es el aspecto del diagrama de bloques funcional. Se ha cableado la seal de rror para que permita salir del bucle. No olvidemos que el control Init tiene unos valores por defecto, si no nos interesan estos podemos cambiarlos pulsado dos veces sobre el bloque.
84
Se designaran los PIN para los colores Rojo, Verde y Azul Red Pin: Green Pin: Blue Pin: PIN 6 PIN 5 PIN 3
La salida de este componente se deber llevar luego al bloque RGB LED Write Seguidamente configuramso el joystick para lo cual designamos
Los pines para cada eje y para el botn. Horizontal Axis AI Pin: Vertical Axis AI Pin: Select DI Pin: 2 3 4
85
En este caso igual que en el anterior este bloque posee una salida que contiene la informacin de configuracin del joystick que deber trasladarse al bloque Thumbdtick Read Dentro del bucle de control colocamos en primer lugar el bloque Thumbdtick Read que lee la posicin y estado del boton del joystick y lo saca en sus salidas Horizontal Axis, Vertical Axis y Select
La informacin que entrega este control, se lleva a un bloque convertidor Thumbstick Value to Angle que convierte los valores x e y en un valor angulo que entrega a un bloque que convierte este valor en un color Angle Mag to RGB
De este bloque utilizamos las salidas Degrees y Magnitude para atacar el siguiente bloque que las convertir en un color, salida RGB Color
Finalmente esta seal se llevar a un bloque de salida RGB Color RGB LED Write
El LED RGB se configurar escribiendo los pines de salida RGB Color en el pin de entrada Color del bloque RGB LED Write
86
A continuacin se muestra el diagrama completo de conexionado de bloques. Bsicamente los pasos son los anotados en la imagen siguiente: 1. 2. 3. 4. 5. 6. 7. 8. 9. Inicializar la conexin con el Arduino con la tasa de baudios de 115200 DEFAULT. Configuracin de LED RGB Configuracin de pines para el uso con el joystick Leer los valores de joystick (horizontal y vertical del eje y de seleccin) Convertir los valores de joystick con el ngulo y la magnitud Convertir el ngulo y la magnitud de color y la intensidad Escribe el color de LED RGB Cierra la conexin con Arduino Controlar los errores
87
Esquema de conexiones
88
Esta librera se encarga de generar una seal de frecuencia variable en la que es posible tambin variar la duracin. Es decir genera tonos de duracin y frecuencia variable. Probaremos su funcionamiento generando un tono a travs de uno de los PIN de salida digital seleccionable con un control numrico desde el Panel en el que adems podremos variar frecuencia y duracin. Vemos en la siguiente figura el aspecto del diagrama de bloques funcional.
Se ha colocado dentro del bucle de ejecucin el bloque Tone y en esta ocasin se ha cableado la seal de error para que esta pueda tambin cerrar el bucle y detener el programa. En la siguiente figura se el Panel. No olvidemos que en los PIN 0 y 1 no se podr sacra tono alguno dado que estos estn ocupados para la comunicacin con LabVIEW.
89
90
Arduino+LabVIEW Bundle
49.95$ (agosto 2012)
91
Nota: Aunque las imgenes muestran a la ahora obsoleta LabVIEW 2010, que son el envo de 2011. La foto de Arduino no es tambin la R3 a pesar de que este paquete incluye ahora la ltima Arduino Uno R3. Imgenes de los productos se actualizarn para reflejar este cambio. Caractersticas: Utiliza USB, XBee, o enlaces Bluetooth para la comunicacin. Tasa de 150 Hz con conexin de cable (50 Hz Wireless). Le da acceso a analgica de Arduino, digitales, PWM, I2C, SPI y la funcionalidad en el equipo. Completamente de cdigo abierto del firmware (E / S del motor en el Arduino) y el marco de LabVIEW.
92
Permite seleccionar un Pin de Entrada Analgica Permite seleccionar un Pin de Entrada Salida Digital
Permite designar un Pin como Entrada o como Salida Selecciona el tipo de Tarjeta
Modo de dato Permite seleccionar el puerto con el que nos comunicaremos con Arduino
93
Modulo de Inicio de la Tarjeta Arduino Este mdulo es imprescindible n cualquier configuracin que hagamos, permite configuar las caractersticas de Arduino. Por defecto viene con los parmetros que se indican en la figura anterior. Los conectores Arduino Resorce y error out se deben cablear a todos los elementos que se coloquen en el diagrama con el fin de que los parmetros de configuracin se transfieran a todos los bloques.
94
Lectura de una entrada analgica de Arduino. Recoge de entrada el nmero de canal en formato INTEGER y devuelve de salida el valor ledo en formato DBL.
95
Configura un PIN digital como Entrada o salida. Los parmetros de entrada sern el nmero de puerto y el modo de trabajo (I/O).
Lectura del valor en un pin digital. Lee el valor de una entrada digital designada mediante el parmetro Digital I/O y saca el valor en su salida Value.
96
Lectura del puerto digital. Lee el puerto digital completo y lo saca en el terminal Digital Port en formato 1D Array
Escritura en PIN Digital.Escribe un valor digital (0 o 1) Value, en el Pin indicado en Digital I/O Pin
Escritura en puerto digital: Escribe de una sola vez los valores a los 14 PINs de entrada salida digitales de la tarjeta Arduino. Primero debe configurarse como salida digital el conjunto de pines Digitales
97
Escritura en salida Analgica PWM: Escribe un valor entre 0-255 en la salida especificada en el Pin
Configura3 PIN como salida PWM: Se indican los PINs y devuelve el valor de los puertos configurados
Escribe el puerto PWM: Controla tres salidas PWM cuyo nmero de PINs los recoge del valor PWM PINs. Los valores de cada seal se suministran en los pines de entrada PW 0, PWM 1 y PWM 2
98
Genera un Tono: Genera un tono de frecuencia y duracin variables en el PIN designado mediante Tone DO Pin
99
Librera SPI
100
101
Adquisicin continua de datos: Permite activar la lectura de datos en el de una entrada analgica teniendo la posibilidad de asignar el tiempo de muestreo en la lectura
Adquisicin de un numero de muestras de valor: Lee un determinado numero de veces (muestras) un canal de entrada analgica con una frecuencia de barrido determinada por el usuario.
102
Recoge un numero finito de muestras de datos: Recoge un determinado nmero de muestras por un Pin analgico devolviendo un array de datos con los valores
Librera Sensores
En esta librera se ofrece una amplia coleccin de bloques de funcin que permiten la configuracin de la conexin de seores a la tarjeta Arduino
103
Lee el valor de un sensor de Temperatura: Permite la configuracin del PIN en el que se colocara el sensor as como el valor de la resistencia divisora de tensin que conectemos con el fin de realizar el escalado de la medida y tambin la posibilidad de establecer una tensin de referencia distinta a los 5 vcc que por defecto toma. Devuelve un valor de tipo Double equivalente a la temperatura medida.
Lee el valor de un sensor de Luz: Permite la configuracin del PIN en el que se colocara el sensor as como el y tambin la posibilidad de establecer una tensin de referencia distinta a los 5 vcc que por defecto toma. Devuelve un valor de tipo Double entre 0-100 equivalente a la cantidad de luz medida.
104
Lee el valor de un sensor de Infrarrojos: Permite la configuracin del PIN en el que se colocara el sensor. Devuelve un valor de tipo Integer equivalente a la temperatura medida.
Configura un LED RGB: Se designan los pins para salida de cada color
Escribe en un LED RGB: Se escribe el valor Color sobre un led RGB en los pines designados RGB LED Pins
105
106
Configura un joystick: Se designan los pines analgicos para el eje X y el eje Y as como la entrada digital para el botn se seleccin. Genera una seal de salida en forma de clauster de 3 elementos
Lee valores de un joystick: Lee los valores y los presenta en las salidas correspondientes a los ejes X e Y y Seleccin
107
Librera BlinkM
108
Configura motor paso a paso: Especifica una salida para conectar un motor.
Escribe valores sobre un motor paso a paso: Escribe el nmero de pasos a girar y la velocidad de generacin de pasos, as como el motor a activar
Confirmacin de funcionamiento del motor paso a paso: Indica en su salida el nmero de pasos que faltan para alcanzar la consigna dada.
109
110
Libreras de Servos
111
112
Librera LCD
113
Librera Utilidades
Ejemplos
114