Arduino + LabVIEW

Embed Size (px)

Citation preview

  • 5/28/2018 Arduino + LabVIEW

    1/114

    1

    Labview + Arduino

    Utilizacin de Labview para la Visualizacin y Control de laPlataforma Open Hardware Arduino

    +

    Arduino

    Jos Manuel Ruiz Gutirrez

    Jos Manuel Ruiz Gutirrez

    Ver. 1.0

    6

    Serie:Herramientas Grficas para la programacin deArduino

  • 5/28/2018 Arduino + LabVIEW

    2/114

    2

    INDICE

    1. Introduccin2. Cinco razones para utilizar Arduino + LabVIEW3. Dnde encontrar ayuda y herramientas para usar NI LabVIEW y Arduino?4. Instalacin del Software y el Hardware.5. Instalacin del Firmware de comunicacin entre LabVIEW Interface y Arduino

    Uno?6. Algunas preguntas sobre la interface LIFA7. Desarrollo de aplicaciones bsicas.

    7.1. Lectura de una entrada digital.7.2. Test17.3. Comparador7.4. Contador de impulsos7.5. Contador de impulsos con puesta a cero7.6. Intermitente7.7. Semforo Simple7.8. Semforo Ajustable7.9. Gobierno de una Salida Analgica PWM7.10. Gobierno de una salida digital seleccionada7.11. Escritura/Lectura de todos los canales7.12. Control de Servos7.13. Funcin AND7.14. Temperatura 17.15. Control Motor de cc. Velocidad y Sentido7.16. Medida de Temperatura mediante el Bus I2C7.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 Luz7.23. Control de un Diodo LED Tricolor (RGB).7.24. Medida de Temperatura.7.25. Manipulacin de un Mando Joystick.7.26. Generador de TonosANEXOS

    Material BsicoLibreras de LIFA

  • 5/28/2018 Arduino + LabVIEW

    3/114

    3

    Una primera reflexin.

    Permteme amable lector dedicar un pequeo espacio en este trabajo queahora tienes en tus manos y que forma parte de un conjunto de trabajos quehe venido realizando en los ltimos aos, para realizar una reflexin queestimo muy importante.

    Al escribir este, y otros documentos que escrib sobre el mismo tema, miobjetivo principal ha sido poder contribuir al desarrollo del conocimiento

    en el mbito de las Plataformas Open Hardwarey sus aplicaciones en elDesarrollo de Prototipos y Aprendizaje de las Tcnicas de Automatizaciny Control Programable. Mi idea principal, es compartir mi trabajo y misconocimientos con los dems, porque estoy convencido que en estasociedad del conocimiento, que nos ha tocado vivir, ese es un caminograto y amable. No es puro romanticismo esto que te digo, es, ms bien,una realidad, una forma de pensar, de trabajar y de vivir. Solo en uncontexto de generosidad y colaboracin es posible que avance la

    tecnologa, siempre con el objetivo de lograr el bienestar de los pueblos yla justicia en sus formas de gobierno.

    Ojala y otros muchos profesores, investigadores, alumnos y entusiastas dela electrnica y la informtica, sigan este camino y cada vez sean ms lostrabajos que se pongan gratuitamente al servicio de la comunidad. Sonmuchos los que lo han hecho hasta ahora y espero que sean ms los que sesumen a esta idea de compartir el conocimiento.

    Jos Manuel Ruiz [email protected] de Agosto 2012

    mailto:[email protected]:[email protected]:[email protected]
  • 5/28/2018 Arduino + LabVIEW

    4/114

    4

    Agradecimientos y reconocimientos.

    La elaboracin de este trabajo no hubiese sido posible sin recurrir a lasfuentes de conocimiento y a la experiencia de numerosas personas que demanera libre o adscritos a una entidad pblica o privada han trabajado en eldesarrollo de aplicaciones tanto hardware como Software para laPlataforma Open Hardware Arduino.

    Debo reconocer y agradecer en primer lugar la valiosa labor de NI(National Instruments)al atender esta demanda de la comunidad acadmicaen el desarrollo de LIFA (LabVIEW Interface for Arduino). De ellos heutilizado gran parte de la informacin que me ha permitido desarrollar estemanual.

    Quiero tambin agradecer a todos los innumerables investigadores quedesde sus distintos mbitos han colocado en la Web sus trabajos para poderser utilizados por la comunidad. Algunos ejemplos que figuran en estemanual proceden de algunas pginas que se referencian en ellos.

    Recordar especialmente a toda la comunidad de seguidores de Arduinocon los que he compartido gratas sesiones de intercambio real, en vivo ydirecto, sus conocimientos, en los Congresos, Barcamps y Jornadas que seviene realizando en Espaa y en el resto de pases del mundo.

    Este trabajo est bajo licencia Creative Commons Attribution 3.0 Unported LicenseAgosto de 2012 Versin de Documento: Versin. (Beta en Revisin)

    Blog de referencia: http://josemanuelruizgutierrez.blogspot.com

    http://www.ni.com/http://www.ni.com/http://www.ni.com/https://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttp://creativecommons.org/licenses/by/3.0/http://creativecommons.org/licenses/by/3.0/http://josemanuelruizgutierrez.blogspot.com/http://josemanuelruizgutierrez.blogspot.com/http://josemanuelruizgutierrez.blogspot.com/http://creativecommons.org/licenses/by/3.0/https://decibel.ni.com/content/groups/labview-interface-for-arduinohttp://www.ni.com/http://www.ni.com/
  • 5/28/2018 Arduino + LabVIEW

    5/114

    5

    1. INTRODUCCINLa interfaz de LabVIEW para Arduino (LIFA) Toolkit es una herramienta gratuita quese puede descargar desde el servidor de NI (National Instruments) y que permite a losusuarios de Arduino adquirir datos del microcontrolador Arduino y procesarlos en elentorno de programacin grfica de LabVIEW. Para utilizar la aplicacin LIFA no es

    necesario disponer de una versin comercial de LabVIEW basta con adquirir el softwareLabVIEW Student Edition que se distribuye por destinos medios a un precio muyasequible (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 acadmicouniversitario de poder disponer de un entorno de Diseo y Prototipado de Aplicacionesde Medida, Control y Automatizacin de Procesos y Espacios Fsicos. La plataformaOpen Hardware Arduino ha demostrado en su corta, pero intensa vida, ser una opcin

    muy interesante para incluir en un Laboratorios de Prototipado. Son muchas susventajas, entre las que destacamos su costo, su libre difusin y exencin de costos depatentes por desarrollo as como la gran comunidad de usuarios que se ha creado y queesta generando una cantidad de aplicaciones increble.

    La participacin de una empresa como NI National Instruments en este proyecto dedesarrollo de aplicaciones Software para Arduino pone de manifiesto el gran inters dela herramienta. No solo se ha sumado esta empresa al proyecto sino tambin Google consus aplicaciones escritas en lenguaje Android, Telefnica con el desarrollo de unatarjeta para programar desde telefona mvil, y otras compaas.

    En este manual he recogido informacin dispersa y sobre todo he incluido numerososejemplos que pretenden ser una ayuda y un estimulo para que quien lo desee puedaexperimentar con esta herramienta Software que por otra parte funciona soportada conuna simple Licencia de estudiante de LabVIEW.

  • 5/28/2018 Arduino + LabVIEW

    6/114

    6

    2. Cinco razones para utilizar Arduino+Labview(traducido de la pginahttp://www.ni.com/white-paper/12879/en)

    El microcontrolador Arduino es una plataforma de bajo costo de electrnica deprototipos. Con la interfaz de LabVIEW para Arduino LIFA se puede aprovechar lapotencia del entorno de programacin grfica de LabVIEW para interactuar conArduino en una nueva dimensin.

    1. Interface Grfica de Usuario (Graphical User Interface GUI)Visualizar los datos

    Mostrar datos de los sensores en el monitor delordenador mediante los paneles frontales deLabVIEW.

    Personalizacin de la interfaz deusuario

    Permite dar al proyecto un toque profesional con los controles del panel frontal deLabVIEW y los indicadores.

    2.Programacin GraficaArrastrar y soltar

    En lugar de tratar de recordar unnombre de funcin, se encuentra en la

    paleta y colquelo en su diagrama debloques.

    Documentacin simple

    Pase el ratn sobre cualquier VI o funcin con el ratn y ver al instante ladocumentacin con ayuda contextual.

    http://www.ni.com/white-paper/12879/enhttp://www.ni.com/white-paper/12879/enhttp://www.ni.com/white-paper/12879/enhttp://www.ni.com/white-paper/12879/en
  • 5/28/2018 Arduino + LabVIEW

    7/114

    7

    3.Desarrollo InteractivoAnimar la ejecucin Diagramade bloques

    Consulte los valores de datos que setransmiten de una funcin a otra conresaltado de ejecucin.

    Sondas, puntos de nterrupcin,y la intensificacin

    Datos de la sonda, la ejecucin de una pausa, y el paso a una subrutina sin necesidad deprogramacin compleja.

    4.Utilizacin de librerasConexin con libreras.

    850 bibliotecas integradas

    Aprovechar cientos de bibliotecas integradas deprocesamiento 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.

    5.Cdigo API abiertoEn el lado LabVIEW

    Me pregunto qu est pasando bajo el cap? Haga doble clic en cualquier VI dentro dela caja de herramientas y se vea cmo funciona.

    En el lado Arduino

    Quiere modificar el Sketch Arduino proporciona para su aplicacin especfica? Seincluye la modificacin de la caja de herramientas.

  • 5/28/2018 Arduino + LabVIEW

    8/114

    8

    3. Dnde encontrar ayuda y herramientas parausar NI LabVIEW y Arduino?

    En el proceso de instalacin del software de Arduino para Labview se recomiendarecurrir a los siguientes enlaces en donde se podr descargar el software y leer lasrecomendaciones en el proceso de instalacin esta paginas estn el servidor de NationalInstrument (LabVIEW)

    El paquete LabVIEW Interface for Arduino es totalmente gratuito y se puededescargar 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 parautilizar 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 ejemplosrealizados 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

    https://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/docs/DOC-16204https://decibel.ni.com/content/docs/DOC-16204http://www.sparkfun.com/products/10812http://www.sparkfun.com/products/10812https://decibel.ni.com/content/docs/DOC-16024https://decibel.ni.com/content/docs/DOC-16024http://nitalk.natinst.com/docs/DOC-39019http://nitalk.natinst.com/docs/DOC-39019https://decibel.ni.com/content/thread/9782https://decibel.ni.com/content/thread/9782https://decibel.ni.com/content/docs/DOC-16070https://decibel.ni.com/content/docs/DOC-16070https://decibel.ni.com/content/thread/12931https://decibel.ni.com/content/thread/12931https://decibel.ni.com/content/thread/12931https://decibel.ni.com/content/docs/DOC-16070https://decibel.ni.com/content/thread/9782http://nitalk.natinst.com/docs/DOC-39019https://decibel.ni.com/content/docs/DOC-16024http://www.sparkfun.com/products/10812https://decibel.ni.com/content/docs/DOC-16204https://decibel.ni.com/content/groups/labview-interface-for-arduino
  • 5/28/2018 Arduino + LabVIEW

    9/114

    9

    https://decibel.ni.com/content/docs/DOC-20084

    Leer la intensidad de luz en una celda solar con Arduinohttps://decibel.ni.com/content/docs/DOC-16069

    Manipular los LEDs de la tarjeta arduinohttps://decibel.ni.com/content/docs/DOC-16261

    https://decibel.ni.com/content/docs/DOC-20084https://decibel.ni.com/content/docs/DOC-20084https://decibel.ni.com/content/docs/DOC-16069https://decibel.ni.com/content/docs/DOC-16261https://decibel.ni.com/content/docs/DOC-16261https://decibel.ni.com/content/docs/DOC-16261https://decibel.ni.com/content/docs/DOC-16069https://decibel.ni.com/content/docs/DOC-20084
  • 5/28/2018 Arduino + LabVIEW

    10/114

    10

    4. Instalacin del Software y el HardwareA continuacin describimos los pasos que se recomiendan para la puesta en marcha dela herramienta LIFA( LabVIEW para Arduino):

    La configuracin de la Interfaz de LabVIEW para Arduino es un proceso de seis pasosque usted slo tendr que completar una sola vez. Por favor, siga las siguientesinstrucciones 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 Michaelsaqu).

    1. Instalar LabVIEWSi ha adquirido el paquete de LabVIEW y del Sparkfun.com Arduino puede instalarLabVIEW 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 KB5L38JQYG KB 5L38JQYG

    5. Conectar la placa Arduino a su PC como se describe en KB 5INA7UYGKB5INA7UYG

    6. Carga de la interfaz de LabVIEW para firmware Arduino en su Arduino como sedescribe enKB 5LPAQIYG

    http://vishots.com/getting-started-with-the-labview-interface-for-arduino/http://vishots.com/getting-started-with-the-labview-interface-for-arduino/http://joule.ni.com/nidu/cds/view/p/id/2251/lang/enhttp://joule.ni.com/nidu/cds/view/p/id/2251/lang/enhttp://joule.ni.com/nidu/cds/view/p/id/2040/lang/enhttp://joule.ni.com/nidu/cds/view/p/id/2040/lang/enhttp://joule.ni.com/nidu/cds/view/p/id/2039/lang/enhttp://joule.ni.com/nidu/cds/view/p/id/2039/lang/enhttp://www.jki.net/vipmhttp://www.jki.net/vipmhttp://www.jki.net/vipmhttp://digital.ni.com/public.nsf/allkb/A20FBBD36820669086257886004D5F4D?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/A20FBBD36820669086257886004D5F4D?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/0F9DADF9055B086D86257841005D1773?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/0F9DADF9055B086D86257841005D1773?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/0F9DADF9055B086D86257841005D1773?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/0F9DADF9055B086D86257841005D1773?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/8C07747189606D148625789C005C2DD6?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/8C07747189606D148625789C005C2DD6?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/8C07747189606D148625789C005C2DD6?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/8C07747189606D148625789C005C2DD6?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/0F9DADF9055B086D86257841005D1773?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/0F9DADF9055B086D86257841005D1773?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/A20FBBD36820669086257886004D5F4D?OpenDocumenthttp://www.jki.net/vipmhttp://joule.ni.com/nidu/cds/view/p/id/2039/lang/enhttp://joule.ni.com/nidu/cds/view/p/id/2040/lang/enhttp://joule.ni.com/nidu/cds/view/p/id/2251/lang/enhttp://vishots.com/getting-started-with-the-labview-interface-for-arduino/
  • 5/28/2018 Arduino + LabVIEW

    11/114

    11

    7. El firmware se puede encontrar en \ vi.lib Interface \ LabVIEW paraArduino \ Firmware \ LVIFA_Base. Utilizar el IDE de Arduino para implementareste firmware de la placa Arduino.)

    Ahora est listo para usar la interfaz de LabVIEW para Arduino.

  • 5/28/2018 Arduino + LabVIEW

    12/114

    12

    5. Instalacin del Firmware de comunicacin entreLabVIEW Interface y Arduino Uno?

    Para poder comunicar Labview con Arduino, previamente, debemos instalar en la tarjetael firmware correspondiente.

    Partimos del supuesto de que ya tenemos instalado en nuestro PC el entorno IDEArduino.

    El fichero que debemos cargar en el IDE de Arduino para luego descargar en la tarjetase 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 latarjeta con la que trabaremos.

  • 5/28/2018 Arduino + LabVIEW

    13/114

    13

    Seguidamente seleccionamos el puerto con el que realizaremos la descarga delfirmaware sobre la tarjeta Arduino.

  • 5/28/2018 Arduino + LabVIEW

    14/114

    14

    Una vez realizadas estas operaciones basta con que pulsemos el botn de cargade sketch del IDE para que el fichero se transfiera a la tarjeta y, una veztransferido, ya hemos dejado Arduino listo para comunicarse con LabVIEW

  • 5/28/2018 Arduino + LabVIEW

    15/114

    15

    6. Algunas preguntas sobre la interface LIFA(Traducido dehttps://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 Toolkites un conjuntode herramientas gratuitas que permiten a los desarrolladores adquirir datos desde elmicrocontrolador 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 cualquierversin de Windows o Mac OS que soporta LabVIEW 2009 o posterior. El kit deherramientas tambin funcionan en cualquier versin de Linux que soportaLabVIEW 2009 o posterior, sin embargo actualmente no existe un instalador (JKIVI 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 LabVIEWpara Arduino?

    2009 o posterior.

    4. Qu hardware es necesario para utilizar la interfaz de LabVIEW paraArduino?

    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 interfazde LabVIEW para Arduino fue desarrollado y probado usando Arduino UNO yArduino 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 lacomunidad community forums.La interfaz de LabVIEW para Arduino no est

    https://decibel.ni.com/content/docs/DOC-16024https://decibel.ni.com/content/docs/DOC-16024https://decibel.ni.com/content/docs/DOC-16024https://decibel.ni.com/content/docs/DOC-15971https://decibel.ni.com/content/docs/DOC-15971https://decibel.ni.com/content/docs/DOC-15971https://decibel.ni.com/content/docs/DOC-15971https://decibel.ni.com/content/docs/DOC-15971https://decibel.ni.com/content/groups/labview-interface-for-arduino?view=discussionshttps://decibel.ni.com/content/groups/labview-interface-for-arduino?view=discussionshttps://decibel.ni.com/content/groups/labview-interface-for-arduino?view=discussionshttps://decibel.ni.com/content/docs/DOC-15971https://decibel.ni.com/content/docs/DOC-15971https://decibel.ni.com/content/docs/DOC-16024
  • 5/28/2018 Arduino + LabVIEW

    16/114

    16

    soportada por Ingenieros de Aplicaciones a travs del telfono, correo electrnico, ode otra manera.

    7. Cmo puedo empezar a utilizar la interfaz de LabVIEW para Arduino?Despus de instalar el kit de herramientas que puede ver aqula mejor manera deempezar es mediante los ejemplos que viene en el paquete LIFA de LabVIEW. Seencuentran 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 laplaca Arduino. Solo es posible utilizar la interfaz de LabVIEW para Arduino paracomunicarse con la placa Arduino utilizando LabVIEW en modo esclavo On-line

    9. Tengo que ser tener a un ordenador para utilizar la interfaz de LabVIEWpara 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 conexinBluetooth a mi Arduino?

    o XBeeorBlueSMiRFo 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 deLabVIEW para Arduino. Arduino procesa los paquetes y enva paquetes de retorno.Los paquetes de retorno se analizan por LabVIEW para proporcionar informacintil para el usuario final. Cada paquete es de 15 bytes por defecto y contiene unencabezado, un byte de comando, los bytes de datos, y una suma de comprobacin.La longitud del paquete se puede cambiar para adaptarse a aplicaciones especficasmediante la modificacin del firmware y especificar el tamao del paquete a la VIInit en LabVIEW (La mayora de los usuarios no tendrn que hacer esto). Elfirmware LIFA en el Arduino procesa los paquetes, asegurando que los datos no sehan daado durante la transmisin. A continuacin, una vez ledo el paquete,

    comprueba el byte de comando y ejecuta las instrucciones con los bytes de datosproporcionados basndose en el byte de comando.

    https://decibel.ni.com/content/docs/DOC-15971https://decibel.ni.com/content/docs/DOC-15971http://www.sparkfun.com/products/8665http://www.sparkfun.com/products/8665http://www.sparkfun.com/products/582http://www.sparkfun.com/products/582http://www.sparkfun.com/products/582http://digital.ni.com/public.nsf/allkb/D86D6E2927F9C37A8625788E0077E86B?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/D86D6E2927F9C37A8625788E0077E86B?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/D86D6E2927F9C37A8625788E0077E86B?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/D86D6E2927F9C37A8625788E0077E86B?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/D86D6E2927F9C37A8625788E0077E86B?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/D86D6E2927F9C37A8625788E0077E86B?OpenDocumenthttp://digital.ni.com/public.nsf/allkb/D86D6E2927F9C37A8625788E0077E86B?OpenDocumenthttp://www.sparkfun.com/products/582http://www.sparkfun.com/products/8665https://decibel.ni.com/content/docs/DOC-15971
  • 5/28/2018 Arduino + LabVIEW

    17/114

    17

    7. Desarrollo de Aplicaciones Bsicas.7.1.Lectura de una entrada Digital

    Para empezar con nuestros ejemplos prcticos lo har con la prctica ms sencilla: Leerel valor de una entrada digital de Arduino.

    Se trata de realizar un montaje que permita seleccionar el PIN digitaldesde la propiapantalla del Panel y que mediante un Led podamos ver su estado.

    En la siguiente figura se muestra el Panel

    Para empezar debemos configurar Arduino y lo hacemos poniendo el bloque Initalque le asignamos los parmetros:

    Puerto de comunicacin

    Velocidad de transmisin

    Tipo de tarjeta ArduinoNumero de bits de los paquete de comunicacin

    Tipo de puerto de comunicacin.

  • 5/28/2018 Arduino + LabVIEW

    18/114

    18

    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 esosvalores.

    Para asignar las constantes mencionadas basta ponerse sobre el terminal con la

    herramienta de edicin en modo wire y pulsando el botn derecho del ratnpodemos seleccionar el control a aadir con la opcin Create(Constant, Control,Indicador).

    A continuacin se coloca una estructura de tipo While loop

    que se ejecutara continuamente hasta que pulsemos el botn Cerrar puerto,viene aser 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 lecturade valor de Entrada de la tarjeta Arduino

  • 5/28/2018 Arduino + LabVIEW

    19/114

    19

    En la entrada Pin Modedebemos seleccionar INPUTy la entrada Digital I/OPIN deberemos unirla a un bloque PIN Digitalque creara el control correspondienteen el Panel y que en modo de ejecucin permitir cambiar la entrada a leer.

    IMPORTANTE:Es muy importante que se sepa que los PIN 0y PIN 1digitales estn

    ocupados en la comunicacin con LabVIEW por lo tanto nunca se deben seleccionar nipara 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 bitspor lo tanto se deber

    realizar la conversin a dato tipo booleano

    Para despus llevarlo a un indicador de tipo array booleano TRUE FALSE.

    cuyo referente en el Panel es el mostrado

    La manera de operar ser ejecutar el ejemplo construido y probar su funcionamiento.

    Pulsando para detener la ejecucin siempre se debe hacer pulsandoen el botn del Panel Cerrar

    En la figura vemos el montaje de la aplicacin en el caso de testear la entrada 2 PIN 2

  • 5/28/2018 Arduino + LabVIEW

    20/114

    20

  • 5/28/2018 Arduino + LabVIEW

    21/114

    21

    7.2. Test 1En el siguiente ejemplo se pretende realizar la lectura y escritura de valores en la tarjetaArduino.

    Se enviar un valor analgico a la salida PWM PIN 3que obtendremos de un elementode panel. Se leer el valor del canal de entrada analgica A0y se mostrar en uninstrumento de aguja en el panel a la vez que en un instrumento termmetro.Finalmente se escribir un valor digital en el PIN 8mediante 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 figuraprocederemos de la siguiente manera.

    En primer lugar colocamos el bloque de inicializacin Inity le asignamos elparmetro de nmero de puerto, el resto le dejamos los que toma por defecto.Seguidamente configuramos el PIN 8como salida.

    Dentro del bucle While loopprocederemos a colocar los siguiente elementos:

    Un bloque de lectura de seal analgica Analog Read Pintal como se muestra en lafigura.

  • 5/28/2018 Arduino + LabVIEW

    22/114

    22

    Este bloque necesita que le pongamos el valor del canal de entrada analgica Analog

    Input Piny en su salida nos entrega un valor tipo Double que se corresponde con lalectura realizada. La salida la encaminamos a los instrumentos de medida MedidaA0que ese corresponde con el medidor de aguja del panel.

    El siguiente bloque que debemos colocar es el correspondiente a la salida digital en el PIN 8

    El valor que representa el numero de PIN lo recibe de la correspondiente constante 8 que yatenemos puesta para la configuracin del PIN y el valor Valueque queremos sacar en lasalida lo tomamos de un interruptor PIN 8que a la vez tambin sacamos a un Led LED 8.Ambos en el panel.

  • 5/28/2018 Arduino + LabVIEW

    23/114

    23

    El ltimo bloque de funcin que colocaremos dentro del bucle es el de escritura del valoranalgico PWM en el PIN 3. Lo haremos configurando el numero de PIN 3 y mediante unmando tipo potencimetro Valor analgicodesignaremos el valor de la entrada Duty Cycle(0-255),conectando tambin un indicador tipo termmetro Salida.

    Recordemos que para Arduino UNO las salidas tipo PWMson los pines digitales 3,5,6,9,10y11

    Finalmente, ya fuera del bucle colocamos el bloque de cierre del canal Closey el bloque detratamiento de error, que nos permita mostrar en la pantalla una ventana con informacin sobrelos posibles errores que se produzcan.

  • 5/28/2018 Arduino + LabVIEW

    24/114

    24

    7.3. ComparadorEn este ejercicio vamos a realizar una aplicacin que implica un sencillo clculo matemtico:una comparacin.

    Mediremos un valor analgico tomado del canal A0y lo compararemos con una consigna, eneste caso 2,5 realizaremos la comparacin > y < y recogeremos el resultado de estas doscomparaciones 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 loopcolocamos el bloque de lectura de valor analgico AnalogRead pinque ya hemos utilizado en la anterior practica.

    La comparacin se realiza con dos bloques de funcin comparacin tal como se muestra en lafigura. 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.5yMenor que 2.5

  • 5/28/2018 Arduino + LabVIEW

    25/114

    25

    No debemos olvidar colocar dentro del bucle de lectura un botn cuya activacin sea la que nossaque de l: Desconectar.

    Finalmente se colocar el bloque de Cierrey el de Errores.

  • 5/28/2018 Arduino + LabVIEW

    26/114

    26

    7.4. Contador de ImpulsosVamos a implementar una aplicacin que nos permita contar los impulsos que se reciben atravs 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 looppondremos dos bloque de la librera de Arduino: Un bloquepara configurar el PIN de entrada Set Digital Pin Modey otro para leer el valor DigitalRead Pin.

    El contador propiamente dicho se implementa con la ayuda de un bloque del tipo CaseStructure.

    Este bloque tendr dos estados posibles tal como se muestra en las siguientes figuras:

  • 5/28/2018 Arduino + LabVIEW

    27/114

    27

    En el caso Falseno hay impulso de cuenta el contador no sufre incremento y su valor setrasmite directamente a la salida. En el caso True,la entrada al bloque sera TRUE y se activael contador incrementndose en 1.

    Para obtener la seal de gobierno de esta estructura se ha recurrido a un bloque que detectatransiciones de TRUE a FALSE.

    La salida del bucle Case Structurese obtiene un valor tipo Integer que se lleva a unindicador.

    Finalmente se conectan los bloques de Cierrede canal y tratamiento de errores.

    En la figura siguiente se muestra u esquema de conexionado para realizar las pruebas fsicas defuncionamiento.

  • 5/28/2018 Arduino + LabVIEW

    28/114

    28

  • 5/28/2018 Arduino + LabVIEW

    29/114

    29

    7.5. Contador de impulsos con puesta a ceroEn el siguiente ejemplo aadimos al contador explicado en el anterior la posibilidad de poner acero el contador.

    Para ello todo ser igual a excepcin de que colocaremos un botn de Puesta a ceroquellevara el contador al valor 0

    En el esquema de bloques funcionales vemos que el sistema es el mismo a excepcin de quehemos aadido una funcin del tipo Select.

    Esta funcin saca el valor de tcuando la entrada ses TRUE y saca fcuando su entradases FALSE.

  • 5/28/2018 Arduino + LabVIEW

    30/114

    30

    A continuacin mostramos el esquema completo.

    .

    Este sera el esquema de pruebas

  • 5/28/2018 Arduino + LabVIEW

    31/114

    31

    7.6. IntermitenteAbordamos en este ejemplo el clsico ejemplo con el que se comienza a estudiarArduino: una salida intermitente en uno de los Pines digitales.

    Vamos a activar la salida digital PIN 8de modo intermitente con intervalos de tiempoajustables desde el Panel de control en tiempo de ejecucin.

    En este caso recurrimos a la ejecucin cada cierto tiempo del contenido de nuestro bucleWhile loop

    En la anterior imagen vemos el aspecto del Panel y en la siguiente vemos el esquema debloques funcional de la aplicacin.

    Como siempre inicializamos Arduino y despus definimos el PIN 8como una salida.

    Dentro el bucle colocamos la funcin de escritura Digital Write Pin. Este bloquerecibe la seal digital de la estructura que constituye el osciladorde frecuenciavariable: Implementacin del reloj

  • 5/28/2018 Arduino + LabVIEW

    32/114

    32

    Implementacin de un reloj

    En el bucle While Loopaadimos un Shift Registersimplemente pulsado en botnderecho 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 haydentro del bucle. Se trata de sacar TRUE y FALSE a travs de la seal Reloj.

    Se ha colocado un operador ANDpara habilitar mediante un interruptor (Salida PIN 8)el paso de la seal de reloj al bloque Digital Write Pinde Arduino. Se han colocadotambin dos indicadores LED para muestra las seales de Reloj Salida Clocky laque activa la entrada del bloque Arduino de salida digital Habilitada Salida

  • 5/28/2018 Arduino + LabVIEW

    33/114

    33

    Este sera el montaje para realizar las pruebas reales de la aplicacin.

  • 5/28/2018 Arduino + LabVIEW

    34/114

    34

    7.7. Semforo Simple.Los circuitos de tiempo son muy utilizados en los automatismos. Uno de los masclsicos 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 delsemforo:

    PIN Digital Salida Tiempo8 Rojo 1000 ms.9 mbar 1000 ms.10 Verde 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 DigitalPin Modede la librera de Arduino

  • 5/28/2018 Arduino + LabVIEW

    35/114

    35

    3. Genera las seales Rojo, Amarillo y Verde. Mediante una estructura tipo CaseStructureque en nuestro caso le aadiremos hasta tres casos o estados que seasociaran a cada uno de los estados de nuestro semforo.

    En las figuras siguientes se muestra cada uno e los casos creados. Hemos definidocomo estado de inicio en la secuencia de ejecucin el Rojo

    Estado Rojo.En el vemos que el estado siguiente debe serVerde 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 serRojo 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 sermbar y que la secuencia ser: Rojo (FALSE), mbar(FALSE) y Verde (TRUE). Tiempo 700 ms.

  • 5/28/2018 Arduino + LabVIEW

    36/114

    36

    4. Escribe los valores de las seales Rojo, mbar y Verde en los PINES de salida Digitalcorrespondientes. Es importante que observemos como las salidas del secuenciador sode tipo TRUE/FALSE por eso debemos convertirlas al tipo de seal admisible por los

    bloques Digital Write Pinque escriben los valore en las salidas fsicas de Arduino.

    5. Cierra el puerto mediante el bloque Close6. Tratamiento de los errores. Mediante el bloque Simple Error

    Este es el aspecto del montaje de pruebas

  • 5/28/2018 Arduino + LabVIEW

    37/114

    37

    7.8. Semforo AjustableA continuacin proponemos u ejercicio de semforos en el que los tiempos deencendido 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 entradade 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 anteriormentecon la nica diferencia de que en cada uno de los tres estados de la estructura CaseStructure 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 bloquede captura de valor

    Finalmente se muestra el esquema funcional completo

  • 5/28/2018 Arduino + LabVIEW

    38/114

    38

    Este sera el montaje de prueba

  • 5/28/2018 Arduino + LabVIEW

    39/114

    39

    7.9. Gobierno de una Salida Analgica PWMSabemos que Arduino tiene la posibilidad de programar algunas de sus salidas digitalescomo 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,10y11)

    En este montaje vamos a enviar a la salida PWMdel PIN 9un valor comprendido entre0 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 todaslos los Pines digitales estn programados como salidas.

    Se comienza con el bloque Initfuera del bloqe While Loop y dentro se utiliza elbloque PWM Write Pinen el qe designamos que el PIN ser el 9.

    La entrada de seal para este bloque la cableamos de un objeto del tipo Slideal que

    configuramos en la escala 0-255.

  • 5/28/2018 Arduino + LabVIEW

    40/114

    40

    Hemos obviado el bloque de tratamiento de error dado que no es importante.

    Este es el montaje de pruebas

  • 5/28/2018 Arduino + LabVIEW

    41/114

    41

    7.10. Gobierno de una Salida Digital SeleccionadaEl siguiente ejemplo sirve para manejar el gobierno de salidas desde el Panel de control.

    Seleccionando previamente la salida correspondiente podremos activar o desactivar una

    de las salidas digitales de la tarjeta Arduino.

    En el Panel se dispone de un selector de PIN y un interruptor para gobernar la salidaseleccionada. Se ha colocado esta vez un selector de puerto de comunicacin y un LEDindicador del estado de la salida.

    El diagrama funcional es muy sencillo.

    Se realiza la inicializacin de Arduino y luego, ya dentro el bloque de control de buclese han colocado un elemento Select Digital Pun Modepara configurar el modo detrabajo de la salida seleccionada y un bloque Digital Write Pinque permite el envode la seal al PIN seleccionado mediante el bloque Digital Pin que hemos etiquetadocomoSeleccin de PIN

    Al bloque Digital Write Pinse le ha colocado en su entrada un interruptor quehemos etiquetado como Activa/Desavctivaque entrega un valor de tipo True/False y

    que convertimos en un valor tipo Integer se ha colocado tambin el indicador deestado mediante un LED al que hemos etiquetado como Estado salida

  • 5/28/2018 Arduino + LabVIEW

    42/114

    42

    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, pudindosecambiar las conexiones.

  • 5/28/2018 Arduino + LabVIEW

    43/114

    43

    7.11. Escritura/Lectura de todos los CanalesCon este ejemplo vamos a controlar todas las salidas monitorizando a su vez su estadoen el panel. Para ello disponemos de dos arrays, uno de interruptores y otros de

    indicadores leds que nos permitirn las funciones de gobierno de salidas.Se ha puesto tambin la posibilidad de leer el estado de los canales analgicos.

    Aqu recurrimos a dos bloques de funcin de la librera Arduino hasta ahora noutilizados: Digital ReadPort, Analog Read Port yDigital Write Port.

    Despus de inicializar arduino con el bloque Init, dentro del bucle de controlcolocamos estos tres bloques.

    Lectura del puerto digital: En este caso se trata de realizar la lectura del estado de todaslas 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 estnreservados 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 interruptoresde entrada en esos canales.

  • 5/28/2018 Arduino + LabVIEW

    44/114

    44

    El dato que entrega el bloque es unArray de dimensin 1D. para poder visualizar estosdatos tenemos que seleccionar un elemento de visualizacin de tipo Indicador quemostrar 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 unindicador 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 A5se recure a este bloque Analog Read Portque entrega en su salida un array con losvalores de los 6 canales analgicos.

    Para escribir datos en el puerto de salida digital se utiliza el bloque Digital WritePortponiendo en su entrada un valor en forma de Array de datos, mediante el controlque hemos etiquetado como Datos a escribirque saca por su salida.

    Finalmente se muestra el esquema funcional completo

  • 5/28/2018 Arduino + LabVIEW

    45/114

    45

    Este es el montaje para poder probar el gobierno de salidas. Bastara con cambiar el hilode la salida para comprobar que funciona.

  • 5/28/2018 Arduino + LabVIEW

    46/114

    46

    7.12. Control de ServosEn este ejemplo vamos a realizar el control de dos servos en uno lo haremosmodificando la velocidad de giro y en otro el ngulo girado

    En la imagen vemos como quedara el panel de control. Se podr seleccionar el nmerode servos a controlar, cerrar el canal de comunicacin y luego controlar cada uno de losservos.

    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 debloques de funcin de la librera Arduino.

    1. Inicializar la conexin a la placa Arduino. Si no se conecta a la entrada de recursosVISA del bloque Init intentar auto conectarse a la placa Arduino. Para acelerar laconexin 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 sepuede hacer referencia a ellos por el nmero (comenzando con 0).

    3. Configuracin de los dos servos digitales asignndoles pines I / O (10, 11)

  • 5/28/2018 Arduino + LabVIEW

    47/114

    47

    4. Escribir un ngulo de 0 servo basado en la repeticin del bucle. Servo 0 barre desde los0 grados en el ngulo de usuario y la repeticin. Este ngulo tambin se lee desde elservo y se muestra en el panel frontal.

    5. Ajuste manualmente el ngulo del servo 2. Este ngulo tambin se lee desde el servo yse muestra en el panel frontal.

    6. Cierra la conexin con el Arduino7. 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 teneren cuenta: Set Numbers of servosse llevar a la entrada un valor elemento decontrol que genere un numero de tipo Integer se hace pulsado el botn derecho sobre laentrada y seleccionando Create-Controlen el men contextual que aparece. Asicreamos la caja de seleccin Numero de servos

    A continuacin pondremos dos bloques del tipo Configure Servouno para cada unoe los dos servos que vamos a gobernar. Este objeto debe parametrizarse con el numerode servo y el pin de salida que utilizaremos para llevar al servo: Servo NumberyDIO

    Pin

  • 5/28/2018 Arduino + LabVIEW

    48/114

    48

    Pondremos:

    Servo 0 en el PIN 1

    Servo 1 en el PIN 11

    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 ServoWrite Anglemediante un control el Angulo a girar en grados

    La seal creada se lleva a la entrada Angledel bloque

    El siguiente bloque Servo Read Angle sirve para leer la posicin del Servodevolviendo el valor en Angle (Degrees)que se lleva a un indicador analgicoServo 0

    El Servo 1 se gobernar de la misma forma que el anterior con un bloque de tipo ServoWrite Anglecuya entrada conectamos a un control de tipo analgico al que hemosdenominado Angulo

    Finalmente se colocar un bloque Servo Read Angleque nos indicara la posicin delservo y la mostraremos con un instrumento analgico denominado Servo 1

  • 5/28/2018 Arduino + LabVIEW

    49/114

    49

  • 5/28/2018 Arduino + LabVIEW

    50/114

    50

    7.13. Funcin ANDEl ejemplo que se muestra a continuacin implementa una funcin AND entre dosentradas PIN 9y PIN 10cuya salida gobierna el PIN 12

    En la figura se muestra el aspecto del Panel.

    La implementacin como siempre comienza por el bloque Initseguido de los bloquesde configuracin de PIN Set Digital PIN Mode

    Dentro del bucle de ejecucin se deben colocar dos bloques de lectura de PINDigitalRead Piny 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 delPIN 9y PIN 10.

    Los elementos de visualizacin de estado se han colocado en las salidas de los tresbloques. No olvidemos que las seales deben convertirse de Array 1D a Array booleanomediante el bloque de funcin:

  • 5/28/2018 Arduino + LabVIEW

    51/114

    51

    Para convertir

    De Array tipo Nmero a Array Boolean

    De Array Boolean a Array Nmero

    Finalmente se deben colocar el bloque de Closey el de Simple Error Handler.

    El esquema de montaje para realizar las pruebas es el siguiente

  • 5/28/2018 Arduino + LabVIEW

    52/114

    52

    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 bsicamentesirve para demostrar cmo es posible representar grficamente el valor de un canalanalgico en un grafico. En este caso se fija un tiempo de muestreo de la seal con el finde 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 unindicador analgico Knobetiquetado como Temperatura instantneade tipocircular y un trazador grafico tipo Chartetiquetado como Evolucin de latemperatura en intervalos de tiempos. Se puede observar tambin un slider para ajustar

    el tiempo de muestreo. Finalmente figura el Botnde parada etiquetado comoDetener

    Para realizar la toma de muestras se ha recurrido a un generador de intervalos que

    http://innovelectronique.fr/2012/05/04/arduino-et-lifa-labview-interface-for-arduino/http://innovelectronique.fr/2012/05/04/arduino-et-lifa-labview-interface-for-arduino/http://innovelectronique.fr/2012/05/04/arduino-et-lifa-labview-interface-for-arduino/
  • 5/28/2018 Arduino + LabVIEW

    53/114

    53

    ejecuta cclicamente el contenido del bucle esta funcinse alimenta con una entrada de valor proporcionada por un Slideetiquetado como

    Intervalo de medida en s.

    Los valores ledos del canal de entrada analgico Temperatura instantnea se

    muestran en un medidor de aguja a la vez que en el registrador grfico

    La figura anterior muestra el esquema funcional completo y la siguiente el esquema demontaje para las pruebas.

  • 5/28/2018 Arduino + LabVIEW

    54/114

    54

  • 5/28/2018 Arduino + LabVIEW

    55/114

    55

    7.15. Control Motor de cc. Velocidad y Sentido(Traducido y adaptado del original Electronique Innovate)http://innovelectronique.fr/2012/05/04/arduino-et-lifa-labview-interface-for-arduino/

    El siguiente ejmeplo esta sacado de la pagina Web que se anota al cominzo de la paginay es un valioso ejemplo de cmo pode controlar un pequeo motor de cc. Haciendo usodel puente de potencia integrado en el CI L293D que puede controlar dos motores decorriente continua: el L293D (ficha tcnicaaqu).

    L293DTabla de funcionamiento del Motor 1

    CHIP INHIBIT 1 INPUT 1 INPUT 2 FUNCIONH L H Gira a la DerechaH H L Gira a la IzquierdaH L L Para rpida del motorH H H Para rpida del motorL X X Para rpida del motor

    Este circuito es relativamente fcil de implementar y lo haremos con un solo motor quesimplifica an ms el conjunto. Tngase en cuenta que se trata de drivers para elgobierno de dos motores de corriente continua (http://www.lextronic.fr/P5073-platine-de-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 auna salida de Arduino del tipo PWM, se puede variar la velocidad del motor haciendovariar 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 laparada. Los pines 3 (OUT 1) y 6 (OUT 2) son los pines de salida de potencia del motor.

    http://innovelectronique.fr/2012/05/04/arduino-et-lifa-labview-interface-for-arduino/http://innovelectronique.fr/2012/05/04/arduino-et-lifa-labview-interface-for-arduino/http://translate.googleusercontent.com/translate_c?depth=1&hl=es&ie=UTF8&prev=_t&rurl=translate.google.es&sl=fr&tl=es&twu=1&u=http://www.ti.com/lit/ds/symlink/l293d.pdf&usg=ALkJrhh5VFDeXLi9jaSiWUsnBRo0PbmTDAhttp://translate.googleusercontent.com/translate_c?depth=1&hl=es&ie=UTF8&prev=_t&rurl=translate.google.es&sl=fr&tl=es&twu=1&u=http://www.ti.com/lit/ds/symlink/l293d.pdf&usg=ALkJrhh5VFDeXLi9jaSiWUsnBRo0PbmTDAhttp://translate.googleusercontent.com/translate_c?depth=1&hl=es&ie=UTF8&prev=_t&rurl=translate.google.es&sl=fr&tl=es&twu=1&u=http://www.ti.com/lit/ds/symlink/l293d.pdf&usg=ALkJrhh5VFDeXLi9jaSiWUsnBRo0PbmTDAhttp://translate.googleusercontent.com/translate_c?depth=1&hl=es&ie=UTF8&prev=_t&rurl=translate.google.es&sl=fr&tl=es&twu=1&u=http://www.lextronic.fr/P5073-platine-de-commande-de-moteurs-dc.html&usg=ALkJrhisPMeA4ltdgEF5tX4DpWucYpqbZwhttp://translate.googleusercontent.com/translate_c?depth=1&hl=es&ie=UTF8&prev=_t&rurl=translate.google.es&sl=fr&tl=es&twu=1&u=http://www.lextronic.fr/P5073-platine-de-commande-de-moteurs-dc.html&usg=ALkJrhisPMeA4ltdgEF5tX4DpWucYpqbZwhttp://translate.googleusercontent.com/translate_c?depth=1&hl=es&ie=UTF8&prev=_t&rurl=translate.google.es&sl=fr&tl=es&twu=1&u=http://www.lextronic.fr/P5073-platine-de-commande-de-moteurs-dc.html&usg=ALkJrhisPMeA4ltdgEF5tX4DpWucYpqbZwhttp://translate.googleusercontent.com/translate_c?depth=1&hl=es&ie=UTF8&prev=_t&rurl=translate.google.es&sl=fr&tl=es&twu=1&u=http://www.lextronic.fr/P5073-platine-de-commande-de-moteurs-dc.html&usg=ALkJrhisPMeA4ltdgEF5tX4DpWucYpqbZwhttp://translate.googleusercontent.com/translate_c?depth=1&hl=es&ie=UTF8&prev=_t&rurl=translate.google.es&sl=fr&tl=es&twu=1&u=http://www.lextronic.fr/P5073-platine-de-commande-de-moteurs-dc.html&usg=ALkJrhisPMeA4ltdgEF5tX4DpWucYpqbZwhttp://translate.googleusercontent.com/translate_c?depth=1&hl=es&ie=UTF8&prev=_t&rurl=translate.google.es&sl=fr&tl=es&twu=1&u=http://www.lextronic.fr/P5073-platine-de-commande-de-moteurs-dc.html&usg=ALkJrhisPMeA4ltdgEF5tX4DpWucYpqbZwhttp://translate.googleusercontent.com/translate_c?depth=1&hl=es&ie=UTF8&prev=_t&rurl=translate.google.es&sl=fr&tl=es&twu=1&u=http://www.ti.com/lit/ds/symlink/l293d.pdf&usg=ALkJrhh5VFDeXLi9jaSiWUsnBRo0PbmTDAhttp://innovelectronique.fr/2012/05/04/arduino-et-lifa-labview-interface-for-arduino/
  • 5/28/2018 Arduino + LabVIEW

    56/114

    56

    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 potenciadel 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 polonegativo 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 delmotor, 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):

  • 5/28/2018 Arduino + LabVIEW

    57/114

    57

    El programa de LabVIEW se pueden presentar de la siguiente manera (la nica parteque vara de uno a captar el otro es el interior de la prueba de la caja: Verdadero yFalso:

    En la figura anterior se muestra el esquema funcional de trabajo.

    Para empezar se inicializa la conexin con Arduino. Seguidamente se configura el PINdigital 8 como salida sentido Derecha. y el PIN 9 como salida sentido Izquierda.

    Dentro del bucle se ha colocado una estructura tipo Case Estructureque seencargara 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 dosposibles sentidos de giro del motor.

  • 5/28/2018 Arduino + LabVIEW

    58/114

    58

    En el primer caso Trueel sentido de giro es a la Izquierda por lo que debemos sacarlos valores correspondientes en las salidas PIN 7y PIN 8de Arduino. La velocidad serecoge del control tipo numrico de aspecto circular que hemos etiquetado como

    Velocidad y sentido de giro

    PIN Arduino Valor PIN L293D

    INPUT 1

    PIN L293D

    INPUT 1

    Giro

    PIN 7 0 0 1 IzquierdaPIN 8 1

    En el segundo caso Falseel sentido de giro es a la Derecha por lo que debemos sacar

    PIN Arduino Valor PIN L293D

    INPUT 1

    PIN L293D

    INPUT 1

    Giro

    PIN 7 1 1 0 DerechaPIN 8 0

  • 5/28/2018 Arduino + LabVIEW

    59/114

    59

    Se han colocado dos indicadores de giro Derecha e Izquierda para saber en quesentido esta girando el motor.

    La conmutacin de la estructura Case Structure se realiza medianteun operador deltipo 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 PWMequivalente a 5v. en el PIN 11

    Finalmente en la salida del bucle se detiene el motor enviando un 0 a la salida PWMPIN 11 se cierra el puerto y se tratan los errores.

  • 5/28/2018 Arduino + LabVIEW

    60/114

    60

    7.16. Medida de Temperatura mediante el Bus I2C(traducido del original Electronique Innovate)http://innovelectronique.fr/2012/05/04/arduino-et-lifa-labview-interface-for-arduino/

    El sensor de temperatura DS1621 es un componente relativamente comn (aquesta suficha tcnica). Sin detallar demasiado, slo tendremos que especificar los comandos aenviar al DS1621 para iniciar y hacer una simple lectura de la temperatura. Los pines 1y dos son las seles SDA y SCL del bus I2C. El Pin 3 (A) no ser utilizado en nuestraaplicacin. Los pines 7 (A0), 6 (A1) y 5 (A0) se conectan a tierra para establecer ladireccin de este sensor I2C. El pin 4 es de tierra y el pin 8 + Vcc (5V aqu).

    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 escribir3. Escribir 0xac: se escribe en el registro de configuracin4. Escriba 0 00: conversin de la temperatura continua5. Condicin de parada (stop)6. Esperar 20 ms: escribir eeprom de la configuracin anterior7. Condiciones de inicio (start)8. Escriba 0 90: se selecciona la casilla A2A1A0 = 000 escribir9. Escribir 0xEE son: lanzamiento de la conversin a la temperatura constante10.Condicin de parada (stop)

    La siguiente secuencia se usa para leer la temperatura:

    1. Condiciones de inicio (start)2. Escriba 0 90: se selecciona la casilla A2A1A0 = 000 escribir3. Escribir 0xAA: solicitud de lectura de la ltima temperatura la muestra4. Condiciones de inicio (reinicio)5. Escriba 0 91: se selecciona la casilla A2A1A0 = 000 read-6. Leer todos los 8 bits de la temperatura7. Leer todos los 8 bits de la configuracin de la temperatura y un NACK!8. Condicin de parada (stop)

    http://innovelectronique.fr/2012/05/04/arduino-et-lifa-labview-interface-for-arduino/http://innovelectronique.fr/2012/05/04/arduino-et-lifa-labview-interface-for-arduino/http://www.maxim-ic.com/datasheet/index.mvp/id/2737http://www.maxim-ic.com/datasheet/index.mvp/id/2737http://www.maxim-ic.com/datasheet/index.mvp/id/2737http://www.maxim-ic.com/datasheet/index.mvp/id/2737http://innovelectronique.fr/2012/05/04/arduino-et-lifa-labview-interface-for-arduino/
  • 5/28/2018 Arduino + LabVIEW

    61/114

    61

    Te das cuenta que no es fcil, pero vamos a tratar de poner en prctica todas lasfunciones de LabVIEW con Arduino. Dependiendo de la versin de la tarjeta ArduinoUNO 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 tengouna placa Arduino rev2 UNO, el siguiente diagrama de cableado es adecuado para esta

    plataforma:

    El frontal de LabVIEW se produce como sigue:

  • 5/28/2018 Arduino + LabVIEW

    62/114

    62

    Nota:Un indicador que se utiliza para seleccionar la direccin del sensor DS1621 en elbus I2C. Bajo el ttulo "Datos I2C"es en realidad una forma de tabla de indicadores, sepuede 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 procedentesde la Arduino I2C en un osciloscopio y debo decir que me ayud. La lectura deldiagrama de izquierda a derecha:

  • 5/28/2018 Arduino + LabVIEW

    63/114

    63

    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 el1001), el ltimo 3 estn fijados con los pines A2A1A0. En nuestro casoA2A1A0 = 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 delos 72 valores en la parte delantera. Entonces usted tiene que escribir los valores0xac (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 intervalosde tiempo, con la transmisin de 15 bytes hacia LabVIEW para el Arduino llevasu tiempo, podemos considerar que la operacin se lleva a cabo. Se escribe elvalor de 0xEE son (238). En este punto el DS1621 se inicializa correctamente.

  • 5/28/2018 Arduino + LabVIEW

    64/114

    64

    4. A continuacin, entra en un bucle infinito. La temperatura ser solicitada cada500 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 dehacer 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 muestrancomo 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 enterofirmado '1': 8 LSB de la conversin: en nuestro caso, este byte tomar dosvalores: 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 eltermmetro.

    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.

  • 5/28/2018 Arduino + LabVIEW

    65/114

    65

    7.17. Dilogo con Arduino Ethernet(traducido del original Electronique Innovate)

    http://innovelectronique.fr/2012/05/23/aduino-et-lifa-episode-2/

    No se trata aqu de trabajar con LIFA sino directamente con el shield Arduino Ethernet.Nos proponemos realizar un ejemplo que permitir controlar la temperatura del LED yrecuperar todo por ethernet (incluso a travs de Internet).

    Usamos un sensor de temperatura LM35 conectado a la entrada A0 y una Salida deLED conectada al PIN 3. Como LM35 tiene una pendiente de 10 mV / C y 0 V a 0 C,la variacin de temperatura en un cuarto de grado dar lugar a una variacin de unas

    pocas decenas de mV. Por lo tanto, aumentar la precisin de la medida analgica siutilizamos una referencia de tensin de 1,1 V el Arduino. El convertidor analgico a

    digital es de 10 bits, se obtiene as un escaln mnimo de 1,1 V / 1.024 = 1 mV (1,0742mV con precisin). Por lo tanto, se puede medir la temperatura de 0 C a 110 C quees suficiente. El cableado est presente como sigue:

    http://innovelectronique.fr/2012/05/23/aduino-et-lifa-episode-2/http://innovelectronique.fr/2012/05/23/aduino-et-lifa-episode-2/http://innovelectronique.fr/wp-content/uploads/2012/05/cablage-ethershield-del-capt-temp.pnghttp://innovelectronique.fr/2012/05/23/aduino-et-lifa-episode-2/
  • 5/28/2018 Arduino + LabVIEW

    66/114

    66

    El cdigo de Arduino se muestra a continuacin. Se basa enteramente en el "ServidorWeb" ejemplo, es entonces suficiente para simplificar. El cdigo est comentado as quelea con cuidado!

    /*

    Serveur TCPO. DARTOIS, le 23/05/12Source directement base sur l'exemple Web Server*/

    #include #include

    // Adresses MAC et IP changer suivant vos besoinsbyte 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/IPserver.begin(); // Dmarrage du serveur

    pinMode(3,OUTPUT); // Broche 2 en sortie (DEL)digitalWrite(3,LOW); // Broche 2 0 => DEL eteinteanalogReference(INTERNAL); // Rfrence du CAN 1,1V

    }

    void loop(){

    // Attente des connexions et cration d'un objet client s'il y a lieuEthernetClient client = server.available();if (client) { // Un client existe

    while (client.connected()) { // il est connectif (client.available()) { // et il a envoy des caractres

    char c = client.read(); // on lit le caractre reuif (c == 'A') digitalWrite(3,HIGH); // si c'est 'A' on allume la DELif (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+LFserver.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 ahacer un panel frontal de LabVIEW para controlar el conjunto.

  • 5/28/2018 Arduino + LabVIEW

    67/114

    67

    El diagrama de bloques de LabVIEW se presenta como sigue:

    Como se puede ver, el esquema es muy simple ... es especializado en el LabVIEW VIque lleguemos a ese nivel de simplicidad. Una pequea explicacin de todos modos: ellado del servidor arduino implementa una pila TCP / IP pero es bastante fcil hablar enuna red ethernet. Que utiliza las direcciones IP y la versin 4 de IP que se puede hacerde enrutamiento, lo que significa que usted puede poner una caja de montaje detrs desu casa y acceder a ellos desde cualquier lugar en Internet. El protocolo de transporteTCP se utiliza aqu, es un protocolo de transporte de datos en modo conectado yconfiable. 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, seutiliza 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 lapaleta "Comunicaciones de datos" y "Protocolos" y "TCP". Para interactuar con elarduino, debe seguir los siguientes pasos:

    1. VI puso una "conexin TCP Abrir" y luego configurarlo. En nuestro caso, la direccinIP del arduino es 192.168.1.177 y el puerto de escucha es el 8000. Para ello sernecesario que el equipo est en la misma red que el arduino. Por ejemplo, aqu ladireccin 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 "Controldel LED", le enviaremos el carcter 'A' (para la luz LED, vea el cdigo arduino) o 'a' del

    personaje.

    http://innovelectronique.fr/wp-content/uploads/2012/05/exemple8-diagramme-labview-ethershield.pnghttp://innovelectronique.fr/wp-content/uploads/2012/05/exemple8-face-avant-labview-ethershield.png
  • 5/28/2018 Arduino + LabVIEW

    68/114

    68

    3. Para recibir datos, se utiliza el VI "TCP Lea" lo llama un "buffer" bytes para almacenarlos datos recibidos (en este caso he puesto 10, incluso si vamos a recibir menoscaracteres). 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 delos 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" yno "impresin" que se utiliz (println aade de forma automtica despus de loscaracteres CRLF que ha pasado). La cadena recibida se muestra como "raw" en elindicador de "recibido datos". Desea mostrar la temperatura en un metro, pero debetransformar al resultado de la conversin AD del arduino que hemos recibido unnmero. Es el papel de la sub VI "nmero decimal de la cadena" y se multiplica por elcoeficiente de encontrar la temperatura (quantum = sensibilidad 1074.10-3 y sensor de10 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 laconexin 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 deArduino para controlar el LED PWM por ejemplo ...

  • 5/28/2018 Arduino + LabVIEW

    69/114

    69

    7.18. Lectura de una entrada analgica.(Ejemplo traducido y adaptado del original que figura en la libreraLIFAaportada por

    National Instruments)

    En el siguiente ejemplo se trata de leer el valor de una entrada analgica de las 6 quetiene Arduino UNOque como sabemos sus valores oscilan entre 0 y 5 v.

    Se montara un Panel como el de la figura en el que se muestra un selector para elnmero de canal Seleccin de Entrada Analgica. Una ventana de dato numrico enel que se muestra el valor ledo y un Botn con el que se detiene la aplicacin y se cierrael puerto de comunicaciones

    La construccin de Bloques Funcionales mostrada en la figura siguiente es muysencilla.

    Vemos que se colocan los dos bloques Inity Closeque facilitan la configuracin de latarjeta y el cierre del puerto respectivamente.

    En el bucle del programa (dentro de la recinto While Loopse colocara un bloque delectura de canal analgico Analog Read Pinque recoge el valor de la seal del pinque 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 quevisualiza el valor Voltage.

    https://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduino
  • 5/28/2018 Arduino + LabVIEW

    70/114

    70

    Para salir del bucle de ejecucin While Loop se utiliza un botn Stopy a la veztambin se puede salir si se produce un error mediante el bloque Status

  • 5/28/2018 Arduino + LabVIEW

    71/114

    71

    7.19. Conexin de un Mdulo BlikM(Ejemplo traducido y adaptado del original que figura en la libreraLIFAaportada por

    National Instruments)

    En esta aplicacin se trata de gobernar un mdulo tipo BlinKM (tricolor) haciendo usode la librera que LIFA incopora para ello Librera BlinkM .

    Modulo BlikM

    Para empezar configuramos Arduino como siempe con el modulo Init en este caso nole hemos puesto los conectores de parametros porque suponemos que ya se hancolocado en el SubVI Init pulsando dos veces sobre el bloque se muestra la ventadesde donde podemos designar estos valores. En la figura se ve.

    Pulsando dos veces sobre el icono del blorque aparecer la pantalla videl objeto de alibrera y vemsos que se pueden modificar aqu os parametros que por defecto presenta

    https://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduino
  • 5/28/2018 Arduino + LabVIEW

    72/114

    72

    No olvimos que el sistema de LabVIEWes capaz de reconocer lo qe tiene conecatdo enel puerto es decir autodetectar la conexin, lo cual ayuda a la configuracion de laaplicacin.

    El siguiente bloqe a conectar es el que permite hacer constancia de que tenemos unelemento BlinkM Initque 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 RGBTo Colorcon la que alimentaremos el bloque BlinkM GoToRGB

    En la siguiente figura venos el esquema completo que lo cierran, como siempre losbloques Closey Error

  • 5/28/2018 Arduino + LabVIEW

    73/114

    73

    E la figura siguiente vemos el aspecto de la pantalla Panel en modo edicin.

    El montaje es el de la figura.

  • 5/28/2018 Arduino + LabVIEW

    74/114

    74

    7.20. Lectura de un valor analgico continuamentetomando muestras

    (Ejemplo traducido y adaptado del original que figura en la libreraLIFAaportada por

    National Instruments)

    En este ejemplo se trata de realizar la medida de una seal de entrada toamndo muestrasde su valor con una frecuencia de mutreo que podemos definir mediante una objeto deasignacin de valor Frecuencia de Muestreo (Hz).

    Una vez realizada la incializacion de la tarjeta debemos colocar el bloque Continuousadquisitionen el que sus parmetros de configuracin son dos:

    Pin Entrada AnalogicaDesigna el pin por donde leeremos

    Frecuencia de Muestreo (Hz)que permite asignar la frecuencia con la que setomaran las muestras

    Dentro del bucle se colocara la funcin Continuous Adquisition Sample que es la quedevuelve el valor ledo en su salida Date que se llevara a un objeto de representacin

    grafica Waveform Charts

    El botn Stopsirve para cerrar el puerto y salir de la aplicacin.

    https://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduino
  • 5/28/2018 Arduino + LabVIEW

    75/114

    75

    Montaje de pruebas

  • 5/28/2018 Arduino + LabVIEW

    76/114

    76

    7.21. Adquisicin de un nmero determinado demuestras de un canal analgico.

    (Ejemplo traducido y adaptado del original que figura en la libreraLIFAaportada por

    National Instruments)

    Se trata de leer un numero determinado de muestras que se tomaran a una velocidad(frecuencia) dada y posteriormente mostrarlas grficamente.

    El ncleo de nuestra programa ser el bloque Get Finite Analog Sample que realizalas funciones p`ropias de adquisicin de las muestras y su entrega a un bloque derepresentacin grafica.

    Observamos en este ejemplo que no se ha colocado un bloque tipo While Loop dadoque una vez recogidas y mostradas las muestras el programa se debe detener.

    https://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduino
  • 5/28/2018 Arduino + LabVIEW

    77/114

    77

    Montaje del prototipo

  • 5/28/2018 Arduino + LabVIEW

    78/114

    78

    7.22. Medida de luz(Ejemplo traducido y adaptado del original que figura en la libreraLIFAaportada por

    National Instruments)

    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 estatarea. 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 referenciamxima que colocamos en este montaje, normalmente es 5v. sacada de la propia tarjetaArduino

    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 tambinsi se produce un evento de error

    En la figura siguiente se muestra el aspecto de la ventana Panel en modo ejecucin

    https://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduino
  • 5/28/2018 Arduino + LabVIEW

    79/114

    79

    Montaje de pruebas

  • 5/28/2018 Arduino + LabVIEW

    80/114

    80

    7.23. Control de un diodo LED Tricolor (RGB)(Ejemplo traducido y adaptado del original que figura en la libreraLIFAaportada por

    National Instruments)

    Vamos a controlar un diodo del tipo tricolor RGB. Para ello utilizaremos dos bloque dela librera Arduino: RGB LED configure y RGB to Color.

    El aspecto del Panel es el de la figura siguiente. Vemos que hay tres Slider dedesplazamiento que suministran valores de tipo Integer (0255) correspondientes acada uno de los tres colores de este tipo de dispositivo luminoso.

    El Bloque RGB LED Configure permite designar los pines por dinde sacaremos elvalor analgico tipo PWM para cada uno d elos pines RGB del LED.

    Red Pin PIN 6

    Green Pin PIN 5

    Blue Pin PIN 3

    https://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduino
  • 5/28/2018 Arduino + LabVIEW

    81/114

    81

    No olvidemos que deben ser pines del tipo PWM (en Arduino UNO son los pines3,5,6,9,10,11)

    Una vez dentro del bucle se colocara un bloque de escritura para sacar los valores porcada 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 Colorde este bloque de escritura la recogemos a travs del bloque RGBto Colorque 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 unamuestra del color que estamos sacando por el LED RGB: Color

    A continuacin mostramos el esquema funcional completo.

  • 5/28/2018 Arduino + LabVIEW

    82/114

    82

    Este sera el montaje del prototipo de pruebas

  • 5/28/2018 Arduino + LabVIEW

    83/114

    83

    7.24. Medida de temperatura(Ejemplo traducido y adaptado del original que figura en la libreraLIFAaportada por

    National Instruments)

    Vamos a realizar un ejemplo en el que utilizaremos un bloque especifico d ela libreraLIFA: Thermistor Read.

    La parametrizacion de este bloque consiste en definir:

    Thermistor AI Pin Canal de entrada AnalgicoPaired Resistance Resistencia a colar en serie con el sensorVcc Valor de la tensin de referencia (normalmente 5 v.)Units Permite seleccionar las unidades de escla (C, F y K)

    Estos valores los pondremos, en esta ocasio0n, a travs del Panel de visualizacin.

    La visualizacin del valor analgica (temperatura) ledo la mostraremos con una barrade color Temperaturay un cuadro numrico.

    A continuacin mostramos el aspecto del Panel de visualizacin en modo ejecucin.

    https://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduino
  • 5/28/2018 Arduino + LabVIEW

    84/114

    84

    Este es el aspecto del diagrama de bloques funcional. Se ha cableado la seal de rrorpara que permita salir del bucle.

    No olvidemos que el control Inittiene unos valores por defecto, si no nos interesanestos podemos cambiarlos pulsado dos veces sobre el bloque.

    Este es el monjate real para la comprobacion del ejercico.

  • 5/28/2018 Arduino + LabVIEW

    85/114

    85

    7.25. Manipulacin de un Mando Joystick.(Ejemplo traducido y adaptado del original que figura en la libreraLIFAaportada por

    National Instruments)

    En numerosas aplicaciones realizadas con Arduino se utiliza un joystick, por esopresentamos este ejemplo en el que se utilizan las libreras de tratamiento de estecomponente.

    Se rata de leer las seales generadas por el mando y redireccionarlas a un bloque decontrol de LED RGB.

    La aplicacin lo que har ser controla el color del LED RGB en funcin de lasposiciones del joystick.

    En primer lugar, fuera del bucle de control se pondr el bloque Inity los dos bloquede configuracin del LED RGB y del joystick: RGB LED Configure

    Se designaran los PIN para los colores Rojo, Verde y Azul

    Red Pin: PIN 6

    Green Pin: PIN 5

    Blue Pin: 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: 2

    Vertical Axis AI Pin: 3

    Select DI Pin: 4

    https://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduino
  • 5/28/2018 Arduino + LabVIEW

    86/114

    86

    En este caso igual que en el anterior este bloque posee una salida que contiene lainformacin de configuracin del joystick que deber trasladarse al bloqueThumbdtick Read

    Dentro del bucle de control colocamos en primer lugar el bloque Thumbdtick Readque lee la posicin y estado del boton del joystick y lo saca en sus salidasHorizontal

    Axis, Vertical Axis y Select

    La informacin que entrega este control, se lleva a un bloque convertidor ThumbstickValue to Angleque convierte los valores x e y en un valor anguloque entregaa un bloque que convierte este valor en un colorAngle Mag to RGB

    De este bloque utilizamos las salidas Degreesy Magnitudepara atacar el siguientebloque 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 Coloren el pin deentrada Colordel bloque RGB LED Write

  • 5/28/2018 Arduino + LabVIEW

    87/114

    87

    A continuacin se muestra el diagrama completo de conexionado de bloques.

    Bsicamente los pasos son los anotados en la imagen siguiente:

    1. Inicializar la conexin con el Arduino con la tasa de baudios de 115200 DEFAULT.2. Configuracin de LED RGB3. Configuracin de pines para el uso con el joystick4. Leer los valores de joystick (horizontal y vertical del eje y de seleccin)5. Convertir los valores de joystick con el ngulo y la magnitud6. Convertir el ngulo y la magnitud de color y la intensidad7. Escribe el color de LED RGB8. Cierra la conexin con Arduino9. Controlar los errores

    Este sera el aspecto de la pantalla Panel en modo ejecucin.

  • 5/28/2018 Arduino + LabVIEW

    88/114

    88

    Esquema de conexiones

  • 5/28/2018 Arduino + LabVIEW

    89/114

    89

    7.26. Generador de Tonos(Ejemplo traducido y adaptado del original que figura en la libreraLIFAaportada por

    National Instruments)

    En este ejemplo vamos a probar la funcin Tonede la librera de Arduino

    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 salidadigital seleccionable con un control numrico desde el Panel en el que adems

    podremos variar frecuencia y duracin. Vemos en la siguiente figura el aspecto deldiagrama de bloques funcional.

    Se ha colocado dentro del bucle de ejecucin el bloque Toney en esta ocasin se hacableado 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 estnocupados para la comunicacin con LabVIEW.

    https://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduinohttps://decibel.ni.com/content/groups/labview-interface-for-arduino
  • 5/28/2018 Arduino + LabVIEW

    90/114

    90

    A continuacin mostramos el conexionado para realizar las pruebas

  • 5/28/2018 Arduino + LabVIEW

    91/114

    91

    ANEXO:

    Material Bsico

    A modo de sugerencia describimos el Kit que enla actualidad vende Sparkfun Electrnica

    https://www.sparkfun.com/products/11225

    Arduino+LabVIEW Bundle

    49.95$ (agosto 2012)

    Caracteristicas del Kit

    Arduino + Paquete de LabVIEWDEV-11225 RoHS

    Descripcin: Alguna vez un nuevo sensor de SparkFun y desea probarlo rpidamente?Tal vez usted quiere hacer un mayor procesamiento de los datos que el Arduino puedeproporcionar. Imagnese cmo sera tener esos datos a su computadora y tener una GUI(interfaz grfica de usuario) para su sensor de pocos minutos de abrir la caja roja.

    NI LabVIEW es un entorno de programacin grfica utilizado por millones deingenieros y cientficos para desarrollar la medicin sofisticado, prueba, y los sistemasde control mediante intuitivos iconos grficos y cables que se asemejan a un diagramade flujo. A travs de la interfaz de NI LabVIEW para Arduino Kit de herramientas, queahora pueden aprovechar todos los beneficios de la programacin grfica de LabVIEWde NI para sus proyectos de Arduino.

    La LIFA (Interfaz de LabVIEW para Arduino) caja de herramientas es una descargagratuita que permite a un desarrollador de LabVIEW para obtener fcilmente los datoshacia y desde el microcontrolador Arduino cada vez ms popular. La arquitectura bsicadetrs de esto es que hay un motor de E / S programada para el Arduino que esperardenes de serie de LabVIEW y responde con los datos solicitados o de accin.

    Este kit incluye un R3 Arduino Uno y el LabVIEW Student Edition DVD paraWindows y MacOS. Slo tiene que cargar el firmware de cdigo abierto a la incluidaUno Arduino, conctelo a su computadora e instalar el software LabVIEW.

    Nota: El envo a Canad y los EE.UU. solamente. Lo sentimos mundo.

    https://www.sparkfun.com/products/11225https://www.sparkfun.com/products/11225https://www.sparkfun.com/products/11225
  • 5/28/2018 Arduino + LabVIEW

    92/114

    92

    Nota: Aunque las imgenes muestran a la ahora obsoleta LabVIEW 2010, que son elenvo de 2011. La foto de Arduino no es tambin la R3 a pesar de que este paqueteincluye ahora la ltima Arduino Uno R3. Imgenes de los productos se actualizarn parareflejar 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 lafuncionalidad en el equipo.Completamente de cdigo abierto del firmware (E / S del motor en el Arduino) yel marco de LabVIEW.

  • 5/28/2018 Arduino + LabVIEW

    93/114

    93

    Libreras del Kit LIFA de LabVIEW para Arduino

    Descripcin de controles del panel frontal de la Librera Arduino

    Permite seleccionar un Pin de EntradaAnalgica

    Permite seleccionar un Pin de Entrada SalidaDigital

    Permite designar un Pin como Entrada o comoSalida

    Selecciona el tipo de Tarjeta

    Selecciona tipo de Byte

    Factor de Divisin de la frecuencia de Reloj

    Modo de dato

    Permite seleccionar el puerto con el que noscomunicaremos con Arduino

  • 5/28/2018 Arduino + LabVIEW

    94/114

    94

    Descripcin e Librera Arduino del mduloDiagrama de Bloques de Labview

    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 seindican en la figura anterior.

    Los conectores Arduino Resorcey error outse deben cablear a todos loselementos que se coloquen en el diagrama con el fin de que los parmetros de

    configuracin se transfieran a todos los bloques.

  • 5/28/2018 Arduino + LabVIEW

    95/114

    95

    Mdulo de cierre de la conexin con el puerto.

    Funciones low level

    Lectura de una entrada analgica de Arduino.

    Recoge de entrada el nmero de canal en formato INTEGER y devuelve de salida elvalor ledo en formato DBL.

  • 5/28/2018 Arduino + LabVIEW

    96/114

    96

    Lectura del puerto analgico.

    Devuelve el valor ledo en el Puerto Analgico

    Configura un PIN digital como Entrada o salida. Los parmetros de entrada sern elnmero de puerto y el modo de trabajo (I/O).

    Lectura del valor en un pin digital.Lee el valor de una entrada digital designadame