jueves, 17 de mayo de 2012

Comunicación PIC - DB9

Comunicación PIC - DB9 (RS232)


Existen un montón de aplicaciones de los microcontroladores donde es necesario comunicarse con una PC, por nombrar alguna aplicación, podemos decir que existen sistemas de monitoreo donde el microcontrolador está "escuchando" lo que pasa a su alrededor mediante sensores conectados a sus entradas, por ejemplo podría estar tomando como entradas sonidos del exterior o temperaturas, etc, datos que luego se desea que sean procesados por una PC, luego que la PC tome alguna decisión dependiendo de lo que haya reportando el microcontrolados.




Puerto Serie RS232 



 


La forma más común y sencilla de comunicar cualquier dispositivo con un ordenador es a través de su puerto serie que es compatible con el denominado estándar RS232. En una computadora hay puertos serie (en la mayoría de las actuales ya no viene, pero bien se podría usar un USB-Serie) que comúmente se denominan COM1, COM2, COM3, etc.

Los puertos serie son accesibles mediante conectores. La norma RS232 establece 2 tipos de conectores llamados DB25 (25 pines) y DB9 (9 pines) machos y hembras. La norma RS232 se estableció para conectar una PC con um módem, por lo que aparecen muchos pines en los conectores DB25 que en otro tipo de aplicaciones no se utilizan  y en las que es más común utilizar el conector DB9.


Cada uno de los pines del conector RS232 tiene una función específica por la norma. Hay unos terminales por los que se transmiten y reciben datos y otros que controlan el establecimiento, flujo y cierre de la comunicación.



La siguiente imagen muestra el pinout del conector DB9, vean las funciones de cada PIN (clickear sobre la imagen para ampliarla)


 






 
Se puede observar en la pasada imagen que cada pin desempeña una función pero para la comunicación con un microcontrolador es suficiente con 3 líneas. 


  • Linea de transmisión (TxD), pin 3, transmisión de datos

  • Línea de recepción (RxD), pin 2, recepción de datos

  • Pin de masa (SG), pin 5, pin a tierra

Las especificaciones del puerto serie están contenidas en la norma RS232, entre las que se pueden destacar están las siguientes:




El baudio



Un dato importante a tener en cuenta en cualquier comuniación es la velocidad de transmisión, que es la cantidad de información enviada por la línea de transmisión en la unidad de tiempo.


Hay distintas unidades para expresar esta medida, la más utilizada es el Baudio, que es proporcional a los Bits/segundo (bps), definidos como el número de bits de información enviados por un segundo.

La velocidad a la que pueden trabajar los puertos COM de una PC está normalizada a 75, 150, 300, 600, 1200, 2400, 4800, 9600 Baudios. Estos valores son demasiado pequeños para los estándares de hoy en día, pero suficientemente rápidos para bastantes aplicaciones.



Niveles lógicos RS232




Existen requisitos en cuanto a niveles lógicos que debe cumplir una transmisión serie según la norma RS232, en la siguiente imagen se ilustran estos requisitos (gráfica roja):






Lo destacable o más importante en cuanto a requisitos que debe cumplir una transmisión serie según la norma RS232 es:  


  • Los datos se transmiten con lógica negativa, es decir, un voltaje positivo en la conexión representa un 0, mientras que un voltaje negativo representa un 1.

  • Para garantizar un 0 lógico una línea debe mantener un voltaje entre +3 y +15 volts.

  • Del mismo modo para un 1 lógico garantizado debe estar entre los -3 y -15 volts.

  • Los voltajes más usados son +12 volts para el 0 y -12 volts para el 1.

  • Es importante resaltar que cuando un puerto serie no está transmitiendo, mantiene el terminal de transmisión a 1 lógico, a -12 volts normalmente.

  • La banda muerta entre los +3 y -3 volts se conoce como la región de transición donde los niveles lógicos no están definidos. Esto significa que cualquier valor entre los +3 y -3 volts puede interpretarse ambiguamente como 0 ó 1


Si se aumenta la velocidad de transmisión  las señales de datos se vuelven susceptibles a pérdidas de voltaje causadas por la capacidad, resistencia e inductancia del cable. Estas pérdidas son conocidas como efectos de alta frecuencia y aumentan con la longitud del cable.


