Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Conversión de datos para visualización

Buenos días, les escribo por que soy nuevo en labview y tengo una inquietud en el manejo de la comunicación serial. Propiamente, mi duda está en la conversión de un tipo de datos a otro. Tengo un ADC de 16 bits y quiero visualizar el voltaje en LabVIEW. Para esto, en un microcontrolador guardo un dato de 16bits el cual envío a labview. Ahora bien, ¿como puedo hacer para visualizar este dato binario en una gráfica?, ¿que conversión debo hacer, en vista que este dato de 16 bits representa un valor de voltaje dado con muchos decimales?.  Muchísimas gracias

0 kudos
Mensaje 1 de 5
6.994 Vistas

Buenas tardes, leyendo un poco, me doy cuenta que las funciones Visa, solo permiten la entra y la salida de un string. Mi problema es que tengo un dato de 16 bit, vamos a suponer que tengo el dato 65535, entonces para enviarlo a labview, mandaria una cadena ASCII para el 6, una para el 5 otra para el otro 5, una para el y una última para el 5 del final, con lo que me estarían llegando 5 cadenas de bits a labview. Después de tener estas 5 cadenas, quiero volver a obtener el dato 65535 para operarlo matemáticamente y posteriormente mostrarlo en una gráfica. Muchas gracias.

0 kudos
Mensaje 2 de 5
6.988 Vistas

Hola.

Cada palabra de 16 vits puede ser descompuesta en 2 bytes. Estos se reciven como 2 char y se convierten al tipo numerico original.
Es necesario sincronizar las tramas para que la conversion sea adecuada. En este foro hay bastante informacion sobre recepcion y coversion de datos por puerto serie. Si pones puesto serie en la ventanita superior y le das a buscar veras ejemplos similares al tuyo.



Saludos.
Alipio.

---------------------------------------------------------
"Qod natura non dat, Salmantica non praestat"
---------------------------------------------------------
0 kudos
Mensaje 3 de 5
6.968 Vistas

que tal Andresaga,

Por lo que entiendo ahora recibes los valores como strings y quieres transformarlos a númericos, estoy en lo correcto?

Se tienen distintas funciones para transformar entre valores númericos, string y booleanos. a continuación te menciono algunas que te pueden servir:

 

Number to Decimal String

Convierte de un número a su equivalente en Cadena de caracteres 

 

Decimal String to number

Convierte de Strings a númerico (I32)

 

Boolean Array to number

Convierte de un arreglo de booleano a númerico (U32)

 

Puedes utilizar estas funciones para convertir de manera directa tus valores y manejarlos dentro de LabVIEW como lo necesites.

Igual y puedes hacer un par de pruebas para que veas el funcionamiento de estas funciones.

 

 

Espero que la información te sea de utilidad. 

Saludos!

Omar I.
Applications Engineer
National Instruments
0 kudos
Mensaje 4 de 5
6.947 Vistas

Hola Andresaga,

 

        Via serial los datos son enviados byte (8bits) a byte, basicamente hay dos formas de enviar los datos:

 

         En formato ascii: el cual no es mas que texto legible donde cada byte representa una letra o un número que conocemos, y en tu caso particular enviarias un byte para cada dígito que trasmitas, es decir para un 0 usarias un byte, y para 65535 usarias cinco bytes. En este caso debes agregar algun separador entre numero y numero, por ejemplo una coma, y usarias la funcion Decimal String to Number para pasar de String a I32.

 

        En formato binario: el cual es la representacion binaria tal cual como lo usa la computadora, en este caso la data no es directamente legible, y para 16bits necesitarias dos bytes para cada dato, en este caso neesitaras usar las funciones String to Bytes Array para pasar de string a bytes y luego Join Numbers para unir dos U8 a un U16.

 

       Sea cual sea el formato y el método que uses para rearmar el valor, al final vas a tener un número entre 0 y 65535, y tu realmente quieres un valor entre los rangos de voltage que hizo la medición el ADC. Para ellos necesitas usar una fórmula, que por ser una conversión lineal no es mas que la de la línea recta, es decir una pendiente (o escalamiento) y un offset.

 

       Dicha fórmula es algo así:

 

VOLT = [ (ADClectura - ADCmin) / (ADCmax - ADCmin) ] * (VOLTmax - VOLTmin) + VOLTmin.


        Donde ADCmin = 0 y ADCmax = 65535, VOLTmin y VOLTmax es el rango del voltage de tu instrumento, y ADClectura es el valor que devolvío el ADC.

 

         En lugar de hacer la fórmula en LabVIEW hay una funcíon express llamada Scaling and Mapping, en ella configura como Interpolated, le das en Define Table.., y alli insertas dos puntos, en el primero pones en X = 0 y en Y el valor mínimo de voltage que usa tu ADC, y en el segundo coloca en X=65535 y en el Y el valor máximo de voltage que usa tu ADC.

 

Saludos,

 

 

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
0 kudos
Mensaje 5 de 5
6.939 Vistas