Sei sulla pagina 1di 21

FACULTAD DE INGENIERÍAS

CARRERA
ELECTRÓNICA

SISTEMAS MICROPROCESADOS I

INFORME EXAMEN
TRANSMISIÓN USB

INTEGRANTES:
LUIS HERNADEZ
JUAN DAVID HERRERA

1
Tema: TRANSMISIÓN USB

Problema planteado:

Realizar un programa que permita transmitir una señal vía USB desde el microcontrolador al
computador utilizando LabVIEW, se debe visualizar la señal en la pantalla, como si fuera un
osciloscopio.

Materiales:

• PIC 18F2550
• Cristal oscilador de 20Mhz
• Conector USB
• Condensador de 2.2uF
• Resistencia 10K
• Potenciómetro 250k
• Cable USB.

Algoritmo:

Entradas:

• Puerto A
• Señal analógica enviada al RA0
• Datos enviados por labVIEW para habilitar la transmisión USB.

Proceso:

• Declarar las variables y la interface


• Configurar el USB Buffer
• Configurar el ADC ADCOn= 0
• Realizar la comunicación entre Labview y pic
• Leer los datos de la señal de entrada

Salidas:

• Señal desplegada en LabVIEW.

2
Diagrama de flujo:

3
Código del programa (Realizado en Proton):

'Selecciona el microcontrolador y la velocidad


Device = 18F2550
XTAL = 48

'Comunicación con el programa en LabVIEW


USB_DESCRIPTOR = "OSCILOSCOPIODESC.inc"

'USB Buffer...
Symbol USBBufferSizeMax = 8
Symbol USBBufferSizeTX = 8
Symbol USBBufferSizeRX = 8
Dim USBBuffer[USBBufferSizeMax] As Byte

' Configura flags...


Dim PP0 As Byte SYSTEM ' USBPOLL pregunta a la interface USB
para saber si se adjunta al BUS
Symbol CARRY_FLAG = STATUS.0 ' regresa un valor alto si el
microcontrolador no tiene control sobre el buffer
Symbol ATTACHED_STATE = 6 ' El valor USB es adjuntado

' ************************************************************

GoSub AttachToUSB ' lee el valor del ADC


Declare ADIN_RES 8 ' resultado de 8 bits
Declare ADIN_TAD FRC ' OSC RC escogido
Declare ADIN_STIME 50 ' permite 50u segundos
Dim VAR1 As Byte
Dim dato As Byte
TRISA = 255 ' configura AN0
ADCON1 = 0 ' configure la entrada análoga en el puerto A
ProgramLoop:

GoSub DoUSBOut
GoTo ProgramLoop

' * recibe los datos del BUS USB


DoUSBIn:
USBIn 1, USBBuffer, USBBufferSizeRX, DoUSBIn
Return

' * transmite los datos del bus USB


DoUSBOut:
VAR1 = ADIn 0 ' Guarda la conversion ADC en una nueva variable
USBBuffer[0]=VAR1
USBOut 1, USBBuffer, USBBufferSizeTX, DoUSBOut
Return

' * espera por la interface USB *


AttachToUSB:
Repeat
USBPoll
Until PP0 = ATTACHED_STATE
Return

4
Esquemático:

Simulaciones:

5
6
Breve Explicación Del Proyecto:

Este proyecto realiza una transmisión de datos que son recibidos por el PIC mediante un
potenciómetro, que envía una señal analógica a la Entrada A0 del PIC, el PIC realiza una
conversión analógica-digital y envía estos datos vía USB al computador, cuando los datos
llegan al computador el programa labVIEW es el encargado de codificar los dados recibidos y
mostrarlos una grafica, como si fuera un osciloscopio.

Descripción del programa en LabVIEW:

Este programa de LabVIEW tiene dos partes principales:

1. La parte CLAVE es la encargada de enviar un dato, al PIC mediante el puerto USB con el
objetivo de permitir la adquisición de datos del PIC. Como el programa del PIC está
configurado para usar dos bytes de recepción, por lo que justamente se envían 2 bytes, el
primero es el decimal equivalente a O mayúscula, y el segundo a la letra K, datos que el PIC
se queda esperando para empezar con la conversión A/D y comunicarse con la PC.

7
2. La segunda parte principal es la encargada de recibir los datos usando el puerto USB. Usa
una configuración en la que se espera por un evento dentro de un tiempo de espera t, si
no se recibe ningún dato Labview lanzará un error, y todo quedará estático, por eso hay
que asegurarse de que todas las interface del pic estén funcionando. Como desde el PIC se
transmiten 3 bytes hacia la PC, precisamente tendremos un vector o arreglo de 2 bytes
(cable azul), al cual lo debemos descomponer para obtener de forma individual los datos
recibidos.

2.1 Los datos recibidos pueden ser interpretados según la aplicación que el usuario realice.
Para esta demostración lo que se pretende es simular un voltímetro digital de 0 a 5V
usando la conversión analógica digital, y presentar los datos en una gráfica, y cada 10
segundos guardar un registro de estos datos en una tabla de Excel

2.2 Los bytes son recibidos en el mismo sentido en el que se enviaron desde el PIC, es

