El blog de Daniel Muñoz “No hay mayor riqueza que el conocimiento ni mayor pobreza que la ignorancia.” – Alí ibn Abi-Talib

30abr/098

LabVIEW – Generador de Funciones.

Índice y descarga de este y otros ejemplos de programación en LabVIEW.<- Descargar este VI

1.3.1.vi

Este VI genera una función que puede ser configurada mediante los controles de su panel frontal. También cuenta con un ícono propio y sus terminales están configuradas para poder utilizarse como SubVI.

1.3.1.vi

1.3.1.vi

cbool OFF Si está activado, la señal es una constante nula (apaga el instrumento).
cdbl OFFSET Es el offsed de DC de la señal. El valor por defecto es 0.0V.
cdbl FRECUENCIA Frecuencia de la señal.
cdbl AMPLITUD Amplitud de la señal.
cdbl FASE Fase de la señal.
cdbl DUTY CICLE Ciclo de trabajo de la señal. Solo afecta a señales cuadradas.
cdbl Fs Frecuencia de muestreo, en muestras por segundos (S/sec).
cdbl NRO. MUESTRAS Numero de muestras a generar.
cu16 SEÑAL Selecciona el tipo de señal: Senoidal, Triangular, Cuadrada, Diente de sierra.
imsdt signal out Señal generada.
    • idbl dt
      ibool status The status boolean is either TRUE (X) for an error, or FALSE (checkmark) for no error or a warning.

      The pop-up option Explain Error (or Explain Warning) gives more information about the error displayed.

      ii32 code The code number identifies the error or warning.

      The pop-up option Explain Error (or Explain Warning) gives more information about the error displayed.

      istr source The source string describes the origin of the error or warning.

      The pop-up option Explain Error (or Explain Warning) gives more information about the error displayed.

  • iatrn t0
    idbl dt
    i1ddbl Y
    ierrcodeclst error The error cluster contains error or warning information.

    The pop-up option Explain Error (or Explain Warning) gives more information about the error displayed.

    ifxdt attributes

1.3.1.vi

1.3.1.vi

1.3.1.vi

Etiquetado con: 8 Comentarios
30abr/090

LabVIEW – Waveform Graph.

Índice y descarga de este y otros ejemplos de programación en LabVIEW.<- Descargar este VI

1.2.9.vi

El VI genera una señal senoidal con Amplitud y Frecuencia cero, Offset y Fase cero, y Duty Cycle 50%. El vector generado se muestra en un Waveform Graph.

Se espera a que haya actividad en el panel frontal para volver a generar la señal o leer el valor del botón SALIR.

1.2.9.vi

1.2.9.vi

cbool SALIR Se presiona para salir del programa.
imsdt Waveform Graph Grafica un vector, en este caso la forma de Onda. El Waveform Graph grafica vectores completos. Al enviarle otro vector se borra el primero y se grafica el nuevo.

1.2.9.vi

NI_MABase.lvlib:Basic Function Generator.vi NI_MABase.lvlib:Basic Function Generator.vi

C:\Archivos de programa\National Instruments\LabVIEW 8.6\vi.lib\measure\masignal.llb\Basic Function Generator.vi

Diferencias entre el indicador Waveform Chart y el Waveform Graph

El indicador Waveform Chart acepta los datos uno por uno y los va introduciendo así al gráfico, se lo puede considerar como que guarda un historial de los datos introducidos. El Waveform Graph, en cambio, acepta un vector con todos los puntos del gráfico y lo grafica. Al introducir el siguiente vector, el grafico anterior es sobreescrito, no mantiene un historial.

Ambos indicadores pueden aceptar múltiples ondas o datos a la vez, superponiendo los gráficos y utilizando diferentes colores para representar cada uno.

30abr/090

LabVIEW – Clusters (bundles).

Índice y descarga de este y otros ejemplos de programación en LabVIEW.<- Descargar este VI

1.2.8.vi

El VI efectúa un promedio con una cantidad Muestras de números aleatorios entre 0Rango. También grafica las muestras y promedios parciales en un Waveform Chart a través de un cluster. Para el promedio se utiliza la siguiente fórmula:

Promedio[i]=(i/(i+1)) x ( (i x Promedio[i-1]) + ValorActual)

