Arduino

Premios Bitácoras
14 diciembre, 2012
|
16.263 35

LabVIEW + Arduino: Voltímetro

labviweComo ya pudimos ver en un tutorial anterior, LabVIEW es una potente herramienta ingenieril y, podemos conectarla con Arduino. La unión de Arduino y LabVIEW puede ser explosiva y, esto os lo vamos a ir mostrando poco a poco aquí, en Geeky Theory.

En este tutorial, vamos a diseñar un proyecto en LabVIEW para crear un voltímetro con Arduino. Si miramos atrás, podemos ver que ya creamos un tutorial para hacer un voltímetro con Arduino, pero os voy a refrescar un poco la memoria con un pequeño resumen de su funcionamiento.

En esta imagen, vemos el voltímetro creado en el tutorial anterior, con un display LCD y tres botones. Los botones eran para seleccionar la magnitud que queríamos medir, como podemos ver escrito en la pantalla.

¿Cómo vamos a conseguir saber qué tensión estamos midiendo?

Para realizar el voltímetro, utilizamos 3 resistencias de 120 KOhms. Con este circuito, se realiza un divisor de tensión. Al ser las resistencias iguales, la tensión se dividirá entre tres y, sobre cada resistencia caerá un potencial equivalente a un tercio del voltaje de entrada. Tras simular con OrCAD, obtenemos estas gráficas:

 

 

¿Cómo empiezo a hacerlo con LabVIEW?

En este caso, tendremos algo parecido, pero seguro que mucho más cómodo y con una interfaz gráfica que podremos modificar a nuestro gusto. Tras este tutorial, acabaréis teniendo lo siguiente:

Como podéis ver, tenemos un indicador analógico y un indicador numérico. Además, como no podría ser de otra manera, tenemos una opción para seleccionar la magnitud en la que queremos medir y, su correspondiente LED para indicarnos lo que estamos midiendo.

En caso de que estemos midiento en milivoltios, se encenderá el LED de mVoltios, como se ve en la imagen. Con los voltios y KVoltios pasa exactamente lo mismo.

Pero… ¿Cómo consigo poner todo eso en mi ventana?

Es tan sencillo como arrastrar objetos. Lo que haremos es ir a la pestaña View/Controls Palette y a View/Tools Palette, tal y como se ve en la siguiente imagen:

 

Tras esto, nos saldrán esas dos ventanas y, desde aquí, podremos crear nuestra interfaz gráfica.

Vemos que nos salen botones para LEDs, para indicadores numéricos o para botones. Si hacemos click en ellos y arrastramos el modelo que queramos, ya lo tendremos todo montado. Es conveniente añadir un botón de STOP para cuando queramos parar la ejecución.

Ahora tendremos algo parecido a esto, pero sin funcionalidad alguna, ya que no hemos establecido ninguna relación entre los distintos bloques creados:

Aunque probablemente no se encienda ningún LED y tengamos un indicador por un lado y otro por otro. Van a ser tres indicadores diferentes, uno para cada magnitud, ya que no podemos redimensionar en el momento estos indicadores.

Ahora vamos a ver el diagrama de bloques de nuestro proyecto y, lo haremos siguiendo esta serie de pestañas o pulsando Ctrl+E:

Seguidamente, se nos abrirá el diagrama de bloques. Lo primero que haremos será poner un bucle while-loop:

Dentro del bucle While, pondremos los bloques para inicializar la conexión con Arduino. Es muy importante seleccionar el cable de color verde oscuro en la salida del bucle, con el botón derecho y darle a “Replace with Sift Register”. Nos quedará lo siguiente:

 

Ahora tenemos que decirle a LabVIEW desde qué pin vamos a recibir los datos. Esto lo haremos de la siguiente manera y, elegiremos el pin analógico número cero:

Una vez inicializada la conexión con Arduino, tendremos que ver cómo conectamos todos los bloques que tengamos por ahí sueltos. Yo no tengo ninguno ahora mismo porque he empezado el proyecto desde cero para el tutorial y tengo la interfaz de usuario totalmente vacía:

Si introducimos todos los LEDs, el Menu Ring y los indicadores, nos quedará algo así, muy desordenado:

 

 

Ahora, vamos a crear una estructura condicional para saber si estamos midiendo en milivoltios, voltios o kilovoltios. Esto lo haremos dentro del bucle:

Cuando lo pongamos, lo tendremos que unir al menú desplegable que hemos creado antes, el Menu Ring. Automáticamente se cambiarán los valores de True y False a 0, Default y 1. Como ahora tenemos 2 únicos valores y queremos 3, mV, V y kV, tendremos que añadir uno más.

Para añadir un nuevo caso y, ya que estamos, codificar cada caso, iremos a las propiedades del Menu Ring:

Una vez estemos dentro de las propiedades, iremos a la pestaña “Edit Items” y la dejaremos de la siguiente manera:

De esta forma, ahora ya tenemos los tres casos que queríamos dentro del Ring, pero no en la estructura condicional. Para ello, vemos al hacer click derecho sobre la estructura “case” unas opciones para añadir casos o quitarlos. Es ahora cuando tendremos que añadir un nuevo caso, que será el 2 y, pondremos por defecto el caso 1, que es el de la medida en Voltios:

Ya tenemos prácticamente todo hecho. Ahora, lo único que nos falta es multiplicar por 3000 (para mV), por 3 (para V) o por 0.003 (para KV), por la razón que he explicado al principio del artículo. Además, habrá que meter cada indicador dentro de su correspondiente casilla.

Para multiplicar por un número cualquiera, tendremos que ir a la ventana de funciones y elegir el bloque de multiplicación:

Para poner el número por el cual queremos multiplicar lo que leamos de Arduino, dentro de la misma pestaña en la que estábamos:

Una vez hecho esto, podemos decir que estamos ya casi en el final. Ahora simplemente queda hacer visibles o invisibles los indicadores analógicos. Esto lo hacemos desde aquí:

 

Crearemos tres, bloques “visible”, uno para cada indicador y, según estemos en un caso o en otro, lo pondremos a true o a false. Además, tenemos que conectar los LEDs para que se encienda uno de los tres en función de la magnitud en la que estemos midiendo. Tras hacer esto, nos quedará algo así:

Lo único que falta es añadirle un temporizador para que el bucle se ejecute cada 500 ms y, finalmente, tendremos todo listo para ejecutar nustro VI:

Falta decir que, antes de poder ejecutarlo, tenemos que cargar la interfaz para Arduino que nos proporciona Arduino en nuestro microcontrolador. La ruta es, según donde hayamos instalado LabVIEW:

Pues ya tenemos nuestro proyecto creado. Puede que hayáis tardado un poco en hacerlo si es vuestra primera vez con LabVIEW, pero practicando un poco, podéis tardar unos 10 o 15 minutos como máximo en hacerlo. Es sólo cuestión de práctica. A continuación os dejo el esquemático del proyecto y el link  de descarga, además de un vídeo tutorial.

- MONTAJE

- VÍDEO

- LINK DEL PROYECTO

github

Esto es todo. Espero que os haya gustado y que realmente os sirva de ayuda. ¡Hasta el próximo!

Share on Facebook27Share on Google+16Tweet about this on Twitter5Buffer this pageFlattr the authorEmail this to someoneShare on LinkedIn0Share on Reddit0Share on Tumblr

Ingeniero de Telecomunicación especializado en telemática. Apasionado de la programación y del conocimiento libre.

  • Luis

    Hola Mario que tal?
    Una pregunta. que pasaría si queremos medir mas de 5v? se dañaría nuestra placa arduino?
    saludos

    • Mario

      Hola Luis. Lo que daña nuestra placa no es el voltaje, sino la corriente. Es por esto por lo que las resistencias son grandes. Cuanto mayores las resistencias, menor la intensidad en el circuito. Hay otro tutorial, en el cual hago un voltímetro con un display LCD en el cual mido casi 9 Voltios. Te dejo el link: http://www.geekytheory.com/voltimetro-con-arduino/ ¡Un saludo y gracias por leernos!

  • victor

    muy bueno , tendras un buen tuto sobre labview
    gracias
    saludos

  • Luis

    hola mario nuevamente:
    Disculpa podrias ayudarme ha hacer un medidor de rpm mediante un sensor de efecto hall ya que he buscado como hacerlo pero he tenido muchos problemas con las lecturas PWM¡¡¡
    saludos

    • Mario

      Hola Luis. ¿Cuál es el problema que tienes? Un saludo.

  • Luis

    Hacer las entradas PWM al Labview¡¡¡

    • Mario

      ¿Pero algún error específico?

  • Luis

    Error, no pues es solamente al hacer la entrada de la señal del sensor a la placa y labview que no la detecta, no marca

    • Mario

      La verdad es que si no eres más específico, no creo que pueda ayudarte.

  • Camilo

    Hola Mario
    Que tan rapido puede realizar el muestreo LabView con respecto a arduino, cual es lo máximo posible para ambos?

    Saludos

    • Mario

      Hola Camilo. No lo se exactamente. LabVIEW mucho más rápido que Arduino, así que a la frecuencia de Arduino. Todo depende del tipo de placa que utilices. ¡Un saludo!

  • Ivan Aliaga

    Hola Mario, Tengo dos preguntas, que pasa si el voltaje se invierte? lo detecta? y que modelo de arduino me recomiendas, necesito algo como que tenga conexion usb y que me capte microvoltios o microamperes. Gracias de antemano

    • Mario

      Hola Ivan Aliaga. Que puedas medir una magnitud u otra depende de cómo hayas hecho tu circuito, pero no creo que puedas medir en micros, puesto que arduino tiene un CAD de 10 bits (1024 valores), y no es una resolución con la que puedas medir bien micros. Saludos.

  • Ivan Aliaga

    Una pregunta más el arduino podría leer nanovoltios?

    • Mario

      Un nano es mil veces menos que un micro, así que no.

  • mario

    Hola tocayo tengo una pregunta acerca de este proyecto acaso solo ustas el arduino para medir el voltaje de la pila o utilizas algun sensor en especifico para poder detectarlo??
    digamos ke estaria funcionando como un DAC y converitira las señales a digitales??

    • mario

      y otra pregunta como podria representar el voltaje en una grafica en labview con este mismo proyecto??

  • Carlos

    oye disculpa crees que se pueda hacer una interfaz de labview con el arduino nano atmega328

  • johana

    hola
    muy buen proyecto
    pero tengo una duda cuando saco los botones visibles quedan con la flechita para conectarlos del lado derecho y cuando intento unirlos a la condicion true o false no me lo permite
    que estoy haciendo mal????

    • Mario

      Hola johana. Probablemente sea un problema de tipos, es decir, que no tienes dos bloques del mismo tipo. Es lo único que puedo decirte sin ver tu proyecto. ¡Saludos!

      • johana

        muchas gracias si lo pude solucionar
        ahora tengo otra duda con ese voltimetro puedo medir voltajes de un punto a otro dentro de un circuito???
        por ejemplo tengo un puente de wheatstone el cual esta en equilibrio pues el voltaje entre los puntos a y b es 0 al hacer variar una resistencia este voltaje aumenta
        pero cuando lo quiero leer al correr el programa me da datos muy dispersos

        • Mario

          Hola johana. En teoría, medir una pila debería ser lo mismo que medir en una parte del circuito, aunque esto no deja de ser algo casero para poder hacerte una idea del voltaje medido. ¡Saludos!

  • Isaac

    Inge, buen dia, descargue el archivo (.vi) pero me marca error de version, yo tengo la version 2010, me podria ayudar con eso.

    • http://www.geekytheory.com Mario

      Hola Isaac. Es muy probable que no te haya funcionado porque mi archivo está hecho con una versión más reciente de LabVIEW. Saludos.

      • Vipper

        Mario, para evitar los problemas con las versiones puedes colocar los VI’s finales como snippets, de esa forma los usuarios pueden arrastrar la imagen (png )a un VI en blanco y listo; se transfiere el archivo al VI en blanco.

        Saludos y muchas gracias por la página.

        • http://www.geekytheory.com Mario

          Gracias Vipper por el consejo. ¡Saludos!

  • http://Website Anónimo

    Hola, ¿no sería mejor tres resistencias de 1 Mohm? Porque el rango se aumentaría.

  • Juan

    Hola, queria preguntar si es posible que el arduino pueda leer frecuencias usando labview ?. Saludos

  • alex

    Hola amigo cordial saludo es posible alimentar el circuito con una fuente superior a 5v es decir de unos 30 voltios y como seria el montaje q resistecia podria utilizar

    • Mario Pérez Esteso

      Hola alex. Con 30V probablemente quemarías el Arduino, ya que estás metiendo más tensión de la que puede soportar. Saludos.

  • https://www.google.com/profiles/107871457954311146086 Fernando Bernal

    Hola Mario, disculpe vi tu proyecto y me llamo mucho la atención, solo tengo un problema, tienes algún link de descarga o una pagina sugerida donde pueda conseguir LabVIEW, si lo tuviera te lo agradeceria mucho. Estoy intentando lleva a cabo tu proyecto y uno un poco mas desarrollado, gracias de ante mano.

  • Joel Zamorano

    Pregunta el ni visa unicamente funciona para arduino o tambien para otro tipo de dispositivos

    • http://geekytheory.com/usuarios/?u=marioperezesteso Mario Pérez Esteso

      Hola Joel. La verdad es que no lo he probado en otros dispositivos. Lo he utilizado únicamente con Arduino. Si lo pruebas, avisa por aquí. ¡Suerte!

  • Mikel

    Muy buena explicación!

    Andaba buscando información para hacer
    una monitorización del voltaje de la batería que alimenta la propia
    placa para que avise cuando está a un nivel crítico de carga y que pare
    la ejecución de un programa.

    Ahora solo me hace falta saber cual
    es la tensión de umbral para que la placa deje de funcionar
    correctamente para establecer los límites.

    Gracias!