8
decir que, en el primer byte del buffer de salida del PIC se cargo el decimal 150, y en
segundo el número 300, LABVIEW recibe en el mismo orden . Como el programa del PIC
usa justificación a la izquierda para el ADC, ADRESH tiene los 8 bits más significativos de la
conversión, por lo que al byte alto se lo multiplica por 4 para tener 255*4=1020, y al byte
bajo se lo divide para 48 para tener un valor de 4 en lugar de 192 (valor máximo recibido
del byte 2). Al sumar estos dos resultados tenemos un valor de 0 a 1024, lo multiplicamos
por 5, y luego dividimos para 1000 y tenemos un voltímetro digital de 0 a 5,12 V.

2.3. El vector recibido tiene una representación Unsigined 8 (U8 - valor de 0 a 255), por lo
que primero se lo convierte a U16 para poder multiplicar el dato y más adelante se
transforma al dato en uno tipo double, para tener los decimales.

9
Nota: para realizar este programa se necesita tener instalado las librerías VISA de labVIEW.

Una vez que ya tengamos creados el programa para el PIC y el programa en LabVIEW
necesitaremos que el computador reconozca los datos que enviamos vía USB, para esto
necesitamos seguir varios pasos mostrados a continuación:

CONFIGURACION DEL PUERTO USB A UTILIZAR

Para configurar el puerto utilizaremos el Driver Wizard que vienen en labVIEW una vez
instalada la librería de VISA.

Todos estos pasos se deben hacer una vez ya esté conectado el circuito mediante el bus USB al
computador.

1. Damos clic en INICIO/TODOS LOS PROGRAMAS/National Instruments/VISA/Driver


Wizard.

10
2. Luego de haber realizado aparecerá la siguiente pantalla aquí escogeremos el tipo de
hardware que necesitamos, para nuestro caso damos clic en USB y luego en siguiente.

3. Luego nos aparece una pantalla donde nos pedirá el “Vendor ID” y el “Product ID”.

11
Para obtener estos valores necesitamos el programa USBview

Damos doble clic sobre el icono y aparece esta pantalla

12
Aquí saldrán todos los puertos que estemos utilizando o no, buscamos el puerto donde
diga device conected, el cual será el que tenga nuestros datos.

Al hacer esto al lado derecho de la pantalla aparecen varios valores.

13
Buscamos los que digan idVendor e idProduct

Estos valores 1781 y 07D0 son el Vendor ID y el Product ID respectivamente, los cuales
nos pedía el Driver Wizard.

4. Copiamos los valores de idProduct e idVendor que encontramos en el USBView en sus


respectivos casilleros y damos clic en siguiente

5. Aparece esta pantalla y damos clic en siguiente

14
6. Aparece el siguiente cuadro de dialogo y damos clic en OK.

7. Al hacer esto nos preguntara si queremos instalar los archivos generados, damos clic
en finalizar y ya hemos configurado nuestro bus USB.

15
8. Verificamos que todo este correcto ditigiendonos a INICIO/TODOS LOS
PROGRAMAS/National Instruments/Measurement & Automation

16
9. Aparece la siguiente pantalla

10. Aquí nos dirigimos a devices and interfaces para buscar nuestra interfaz generada

17
Como vemos aquí aparece usb “Juan” que es el nombre que le he puseto a la interfaz, este
nombre se cambia dando doble clic en usb”….” Y en el cuadro de texto donde dice VISA Alias
on My System escribimos el nombre que queramos darle a la interfaz en este caso Juan.

Esto nos servirá para encontrar la interfaz de una manera mas rápida en labview.

Una vez realizado todos estos pasos procedemos a abrir nuestro programa en labview

Ya en labview, nos dirigimos al diagrama de bloques

Y procedemos a colocar el nombre de nuestro interfaz, en lugar de OSCILOSCOPIO, que estaba


por defecto.

18
Al realizar esto ya tenemos direccionado de manera correcta nuestro bus de datos, y la
transmisión se podrá hacer de manera correcta, si no está bien direccionado, aparecerá un
mensaje de error en la pantalla.

Ahora si procedemos a ejecutar el programa, una vez hecho esto, variamos el potenciómetro y
se verá las variaciones de la señal en la pantalla.

19
20
Conclusiones:

• Al trabajar con conexión USB Una característica importante es que permite a los
dispositivos trabajar a velocidades mayores, en promedio a unos 12 Mbps, esto es más o
menos de 3 a 5 veces más rápido que un dispositivo de puerto paralelo y de 20 a 40 veces
más rápido que un dispositivo de puerto serial.
• Este proyecto utiliza conversión analógica digital la cual nos ayuda al enviar los datos vía
USB de manera más sencilla.
• Ya que el pic 18F2550 tiene una Interface USB 2.0 de alta velocidad (12Mbit/s) nos
permite transmitir los datos de una manera eficaz, casi sin perdida y así poder generar
una onda mas exacta mediante labview.
• El valor que se le da al oscilador es de vital importancia para el correcto funcionamiento
y comunicación con labVIEW.

Bibliografía:

• http://www.bilbaoelectronics.com/pic-modulo-usb.html
• http://proton.ucting.udg.mx/tutorial/
• http://www.ni.com/support/visa/vintro.pdf
• http://www.todoexpertos.com/categorias/ciencias-e-
ingenieria/respuestas/1070173/transmision-de-datos-por-puerto-usb

21

Potrebbero piacerti anche