Tutorial Arduino y Labview Con Ejemplos

Share Embed Donate


Short Description

Descripción: Problemas con arduino...

Description

6 Labview + Arduino Utilización de Labview para la Visualización y Control de la Plataforma Open Hardware Arduino

Ver. 1.0

+

Arduino José Manuel Ruiz Gutiérrez José Manuel Ruiz Gutiérrez Serie: Herramientas Gráficas para la programación de Arduino 1

2.

Cinco razones para utilizar Arduino+Labview

(traducido de la página http://www.ni.com/white-paper/12879/en )

El microcontrolador Arduino es una plataforma de bajo costo de electrónica de prototipos. Con la interfaz de LabVIEW para Arduino LIFA se puede aprovechar la potencia del entorno de programación gráfica de LabVIEW para interactuar con Arduino en una nueva dimensión.

1. Interface Gráfica de Usuario (Graphical User Interface GUI) Visualizar los datos Mostrar datos de los sensores en el monitor del ordenador mediante los paneles frontales de LabVIEW.

Personalización de la interfaz de usuario Permite dar al proyecto un toque profesional con los controles del panel frontal de LabVIEW y los indicadores.

2. Programación Grafica Arrastrar y soltar En lugar de tratar de recordar un nombre de función, se encuentra en la paleta y colóquelo en su diagrama de bloques.

Documentación simple Pase el ratón sobre cualquier VI o función con el ratón y ver al instante la documentación con ayuda contextual. 6

http://decibel.ni.com/content/docs/DOC-20084 Leer la intensidad de luz en una celda solar con Arduino http://decibel.ni.com/content/docs/DOC-16069 Manipular los LEDs de la tarjeta arduino http://decibel.ni.com/content/docs/DOC-16261

9

4.

Instalación del Software y el Hardware

A continuación describimos los pasos que se recomiendan para la puesta en marcha de la herramienta LIFA ( LabVIEW para Arduino): La configuración de la Interfaz de LabVIEW para Arduino es un proceso de seis pasos que usted sólo 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 descripción 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 versión de evaluación de 30 días 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. Instalación 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

7. El firmware se puede encontrar en \ vi.lib Interface \ LabVIEW para

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.

Instalación del Firmware de comunicación entre LabVIEW Interface y Arduino Uno?

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 opción 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

Una vez realizadas estas operaciones basta con que pulsemos el botón 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.

Algunas preguntas sobre la interface LIFA

(Traducido de http://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 programación gráfica de LabVIEW. 2. ¿Qué versiones del entorno LabVIEW permiten la conexión con Arduino? La interfaz de LabVIEW para Arduino es actualmente compatible con cualquier versión de Windows o Mac OS que soporta LabVIEW 2009 o posterior. El kit de herramientas también funcionan en cualquier versión 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é versión 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. ¿Cómo se instala la interfaz de LabVIEW para Arduino? Siga los pasos de este documento. Instalación. 6. ¿Dónde 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 través del teléfono, correo electrónico, o de otra manera. 7. ¿Cómo puedo empezar a utilizar la interfaz de LabVIEW para Arduino? Después 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 Código de LabVIEW a mi Arduino? No. En este momento no es posible implementar el Código de LabVIEW para la placa Arduino. Solo es posible utilizar la interfaz de LabVIEW para Arduino para -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

¿Cómo configuro la interfaz de LabVIEW para Arduino para usar una conexión 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 código abierto pensado para la personalización. 11. ¿Cómo funciona la interfaz de LabVIEW para Arduino (LIFA) de trabajo? En pocas palabras, la interfaz de LabVIEW para Arduino envía paquetes de datos de LabVIEW para Arduino. Arduino procesa los paquetes y envía paquetes de retorno. Los paquetes de retorno se analizan por LabVIEW para proporcionar información ú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 comprobación. La longitud del paquete se puede cambiar para adaptarse a aplicaciones específicas mediante la modificación del firmware y especificar el tamaño del paquete a la VI Init en LabVIEW (La mayoría de los usuarios no tendrán que hacer esto). El firmware LIFA en el Arduino procesa los paquetes, asegurando que los datos no se han dañado durante la transmisión. A continuación, una vez leído el paquete, comprueba el byte de comando y ejecuta las instrucciones con los bytes de datos proporcionados basándose en el byte de comando. 16

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 ejecución permitirá cambiar la entrada a leer. IMPORTANTE: Es muy importante que se sepa que los PIN 0 y PIN 1 digitales están ocupados en la comunicación 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 conexión entre módulos:

La salida del dato leído es un dato tipo “Integer de 8 bits” por lo tanto se deberá realizar la conversión a dato tipo booleano Para después 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 en el botón del Panel

para detener la ejecución siempre se debe hacer pulsando

En la figura vemos el montaje de la aplicación 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 analógico a la salida PWM PIN 3 que obtendremos de un elemento de panel. Se leerá el valor del canal de entrada analógica A0 y se mostrará en un instrumento de aguja en el panel a la vez que en un instrumento “termómetro”. 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 inicialización y le asignamos el parámetro de número de puerto, el resto le dejamos los que toma por defecto. Seguidamente configuramos el PIN 8 como salida. Dentro del bucle

procederemos a colocar los siguiente elementos:

Un bloque de lectura de señal analógica figura. a

tal como se muestra en la

21

Este bloque necesita que le pongamos el valor del canal de entrada analógica g 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 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 tenemos puesta para la configuración del PIN y el valor “Value” que queremos sacar en la salida lo tomamos de un interruptor que a la vez también sacamos a un Led LED 8. Ambos en el panel. 22

28

7.5.

Contador de impulsos con puesta a cero

En el siguiente ejemplo añadimos al contador explicado en el anterior la posibilidad de poner a cero el contador. Para ello todo será igual a excepción de que colocaremos un botón de

que

En el esquema de bloques funcionales vemos que el sistema es el mismo a excepción de que hemos añadido una función del tipo .

Esta función saca el valor de “t” cuando la entrada “s” es TRUE y saca “f” cuando su entrada “s” es FALSE.

29

A continuación mostramos el esquema completo.

. Este sería el esquema de pruebas

30

7.6.

Intermitente

Abordamos en este ejemplo el clásico 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 ejecución. En este caso recurrimos a la ejecución cada cierto tiempo del contenido de nuestro bucle

En la anterior imagen vemos el aspecto del Panel y en la siguiente vemos el esquema de bloques funcional de la aplicación. Como siempre inicializamos Arduino y después definimos el PIN 8 como una salida. Dentro el bucle colocamos la función de escritura . Este bloque recibe la señal digital de la estructura que constituye el “oscilador” de frecuencia variable: Implementación del reloj

31

3. Genera las señales Rojo, Amarillo y Verde. Mediante una estructura tipo ados que se asociaran a cada uno de los estados de nuestro semáforo.

En las figuras siguientes se muestra cada uno e los casos creados. Hemos definido

Estado Rojo. En el vemos que el estado siguiente debe ser y Verde (FALSE). Tiempo 1000 ms.

Estado Ámbar. En el vemos que el estado siguiente debe ser RUE) y Verde (FALSE). Tiempo 1000 ms.

Estado Verde. En el vemos que el estado siguiente debe ser (FALSE) y Verde (TRUE). Tiempo 700 ms.

35

7.8.

Semáforo Ajustable

A continuación proponemos u ejercicio de semáforos en el que los tiempos de encendido de cada lámpara 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 realización funcional de la aplicación es la misma que la explicada anteriormente con la única diferencia de que en cada uno de los tres estados de la estructura se ha incluido un elemento distinto para la designación de tiempo. En las figuras que se muestra a continuación podemos distinguir cada uno de los bloque de captura de valor

Finalmente se muestra el esquema funcional completo 37

Este sería el montaje de prueba

38

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

Este es el montaje de pruebas

40

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, pudiéndose cambiar las conexiones.

42

7.11. Escritura/Lectura de todos los Canales Con este ejemplo vamos a controlar todas las salidas monitorizando a su vez su estado en el panel. Para ello disponemos de dos arrays, uno de interruptores y otros de indicadores leds que nos permitirán las funciones de gobierno de salidas. Se ha puesto también la posibilidad de leer el estado de los canales analógicos.

Aquí recurrimos a dos bloques de función de la librería Arduino hasta ahora no utilizados: , y . Después 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 v¡bloque de la figura

Es muy importante que se sepa que los canales digitales 0 y 1, PIN 0 y PIN 1 están reservados para la comunicación con LabVIEW por lo tanto su lectura obedece al tráfico de datos que se esté realizando y en ningún caso se podrán colocar interruptores de entrada en esos canales. 43

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

45

Pondremos: Servo 0 Servo 1

en el PIN 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 función

La señal creada se lleva a la entrada “Angle” del bloque El siguiente bloque sirve para leer la posición del Servo devolviendo el valor en “Angle (Degrees)” que se lleva a un indicador analógico “Servo 0”

El Servo 1 se gobernará de la misma forma que el anterior con un bloque de tipo cuya entrada conectamos a un control de tipo analógico al que hemos denominado Finalmente se colocará un bloque que nos indicara la posición del servo y la mostraremos con un instrumento analógico denominado “Servo 1”

48

49

7.13. Función AND El ejemplo que se muestra a continuación implementa una función AND entre dos entradas PIN 9 y PIN 10 cuya salida gobierna el PIN 12

En la figura se muestra el aspecto del Panel. La implementación como siempre comienza por el bloque de configuración de PIN

seguido de los bloques

Dentro del bucle de ejecución se deben colocar dos bloques de lectura de PIN Read y uno de escritura La señal que gobierna este último bloque se obtiene de realizar la función AND de las salidas obtenidas de las lecturas del PIN 9 y PIN 10. Los elementos de visualización de estado se han colocado en las salidas de los tres bloques. No olvidemos que las señales deben convertirse de Array 1D a Array booleano mediante el bloque de función:

50

ejecuta cíclicamente el contenido del bucle se alimenta con una entrada de valor proporcionada por un “Intervalo de medida en s”.

esta función etiquetado como

Los valores leídos del canal de entrada analógico “Temperatura instantánea”

se

muestran en un medidor de aguja a la vez que en el registrador gráfico

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

53

7.15. Control Motor de cc. Velocidad y Sentido (Traducido 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 pagina y es un valioso ejemplo de cómo pode controlar un pequeño motor de cc. Haciendo uso del puente de potencia integrado en el CI L293D que puede controlar dos motores de corriente continua: el L293D (ficha técnica aquí ).

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 rápida del motor Para rápida del motor Para rápida del motor

Este circuito es relativamente fácil de implementar y lo haremos con un solo motor que simplifica aún más el conjunto. Téngase 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 ). Descripción 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

El programa de LabVIEW se pueden presentar de la siguiente manera (la única parte que varía 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 conexión 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 que se encargara del gobierno del motor. La ejecución 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 numérico de aspecto circular que hemos etiquetado como “Velocidad y sentido de giro” PIN Arduino

PIN 7 PIN 8

Valor

0 1

PIN L293D

PIN L293D

Giro

INPUT 1 0

INPUT 1 1

Izquierda

False” el sentido de giro es a la Derecha por lo que debemos sacar PIN Arduino

PIN 7 PIN 8

Valor

1 0

PIN L293D

PIN L293D

Giro

INPUT 1 1

INPUT 1 0

Derecha

58

sentido esta girando el motor. un operador del tipo

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 máximo 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

7.16. Medida de Temperatura mediante el Bus I2C http://innovelectronique.fr/2012/05/04/arduino-et-lifa-labview-interface-for-arduino/ El sensor de temperatura DS1621 es un componente relativamente común (aquí esta su ficha técnica). Sin detallar demasiado, sólo tendremos que especificar los comandos a enviar al DS1621 para iniciar y hacer una simple lectura de la temperatura. Los pines 1 y dos son las señles SDA y SCL del bus I2C. El Pin 3 (A) no será utilizado en nuestra aplicación. Los pines 7 (A0), 6 (A1) y 5 (A0) se conectan a tierra para establecer la dirección de este sensor I2C. El pin 4 es de tierra y el pin 8 + Vcc (5V aquí).

La secuencia de inicialización 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 configuración 4. Escriba 0 × 00: conversión de la temperatura continua 5. Condición de parada (stop) 6. Esperar 20 ms: escribir eeprom de la configuración anterior 7. Condiciones de inicio (start) 8. Escriba 0 × 90: se selecciona la casilla A2A1A0 = 000 escribir 9. Escribir 0xEE son: lanzamiento de la conversión a la temperatura constante 10. Condición 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 configuración de la temperatura y un NACK! Condición de parada (stop) 60

Te das cuenta que no es fácil, pero vamos a tratar de poner en práctica todas las funciones de LabVIEW con Arduino. Dependiendo de la versión 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:

El frontal de LabVIEW se produce como sigue:

61

Nota: Un indicador que se utiliza para seleccionar la dirección del sensor DS1621 en el bus I2C. Bajo el título "Datos I2C" es en realidad una forma de tabla de indicadores, se puede ver los datos leídos del bus I2C. El diagrama se puede presentar como sigue:

En primer lugar para entender cómo trabaja el VI sub I2C miré a las señales procedentes de la Arduino I2C en un osciloscopio y debo decir que me ayudó. La lectura del diagrama de izquierda a derecha:

62

4. A continuación, entra en un bucle infinito. La temperatura será solicitada cada 500 ms. Para aplicar la temperatura final, escribir el valor 0xAA (170). 5. A continuación, lea el resultado: aquí el DS1621 tiene que enviarnos dos bytes, donde el valor 2 en la sub VI "Lee I2C". Este sub VI también 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 extracción 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 conversión: en nuestro caso, este byte tomar dos valores: o bien 128 para indicar es necesario añadir 0,5 ° C o 0. 7. A continuación se recogen las señales y la temperatura real se muestra en el termómetro. 8. Esto funciona, pero tenga en cuenta que no se ocupa de temperaturas negativas. Ese es un ejercicio que se queda sin hacer. Inténtelo usted.

64

7.17. Diálogo con Arduino Ethernet

65

El código de Arduino se muestra a continuación. Se basa enteramente en el "Servidor Web" ejemplo, es entonces suficiente para simplificar. El código está comentado así que lea con cuidado! /* Serveur TCP O. DARTOIS, le 23/05/12 Source directement basée sur l'exemple Web Server */ #include #include // 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 création d'un objet "Server" qui va accepter // les connexions extérieures à 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(); // Démarrage du serveur pinMode(3,OUTPUT); // Broche 2 en sortie (DEL) digitalWrite(3,LOW); // Broche 2 à 0 => DEL eteinte analogReference(INTERNAL); // Référence du CAN à 1,1V } void loop() { // Attente des connexions et création 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 caractères char c = client.read(); // on lit le caractère reçu 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 caractère qui représente le résultat de // la conversion AN (par ex: '236') suivi des caractères CR+LF server.println(analogRead(0)); delay(100); // On ralenti un peu le flot de données } client.stop(); // Fermeture de la connexion } }

Una vez que el código compilado e instalado en el arduino con su ethershield, vamos a hacer un panel frontal de LabVIEW para controlar el conjunto.

66

El diagrama de bloques de LabVIEW se presenta como sigue:

Como se puede ver, el esquema es muy simple ... es especializado en el LabVIEW VI que lleguemos a ese nivel de simplicidad. Una pequeña explicación de todos modos: el lado del servidor arduino implementa una pila TCP / IP pero es bastante fácil hablar en una red ethernet. Que utiliza las direcciones IP y la versión 4 de IP que se puede hacer de enrutamiento, lo que significa que usted puede poner una caja de montaje detrás 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 llegarán con seguridad! La pérdida 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 "conexión TCP Abrir" y luego configurarlo. En nuestro caso, la dirección 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 dirección IP de su computadora portátil podría ser 192.168.1.15. 2. Una vez que la conexión está abierta, puede enviar datos con el VI "TCP escribir". Toma como entrada de caracteres o cadenas. Aquí, según el estado de la tecla "Control del LED", le enviaremos el carácter 'A' (para la luz LED, vea el código arduino) o 'a' del personaje.

67

y a la vez también se puede salir si se produce un error mediante el bloque

70

7.19. Conexión de un Módulo BlikM

71

E la figura siguiente vemos el aspecto de la pantalla Panel en modo edición.

El montaje es el de la figura.

73

Montaje de pruebas 75

7.22. Medida de luz (Ejemplo traducido y adaptado del original que figura en la librería LIFA aportada por National Instruments)

Se trata de realizar una aplicación para medir la cantidad de luz del ambiente. Para ello recurrimos a un bloque de función de la librería LIFA que realiza justo esta tarea. Bloque Los Parámetros que hemos de configurar en este bloque se muestra n la figura

El pin a la que conectaremos la fotocélula la tensión de referencia máxima 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

si se produce un ev

78

Montaje de pruebas

79

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: . La información de los PIN de las salidas se recoge del bloque de configuración anterior “RGB LED Pins”

La entrada “Color” de este bloque de escritura la recogemos a través del bloque 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 continuación mostramos el esquema funcional completo.

81

7.24. Medida de temperatura (Ejemplo traducido y adaptado del original que figura en la librería LIFA aportada por National Instruments) Vamos a realizar un ejemplo en el que utilizaremos un bloque especifico d ela librería LIFA: . La parametrizacion de este bloque consiste en definir: Thermistor AI Pin Paired Resistance Vcc Units

Canal de entrada Analógico Resistencia a colar en serie con el sensor Valor de la tensión de referencia (normalmente 5 v.) Permite seleccionar las unidades de escla (ºC, ºF y ºK)

Estos valores los pondremos, en esta ocasio0n, a través del Panel de visualización. La visualización del valor Temperatura y un cuadro numérico.

A continuación mostramos el aspecto del Panel de visualización en modo ejecución.

83

Este es el aspecto del diagrama de bloques funcional. Se ha cableado la señal de rror para que permita salir del bucle. No olvidemos que el control tiene unos valores por defecto, si no nos interesan estos podemos cambiarlos pulsado dos veces sobre el bloque.

Este es el monjate real para la comprobacion del ejercico.

84

7.25. Manipulación de un Mando Joystick. (Ejemplo traducido y adaptado del original que figura en la librería LIFA aportada por National Instruments) En numerosas aplicaciones realizadas con Arduino se utiliza un joystick, por eso presentamos este ejemplo en el que se utilizan las librerías de tratamiento de este componente. Se rata de leer las señales generadas por el mando y redireccionarlas a un bloque de control de LED RGB. La aplicación lo que hará será controla el color del LED RGB en función de las posiciones del joystick. En primer lugar, fuera del bucle de control se pondrá el bloque de configuración del LED RGB y del joystick:

y los dos bloque

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 Seguidamente configuramso el joystick para lo cual designamos

Los pines para cada eje y para el botón. Horizontal Axis AI Pin: Vertical Axis AI Pin: Select DI Pin:

2 3 4

85

7.26. Generador de Tonos (Ejemplo traducido y adaptado del original que figura en la librería LIFA aportada por National Instruments) En este ejemplo vamos a probar la función

de la librería de Arduino

Esta librería se encarga de generar una señal de frecuencia variable en la que es posible también variar la duración. Es decir genera tonos de duración y frecuencia variable.

Probaremos su funcionamiento generando un tono a través de uno de los PIN de salida digital seleccionable con un control numñET EMC /P 4 5627(a )-6(e)4(nc)43(e)4.1 857(c)4

89

Nota: Aunque las imágenes muestran a la ahora obsoleta LabVIEW 2010, que son el envío de 2011. La foto de Arduino no es también la R3 a pesar de que este paquete incluye ahora la última Arduino Uno R3. Imágenes de los productos se actualizarán para reflejar este cambio. Características: Utiliza USB, XBee, o enlaces Bluetooth para la comunicación. Tasa de 150 Hz con conexión de cable (50 Hz Wireless). Le da acceso a analógica de Arduino, digitales, PWM, I2C, SPI y la funcionalidad en el equipo. Completamente de código abierto del firmware (E / S del motor en el Arduino) y el marco de LabVIEW.

92

Librerías del Kit LIFA de LabVIEW para Arduino Descripción de controles del panel frontal de la Librería Arduino

Permite seleccionar un Pin de Entrada Analógica Permite seleccionar un Pin de Entrada Salida Digital

Permite designar un Pin como Entrada o como Salida Selecciona el tipo de Tarjeta

Selecciona tipo de Byte

Factor de División de la frecuencia de Reloj

Modo de dato Permite seleccionar el puerto con el que nos comunicaremos con Arduino

93

Descripción e Librería Arduino del módulo Diagrama de Bloques de Labview

Modulo de Inicio de la Tarjeta Arduino Este módulo es imprescindible n cualquier configuración que hagamos, permite configuar las características de Arduino. Por defecto viene con los parámetros que se indican en la figura anterior. Los conectores y se deben cablear a todos los elementos que se coloquen en el diagrama con el fin de que los parámetros de configuración se transfieran a todos los bloques.

94

Lectura del puerto analógico. Devuelve el valor leído en el Puerto Analógico

Configura un PIN digital como Entrada o salida. Los parámetros de entrada serán el número de puerto y el modo de trabajo (I/O).

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

96

Escritura en salida Analógica 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 número de PINs los recoge del valor PWM PINs. Los valores de cada señal se suministran en los pines de entrada PW 0, PWM 1 y PWM 2

98

Librería SPI

100

101

Librería Analog Sampling

Adquisición continua de datos: Permite activar la lectura de datos en el de una entrada analógica teniendo la posibilidad de asignar el tiempo de muestreo en la lectura

Detiene la adquisición continua de los datos

Adquisición de un numero de muestras de valor: Lee un determinado numero de veces (muestras) un canal de entrada analógica con una frecuencia de barrido determinada por el usuario. 102

Lee el valor de un sensor de Temperatura: Permite la configuración del PIN en el que se colocara el sensor así como el valor de la resistencia divisora de tensión que conectemos con el fin de realizar el escalado de la medida y también la posibilidad de establecer una tensión 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 configuración del PIN en el que se colocara el sensor así como el y también la posibilidad de establecer una tensión 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

Configura un display de siete segmentos

Escribe un carácter en un display de siete segmentos.

Escribe un String en un display de siete segmentos

106

Configura un joystick: Se designan los pines analógicos para el eje X y el eje Y así como la entrada digital para el botón se selección. Genera una señal 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 Selección

107

Librería BlinkM

Esta librería sirve para el manejo de elementos luminosos tipo BlinkM

Librería Stepper Motor

Librería para control de motores paso a paso

108

Configura motor paso a paso: Especifica una salida para conectar un motor.

Escribe valores sobre un motor paso a paso: Escribe el número de pasos a girar y la velocidad de generación de pasos, así como el motor a activar

Confirmación de funcionamiento del motor paso a paso: Indica en su salida el número de pasos que faltan para alcanzar la consigna dada.

109

Espera la consecución de todos los pasos consignados para el giro

Cierra el gobierno del motor paso a paso

110

Librerías de Servos

111

112

Librería LCD

113

Librería Utilidades

Ejemplos

114

View more...

Comments

Copyright © 2017 KUPDF Inc.
SUPPORT KUPDF