Dentro del bucle principal, un bucle WHILE, hay una estructura Flat Sequence que primero elimina los datos del Waveform Chart y luego pasa a un bucle FOR que vuelve a tomar los datos. También hay un bucle WHILE:

1- Dentro del bucle FOR, que se repite Muestras veces, se genera un número aleatorio entre 0 y 1. Luego se lo multiplica por Rango para que esté entre 0Rango. Este valor equivale a ValorActual en la fórmula. El valor Promedio[i-1] se obtiene del shift register, que en el primer ciclo vale cero. Con estos dos valores aplicamos la fórmula y obtenemos Promedio[i], que se envía a un Cluster bundle y también se guarda en el shift register. También se envía al Cluster bundle el ValorActual. Este cluster se envía al Waveform Chart. Esto se repite en cada ciclo. Al salir del bucle FOR se toma el valor Promedio[i] y se lo muestra en el indicador Promedio. Para ese entonces el Waveform Chart ya tiene la gráfica de los valores que salieron y los promedios parciales.

2- Dentro del bucle WHILE se espera a que se presione el botón Calcular, para volver a calcular el promedio, o hasta que se presione SALIR, para salir del programa. En este último caso no se vuelve a repetir el bucle WHILE principal, terminando así el programa. Las lecturas de los botones CalcularSALIR solo se realizan cuando ocurre un cambio en el panel frontal. Esto para que este bucle no esté leyendo innecesariamente, ocupando así el procesador.

1.2.8.vi

1.2.8.vi

cbool SALIR Cuando se presiona, sale del bucle WHILE principla, teminando así el programa.
cbool Calcular Cuando se presiona, se vuelve a tomar las muestras y mostralas en el Waveform Chart y actualizar el valor final del Promedio.
ci32 Muestras Número de muestras a tomar para promediar.
cu8 Rango Se generarán muestras con valores aleatorios entre cero y Rango.
inclst Waveform Chart Grafica (1) todas las muestras que se obtuvieron en el proceso y (2) el promedio parcial hasta ese momento.
idbl Promedio Muestra el promedio final.

1.2.8.vi

30abr/090

LabVIEW – Waveform Chart.

Índice y descarga de este y otros ejemplos de programación en LabVIEW.<- Descargar este VI

1.2.7.vi

Waveform Chart.

El VI efectúa un promedio con una cantidad Muestras de números aleatorios entre 0Rango. También grafica los promedios parciales en un Waveform Chart. Para el promedio se utiliza la siguiente fórmula:

Promedio[i]=(i/(i+1)) x ( (i x Promedio[i-1]) + ValorActual)

Dentro del bucle principal, un bucle WHILE, hay una estructura Flat Sequence que primero elimina los datos del Waveform Chart y luego pasa a un bucle FOR que vuelve a tomar los datos. También hay un bucle WHILE:

1- Dentro del bucle FOR, que se repite Muestras veces, se genera un número aleatorio entre 0 y 1. Luego se lo multiplica por Rango para que esté entre 0Rango. Este valor equivale a ValorActual en la fórmula. El valor Promedio[i-1] se obtiene del shift register, que en el primer ciclo vale cero. Con estos dos valores aplicamos la fórmula y obtenemos Promedio[i], que se envía al Waveform Chart y también se guarda en el shift register. Esto se repite en cada ciclo. Al salir del bucle FOR se toma el valor Promedio[i] y se lo muestra en el indicador Promedio. El Waveform Chart ya tiene la gráfica para ese entonces.

2- Dentro del bucle WHILE se espera a que se presione el botón Calcular, para volver a calcular el promedio, o hasta que se presione SALIR, para salir del programa. En este último caso no se vuelve a repetir el bucle WHILE principal, terminando así el programa. Las lecturas de los botones CalcularSALIR solo se realizan cuando ocurre un cambio en el panel frontal. Esto para que este bucle no esté leyendo innecesariamente, ocupando así el procesador.

1.2.7.vi

1.2.7.vi

cbool SALIR Cuando se presiona, sale del bucle WHILE principla, teminando así el programa.
cbool Calcular Cuando se presiona, se vuelve a tomar las muestras y mostralas en el Waveform Chart y actualizar el valor final del Promedio.
ci32 Muestras Número de muestras a tomar para promediar.
cu8 Rango Se generarán muestras con valores aleatorios entre cero y Rango.
idbl Waveform Chart Grafica todas las muestras que se obtuvieron en el proceso.
idbl Promedio Muestra el promedio final.

1.2.7.vi

30abr/091

LabVIEW – Shift Registers.

Índice y descarga de este y otros ejemplos de programación en LabVIEW.<- Descargar este VI

1.2.6.vi

El VI efectúa un promedio con una cantidad Muestras de números aleatorios entre 0Rango. Para ello se utiliza la siguiente fórmula:

Promedio[i]=(i/(i+1)) x ( (i x Promedio[i-1]) + ValorActual)

Dentro del bucle principal, un bucle WHILE, hay un bucle FOR y un bucle WHILE:

1- Dentro del bucle FOR, que se repite Muestras veces, se genera un número aleatorio entre 0 y 1. Luego se lo multiplica por Rango para que esté entre 0Rango. Este valor equivale a ValorActual en la fórmula. El valor Promedio[i-1] se obtiene del shift register, que en el primer ciclo vale cero. Con estos dos valores aplicamos la fórmula y obtenemos Promedio[i], que se guarda en el shift register. Esto se repite en cada ciclo. Al salir del bucle FOR se toma el valor Promedio[i] y se lo muestra en el indicador Promedio.

2- Dentro del bucle WHILE se espera a que se presione el botón Calcular, para volver a calcular el promedio, o hasta que se presione SALIR, para salir del programa. En este último caso no se vuelve a repetir el bucle WHILE principal, terminando así el programa. Las lecturas de los botones CalcularSALIR solo se realizan cuando ocurre un cambio en el panel frontal. Esto para que este bucle no esté leyendo innecesariamente, ocupando así el procesador.

1.2.6.vi

1.2.6.vi

cbool SALIR Cuando se presiona sale del bucle WHILE principal, terminando así el programa.
ci32 Muestras Número de muestras a tomar para promediar.
cu8 Rango Se generarán muestras con valores aleatorios entre cero y Rango.
cbool Calcular Cuando se presiona, se vuelve a tomar los datos de los controles MuestrasRango, se calcula, y se muestra el resultado en el indicador Promedio.
idbl Promedio Muestra el promedio final.

1.2.6.vi

1.2.6.1.vi

Elementos adicionales en los Shift Registers.

El VI efectúa un promedio con una cantidad Muestras de números aleatorios entre 0Rango. Para ello se utiliza la siguiente fórmula:

Promedio[i]=(i/(i+1)) x ( (i x Promedio[i-1]) + ValorActual)

Dentro del bucle principal, un bucle WHILE, hay un bucle FOR y un bucle WHILE:

1- Dentro del bucle FOR, que se repite Muestras veces, se genera un número aleatorio entre 0 y 1. Luego se lo multiplica por Rango para que esté entre 0Rango. Este valor equivale a ValorActual en la fórmula. El valor Promedio[i-1] se obtiene del shift register, que en el primer ciclo vale cero. Con estos dos valores aplicamos la fórmula y obtenemos Promedio[i], que se guarda en el shift register. Esto se repite en cada ciclo. Al salir del bucle FOR se toma el valor Promedio[i] y se lo muestra en el indicador Promedio. También muestra el valor de Promedio[i-1] obteniéndolo directamente del shift register (antes de procesar todo) y hace uso de un elemento adicional en el shift register para mostrar el valor de Promedio[i-2].

2- Dentro del bucle WHILE se espera a que se presione el botón Calcular, para volver a calcular el promedio, o hasta que se presione SALIR, para salir del programa. En este último caso no se vuelve a repetir el bucle WHILE principal, terminando así el programa. Las lecturas de los botones CalcularSALIR solo se realizan cuando ocurre un cambio en el panel frontal. Esto para que este bucle no esté leyendo innecesariamente, ocupando así el procesador

1.2.6.1.vi

1.2.6.1.vi

cbool SALIR Cuando se presiona, sale del bucle WHILE principal, terminando así el programa.
ci32 Muestras Número de muestras a tomar para promediar.
cu8 Rango Se generarán muestras con valores aleatorios entre cero y Rango.
cbool Calcular Cuando se presiona, se vuelve a tomar los datos de los controles MuestrasRango, se calcula, y se muestran los resultados en los indicadores PromedioPromedio i-1Promedio i-2.
idbl Promedio Muestra el promedio final.
idbl Promedio i-1 Muestra el promedio parcial antes de haber tomado la última muestra.
idbl Promedio i-2 Muestra el promedio parcial antes de haber tomado las últimas dos muestras.

1.2.6.1.vi

Etiquetado con: 1 Comentario
30abr/093

LabVIEW – Estructura FOR.

Índice y descarga de este y otros ejemplos de programación en LabVIEW.<- Descargar este VI

1- Dentro del bucle FOR simplemente se muestra, en el indicador Cuenta, el valor i+1. La variable i incrementa su valor en cada ciclo, empezando de cero y terminando en Contar hasta - 1. La estructuraFOR también contiene un retardo de 100ms para que el ojo pueda apreciar el incremento de la cuenta.

2- Dentro del bucle WHILE se espera a que se presione el botón Contar, para volver a contar hasta el valor indicado por el control Contar hasta, o hasta que se presione SALIR. En este último caso no se vuelve a repetir el bucle WHILE principal, terminando el programa. Las lecturas de los botones ContarSALIR solo se realizan cuando ocurre un cambio en el panel frontal. Esto para que este bucle no esté leyendo innecesariamente, ocupando así el procesador.

1.2.5.vi

1.2.5.vi

ci32 Contar hasta Establece hasta que valor se contará.
cbool SALIR Presionando este botón se sale del programa.
cbool Contar Hay que presionar este botón para volver a contar.
ii32 Cuenta Muestra el valor actual del contador.

1.2.5.vi

30abr/095

LabVIEW – Estructura Switch Case.

Índice y descarga de este y otros ejemplos de programación en LabVIEW.<- Descargar este VI

1.2.4.vi

Permite seleccionar que operación (suma, resta, multiplicación o división) realizar entre AB.

En el caso de que la operación sea División, y B sea igual a cero, se muestra el indicador Error. Esto se logra insertando un TRUE a la propiedad Visible de tal indicador. De lo contrario se le inserta unFALSE.

Por otro lado, el resultado no se muestra directamente en un indicador numérico. Porque en el caso de una división por cero el resultado debe decir Infinito. Para eso se forma un array de cadenas de texto. La primera es el número resultante de la operación, formateado a una cadena. La segunda es una cadena constante que dice "Infinito". Luego se indexa el primer o segundo elemento de ese array para mostrarlo como Resultado. Esto se hace tomando el valor booleano que vale TRUE si hubo división por cero y FALSE si no. Se convierten estos valores booleanos a un 0 o un 1 respectivamente y se utiliza este valor numérico para indexar el array.

1.2.4.vi

1.2.4.vi

cbool Salir Presionando este botón se sale del programa.
cdbl A Primer operando.
cdbl B Segundo Operando.
cu8 Operación Este control relaciona la operación Sumar con un 0Restar con un 1Multiplicar con un 2Dividir con un 3.

Estos valores numéricos son insertados en el CASE para determinar que operación se realizará.

istr Resultado Muestra el resultado de la operación.
istr Error Este indicador siempre muestra el texto División por cero. Pero está siempre invisible, excepto cuando ocurre una división por cero.

1.2.4.vi

1.2.4.vi

1.2.4.vi

1.2.4.vi

1.2.4.vi

Etiquetado con: 5 Comentarios
30abr/093

LabVIEW – Estructura Secuencial.

Índice y descarga de este y otros ejemplos de programación en LabVIEW.<- Descargar este VI

1.2.3.vi

El VI enciende un array de 5 LEDs de forma secuencial, utilizando la estructura Flat Sequence.

En la primera etapa se asegura de que estén todos apagados menos el primero. Espera 1 segundo (1000ms) y pasa a la siguiente etapa.

En la segunda y demás etapas apaga el led de la etapa anterior al mismo tiempo que enciende el de la etapa actual. También espera 1 segundo antes de pasar a la siguiente etapa.

Se utilizaron variables locales de la segunda etapa en adelante.

1.2.3.vi

1.2.3.vi

cbool stopPresionando este botón se sale del programa. Como la lectura de este botón solamente se produce al finalizar la secuencia, no importa cuando uno presione el botón, el programa recién terminará cuando termine la secuencia.
ibool LED 1
ibool LED 2
ibool LED 3
ibool LED 4
ibool LED 5

1.2.3.vi

Etiquetado con: 3 Comentarios
30abr/0934

Ejemplos LabVIEW

Comparto unos ejemplos de programación en LabVIEW que hicimos junto con Emilio Ryan y Mariano López para la materia de técnicas digitales 3:

LabVIEW - While Loop.
LabVIEW - Estructura Secuencial.
LabVIEW - Estructura Switch Case.
LabVIEW - Estructura FOR.
LabVIEW - Shift Registers.
LabVIEW - Waveform Chart.
LabVIEW - Clusters (bundles).
LabVIEW - Waveform Graph.
LabVIEW - Generador de Funciones.
LabVIEW - Osciloscopio.
LabVIEW - Generador de Sonidos.
LabVIEW - Visualizador de Sonidos.
LabVIEW - Comunicación RS-232 entre PCs.
LabVIEW - TCP/IP.
LabVIEW - DataSocket.

Descargar VIs para LabVIEW 8.0. <- Descargar Archivos
Descargar VIs para LabVIEW 8.6. <- Descargar Archivos

¿Que es LabVIEW ?

LabVIEW (acrónimo de Laboratory Virtual Instrumentation Engineering Workbench) es una plataforma y entorno de desarrollo para un lenguaje de programación visual, llamado lenguaje G, de National Instruments. Los programas desarrollados con LabVIEW se llaman Instrumentos Virtuales, o VI, por sus siglas en inglés.

Definición de instrumento virtual.

El instrumento virtual es definido como una capa de software y hardware que se le agrega a un PC en tal forma que permite a los usuarios interactuar con la computadora como si estuviesen utilizando su propio instrumento electrónico "hecho a la medida".

Diagrama en bloques de un instrumento virtual (VI) cuya función es la de adquisición de datos.

Explicación de cada una de las etapas.

Sistema físico:

Se refiere a la variable física: “es la magnitud que puede influir en el estado de un sistema físico” y es la que se desea medir y/o controlar.

Las magnitudes pueden ser escalares o vectoriales.

Por ejemplo: temperatura, desplazamientos, presión, humedad, velocidad, etc.

Transductor / Sensor:

Es un dispositivo capaz de transformar o convertir un determinado tipo de energía de entrada, en otra de diferente a la salida.

Usado principalmente en la industria, en la medicina, en la agricultura, en robótica, en aeronáutica, etc. para obtener la información de entornos físicos y químicos y conseguir (a partir de esta información) señales o impulsos eléctricos o viceversa. Los transductores siempre consumen algo de energía por lo que la señal medida resulta debilitada.

Acondicionador de señal:

En sentido amplio, son los elementos del sistema de medida que ofrecen, a partir de la señal de salida de un transductor/ sensor electrónico, una señal apta para ser presentada o registrada o que simplemente permita un procesamiento posterior mediante un equipo o instrumento estándar.

Con más detalle, en una etapa de acondicionamiento podemos encontrar por lo general estas etapas:

   -Amplificación      -Excitación      -Filtrado 
-Multiplexado      -Aislamiento      -Linealización 

Amplificación Es el tipo más común de acondicionamiento. Para conseguir la mayor precisión posible la señal de entrada deber ser amplificada de modo que su máximo nivel coincida con la máxima tensión que el convertidor pueda leer.

Aislamiento - Otra aplicación habitual en el acondicionamiento de la señal es el aislamiento eléctrico entre el transductor y el ordenador, para proteger al mismo de transitorios de alta tensión que puedan dañarlo. Un motivo adicional para usar aislamiento es el garantizar que las lecturas del convertidor no son afectadas por diferencias en el potencial de masa o por tensiones en modo común.

Cuando el sistema de adquisición y la señal a medir están ambas referidas a masa pueden aparecer problemas si hay una diferencia de potencial entre ambas masas, apareciendo un "bucle de masa", que puede devolver resultados erróneos.

Multiplexado - El multiplexado es la conmutación de las entradas del convertidor, de modo que con un sólo convertidor podemos medir los datos de diferentes canales de entrada. Puesto que el mismo convertidor está midiendo diferentes canales, su frecuencia máxima de conversión será la original dividida por el número de canales muestreados. Se aconseja que los multiplexores se utilizen antes del conversor y después del condicionamiento del señal, ya que de esta manera no molestará a los aislantes que podamos tener.

Filtrado - El fin del filtro es eliminar las señales no deseadas de la señal que estamos observando. Por ejemplo, en las señales cuasi-continuas, (como la temperatura) se usa un filtro de ruido de unos 4 Hz, que eliminará interferencias, incluidos los 50/60 Hz de la red eléctrica.

Las señales alternas, tales como la vibración, necesitan un tipo distinto de filtro, conocido como filtro antialiasing, que es un filtro pasabajo pero con un corte muy brusco, que elimina totalmente las señales de mayor frecuencia que la máxima a medir, ya que se si no se eliminasen aparecerían superpuestas a la señal medida, con el consiguiente error.

Excitación - La etapa de acondicionamiento de señal a veces genera excitación para algunos transductores, como por ejemplos las galgas "extesométricas", "termistores" o "RTD", que necesitan de la misma, bien por su constitución interna, (como el termistor, que es una resistencia variable con la temperatura) o bien por la configuración en que se conectan (como el caso de las galgas, que se suelen montar en un puente de Wheatstone).

Linealización- Muchos transductores, como los termopares, presentan una respuesta no lineal ante cambios lineales en los parámetros que están siendo medidos. Aunque la linealización puede realizarse mediante métodos numéricos en el sistema de adquisición de datos, suele ser una buena idea el hacer esta corrección mediante circuitería externa.

Interfaz de instrumentación virtual:

ADC

Un conversor o convertidor analógico-digital (ADC) es un dispositivo electrónico capaz de convertir un voltaje determinado en un valor binario, en otras palabras, este se encarga de transformar señalesanálogas a digitales.

Una conversión analógica-digital consiste en la transcripción de señales analógicas en señales digitales, con el propósito de facilitar su procesamiento (codificación, compresión, etc.) y hacer que la señal resultante (la digital) sea más inmune al ruido y otras interferencias a las que son más sensibles las señales analógicas.

¿Por qué digitalizar?

Ventajas de la señal digital

  1. Cuando una señal digital es atenuada o experimenta perturbaciones leves, puede ser reconstruida y amplificada mediante sistemas de regeneración de señales.
  2. Cuenta con sistemas de detección y corrección de errores, que se utilizan cuando la señal llega al receptor; entonces comprueban (uso de redundancia) la señal, primero para detectar algún error, y, algunos sistemas, pueden luego corregir alguno o todos los errores detectados previamente.
  3. Facilidad para el procesamiento de la señal. Cualquier operación es fácilmente realizable a través de cualquier software de edición o procesamiento de señal.

Inconvenientes de la señal digital

  1. Se necesita una conversión analógica-digital previa y una decodificación posterior, en el momento de la recepción.

  2. La transmisión de señales digitales requiere una sincronización precisa entre los tiempos del reloj del transmisor, con respecto a los del receptor. Un desfasaje cambia la señal recibida con respecto a la que fue transmitida.
  3. Si se utiliza compresión con pérdida, será imposible reconstruir la señal original idéntica, pero si una parecida dependiendo del muestreo tomado en la conversión de analógico a digital.

BUS de comunicaciones:

PC

La versatilidad de un sistema de adquisición de datos esta marcada por esta etapa, al tener la misma incluida la interfaz con el usuario, permitiéndonos entre otras cosas; el procesamiento, visualización, almacenamiento, control la variable física en cuestión.

30abr/0912

LabVIEW – While Loop.

Índice y descarga de este y otros ejemplos de programación en LabVIEW.<- Descargar este VI

1.2.2.vi

El VI permite ingresar dos valores numéricos AB en punto flotante mediante controles y realiza las operaciones básicas de SumaRestaMutiplicaciónDivisión. Muestra los respectivos resultados usando indicadores. El VI espera a que haya actividad en el panel frontal antes de volver a repetir el bucle While. 1.2.2.vi 1.2.2.vi

cbool stop Se presiona este botón para salir.
cdbl A Aquí se ingresa el número A.
cdbl B Aquí se ingresa el número B.
idbl Suma Muestra la SumaAB.
idbl Resta Muestra la RestaAB.
idbl División Muestra la DivisiónAB.
idbl Multiplicación Muestra la MultiplicaciónAB.

1.2.2.vi