Estos valores de tensión proporcionan un amplio margen de seguridad que es de gran utilidad  cuando los cables deben pasar por zonas cercanas a elementos que generan interferencia eléctrias: motores, transformadores, equipos de comunicación, etc. Estos elementos unidos a la longitud del cable pueden hacer disminuir la señal hasta en varios voltios, sin que afecte al nivell lógico de la entrada.


 
 
MAX232




Bueno, como ya mencioné anteriormente los niveles lógicos de la transmisión por la norma RS232 son muy distintos a los niveles lógicos del PIC (señal digital convencional).


Aquí surge la pregunta: ¿Cómo vamos a establecer la comunicación entre el PIC y la PC si las salidas de nuestro PIC no cumplen con los niveles lógicos de transmisión de la norma RS232?

Pues la respuesta está en el chip MAX232, este integrado nos permitirá convertir de las señales digitales convencionales del PIC a señales que puedan cumplir con la norma RS232 para una correcta comunicación.







El MAX232 (Maxim) es un circuito integrado utilizado para adaptar los niveles requeridos en una conexión donde interviene un dispositivo que maneja niveles de tensión TTL (nuestro microcontrolador, por ejemplo) y otro capaz de trabajar bajo los parámetros de la norma EIA/TIA 232-E y las V.28/V.24. Expresado en lenguaje de tensiones, los niveles TTL operan entre los 0 y 5Volts y la otra norma, conocida en el mundo técnico como RS-232 (Recommended Standard 232), utiliza tensiones que van desde los -12Volts a los +12Volts. Este circuito integrado el MAX232) está especialmente diseñado para trabajar en equipos que utilicen bajos niveles de tensión (5Volts) y requiere de muy pocos componentes externos para lograr un funcionamiento óptimo.



Conexión Puerto RS232 y PIC





Como ya mencioné con anterioridad para realizar la comunicación con un microcontrolador tan solo se necesitan 3 pines del conector DB9, estas son:


  • Pin de transmisión (TxD)
  • Pin de recepción (RxD)
  • Pin de masa (SG)

La siguiente imagen es un esquema de la conexión para la comunicación entre la PC y el microcontrolador, como mencione anteriormente, las señales digitales del PIC  primero deben ir al MAX232 para convertirlas en señales que cumplan con la norma RS232 luego ya saliendo del MAX232 pueden ir hacia la PC, de igual manera la PC no se comunica directamente con el PIC porque no se "entenderían", es por eso que debe pasar primero la señal por el MAX232, luego de ahí al microcontrolador.







Se pueden encontrar bastantes librerías en la web sobre la comunicación serial PIC-PC para programar el PIC y realizar las pruebas. Es difícil realizar un programa relacionado a este tema desde 0 ya que se trata con temas complejos y de estándares de comunicación, es por eso que estas librerías de comunicación facilitan mucho el trabajo y solo es cuestion de llamar a las subrutinas de esas librerías para que se encargen de todo ese trabajo "sucio", obviamente es necesario incluir esas librerias de comunicación dentro del programa que estamos desarrollando.


Luego de construir el software y el circuito se puede probar la comunicación mediante un programa que levante sesiones seriales. Yo he usado programas como Hyperterminal (en Windows XP) o Secure CRT (en Windows 7) pero si estas trabajando en Ubuntu puedes instalar el programa PuTTY SSH Client, es muy sencillo de manejar y si me ha servido.



Para levantar una sesión serial en Putty SSH Client tan solo tienes que seleccionar la opción Serial de la pantalla de inicio del programa, y elegir las demás opciones como velocidad de transmisión de los datos (9600 baudios). Esta es una captura de pantalla que saqué de mi PC.







Es muy importante que tengas conectado el puerto DB9 a la PC y al MAX232, osea todo listo y conectado a la hora de abrir la sesión serial en Putty SSH Client para evitar problemas de que no encuentra el puerto.


Para los que usan Hyperterminal o Secure CRT el procedimiento es muy similar.
 

Esto es todo!

Saludos!





1 comentario: