# Comunicacion serial Labview - pic 16f877A



## RACH (Oct 4, 2006)

HOLA amigos, soy RACH de Mexico, estoy haciendo un proyecto de controlar un modulo mediante Labview y una tarjeta de adquisicion de datos con un PIC 16F877A y bueno tras pelearme con la comunicacion serial entre mi pic y LAbview soy nueva utilizando labview y no tengo muchos conocimientos sobre esto, estoy realmente DESESPERADA!!!  quisiera ver si podrian mandarme información q tengan sobre esto, realmente me seria de muchisima utilidad... 

POR FAVOR!!!!!! 

agradezco d ante mano su respuesta


----------



## Caesar^V^ (Oct 4, 2006)

Hola RACH, con la información que me facilitas lo único que te puedo hacer es guiar para hacer que el labview te lea la cadena d bytes que haya en el puerto serie. Si puedieses concretar un poco mas o detallar mas podría ser mas concreto. ¿Qué versión del labview utilizas?

Te explico:

1º El programa ha de inicializar el puerto serie "VISA Configure Serial Port", en el que se le indica el bitrate, el puerto com, paridad...  Si utilizas el COM1 se ha de poner un 0 en el conector de Visa Resouce Name, si usas el COM2 un 1 y así sucesivamente. Para un programa óptimo, este bloque solo debe ser llamado una sola vez cuando se ejecuta tu programa. La velocidad que selecciones aquí ha de ser la misma que la del PIC ej. 9600

2º Neceseitas indicarle al programa el numero de bytes que tienes que leer del puerto serie. Para ello necesitas crear un "Property Node", y con el boton derecho seleccionas Select Class->Visa->I/O Session->Instr.  Despues con el boton derecho vas a Properties->Serial Settings->Number of bytes at serial port.

3º Incorporas a tu programa la funcion VISA Read

Y despues uniendo correctamente los bloques ya tienes la aplicación de lectura. Después ya solo queda el tratamiento.

El bloque VISA Read lo que proporciona es una cadena de caractares, lo que el labview le llama string, tal como proporciona estos datos no se puede operar con ellos, los hay que convertir en numéricos. Para ello utiliza una función que es "String to byte array", y a la salida de este bloque tendras un array con toda la información.

Ahora la forma de tratar este array depende de tu aplicación.


Debes recordar que el puerto COM que utilices no debe ser utilizado por otro programa, pues dará un error en labview. Si el puerto que usas no lo utiliza ninguna aplicación y te da un error la aplicación, se debe a que no tienes los drivers adecuados, como me pasó a mi cuando me pasé de la versión 6 a la 7. Para ello descarga el VISA 4.0 (no el VISA RUN TIME)de la página ni.com

Supongo que no conectarías el PIC al puerto serie del ordenador, que lo pasarías por un MAX232, que se encarga de adaptar los niveles TTL, y que conectarias el TX del PIC al pin 2 del puerto serie.

Cuando tengas tu programa hecho, asegúrate que tu PIC no te pierda datos, como me ha ocurrido a mi con un PIC 16f876, como publiqué en un post "Pérdida de datos en la UART del PIC16f876", ya que sería desastroso en tu aplicación.

Puedes encontrar mucha mas ayuda en la propia ayuda del labview y viendo los ejemplos que trae de comunicación con el puerto serie.

Un saludo. España.


----------



## frape (Ene 22, 2008)

hola rach, como lo planteas debes usar el modulo visa del programa labview, hay unos cuantos ejemplos de como configurarlo y usarlo debes tener en cuenta la velocidad de transmision normalmente 9600 baudios, la cantidad de bits que enviaras y el formato como enviaras la cadena, verificar sit tienes bit de paridad, stop, cuidar todos esos detalles, de cualquier forma revisa los ejemplos que estan en el software, de todos modos te anexo un ejemplo de comunicacion con un pic16f877, el formato de la cadena de bits recivida aqui es de la siguiente manera 25 bits intercalado entre ellos un espacio en blanco.
saludos. venezuela....


----------



## u2okn (May 7, 2008)

