REPORTE 07 COMUNICACION SERIAL

16
I I N N S S T T I I T T U U T T O O P P O O L L I I T T É É C C N N I I C C O O N N A A C C I I O O N N A A L L UNIDAD PROFESIONAL INTERDISCIPLINARIA EN INGENIERÍA Y TECNOLOGÍAS AVANZADAS PROGRAMACIÓN DE SISTEMAS EN TIEMPO REAL Por el Prof. M. en C. DAVID ARTURO GUTIÉRREZ BEGOVICH INTEGRANTES DEL EQUIPO: ALVAREZ GALVÁN LUIS ALBERTO PIZANO ALANIS JOSÉ DE JESÚS ZERÓN HERNÁNDEZ ALEJANDRO RAÚL GRUPO: 4BV1 Fecha Realización: Junio 10, 2010 Fecha Entrega (reporte): Junio 10, 2010 P P r r á á c c t t i i c c a a N N o o . . 0 0 7 7 M M a a n n e e j j o o d d e e l l m mó ó d d u u l l o o U U S S A A R R T T : : C C o o m mu u n n i i c c a a c c i i ó ó n n A A s s í í n n c c r r o o n n a a ( ( T T x x & & R R x x ) ) e e n n t t r r e e P P I I C C16 F F877 A A y y M M A A T T L L A A B B

Transcript of REPORTE 07 COMUNICACION SERIAL

Page 1: REPORTE 07 COMUNICACION SERIAL

IINNSSTTIITTUUTTOO PPOOLLIITTÉÉCCNNIICCOO NNAACCIIOONNAALL

UUNNIIDDAADD PPRROOFFEESSIIOONNAALL IINNTTEERRDDIISSCCIIPPLLIINNAARRIIAA EENN IINNGGEENNIIEERRÍÍAA YY TTEECCNNOOLLOOGGÍÍAASS AAVVAANNZZAADDAASS

PPRROOGGRRAAMMAACCIIÓÓNN DDEE SSIISSTTEEMMAASS EENN TTIIEEMMPPOO RREEAALL

PPoorr eell PPrrooff.. MM.. eenn CC.. DDAAVVIIDD AARRTTUURROO GGUUTTIIÉÉRRRREEZZ BBEEGGOOVVIICCHH

IINNTTEEGGRRAANNTTEESS DDEELL EEQQUUIIPPOO::

AALLVVAARREEZZ GGAALLVVÁÁNN LLUUIISS AALLBBEERRTTOO

PPIIZZAANNOO AALLAANNIISS JJOOSSÉÉ DDEE JJEESSÚÚSS

ZZEERRÓÓNN HHEERRNNÁÁNNDDEEZZ AALLEEJJAANNDDRROO RRAAÚÚLL

GGRRUUPPOO:: 44BBVV11

FFeecchhaa RReeaalliizzaacciióónn:: JJuunniioo 1100,, 22001100 FFeecchhaa EEnnttrreeggaa ((rreeppoorrttee)):: JJuunniioo 1100,, 22001100

PPrrááccttiiccaa NNoo.. 0077

MMaanneejjoo ddeell mmóódduulloo UUSSAARRTT::

CCoommuunniiccaacciióónn AAssíínnccrroonnaa ((TTxx && RRxx)) eennttrree

PPIICC1166FF887777AA yy MMAATTLLAABB

Page 2: REPORTE 07 COMUNICACION SERIAL

Práctica No. 07

MMaanneejjoo ddeell mmóódduulloo UUSSAARRTT:: CCoommuunniiccaacciióónn AAssíínnccrroonnaa ((TTxx && RRxx)) eennttrree PPIICC1166FF887777AA yy MMAATTLLAABB

Objetivos

Durante el desarrollo y al término de ésta práctica, el estudiante de ingeniería podrá:

Entender el concepto de “USART”, y sus aplicaciones en la electrónica digital

Desarrollar códigos de programación en ensamblador para poder realizar una comunicación serial del PIC con la computadora.

Desarrollar códigos de programación en ensamblador para poder utilizar un puerto serial.

Diseñar un circuito electrónico para la interacción del PIC16F877A con una computadora.

Desarrollar e implementar un código de programación en ensamblador (utilizando MPLAB®IDE) para que el microcontrolador envié un numero a

Matlab y este lo regrese sumando en 5.

Implementar un sistema en tiempo real con tiempos de ejecución precisos para cada transmisión y recepción de datos.

Page 3: REPORTE 07 COMUNICACION SERIAL

Introducción

En este reporte se expondrá cómo se puede transmitir datos del PIC16F877A a una computadora y poder recibirlos de ella a través de una conexión

serial gracias a un cable USB-Serial.

El PIC16F877A mandara un numero escogido por el programado al programa Matlab de la computadora el cual al recibir el numero lo mostrara en

pantalla, le sumara 5 y lo mandara de regreso al PIC.

El numero escogido que se enviara y el que se recibirá podrá verse también en una barra de Let´s que estará en el circuito donde se encuentra el PIC.

Marco Teórico

MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es un software matemático que ofrece un entorno de desarrollo integrado (IDE)

con un lenguaje de programación propio (lenguaje M). Está disponible para las plataformas Unix, Windows y Apple Mac OS X.

Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de datos y funciones, la implementación de algoritmos, la

creación de interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos hardware. El paquete MATLAB

dispone de dos herramientas adicionales que expanden sus prestaciones, a saber, Simulink (plataforma de simulación multidominio) y GUIDE (editor de

interfaces de usuario - GUI). Además, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes); y las de Simulink con

los paquetes de bloques (blocksets).

Es un software muy usado en universidades y centros de investigación y desarrollo. En los últimos años ha aumentado el número de prestaciones, como

la de programar directamente procesadores digitales de señal o crear código VHDL.

La comunicación serial consiste en el envío de un bit de información de manera secuencial, esto es, un bit a la vez y a un ritmo acordado entre el

emisor y el receptor.

Page 4: REPORTE 07 COMUNICACION SERIAL

La comunicación serial en computadores ha seguido los estándares definidos en 1969 por el RS-232 (Recommended Standard 232) que establece

niveles de voltaje, velocidad de transmisión de los datos, etc. Por ejemplo, este protocolo establece un nivel de -12v como un uno lógico y un nivel de

voltaje de +12v como un cero lógico (por su parte, los microcontroladores emplean por lo general 5v como un uno lógico y 0v como un cero lógico).

Existen en la actualidad diferentes ejemplos de puertos que comunican información de manera serial (un bit a la vez). El conocido como “puerto serial” ha

sido gradualmente reemplazado por el puerto USB (Universal Serial Bus) que permite mayor versatilidad en la conexión de múltiples dispositivos. Aunque

en naturaleza serial, no suele referenciarse de esta manera ya que sigue sus propios estándares y no los establecidos por el RS-232.

El Universal Serial Bus (bus universal en serie) o Conductor Universal en Serie (CUS), abreviado comúnmente USB, es un puerto que sirve para

conectar periféricos a un ordenador. Fue creado en 1996 por siete empresas: IBM, Intel, Northern Telecom, Compaq, Microsoft, Digital Equipment

Corporation y NEC[cita requerida]

.

El diseño del USB tenía en mente eliminar la necesidad de adquirir tarjetas separadas para poner en los puertos bus ISA o PCI, y mejorar las

capacidades plug-and-play permitiendo a esos dispositivos ser conectados o desconectados al sistema sin necesidad de reiniciar. Sin embargo, en

aplicaciones donde se necesita ancho de banda para grandes transferencias de datos, o si se necesita una latencia baja, los buses PCI o PCIe salen

ganando. Igualmente sucede si la aplicación requiere de robustez industrial. A favor del bus USB, cabe decir que cuando se conecta un nuevo dispositivo,

el servidor lo enumera y agrega el software necesario para que pueda funcionar (esto dependerá ciertamente del sistema operativo que esté usando el

ordenador).

El USB no puede conectar los periféricos porque sólo puede ser dirigido por el drive central así como: ratones, teclados, escáneres, cámaras digitales,

teléfonos móviles, reproductores multimedia, impresoras, discos duros externos entre otros ejemplos, tarjetas de sonido, sistemas de adquisición de datos

y componentes de red. Para dispositivos multimedia como escáneres y cámaras digitales, el USB se ha convertido en el método estándar de conexión.

Para impresoras, el USB ha crecido tanto en popularidad que ha desplazado a un segundo plano a los puertos paralelos porque el USB hace mucho más

sencillo el poder agregar más de una impresora a un ordenador.

Algunos dispositivos requieren una potencia mínima, así que se pueden conectar varios sin necesitar fuentes de alimentación extra. La gran mayoría de

los concentradores incluyen fuentes de alimentación que brindan energía a los dispositivos conectados a ellos, pero algunos dispositivos consumen tanta

energía que necesitan su propia fuente de alimentación. Los concentradores con fuente de alimentación pueden proporcionarle corriente eléctrica a otros

dispositivos sin quitarle corriente al resto de la conexión (dentro de ciertos límites).

Los convertidores Edgeport de USB a serie constituyen una sencilla solución de conexión directa (plug-and-play) para la expansión de puertos COM.

Los Edgeport son una alternativa independiente (externa) a las tarjetas PCI, y se conectan por USB a un PC o servidor, de modo que ya no es necesario

abrir el chasis, reconfigurar y reiniciar el equipo. Basta con conectar el Edgeport y en cuestión de minutos dispondrá de hasta 16 puertos serie para

conectar lectores de códigos de barras, impresoras o cualquier dispositivo serie periférico.

Page 5: REPORTE 07 COMUNICACION SERIAL

Un puerto serie o puerto serial es una interfaz de comunicaciones de datos digitales, frecuentemente utilizado por computadoras y periféricos, en donde

la información es transmitida bit a bit enviando un solo bit a la vez, en contraste con el puerto paralelo que envía varios bits simultáneamente. La

comparación entre la transmisión en serie y en paralelo se puede explicar usando una analogía con las carreteras. Una carretera tradicional de un sólo

carril por sentido sería como la transmisión en serie y una autovía con varios carriles por sentido sería la transmisión en paralelo, siendo los vehículos los

bits que circulan por el cable.

Material

1 PIC16F877A.

1 CRISTAL DE 4 MHz.

2 Capacitores Cerámicos de 22 pF.

5 Capacitores Electrolíticos de 1 μF.

1 Dip-Switch de 8 vías.

1 CI Driver MAX232CPE

1 Barra de Leds.

8 Resistencias 330 Ω a ½ watt.

10 Resistencias 10 KΩ a ½ watt.

2 Push Buttons.

1 Conector DB9 hembra.

1 Cable de interfaz USB-RS232.

2 Protoboards.

Alambres.

Fuente de Voltaje de 5 VCD.

Computadora Portátil

Page 6: REPORTE 07 COMUNICACION SERIAL

Desarrollo

1. Se procedió a armar el siguiente circuito. El cual también se muestra en las siguientes fig. 7.1 – 7.3

Page 7: REPORTE 07 COMUNICACION SERIAL

FIG. 7.1

Page 8: REPORTE 07 COMUNICACION SERIAL

FIG. 7.2

Page 9: REPORTE 07 COMUNICACION SERIAL

FIG. 7.3

Page 10: REPORTE 07 COMUNICACION SERIAL

Descripción del programa

La función principal del programa es de transmitir un numero elegido por el programador hacia Matlab vía USB-Serial, éste al recibirlo lo mostrara en

pantalla, le sumara 5 y lo regresara al PIC el cual lo mostrara en una barra de Let´s en formato Hexadecimal.

A continuación se muestra el código utilizado en el PIC:

Page 11: REPORTE 07 COMUNICACION SERIAL
Page 12: REPORTE 07 COMUNICACION SERIAL
Page 13: REPORTE 07 COMUNICACION SERIAL
Page 14: REPORTE 07 COMUNICACION SERIAL
Page 15: REPORTE 07 COMUNICACION SERIAL

Y este código se utilizo en Matlab:

ps=serial('COM6');

set(ps,'Baudrate',9600);

set(ps,'StopBits',1);

set(ps,'DataBits',8);

set(ps,'Parity','none');

set(ps,'OutputBufferSize',1);

set(ps,'InputBufferSize',1);

set(ps,'Terminator','CR/LF');

set(ps,'Timeout',3);

set(ps,'FlowControl','none');

fopen(ps)

l=fread(ps,1,'uint8')

disp(l)

pause(5)

fwrite(ps,l+5)

fclose(ps)

delete(ps)

INSTRFIND

Page 16: REPORTE 07 COMUNICACION SERIAL

Conclusión:

Al termino de esta práctica lo que se puede concluir es que la conexión serial es muy importante ya que si no se cuenta con un puerto

USB será de mucha ayuda el puerto serial o en serie; una de las desventajas es que la conexión es algo lenta si uno de los pines esta

defectuosos o roto por eso estos puertos están siendo sustituidos por puertos USB los cuales son más rápidos y confiables. Esta

práctica será de mucha ayuda en el futuro cuando tengamos que hacer proyectos más complicados que necesiten comunicación con

una PC ya que estaremos encaminados en el tema.

Referencias:

www.wikipedia.com

http://www.digi.com/es/products/usb/edgeport.jsp