Electronica, Microcontroladores y Psicología
  PIC-RS232
 


En algunos de nuestros proyectos veremos la necesidad de comunicarnos con un ordenador, ya sea para que éste almacene o envíe datos desde y hacia el microcontrolador. Una forma sencilla de hacerlo es utilizando el puerto serie del computador que es compatible con el standard de comunicación RS232, estos puerto también son conocidos como COM1, COM2, etc y utilizan generalmente un conector DB9, aunque puede encontrarse con un conector DB25.

 

Para comunicarnos con el computador sólo serán necesarios dos pines del PIC más la Tierra o Masa. Los pines son de Transmisión (Tx) y Recepción (Rx) de datos pueden ser configurados por el usuario, aunque en los PIC que los traen predeterminados de fabrica es mejor dejarlos tal como están a fin de poder utilizar por ejemplo la interrupción INT_RDA que la explicaré en otro tutorial.

 

Antes de entrar en materia considero conveniente aclarar ciertas cuestiones acerca del RS232. Este standard de comunicación no utiliza niveles TTL para la gestión de datos, en vez de esto utiliza voltajes de +12 y -12 voltios, por lo cual tendremos que utilizar un MAX232 que es un integrado que se encarga de adaptar los niveles de tensión. El datasheet lo pueden conseguir en el siguiente enlace:

 

A continuación mostraré la forma en la que se deben conectar el MX232 y el puerto serie del PC:

 

 

 

 

Nótese que he conectado algunos pines en el conector DB9, estos pines corresponden permiten la transmisión y recepción de información de tal forma que no se tengan que implementar por software las condiciones para la gestión de datos. TX y RX irán conectados a los pines correspondientes del PIC, según los hayamos configurado.

 

Ahora que aclaramos lo de los voltajes existen otros términos con los que nos debemos familiarizar como son:

 

            Baudio: Bits de información enviados por segundo. Bits/Segundo.

 

            Bit de parada: Indica la finalizacion de la transmisión de una palabra de datos.

 

            Bit de paridad: Permite identificar errores en la transmisión.

 

He omitido la explicación de otros parámetros para no entrar en detalles del protocolo de transmisión que no son estrictamente necesarios para la conexión PIC-PC.

 

El PIC C COMPILER trae ciertas instrucciones preestablecidas para poder trabajar comunicación serial, éstas permiten no solo implementar la comunicación entre dispositivos que posean una UART sino también en los que no la posean, tal es el caso del PIC16F84 que aunque un poco viejo es uno de los PIC con más acogida en el mercado y uno de los más económicos (ideal para estudiantes).

 

Las instrucciones son:

 

#use_rs232 (options)              Al ser una directiva de preprocesador va antes de la definición de variables, se utiliza después del #use_delay() y permite la configuración de diferentes parámetros de la comunicación serial, entre los que encontramos: La velocidad de transmisión, la configuración de los pines Tx y Rx del PIC, bit de paridad, entre otras. Para una descripción detallada a la Ayuda del compilador.

 

GETC();                                  Estas instrucciones esperan la recepción de un carácter en

GETCH();                               el pin RCV, y devuelven el carácter recibido.

GETCHAR();

 

 

PUTC();                                 Envía un carácter por el pin que se ha configurado como

PUTCHAR();                         XMIT.

 

PUTS();                                  Envía una cadena de caracteres por la patilla Xmit del PIC

 

PRINTF([function],string, [values]);                            Imprime en pantalla una cadena de caracteres según el formato que halla elegido el usuario

 

 

 

Ahora que ya sabemos las instrucciones que podemos usar es hora de hacer nuestra primera prueba, para esto he decidido hacer un pequeño contador que enviará el valor de la cuenta al PC. Para este ejemplo he utilizado el simulador PROTEUS y su herramienta “virtual Terminal” que emula el puerto serial de un ordenador, sin embargo pueden utilizar software como el Hyperterminal o el Comtest. Como no es necesario he omitido la conexión PIC/RS232 y conecte directamente al Tx y Rx del puerto, sin embargo al final del tutorial les dejo el esquema del circuito completo.

 

Código fuente del contador:

 

 

#include <16f84.h>

#use delay(clock=4000000)

#use rs232 (baud=9600,xmit=PIN_B0,rcv=PIN_B1,bits=8,parity=n)

#bit ra0 = 5.0

 

main()                                                             //Programa principal

{

int contador=0;                                               //Define la variable

 

set_tris_a(0xff);                                               //PORTA como entradas

set_tris_b(0x02);                                             //RB1 entrada, los demás pines salidas

output_b(0b00000001);                                 

 

puts("Pulse para iniciar conteo");                      //Envía mensaje a pantalla

 

while (1)

{

while (ra0= =0)                                               //Entra en un ciclo infinito hasta que

{}                                                                   //RA0 pase a 1.

 

contador++;

delay_ms(150);

printf("f%u",contador);                                   //Muestra el valor del contador

}

}                                                                     //Fin del programa

 

 

Esta es una imagen de la simulación:

 

 

Este sería el esquema si quieren implementarlo en vivo:

 

 Nota: Los condensadores C1, C2, C3 y C4 son de 1uF.  V+ = 5V

 
   
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis