Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Instrucciones de Instalacion PDF
Instrucciones de Instalacion PDF
ESCUELADEINGENIERA
MAESTRAENMECATRNICA
Transferenciayprocesamientodedatosaaltavelocidad,medianteelusodeMATLAB,elpuerto
USB2.0yPIC18F2455deMicrochip
PRESENTA:
ING.GABRIELJESSPOOLBALAM
PARALAMATERIA:
DISEOMECATRNICO
PROFESOR:
DR.ALEJOMOSSOVAZQUEZ
MRIDA,YUCATNA4DEJULIODE2009
Agradecimientos:
JUNIO2009
TransferenciadedatosentreMATLAB,elpuertoUSB2.0yPIC18F2455deMicrochip2/15
RESUMEN caracterizacincomopasoprevioaldiseoo
seleccindesucontrolador.
MATLAB ("matrix laboratory") es un
software de computacin y desarrollo de INTRODUCCIN
aplicaciones, diseado para llevar a cabo
proyectos que impliquen clculos Hoy en da, la miniaturizacin de
matemticos de nivel elevado y su componentes electrnicos, la disminucin
representacin grfica. MATLAB integra desuconsumodecorrienteyeltamaode
anlisis numrico, clculo matricial, proceso los semiconductores, permite la
de seal y visualizacin grfica en un construccin de circuitos ms complejos,
entorno tal que los problemas y sus inteligentes y eficientes. No ha sido la
solucionessonexpresadosdelmismomodo excepcin con el microcontrolador, ya que
enqueseescribiran,sinnecesidaddehacer ste se ha desarrollado notablemente, al
usodelaprogramacintradicional.MATLAB puntodehacermsgrandesuscapacidades
es capaz de manejar libreras y dlls de de comunicacin, memoria, circuitos de
diferentesdispositivosinstaladosenlaPC. apoyo adicionales (ADC, oscilador interno,
puertos, etc.). Dichos microcontroladores,
Microchip proporciona en su requieren de muy poco componentes de
pginaweblosdriversyarchivosnecesarios soporte externo para implementarse y sus
para establecer la comunicacin por puerto tecnologas se han perfeccionado, de tal
USB con la familia del PIC18F2455. A travs manera, que casi no fallan. Algunos
deellossepuedeefectuartransaccionesde fabricantes tal como Microchip, se
hasta 64 bytes por paquete cada preocupan en desarrollar las herramientas
milisegundo, por cada tnel abierto. El PIC parasuprogramacin,talescomolenguajes
es programado mediante PCWH Compiler de alto nivel para compilar el programa y
de CCS, versin 3.246. Los descriptores programadores econmicos para descargar
utilizados para la comunicacin USB estn el programa en el chip. Debido a stas
basados en los archivos que contiene el herramientas, ste chip se ha vuelto muy
propiocompilador. popular al grado que se proponen como
materiasacursarenlasescuelas.
Enestetrabajosemuestraque,con
estasherramientasymanipulandoelarchivo Porotrolado,yanobastacontenerun
mpusbapi.dll, se puede transferir datos a chip inteligente que funcione de manera
alta velocidad del PIC18F2455 a la PC de autnoma, ahora se requiere que trabajen
manera bidireccional, con la finalidad de enconjuntoconlaPCespecialmentedonde
procesarlos matemticamente y/o serequierenimportardatosdeeventosmuy
graficarlos.Unejemplodeestaaplicacinse rpidos como por ejemplo: El arranque de
muestra en este trabajo, y consiste en la unmotor(velocidadconrespectoaltiempo)
obtencin de curvas de arranque de que tiene una duracin aproximada de 1
motores de CD sin carga, a efectos de su dcima de segundo. Esto se puede lograr
coneldesarrollodeunsoftwarecomoVisual
TransferenciadedatosentreMATLAB,elpuertoUSB2.0yPIC18F2455deMicrochip3/15
SlopuedehaberunHostenelbusque Fig.3MltiplevelocidadenunBUS
maneja a todos los componentes
conectadoscomoseindicaenlafigura1.
TransferenciadedatosentreMATLAB,elpuertoUSB2.0yPIC18F2455deMicrochip4/15
Interrupt Data Transfers: Used for timely Dentro de los protocolos hay que
but reliable delivery of data, for example, especificareltipodetransferenciadedatos
characters or coordinates with human ausar(endpoints),VID&PID,nombreyserie
perceptible echo or feedback response del producto que se conecta para que el
characteristics. host identifique al driver y pueda instalarlo
conelfindequeeldispositivopuedaformar
Isochronous Data Transfers: Occupy a las pipes tneles para su comunicacin
prenegotiated amount of USB bandwidth conelhost(verfigura5).
with a prenegotiated delivery latency. (Also
calledstreamingrealtimetransfers).
TransferenciadedatosentreMATLAB,elpuertoUSB2.0yPIC18F2455deMicrochip5/15
TransferenciadedatosentreMATLAB,elpuertoUSB2.0yPIC18F2455deMicrochip6/15
pEP: Input: String con el nmero del Como tercer procedimiento, se lee el dato
Endpoint que se va a abrir. El formato es aplicando el nmero de pipe asignado por
\\MCHP_EPz o \MCHP_EPz mediodelainstruccin:(*MPUSBRead)
dependiendodellenguajedeprogramacin.
Donde z es el nmero del Endpoint en (HANDLEhandle, //Input
decimal.Ejemplo:
\\MCHP_EP1 o \MCHP_EP1 Este PVOIDpData, //Output
argumentopuedeserNULL(nulo)paracrear
lazos con Endpoints de funciones no DWORDdwLen, //Input
especficas. Las funciones especficas que
utilizan ste parmetro son: MPUSBRead, PDWORDpLength, //Output
MPUSBWrite,MPUSBReadInt.
DWORDdwMilliseconds); //Input
Nota: Para utilizar MPUSBReadInt(), el
formato de pEP tiene que ser
\\MCHP_EPz_ASYNC.Estaopcinsloest handle:Input:IdentificalapipedelEndpoint
disponibleparaunEndpointinterrupcinIN. que se va a leer. La pipe unida tiene que
Lapipededatosabiertacon_ASYNCdebe crearseconelatributodeaccesoMP_READ.
almacenar datos con el intervalo En conclusin, handle es el nmero de
especificado en el Endpoint descriptor con pipe que nos arroj la instruccin anterior
un mximo de 100 recepciones. Cualquier condwDir=1.
otro dato recibido despus de llenar el
bufferdeldriverseignora.Laaplicacindel pData:Output:Punteroalbufferquerecibe
usuario tiene que llamar MPUSBReadInt() a eldatoledodelapipe.Elformatodeldato
menudosinsuperarelmximode100. es un arreglo de N bytes, donde N es el
nmerodebytesquemanejaeldeviceen
dwDir:EspecificaladireccindelEndpoint: elarregloqueenvaalaPC,generalmentese
MP_READ: para MPUSBRead y declaraaliniciodelprogramaenelPIC.
MPUSBReadInt
MP_Write:paraMPUSBWrite dwLen:Input:Especificaelnmerodebytes
queseesperaleerdelapipe.
Se abre un pipe a la vez (hay que usar dos
pLenght: Output: Puntero al nmero de
vecesstainstruccin),condwDir=1seabre
bytes ledos. MPUSBRead pone este valor a
la pipe para leer y con dwDir=0 se abre la cero antes de cualquier lectura o de
pipeparaescribiralPIC,elresultadoquenos chequearunerror.
arrojastainstruccineselnmerodepipe
quenosasignaelsistemaoperativo. dwMilliseconds:Input:Especificaelintervalo
de timeout en milisegundos. La funcin
dwReserved: No asignado por el momento, vuelve si transcurre el intervalo aunque no
elvalorporomisinescero. se complete la operacin. Si
dwMilliseconds=0,lafuncincompruebalos
datosdelapipeyvuelveinmediatamente.Si
El formato tpico de la instruccin es: dwMilliseconds es infinito, el intervalo de
MPUSBOpen(0,vid_pid,out_pipe,dwDir,0) timeoutnuncatermina.
TransferenciadedatosentreMATLAB,elpuertoUSB2.0yPIC18F2455deMicrochip7/15
MPUSBGetDLLVersion()
pLenght: Output: Puntero que proporciona
elnmerodebytesqueseescribenalllamar
MPUSBREADINT(HANDLE, PDATA, DWLEN,
estafuncin.MPUSBWriteponeestevalora
PLENGTH,DWMILLISECONDS)
cero antes de cualquier lectura o de
chequearunerror.
handle:Input:IdentificalapipedelEndpoint
TransferenciadedatosentreMATLAB,elpuertoUSB2.0yPIC18F2455deMicrochip8/15
TransferenciadedatosentreMATLAB,elpuertoUSB2.0yPIC18F2455deMicrochip9/15
TransferenciadedatosentreMATLAB,elpuertoUSB2.0yPIC18F2455deMicrochip10/15
TransferenciadedatosentreMATLAB,elpuertoUSB2.0yPIC18F2455deMicrochip11/15
ParapoderiniciarelenlaceconelPICes
necesario que se haya concluido
TransferenciadedatosentreMATLAB,elpuertoUSB2.0yPIC18F2455deMicrochip12/15
Formato:
[aa,bb,data_in,dd] = calllib('libreria',
'MPUSBRead',my_in_pipe, data_in,
[conectado]=calllib('libreria',
uint8(64),uint8(64),uint8(10));
'MPUSBGetDeviceCount',vid_pid_norm)
Dedonde:
Dedonde:
TransferenciadedatosentreMATLAB,elpuertoUSB2.0yPIC18F2455deMicrochip13/15
data_in=eye(1,64,'uint8'); Encasodeperderselacomunicacin
conelPIC( encasosdondeelprogramaen
g.Escribalosdatosdelapipe(solamentesi MATLAB genere errores por cuestiones
lapipeestabierta)Formato:: ajenas a la comunicacin) desinstale del
dispositivo Microchip Custom USB Device
calllib('libreria', 'MPUSBWrite',
desde el administrador de dispositivos,
my_out_pipe, data_out, uint8(64),
desconecteelPICdelpuertoUSB,descargue
uint8(64),uint8(10));
lalibreradememoriadesdeelMATLABcon
Dedonde: unloadlibrary librera en la lnea de
comandos de MATLAB y resetee el PIC.
data_out=eye(1,64,'uint8'); Conecte de nuevo el PIC al puerto USB de
su computadora y con eso es suficiente para
h.Cierrela(s)pipe(s)abierta(s),cadavezque restaurar las comunicaciones entre MATLAB
finalice el programa, ya que si quedan y el PIC.
abiertaswindowsgeneraerroresysepierde
3.Pruebasfinalesycorrecciones.
lacomunicacin.
Antes de compilar el programa y
Formato:
grabarlo en el PIC es necesario asegurarse
calllib('libreria', 'MPUSBClose', de que antes de abrir el archivo a compilar
presione el botn inicio del mismo
my_in_pipe);
compilador (ubicado en la parte superior
calllib('libreria', 'MPUSBClose', izquierda) Close all . De no hacer esto
esposiblequesecompileelarchivoanterior
my_out_pipe);
conelqueUdhayatrabajado.
IMPORTANTE: ParaelenlaceconlaPCporUSBesmuy
importante conectar el capacitor (C4) de
Al terminar el programa descargue
0.1uFcomoseindicaeneldiagrama,yaque,
la librera de memoria, ya que no se puede
si se omite generar un error al momento
cargarmsdeunavez.
del enlace. Tambin es muy importante
Formato: habilitar el fusible VREGEN para que Vusb
seaactivado.
unloadlibrarylibrera;
CuidardenoinvertirlasterminalesDy
D+ del conector USB a la hora de
Una vez enlazado con el PIC, los implementarelHardware.
datos pueden fluir las veces que sea
necesario de un sentido a otro y Es importante considerar la funcin del
manipularloscomosedesee,yaquesetiene PLLdelPICyaquedeacuerdoalvalordela
elcompletocontroldelsoftwaredelPIC(por frecuenciadelcristaldependeelvalordela
partedelCompiladorC)yenlaPC(porparte multiplicacindelafrecuenciadelrelojpara
deMATLAB). generarlos48MhznecesariosparaelUSB.
TransferenciadedatosentreMATLAB,elpuertoUSB2.0yPIC18F2455deMicrochip14/15
"C:\MICROCHIPSOLUTIONS\USB
TOOLS\MCHPUSBCUSTOM
DRIVER\MCHPUSBDRIVER\MCHPUSB
DRIVERRELEASENOTES.HTM"
BIBLIOGRAFA
http://www.usb.org/developers/docs/
http://slalen.iespana.es/programacion/dato
s/MPUSBApi.pdf
www.google.com.mxbsquedaPICUSB.
http://www.hobbypic.com/
http://www.todopic.com.ar/foros/index.php
?topic=13418.0;do=Bookmark
TransferenciadedatosentreMATLAB,elpuertoUSB2.0yPIC18F2455deMicrochip15/15
5 4 3 2 1
SALIDAS
+5V
D D
+5V
D1 D2 D3 D4 D5 D6 D7 D8
R1 R2 R1 R2 R2 R2
10K 10K 10K 10K 10K 10K C5
0.1uF
20
R4 R5 R4 R5 R4 R5 R4 R5
2 150 150 150 150 150 150 150 150
VDD
RA0 RA0
RA1 3 RA1
RA2 4 RA2
RA3 5 RA3
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7
RA4 6 RA4/T0CKI/C1OUT/RCV
RA5 7 RA5/SS RC6/TX/CK 17
RC7/RX/DT/SDO 18
+5V R6 R7 11
10K 100 RC0/T1OSO/T13CKI
C 1 13 Entrada del C
MCLR/VPP/RE3 RC2
cable USB
RB0 21 RB0/INT RC1 12
+5V S1 22 U2 _
RB1 RB1
SW 23 PIC18F2455
J4 RB2 RB2
RB3 24 J1
RB3
1 RB4 25 RB4 1 J1-USB
USB
OSC2/CLKO/RA6
2 RB5 26 RB5 RC4/D-/VM 15 2
27 16 1
3
28
RB6 RC5/D+/VP 3 D+ + + 2 GND
4 RB7 4 3 + + 4
OSC1/CLKI
14 D-
5 RB6 VUSB C4 Vista Inferior
RB7
0.1uF
GND
GND
ICSP
10
19
9
B
8 B
X1
12 MHz
RA0
RA1
RA2
RA3
RA4
RA5
J3 C7 C8
+5V +12V 22pF 22pF
POWER SUPPLY
S1 S1 S1 S1 S1 S1
4 SW SW SW SW SW SW
3
2
1
C2
2200uF C1 ENTRADAS
1000uF