Hola a todos que tal?
Oye estoy mas o menos en el mismo problema que Rach. Estamos armando unos amigos y yo una tarjeta de adquisición de datos para varias materias de la universidad, así como tambien para parte de nuestra tesis de ingenieria. Quisiera que me ayudaran un poco en este asunto, de ser posible. La primera pregunta que se me viene es: ¿Es correcto pasar la señal serial de salida del pic por un MAX 232 y luego de ahí al puerto serial?. En cuanto la emisión de la señal serial desde el pic, hay que (entre otras cosas) seleccionar la velocidad que puede ser 9600, pero existe la opción necesaria de escojer entre el estado: driven true, driven inverted, open true y open inverted. ¿Sabes algo de esto? ¿Hay alguno que deba estar normalmente seleccionado?


----------



## calvete (May 7, 2008)

hola u2okn, no entiendo muy bien la ultima parte de tu pregunta. en cuanto al MAX232 es correcto lo que planteas, ya que el MAX232 lo que hace es convertirnos los niveles TTL del pic a niveles CMOS. Tambien convierte los bits a logica negativa o invertida, la cual maneja el pc. en pocas palabras, es imprescindible usar el MAX232. En este momento estoy realizando un proyectico para sensar temperatura de un tanque usando labview, con un pic16f84A mediante el MAX232.


----------



## magnoedu (Ene 23, 2009)

ola amigos tambem estou tentando comunicar um pic 16f877a com labview mas nao consigo estou usando cristal 20mhz ,max232, pc,labview7.1 mas nao sei como devo fazer


----------



## coco1986 (Feb 21, 2009)

Aqui les dejo la conexion basica  con max232 con el PIC y labview si desean mas de esto lo podemos compartir solo lo debo de buscar en mis archivos viejos.


----------



## jorge.portocarrero (Abr 7, 2009)

Hola a todos, estoy realizando unos trabajos en una empresa, en el cual tengo que adquirir 480 datos algo mas, estoy usando un PIC para la conversion ADC y transmitir los datos por serial al LabView, pero necesito rapidez es muy lenta la comunicacion a pesar de aumentar al máximo la velocidad en baudios, que recomendaciones me pueden dar. gracias, esperando su pronta respuesta. cuidense, bye


----------



## antony89_20 (Oct 2, 2009)

hola, yo tambien estoy utilizando labview con una tarjeta de adquisicion de datos con un pic pero no solo envio datos sino q tambien los recivo desde el labview al pic para un proceso de control posterior, mi duda esta en q en el registro del pic RCREG q es donde se almacenan los datos recividos; cada vez q se llena este registro con los datos recividos se ejecuta una interrupcion en el pic indicando lo anterior pero si en ese momento el pic aun no lee el registro porq aun se encuentra realizando otra operacion y mientras esto ocurre el labview envia otra serie de datos, estos datos son sobreescritos en los q anteriormente fueron recividos pero nunca utilizados o se mantienen los datos con los q ocurrio la interrupcion hasta q se vacie el registro para recien almacenar los datos q posteriormente se enviaran????  y tambien en viceversa del pic al labview????......ya q lo q necesito comunicar entre el pic y el labview no es un unico dato de 8 bits sino muchos mas datos q posteriormente los tendre q multiplexar en el pic y en el labview pero primero necesito resolver el problema anterior¡¡¡¡...en espera de su respuesta........antony


----------



## albermillan69 (Oct 14, 2009)

esto es lo q busco!!! vamos a ver si logro hacer la comunicacion!!


----------



## martha Isabela (Oct 25, 2009)

Hola a todos 

agradeceria si me colaboraran  con información para  realizar un control pid desde labview,  es para un levitador electromagnetico, ya esta funcionando analogamente y pues hasta ahora empiezo a trabajar en labview para realizar el control digital, agradeceria su ayuda!!!


----------



## panelag (Nov 10, 2009)

Hola con relación ala comunicación serial MICRO - LABVIEW
fui a la ayuda de Labview busque por serial, pero no entendí muy bien el diagrama de bloques, ¡alguien me podría ayudar?


----------



## Rafael1233 (Jul 26, 2010)

