Vous êtes sur la page 1sur 21

UNIVERSIDAD NACIONAL DE CHIMBORAZO FACULTAD DE INGENIERA ESCUELA DE INGENIERA ELECTRNICA Y TELECOMUNICACIONES

MODALIDAD: MICROPROCESADORES

COMUNICACIN USB-SERIAL

Autores: CHRISTIAN PIZANN DENIS AUQUILLA FREDY ARMIJOS

Docente: ING. FABIAN GUNSHA Nivel: CUARTO AO

Riobamba, 11 de Junio de 2013

TEMA: COMUNICACIN VIA USB-SERIAL OBETIVO GENERAL Establecer una comunicacin SERIAL y USB con el PIC 18F2550.

OBJETIVOS ESPECFICOS Establecer una conexin que permita enviar los valores de tres potencimetros pasando por su conversin analoga - digital en el microcontrolador 18F2550 a una PC va SERIAL y USB. Esto sucede al presionar un pulsador. Establecer una conexin USB QUE NOS PERMITA controlar las salidas en este caso tres rels mediante una PC a travs del puerto USB. Esto sucede al presionar nuevamente el mismo pulsador

FUNDAMENTO TEORICO

1. PUERTO USB Este puerto ha marcado un importante avance cuando se trata de conectar varios dispositivos externos, ya que mejora el nmero de ellos que es posible conectar de manera simultnea, y con una importante velocidad de transferencia. El Bus de Serie Universal USB (Universal Serial Bus) permite conectar hasta 127 dispositivos y ya es un estndar en los ordenadores de ltima generacin, que incluyen al menos dos puertos USB 1.1, o puertos USB 2.0 en los ms modernos. Es totalmente Plug & Play, es decir, con slo conectar el dispositivo y en caliente (con el ordenador encendido), el dispositivo es reconocido e instalado de manera inmediata. Slo es necesario que el Sistema Operativo lleve incluido el correspondiente controlador o driver, hecho ya posible para la mayora de ellos sobre todo si se dispone de un Sistema Operativo como por ejemplo Windows XP, de lo contrario el driver le ser solicitado al usuario. Posee una alta velocidad en comparacin con otro tipo de puertos, USB 1.1 alcanza los 12 Mb/s y hasta los 480 Mb/s (60 MB/s) para USB 2.0, mientras un puerto serie o paralelo tiene una velocidad de transferencia inferior a 1 Mb/s. El cable USB permite tambin alimentar dispositivos externos a travs de l, el consumo mximo de voltaje de este controlador es de 5 voltios. Para conectar varios dispositivos USB es necesario un concentrador o HUB, de tal forma que ser el concentrador quin se conecte al puerto USB del PC y alrededor

del HUB se conecten los dispositivos. Estos dispositivos a su vez pueden actuar como HUB para otros dispositivos. Tambin es posible conectar al HUB otros HUB consiguiendo as una topologa de ESTRELLA de varios niveles, siendo el nmero total de HUB que es posible conectar de 5, que se corresponde con 7 niveles. Los dispositivos USB 2.0 slo pueden ser conectados a puertos USB 2.0, ya que estos son una versin actualizada y mejorada del USB 1.1, aunque los dispositivos USB 1.1 s pueden ser conectados a puertos USB 2.0 adems del propio USB 1.1 Se debe tener claro el siguiente concepto, el puerto USB del que se parte, pertenece a un controlador fsico que puede estar en la propia tarjeta base o en una tarjeta de expansin, a este conector se le denomina concentrador raz. Este controlador suele disponer de dos conectores. Esto es importante, ya que no es lo mismo conectar dos dispositivos al mismo controlador que cada uno de ellos a un controlador distinto: en el primer caso deben compartir el ancho de banda y en el segundo caso no, es decir, tanto el ancho de banda como la alimentacin deben ser repartidas entre todos los dispositivos conectados a un mismo bus. Hay dos tipos de puertos y conectores USB, de Tipo A y de Tipo B. Los puertos y conectores de Tipo A son pequeos y rectangulares, y suelen utilizarse para conectar un dispositivo en un puerto USB de Tipo A en un ordenador o en un HUB. En ocasiones se denominan de "flujo descendente", porque los datos salen y se alejan del ordenador o del dispositivo. Los puertos y conectores de Tipo B son pequeos y cuadrados, y sirven para conectar un cable USB a un dispositivo USB. En ocasiones se les denomina de "flujo ascendente", porque los datos van del dispositivo al ordenador o a un HUB USB. 2. PIC 18F2550 Un microcontrolador es un circuito integrado que contiene toda la estructura (arquitectura) de un microcomputador, o sea CPU (siglas de Central Processing Unit) o Unidad Central de Proceso (UCP) a la unidad donde se ejecutan las instrucciones de los programas y se controla el funcionamiento delos distintos componentes del ordenador. Suele estar integrada en un chip denominado microprocesador. RAM (Random Access Memory, memoria de acceso aleatorio es

decir que no sigue una secuencia u orden determinado), ROM (Read Only Memory, memoria de slo lectura) y circuitos de entrada y salida. Los resultados de tipo prctico, que pueden lograrse a partir de estos elementos, son sorprendentes. Algunos microcontroladores como el 18F2550 ms especializados poseen adems convertidores anlogos digital, temporizadores, contadores y un sistema para permitir la comunicacin serial, y mediante puerto USB. CONEXIONES DEL DISPOSITIVO USB EN EL MICROCONTROLADOR La deteccin de un perifrico USB por parte de un ordenador se realiza conectando en el dispositivo, la lnea D+ o D- a 3,3 VDC a travs de una resistencia de PULLUP. El HUB tiene una resistencia de PULL-DOWN de 15 K ohmios en cada una de las dos lneas de datos del puerto USB, D+ y D-. El dispositivo tiene una resistencia de PULL-UP de 1,5 K ohmios en la lnea D+ (para velocidad completa) o D- (para baja velocidad) conectada a una tensin de 3,3 VDC. Cuando el perifrico se conecta al puerto, la lnea que tiene la resistencia de PULLUP conectada se pone a nivel alto y cuando el HUB detecta este nivel alto en una de las lneas, asume que un dispositivo est conectado y determina su velocidad en funcin de la lnea que sea. Cada nivel, se asocia a un nivel funcional dentro del dispositivo. La capa ms alta, con excepcin del dispositivo, es la configuracin. Un dispositivo puede tener configuraciones mltiples de energa. Para cada configuracin, puede haber mltiple interfaces. Cada interfaz poda apoyar un modo particular de esa configuracin, debajo del interfaz est la del punto final. Los datos se mueven directamente a este nivel; puede haber hasta 16 puntos finales bidireccionales. Nota: El punto final 0 por defecto es siempre el punto final de control, cuando el dispositivo est en el Bus, el punto final 0 debe estar disponible para configurar el dispositivo.

COMO SE REALIZO LA CONEXIN USB ENTRE EL PIC SIMULARLO TODO EN PROTEUS

Iniciemos el ejemplo Debemos generar archivos para la conexin USB El programa EasyHID USB Wizard se encarga de generar cdigos necesarios para poder utilizar los microcontroladores de la lnea PIC 18F2455, 18F2550, 18F4455 y 18F4550, que ser el que utilizaremos para nuestro ejemplo. El cdigo para el PIC, lo genera tanto para PIC Basic Pro como para Protn, mientras que para el ordenador, se encarga de generar el cdigo en Borland Delphi, Visual C++ y Visual Basic. Por supuesto que todos estos parmetros se pueden seleccionar mientras se avanza en la preparacin del software. En apenas muy pocos pasos, ya podemos tener una aplicacin HID USB lista para comenzar a cargarla de cdigo. Desde el Protn Development Suite, al iniciar la aplicacin, nos encontraremos con pantallas a las que les iremos cargando los datos que el sistema nos vaya pidiendo. Descargamos de esta pgina el EasyHID USB Wizard lo descomprimimos y ejecutamos. nos sale esta ventana y le ponemos un2000 Y EJEMPLO_USB

Ventana 1: Aqu se le pone su logo de predileccin.

Ventana 2: Aqu no cambie nada!!!

Ventana 3: puedes modificar los Pollin (Input /Output) son los tiempos de espera antes que el sistema descarte la conexin USB admite max 255 y adems defines la mxima corriente que tu circuito le puede extraer al BUS del PC. Bus Coger en este caso le sacamos 100mA.

Ventana 4: ac le pones un nombre al proyecto, seleccionas tipo de PIC USB, Compilador para el MICRO, y plataforma para crear el Host en el PC.

Ventana 5 Esto es el final entonces ya se cre cdigo base.

Dentro de directorio PDS esta lo que se requiere para programar el PIC y dentro de Visual Basic la base de programacin de visual que se debe incrustar en el formulario principal VB PDS contiene: ProyectoUSB (formato protn) y ProyectoUSBDESC.inc (formato Protn) este ltimo es el archivo descriptor para la conexin USB debe ser invocado como INCLUIDO al compilar el programa principal para el MICROCONTROLADOR que le puedes dejar el nombre ProyectoUSB o cambirselo.

Abra el Programa base ProyectoUSB (formato Protn). Vera este listado

Ponga el descriptor (ProyectoUSBDESC.inc ) donde guardas el programa principal o no te compilara bien. El resto se deja as El resto del listado es este

Contiene las rutinas de transmisin y recepcin USB que debes llamar en caso de necesitarlas

EN LA LNEA 13 Private sub. Command1_Click () BufferOut(3) = 1 ; conecta al buffer (2) del protn que es el estado del led.

hidWriteEx VendorID, ProductID, BufferOut(0) End Sub EN LA LNEA 94 LED = BufferIn(2) ; buffer(1) en protn If LED = True Then Shape2.FillColor = vbGreen Label4.Caption = "Encendido" Else Shape2.FillColor = vbRed Label4.Caption = "Apagado" End If

AHORA PARA QUE PROTEUS SE COMUNIQUE CON VISUAL BASIC DEBE CARGAR UN DRIVER VIRTUAL

Lo ms seguro es que proteus te obligue a reiniciar el PC OJO En la aplicacin real no se requiere cargar un driver

DISEO

a) CDIGO DE PROGRAMA
' ************************************************************ ' * Auto generated EasyHID file. PBP 2.60 and above * ' ************************************************************ ' include the HID descriptor include "DESCUSBProject.bas" INCLUDE "modedefs.bas" DEFINE OSC 48 DEFINE LOADER_USED 1 DEFINE LCD_DREG PORTB DEFINE LCD_DBIT 4 DEFINE LCD_RSREG PORTB DEFINE LCD_RSBIT 0 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 1 CONT VAR BYTE LETRA var BYTE DATO VAR WORD DATO1 VAR WORD DATO2 VAR WORD INTCON2.7=0 ADCON1=%00001011 TRISA=%00000111 TRISC.0=0 PORTC.0=0 TRISC.1=0 PORTC.1=0 TRISC.2=0 PORTC.2=0 I VAR Byte LED1 VAR PORTC.0 LED2 VAR PORTC.1 LED3 VAR PORTC.2 CONT=0

LCDOUT $FE,$C2,"BIENVENIDOS" PAUSE 500 USBBufferSizeMax con 8 ' maximum buffer size USBBufferSizeTX con 8 ' input USBBufferSizeRX con 8 ' output ' the USB buffer...

USBBuffer Var Byte [USBBufferSizeMax] USBBufferCount Var Byte ' ************************************************************ ' * main program loop - remember, you must keep the USB * ' * connection alive with a call to USBService every couple * ' * of milliseconds or so... * ' ************************************************************ usbinit ' initialise USB... ProgramStart: INICIO: if PORTB.2=0 then CONT=1 ELSE GOTO INICIO ENDIF UNO: WHILE CONT=1 LCDOUT $FE, 1,"ANALOGICO" LCDOUT $FE, $C2,"TX SERIAL-USB" PAUSE 500 PRIMERO: ADCIN 0, DATO ADCIN 1, DATO1 ADCIN 2, DATO2

LCDOut $FE, 1 ' Limpia la LCD LCDOUT $FE, 1,"VALORES SON:" LCDOUT $FE, $C0, DEC DATO LCDOUT $FE, $C6, DEC DATO1 LCDOUT $FE, $CD, DEC DATO2 SEROUT PORTC.6, T9600, ["VALOR 1= ", #dato," ", 10,13] SEROUT PORTC.6, T9600, ["VALOR 2= ", #dato1," ", 10, 13] SEROUT PORTC.6, T9600, ["VALOR 3= ", #dato2," ", 10, 13] PAUSE 300 '------------------------------------------------------------------------------'------------------------------------------------------------------------------if PORTB.2=0 THEN CONT=2 GOTO DOS

else goto PRIMERO ENDIF wEND '------------------------------------------------------------------------------'------------------------------------------------------------------------------DOS: WHILE CONT=2 LCDOUT $FE, 1,"DIGITAL" LCDOUT $FE, $C4,"RX USB" PAUSE 500 SEGUNDO: LCDOut $FE, 1 ' Limpia la LCD PAUSE 200 SerOUT PORTC.6, T9600,["SALIDAS: ",10,13] PAUSE 1000 gosub DoUSBOUT LETRA=USBBUFFER (0) LCDOUT $FE, 2,"LETRA: ", #LETRA IF LETRA="A" THEN FOR i=1 TO 4 LCDOUT $FE, 1,"SALIDA 1 ON" SEROUT PORTC.6, T9600,["SALIDA 1 ON",10,13] LED1 = 1 Pause 500 LED1 = 0 Pause 200 NEXT ENDIF IF LETRA="B" THEN FOR i=1 TO 4 LCDOUT $FE, 1,"SALIDA 2 ON" SEROUT PORTC.6, T9600,["SALIDA 2 ON"] LED2 = 1 Pause 500 LED2 = 0 Pause 200 NEXT

ENDIF IF LETRA="C" THEN FOR i=1 TO 4 LCDOUT $FE, 1,"SALIDA 3 ON SEROUT PORTC.6, T9600,["SALIDA 3 ON"] LED3 = 1 Pause 500 LED3 = 0 Pause 200 NEXT ENDIF

LCDOUT $FE, 1,"SALIDAS APAGADAS" PAUSE 500 SEROUT PORTC.6, T9600,["SALIDA APAGADAS"] PAUSE 500 '------------------------------------------------------------------------------'------------------------------------------------------------------------------if PORTB.2=0 THEN CONT=1 GOTO UNO else GOTO SEGUNDO ENDIF '------------------------------------------------------------------------------'------------------------------------------------------------------------------WEND gosub DoUSBOut goto ProgramStart ' ************************************************************ ' * receive data from the USB bus * ' ************************************************************ DoUSBIn: USBBufferCount = USBBufferSizeRX ' RX buffer size USBService ' keep connection alive USBIn 1, USBBuffer, USBBufferCount, DoUSBIn ' read data, if available return ' ************************************************************ ' * wait for USB interface to attach * ' ************************************************************ DoUSBOut:

USBBufferCount = USBBufferSizeTX ' TX buffer size USBService ' keep connection alive USBOut 1, USBBuffer, USBBufferCount, DoUSBOut ' if bus available, transmit data return b) CIRCUITO CONEXIN SERIAL-USB CONEXIN DE PIC 18F2550 CON LCD, POTENCIMETROS A LAS ENTRADAS ANALGICAS, CON CONEXIN A PUERTO USB Y PULSADOR PARA RESET. EL CIRCUITO CONSTA DE UN PULSADOR PARA: PULSO 1: TRANSMITE LOS VALORES DE POTENCIOMETRO (VALOR DIGITAL) DEL PIC AL PUERTO SERIAL Y PUERTO USB. PULSO 2: SE TRANSMITE VIA USB CARACTERES AL PIC. PARA SELECCIONAR ASI LA SALIDA QUE SE DESEA ENCENDER, EN LA SIMULACIN SE PUSO TRES LEDs, PERO EN LO ARMADO PUEDE SER UNOS RELS.

PARA LA TRANSMICION SERIAL MEDIANTE EL PIC Y LA PC SE NECESITA UNA CONEXIN CON MAX 232 QUE ELEVA LOS NIVELES DE VOLTAJE PARA LA TRANSMICION. EL MAX 232 DE CONFIGURA COMO SE MUESTRA A CONTINUACION CON LOS CAPACITORES ELECTROLITICOS.

RELS

REL ESTADO SOLIDO

CONCLUSIONES

Cada etapa del funciona de manera independiente, aunque tambin pueden funcionar en conjunto, como es el caso del teclado que necesariamente tendr que asociarse con alguna otra etapa para poder visualizar sus resultados. Esto fue construido pensando en las aplicaciones futuras, ya que consta de comunicacin serial a travs del puerto RS232 y puerto USB, este ltimo que en nuestro tiempo se encuentra en gran desarrollo y es de fcil aplicacin.

RECOMENDACIONES

Se debe tomar muy en cuenta que los prticos PortB.15 y Port B.16 no se usaran como prticos de salida o entrada ya que estos estn destinados para la transmisin y recepcin de datos desde la PC hacia el PIC o viceversa. Al momento de realizar una comunicacin por USB desde la PC hacia el PIC hay que tener en cuenta siempre, el voltaje del USB VUSB) que se encuentra en el pin nmero 14 del PIC, ya que al no tener este voltaje (3.3 VDC) nunca se podr realizar la comunicacin USB. Es recomendable como fuente de poder el uso del puerto USB, ya que en este puerto tendremos la seguridad de tener un voltaje constante de +5 VDC, ya que el uso de otra fuente de poder como el de un adaptador no nos garantiza el voltaje constante deseado y podra ocasionar daos a los elementos electrnicos del entrenador. El rel de estado slido (SSR) es un elemento que permite aislar elctricamente el circuito de entrada o mando y el circuito de salida.

INTERNET

[1] http://www.unrobotica.com/usbcon.htm
BIBLIOGRAFIA

[2] Aprenda rpidamente a programar Microcontroladores PIC. Autor: Carlos A. Reyes

ANEXOS

PANTALLA PRINCIPAL

ENVA VALORES DE LOS POTENCIOMETRO VIA SERIAL Y USB

CREACIN DE PUERTOS VIRTUALES CON VIRTUAL SERIAL PORT

MOMENTO EN EL QUE PUERTO USB ES RECONOCIDO Y POSTERIORMENTE LA INSTALACION DEL CONTROLADOR DEL DISPOSITIVO CON EL NOMBRE CON EL QUE FUE CREADO.

LISTO PARA TRANSMITIR DESDE LA PC AL MICROCONTROLADOR VIA USB(ESPERANDO DATOS).

AL NO RECIBIR DATOS INDICA MEDINATE LCD QUE LAS SALIDAS SE ENCUENTRAN APAGADAS

EN LO CORRESPONDIENTE A LO SIMULADO SE PUEDE ENVIASR DATOS MEDIANTE VIA USB SE PUEDE UTILIZAR LA HERRAMMEINTA HID TERMINAL DE MIKRO C.

SI NO RECONOCE EN DSIPOSITICO PUEDE QUE SE DEBA A QUE NO INSTALADO LOS DRIVER ACTUALIZADO DEL PUERTO USB Y SE LO REALIZA EN INICIO, PROTEUS Y CLICK EN VIRTUAL USB Y SE DA CLIC EN INSTALL DRIVER USB. SI ES WINDOWS 7 SE LO EJECUTA COMO ADMINISTRADOR.