Proyectos de comunicacion PIC16F877A con LabVIEW por el puerto Serial (RS232)

Bueno soy nuevo aca en este foro y pretendo publicar algunos proyectos logrados con comunicacion serial entre PICs y PCs utlizando LabVIEW, dejando algunos ejemplos y esquemas pe podrian servir. conozco que este tema ya ha sido abordado bastante bien por otros colegas asi que pretendo solo complementar la documentacion ya existente y dejar mi pequeno aporte en retribucion.

la herramientas basica que utilizaremos son:

software utilizado para los PCBs: Eagle 4.13,
programacion del PIC: mikrobasic 6 o superior y/o oshonsoft basic
PC: LabVIEW 7.0 o superior.
Simulacion: Proteus 7 o superior.

Bueno aqui dejo un par de videos de algunos proyectos desarrollados


 
Última edición:
Que tal GT Electronix, he visto los ejemplos que has puesto allí y estan buenísimos. Me gustaría saber si podrías postear otros ejemplos (exigente jajajaja:LOL:) para entenderlos mejor. Yo tengo que hacer una aplicación en un lenguaje de programación que se llama Python, utilizando unas librerías de comunicación serial para comunicarme con el PIC. Pero no sé cómo comunicarme serial con el PIC ni con el Programa:unsure: jajajaajaj bueno, cualquier ayuda es bienvenida!!!!!!
 
Que tal Bioelectronico, espero que todo bien, pues voy a entrar un poco en detalle, primero hablemos del hardware necesario:

picexample7.png

no le hagas caso a la LCD, notaras que necesitas usar el MAX232, esto es porque el protocolo RS232 necesita alrededor de -5 a -15 voltios para un 1 logico y de +5 a +15 voltios para un 0 logico (ahorita no tengo el dato exacto de los voltajes pero es algo asi), y el pic solo te proporciona 0 y 5 voltios, entonces es necesario un traductor que te convierta los 0 a 5V del PIC a los -15/+15 del protocolo y ese traductor es el MAX.

Una vez teniendo los voltajes adecuados para la transmision y recepcion podemos mandar los datos a la PC usando el conector DB9 segun el pineado que ves en el diagrama.

Importante: Notaras que hay unos capacitores que parecen estar contra su polaridad, pues asi son no los cambies.

Hablemos del protocolo RS232:

722px-Rs232_oscilloscope_trace.svg.png

Pues veras que la transmision de datos ocurre de forma serial o sea un dato despues de otro, para identificar cual es el primero y el ultimo se utiliza un bit de Start y uno de Stop que ayudan a identificar toda la trama.

Velocidad de comunicacion: Normalmente se transmiten 8 bits de informacion y debe definirse una velocidad de transmision que debe ser la misma tanto para el transmisor como para el receptor para que logren sincronizarse, de lo contrario la informacion se pierde. Esta velocidad se mide en baudios (bits por segundo), en el ejemplo visto antes la velocidad se define en 9600 baudios o bits por segundo segun la instruccion

hseropen 9600

, entonces se debe configurar la PC para que reciba a esta velocidad tambien.:unsure:

Bueno, en resumen pues el pic envia informacion a una velocidad determinada, el max la pone en voltajes apropiados y la compu los debe recibir configurandole la misma velocidad de transmision del pic, uuuuuuuuuuuuuuffffff, que gureso, :LOL:

Ya entendiendo la interface y el protocolo, pues veamos como indicarle al PIC como mandar y recibir informacion por este puerto. Para esto utilizare el basic de oshonsoftware, debido a que ha mostrado ser muy confiable con respecto a la comunicacion serial y muy facil de usar, asi que justificado esto......

Como enviar (transmitir TX) datos: hagamos un ejemplo
pongamos 8 pulsadores en el PORTB y mandemos el estado de estos por el serial.

Solucion:

Paso 1. Definimos a RC6 como pin de salida pues por alli sale la info serial, y el pin RC7 como entrada. estos pines son los definidos por el USART del PIC16F877A, en tu caso habria que ver la hoja de datos para ver que pines corresponden al modulo USART.

Paso 2. Abrimos la comunicacion serial definiendo la velocidad de transmision con la intruccion "Hseropen 9600".

Paso 3. transmitimos la informacion que queremos con la instruccion "Hserout variable", donde la variable usada debe ser de tipo byte, pues el serial solo puede transmitir un byte a la vez.


TRISB = %11111111
TRISC.6 = 0
TRISC.7 = 1
Hseropen 9600
WaitMs 1000
inicio:
Hserout PORTB
Goto inicio
End


y eso es todo,:eek:, facil verdad ;)

Como recibirr (RX) datos:
Pues se aplican los mismos pasos 1 y 2 solo que la instruccion del paso 3 ahora es "Haserin variable" donde la variable debe ser de tipo..........(adivina???????)...............SIII (byte).:)

aqui el firmware:


TRISD = %00000000
TRISC.6 = 0
TRISC.7 = 1
Hseropen 9600
WaitMs 1000
Dim valor As Byte
inicio:
Hserin valor
PORTD = valor
Goto inicio


en este caso el PIC recibe continuamente un byte de informacion y lo muestra en el PORTD.

Si en caso necesitamos enviar varios bytes de info:

Hserout dato1, dato2, dato3, dato4

y para recibir varios bytes usamos:

Hserin dato1, dato2, dato3, dato4

Espero que te sirva esta info y cualquier cosa me contas.
 
Última edición:
Gracias SONIUS por el apoyo a los colegas nacionales,jejejejejeje, y que bueno encontrarnos aqui para aportar nuestro grano de arena, lamentablemente no pude responder a tu mensaje pues solo tengo 6 post pero te agradezco nuevamente el apoyo ;)
 
Gracias SONIUS por el apoyo a los colegas nacionales,jejejejejeje, y que bueno encontrarnos aqui para aportar nuestro grano de arena, lamentablemente no pude responder a tu mensaje pues solo tengo 6 post pero te agradezco nuevamente el apoyo ;)

Al contrario gracias a vos mano, y pues bueno sip efectivamente tenes que tener 25 msj y ya podes "desatarte por aqui":LOL: por asi decirlo:LOL: claro esta hay reglas y pues bueno toca respetarlas

PD.No sigo hablando aqui porque sino desvirtuo el tema, solo te comento brevemente como son las cosas aqui adelante!! y salu2

SONIUS:apreton:
 
Hola una pregunta, el Labview que usó 7x y 8x, solo traen puerto VISA serie, que onda con ese?? se peude usar?? es una tarjeta VISA PCI?? o puedo usarlo con el com de mi pc??

Por que al correr los ejemplos me manda un error de VISA

Saludos gracias
 
Última edición:
Hola una pregunta, el Labview que usó 7x y 8x, solo traen puerto VISA serie, que onda con ese?? se peude usar?? es una tarjeta VISA PCI?? o puedo usarlo con el com de mi pc??

Por que al correr los ejemplos me manda un error de VISA

Saludos gracias

salu2! EinSoldiatGott yo te hacia por asi decirlo muerto!! de aqui del foro??

pero bueno lo que sucede es que el compañero GT Electronix es maestro y pues casi no tiene tiempo para rondar por aqui pero yo tambien ronde dicha institucion tiempo atras hace mucho y alli se usa generalmente el Labview version 7.

salu2!:apreton:

SONIUS
 
Gracias SONIUS y si el ejemplo esta hecho en el LabVIEW 7.1 pero funciona igual en el 8x o cualquier otro superior. El ejemplo esta hecho para usarse con el puerto COM de la computadora sin agregar ninguna otra tarjeta especial, tambien si no se posee un puerto COM como es clasico en las compus de ahora, se puede utilizar un cable USB - Serial y funciona perfectamente.

El error del VISA podria ser porque ademas de instalar el LabVIEW hay que instalar el Device Driver CD, este CD normalmente es el segundo CD de instalacion o el que pide despues de la instalacion normal del labview.
Este error tambien es causado cuando no logra comunicarse la PC con el PIC, y las razones mas frecuentes son que es necesario utilizar un cristal en el oscilador del pic, ademas el ejemplo utiliza un cristal de 4MHz que debe ser exacto para que se logren sincronizar el pic y la pc, y hay que tener cuidado de quemar el pic con oscilador XT. Otro problema frecuente que he encontrado es que no se conectan correctamente los condensadores del MAX232 impidiendo asi la comunicacion.

Espero que te sirva esta informacion, y me contas a ver que pasa....
 
Te comento GT electronix que el compañero EinSoldiatGott ya lo Soluciono Y era por la cuestion del Driver CD igual gracias por comentarlo!

salu2!

SONIUS
 
Hola a todos, hace un rato que no posteo nada, pero gracias a GT electronix por los post que ha puesto, principalmente con los de RS232 en el PIC que son los que más me han servido. En realidad no queria postear nada hasta no haber logrado la comunicación PC-PIC jajajaj. Ya pude hacerlo, pero lo entre entre PIC y PC utilizando en la PC un lenguaje de programación llamado Python y una librería llamada pySerial. A continuación dejo el enlace a una wiki que realize con otros compañeros para este proyecto: http://pyserialuvg.wikispaces.com/

El programa para el PIC lo hice en mikroC, y a continuación lo pongo: Ver el archivo adjunto USART pic.rar
. Este programa es un loopback simplemente, es decir, todo lo que recibe lo vuelve a enviar. Utilice un MAX232 para el hardware. Pero todavía tengo un problema: la comunicación ya está establecida, pero con muchos errores, por ejemplo, si desde la PC le envio al PIC la palabra "rojo", entonces el pic simplemente debería devolver "rojo", pero no siempre lo hace, algunas veces recibo cosas como "ro(o" o "&%$o". El cable no es muy largo, los capacitores del MAX232 están bien conectados y son de 10uF. Si alguien pudiera darme algún consejo sobre cómo solucionar esto lo agradecería mucho.
 
Grande el proyecto paisano... grande!! que ganas... solo yo estoy estudiando y los demas como SONIUS y vos (GT Electronix) ya son maestros y/o expertos en los temas de electronica...


+1



Saludos
 
Hola a todos, hace un rato que no posteo nada, pero gracias a GT electronix por los post que ha puesto, principalmente con los de RS232 en el PIC que son los que más me han servido. En realidad no queria postear nada hasta no haber logrado la comunicación PC-PIC jajajaj. Ya pude hacerlo, pero lo entre entre PIC y PC utilizando en la PC un lenguaje de programación llamado Python y una librería llamada pySerial. A continuación dejo el enlace a una wiki que realize con otros compañeros para este proyecto: http://pyserialuvg.wikispaces.com/

El programa para el PIC lo hice en mikroC, y a continuación lo pongo: Ver el archivo adjunto 35107
. Este programa es un loopback simplemente, es decir, todo lo que recibe lo vuelve a enviar. Utilice un MAX232 para el hardware. Pero todavía tengo un problema: la comunicación ya está establecida, pero con muchos errores, por ejemplo, si desde la PC le envio al PIC la palabra "rojo", entonces el pic simplemente debería devolver "rojo", pero no siempre lo hace, algunas veces recibo cosas como "ro(o" o "&%$o". El cable no es muy largo, los capacitores del MAX232 están bien conectados y son de 10uF. Si alguien pudiera darme algún consejo sobre cómo solucionar esto lo agradecería mucho.

Que bueno vos que te halla funcionado, pues yo realmente no tengo experiencia en los lenguajes que estas usando pero podrias probar tu transmision por partes.
Te aconsejo que primero hagas que el pic transmita un texto y en la pc utiliza el hyperterminal de windows para recibir los datos configurando bien el baudrate. Si no te funciona bien alli:

1. revisa el cristal y sus capacitores que sean los valores indicados y que esten bien cerca del pic, no utilices cables muy largos pues introducen ruido y hacen trabajar mal el oscilador
2. Revisa que en tu programa este bien configurado el baudrate, yo te aconsejo que utilices 9600 pues ofrece una transmision mas segura que a mayor velocidad, pues entre mayor es el baudrate mayor es la probabilidad de errores en la transmision.
3. chequeate la fuente de alimentacion que este bien regulada, yo utilizo como viste en los diagramas anteriores un 7805 con sus capacitores de 1000uF y 0.1uF para filtrar cualquier ruido de la red.

espero te sirva esta guia y hay me contas que pasa, gusto de saludarte :)

Grande el proyecto paisano... grande!! que ganas... solo yo estoy estudiando y los demas como SONIUS y vos (GT Electronix) ya son maestros y/o expertos en los temas de electronica...


+1



Saludos

:LOL: Nombre de xpertos nada, como te daras cuenta en este foro estoy aprendiendo igual que todos, :LOL:, saludos tambien mano, buena onda.
 
Última edición:
hola tengo un problema, me gustaria que me ayudaran ,soy nuevo en el mundo de labviet y necesitamos varias practicas en las cuales tenemos que mandar señales al pic con labviet y tambien recibir señales por el puerto serie,solo que no entiendo nada,, un ejemplo necesitamos hacer una practica de un espirometro en el cual en labviet vamos a ver cual es la velocidad con la que gira el dispositivo del espirometro cada vez que lo soplemos, la otra practica es que desde el labviet controlemos la velocidad y el giro de un motor,, porfavor si tienen algun diagrama y me lo pueden proporcionar, o uno paresido para de ahy guiarme,, me urgen, gracias
 
Atrás
Arriba