Hola que tal, es mi primer comentario en este forum y quisiera ver si me pueden ayudar, lo que pretendo hacer es un brazo robotico con 2 servos y un motor DC, el problema es que no estoy aun muy familiarizado con el Labview, he realizado un pequeño programa en labview lo cual es mandar una seria de datos de 9 bits, por ejemplo 030020060 en los cuales los 3 primeros bits serán el movimiento en grados de mi primer motor, los siguientes 3 bits serán el movimiento del segundo motor y el los restantes del tercer motor, pues mi duda es que no se como mandarle esos datos al PIC 18f o 16f para que de ahi pueda ya controlar mis motores. 
Espero me puedan ayudar con lo que necesito y de antemano muchas Gracias.


----------



## electrofuncion (Sep 14, 2010)

antony89_20 dijo:


> hola, yo tambien estoy utilizando labview con una tarjeta de adquisicion de datos con un pic pero no solo envio datos sino q tambien los recivo desde el labview al pic para un proceso de control posterior, mi duda esta en q en el registro del pic RCREG q es donde se almacenan los datos recividos; cada vez q se llena este registro con los datos recividos se ejecuta una interrupcion en el pic indicando lo anterior pero si en ese momento el pic aun no lee el registro porq aun se encuentra realizando otra operacion y mientras esto ocurre el labview envia otra serie de datos, estos datos son sobreescritos en los q anteriormente fueron recividos pero nunca utilizados o se mantienen los datos con los q ocurrio la interrupcion hasta q se vacie el registro para recien almacenar los datos q posteriormente se enviaran????  y tambien en viceversa del pic al labview????......ya q lo q necesito comunicar entre el pic y el labview no es un unico dato de 8 bits sino muchos mas datos q posteriormente los tendre q multiplexar en el pic y en el labview pero primero necesito resolver el problema anterior¡¡¡¡...en espera de su respuesta........antony



Hola amigo, no se si comprendo muy bien tu problema, pero, por lo que que entiendo, es que hay informacion que estas recibiendo y por estar el micro en otros procesos la pierde. Si es así te cuento que tuve un problem similar un día, recibiendo datos de un receptor gps, lo que hay que hacer es establecer prioridades y saber que cuando llega un dato hay q procesarlo sin otra duda. u otro truco que fue el que yo utilice y me dio frutos buenos, fue en la interrupcion de recepcion de datos siempre que se recibía uno se tomaba y cree una pila y lo almacenaba en mi pila, y despes cuando tenía tiempo o el pic estaba libre lo procesaba con lo cual pude hacer una pila de datos de hasta 50 datos, solo debes tener en cuenta de manejar bien los punteros para direccionar la pila. Espero te ayude...

Saludos.
Electrofuncion


----------



## Fredy2009 (Abr 8, 2011)

Yo tambien estoy empezando con esto del lab view y quisiera saber si en el pic tambien hay que realizar un programa que permita la comunicacion entre el lab view y el pic aver si ponen un ejemplo de programa en el pic.


----------



## Deutschrich (Abr 9, 2011)

Hola a todos,

Yo llevo ya unos meses trabajando en comunicación serial con LabVIEW para controlar un dispositivo, el cual, tiene un PIC que gestiona la transmisión de datos. Yo no estoy utilizando una MAX232 como dicen en el foro, y en realidad no me queda claro para que me serviría, y quizás sea el "el no uso" de ésta la causa de mi problema. Del PIC sale directamente la conexión serial con el cable RS-232 hacia mi PC. 

Estoy trabajando con las siguientes configuraciones de comunicación:

Baud:57600
Data Bits:8
Parity:None
Stop Bits:1
Flow Control:None

El problema es que cuando hago correr mi programa este funciona por algunos segundos y luego obtengo un error de sobre escritura proveniente desde la lectura de LabVIEW (error hex 0xBFFF006c). He probado con las cosas que en el foro de la National Instrument me aconsejan. Entre estas, regular la velocidad de FIFO de mi COM, poner retardos antes de leer, disminuir la velocidad de muestreo, etc. Pero no he obtenido buenos resultados y el error persiste...

Probando sólo con un programa de lectura, incluyendo los de ejemplo del LabVIEW, como también probando la lectura con la MAX de LabVIEW (Measurement & Automation Explorer), obtengo el mismo error.

En cuanto a la escritura no tengo problemas, ya que probé sólo con un programa de este tipo.
Con todo esto me he dado cuenta que el PIC es capaz de recibir la información desde el LabVIEW sin problemas a la velocidad que estoy trabajando, pero el LabVIEW no puede recibir con la rapidez suficiente que requiere mi sistema.

Debo usar algún módulo Real-Time? A caso es este tarjeta de adquisición de datos que yo no uso la que me faltaría para recibir la información desde mi dispositivo de forma rápida?

Por favor, necesito ayuda en esto, llevo un mes ya buscando una solución y no la encuentro...

Saludos


----------



## gatico (May 10, 2011)

Hola a todos, tengo el siguiente problema necesito hacer una comunicacion serial entre 2 pc por medio de labview, no lo se utilizar muy bien, ya tengo la comunicacion serial transmite y recibe pero no logro hacer que realize las dos tareas al tiempo, y no logro hacer que la comunicacion dure el tiempo que necesito por favor  si alguien me pudiera colaborar estaria muy agradecido


----------



## ecokino (May 10, 2011)

Deutschrich dijo:


> Hola a todos,
> 
> Yo llevo ya unos meses trabajando en comunicación serial con LabVIEW para controlar un dispositivo, el cual, tiene un PIC que gestiona la transmisión de datos. Yo no estoy utilizando una MAX232 como dicen en el foro, y en realidad no me queda claro para que me serviría, y quizás sea el "el no uso" de ésta la causa de mi problema. Del PIC sale directamente la conexión serial con el cable RS-232 hacia mi PC.
> 
> ...



Yo te recomendaría que utilizaras el MAX232, ya que lo que hace este IC es ajustar los niveles de voltaje de TTL que maneja el PIC, a los +12V/-12V que utiliza el puerto serial de la PC.



Fredy2009 dijo:


> Yo tambien estoy empezando con esto del lab view y quisiera saber si en el pic tambien hay que realizar un programa que permita la comunicacion entre el lab view y el pic aver si ponen un ejemplo de programa en el pic.



Para utilizar el puerto serial en el PIC puedes empezar con instrucciones tan simples como:

Dim dato as Byte 'declara la variable dato de tipo byte
Hseropen 9600 'abre el puerto serial a 9600 baudios
WaitMs 500 'espera de medio segundo para estabilizar el puerto después de abrirlo

inicio:
   Hserin dato 'espera recibir un dato por el puerto serial y lo guarda en la variable dato
   Hserout "EL DATO LEIDO ES: ", #dato 'envía el mensaje textual que está entre comillas,      'seguido del valor decimal contenido en la variable dato al puerto serial
   Goto inicio 'cicla el programa infinitamente


Este tipo de programa es básicamente un espejo, tú le envías un dato al PIC y éste lo lee y te lo regresa a la PC. Claro, todo esto es en BASIC y de manera simple, conforme conozcas y experimentes con el puerto, podrás hacer cosas más complejas.

Recuerda que debes configurar tu puerto serial al mismo baudrate desde el administrador de dispositivos.


----------



## jackonegro (May 24, 2011)

Hola a todos, yo tengo un problema estoy haciendo una comunicacion desde labview al pic18f4550 por via USB utilizando las librerias CDC. Yo envio los datos de una archivo .txt el cual contiene en una fila un par de coordenadas X e Y, mi problema es que se e pierden datos al transmitir la informacion, me gustaria saber si alguno ha realizado un handshake en labview para poder sincronizar los datos, seria de gran ayuda en la finalizacion de mi proyecto, muchas gracias de antemano.
un saludo desde Venezuela


----------



## gatico (May 26, 2011)

hola a todos mi nombre es isabel y tengo un problema, necesito hacer la comunicacion serial entre un pic y labview en labview la comunicacion funciona bien si la hago entre dos pc pero al momento de conectar el pic solo lee y escribe dos caracteres no tengo idea de porque, ademas necesito sacar del pic un valor entero que incrementa o decrementa para hacer mi base de datos en labview y no lo he podido hacer porfavor si me pudieran colaborar se los agradeceria estoy enrealidad desesperara he hecho de todo y no sale nada el pic lo estoy programando en pic c por medio de interrupciones


----------



## dabopeyton (Jun 11, 2011)

coco1986 dijo:


> Aqui les dejo la conexion basica  con max232 con el PIC y labview si desean mas de esto lo podemos compartir solo lo debo de buscar en mis archivos viejos.



Hola amigo yo si estoy interezado en tu ayuda y compartas tus conocimientos


----------



## mxmetroid (Jul 10, 2011)

Hola yo he trabajado la comunicacion serial con labview , tanto CDC como bulk transfer, incluso realize una tarjeta de adquicision de datos inalambrica usando modulos xbees pro. En este link pueden encontrar informacion de ayuda  
http://electron-i-k-a.blogspot.com/


----------



## juan roman (Sep 24, 2011)

muchachos hay muchos pdf que pueden leer creanme que acabo de hacer una comunicacion de labview-pic y de pic- a labview.utilizando el puerto usb simplemente lo que cambia es la emulacion quee se le da al pic ya que utilizas CDC.


----------



## inzorto86 (Oct 18, 2011)

coco1986 dijo:


> Aqui les dejo la conexion basica  con max232 con el PIC y labview si desean mas de esto lo podemos compartir solo lo debo de buscar en mis archivos viejos.



Hola, como puedo hacer la conexion serial si mi compu no cuenta con puerto RS-232, deseo hacer un proyecto de comunicacion inalambrica con Labview, moludulos serial Xbee y PIC. mi compu ni mi lapto tienen puerto serial. Gracias por tu respuesta


----------



## sandoval08090788 (Dic 5, 2011)

coco1986 dijo:


> Aqui les dejo la conexion basica  con max232 con el PIC y labview si desean mas de esto lo podemos compartir solo lo debo de buscar en mis archivos viejos.



oye tendras el programa de este circuito para el pic???


----------



## mikromax (Feb 28, 2012)

Amigos:

quizas este cerrado este tema, pero tengo el siguiente problema. 
con un pic 16F873A estoy leyendo 2 señales analogicas provenientes de 20amplificadores de instrumentacion usados para amplificar la señal de 2 celdas de carga.
La salida del Amplif instr esta conectadas a las patas ADC del PIC y luego usando un MAX232 conecto ese proyectyo a una PC con Labview.

El pic esta configurado para convertir las señales analogicas y enviar la conversion por UART a la pc. El labview levanta esos datos y los traduce a peso.

Simulando todo el proyecto con proteus y labview la conversion es perfecta. no hay perdida de bits en la comunicacion.

ahora cuando utilizo el sistema de celdas+amplif de instru+pic+max232+labview al leer los datos con hyperterminal veo que la señal convertida por el pic oscila entre +- 20 bits. Es decir si la conversion ADC deberia ser 128 bits , con simulacion en proteus y viendo los datos recibidos por hyperterminal recibo los 128+-1 bit. Ahora cuando energizo el sistema pic+max232 la lectura con el hyperterminal de los datos enviados por el pic correspondientes a la conversion tienen un error de +-20 bits.

La complicacion surge cuando al medir la calidad de la señal de 0-5v provenientes de la placa amplificadora de la señal de las celdas, esta medicion es muy estable incluso medida en los bornes previos a las patas ADC del PIC. Pero si tomamos los datos enviados por el pic al puerto seria como si la señal analogica variara en +-5% del valor original lo cual es imposible ya que el peso colocado sobre las pesas esta fijo.

Alguna sugerencia en cuanto al armado de la placa del pic con el 232. 

Adicional quiero comentar que en una misma placa estan conectados los bornes para conectar las señales analogicas, esta alojado el MAX232, el pic. Es recomendable esta configuracion?
Estoy seguro que es ruido pero de que forma podria mejorarlo??


----------



## MecatronicaUTH (Mar 19, 2012)

ecokino dijo:


> Yo te recomendaría que utilizaras el MAX232, ya que lo que hace este IC es ajustar los niveles de voltaje de TTL que maneja el PIC, a los +12V/-12V que utiliza el puerto serial de la PC.
> 
> 
> 
> ...






Amigo exelente explicacion, me a servido de mucho este post, ahora la pregunta que tengo ya que soy algo nuevo en la comunicacion serial, manejo los pics y labview pero senceramente nunca e entrado en la comunicacion serial, por lo cual me lleva a realizarte esta pregunta, en el programa en basic que manejas esta muy bueno y muy sencillo, ahora decirle al pic que el dato que reciva por el serial los despliegue por algun puerto ej: porta,portb,portc, etc?  muchas gracias de antemano espero tu respuesta.


----------



## gcirvini (Mar 1, 2013)

antony89_20 dijo:


> hola, yo tambien estoy utilizando labview con una tarjeta de adquisicion de datos con un pic pero no solo envio datos sino q tambien los recivo desde el labview al pic para un proceso de control posterior, mi duda esta en q en el registro del pic RCREG q es donde se almacenan los datos recividos; cada vez q se llena este registro con los datos recividos se ejecuta una interrupcion en el pic indicando lo anterior pero si en ese momento el pic aun no lee el registro porq aun se encuentra realizando otra operacion y mientras esto ocurre el labview envia otra serie de datos, estos datos son sobreescritos en los q anteriormente fueron recividos pero nunca utilizados o se mantienen los datos con los q ocurrio la interrupcion hasta q se vacie el registro para recien almacenar los datos q posteriormente se enviaran????  y tambien en viceversa del pic al labview????......ya q lo q necesito comunicar entre el pic y el labview no es un unico dato de 8 bits sino muchos mas datos q posteriormente los tendre q multiplexar en el pic y en el labview pero primero necesito resolver el problema anterior¡¡¡¡...en espera de su respuesta........antony



Hola Antony, te hago una consulta, estoy haciendo un proyecto para leer datos del pic y escribir datos, algo similar q lo que vos hiciste, en fin, queria preguntarte si podrias enviarme tu programa de pic y de labview para usar de guia modelo. Desde ya muchas Gracias

Saludos


Gabriel


----------



## jhonduar (Abr 23, 2013)

hola buenas noches amigos estoy haciendo un prototipo de una grua y la pienso manejar  inalambricamente desde la pc usare los modulos xbee usare motores paso a paso en mi trabajo coloque que levantara un peso maximo de 1kg,,,, ahora yo quiero que cuando ella este levantando el peso me lo muestre en la pc he leido que por consumo de corriente pero la verdad estoy perdido hay.. si m pueden ayudar


----------



## luigy09 (May 22, 2013)

juan roman dijo:


> muchachos hay muchos pdf que pueden leer creanme que acabo de hacer una comunicacion de labview-pic y de pic- a labview.utilizando el puerto usb simplemente lo que cambia es la emulacion quee se le da al pic ya que utilizas CDC.




oye amigoo podrias pasarme los links de donde puedo ver los pdf s que dices porfa


----------



## sole.m (Abr 3, 2020)

calvete dijo:


> hola u2okn, no entiendo muy bien la ultima parte de tu pregunta. en cuanto al MAX232 es correcto lo que planteas, ya que el MAX232 lo que hace es convertirnos los niveles TTL del pic a niveles CMOS. Tambien convierte los bits a logica negativa o invertida, la cual maneja el pc. en pocas palabras, es imprescindible usar el MAX232. En este momento estoy realizando un proyectico para sensar temperatura de un tanque usando labview, con un pic16f84A mediante el MAX232.


hola, espero el usuario siga activo, estoy realizando un proyecto parecido, mi programa en PIC ya lo tengo hecho, lo que nose es si le tengo que agregar algo que haga referencia al labview dentro del programa del PIC. aguardos tu respuesta. Saludos!


----------



## DOSMETROS (Abr 3, 2020)

sole.m dijo:


> hola, espero el usuario siga activo, estoy realizando un proyecto parecido, mi programa en PIC ya lo tengo hecho, lo que nose es si le tengo que agregar algo que haga referencia al labview dentro del programa del PIC. aguardos tu respuesta. Saludos!


 
*calvete*
De colombia
Registrado Abr 1, 2008
Última visita May 20, 2011


----------

