Sei sulla pagina 1di 19

UNIVERSIDAD MODELO

ESCUELA DE INGENIERA MAESTRA EN MECATRNICA


Integracin de PIC18F2455 de Microchip con LabVIEW 8.2 de National Instruments con MPUSBAPI.DLL

PRESENTAN: ING.JULIOALEJANDROLUGOJIMNEZ PARALAMATERIA: SENSORESYACTUADORES PROFESOR: MC.PEDRONAJERAGARCIA MRIDA,YUCATNA28DEJUNIODE2008 ING.GABRIELJESSPOOLBALAM

Agradecimientos: Al Centro de Investigacin cientfica de Yucatn A. C. (www.cicy.mx ) sobre todo al departamento de Instrumentacin representado por Ing. Leonardo Gus Peltinovich por su apoyo para la realizacin destetrabajo. JUNIO2008

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments2/18

RESUMEN El diseo de un sistema de monitoreo de variables como presin, velocidad, temperatura, etc., y/o accin de control sobre el mundo fsico requiere tradicionalmente de una tarjeta de adquisicin de datos que por lo general es limitada en hardware, orientada a la interaccinytrabajoexclusivoconproductos del fabricante; un software que administre los datos en la PC para el monitoreo local y remoto, control de decisiones, graficar, guardar datos en disco, etc. y un conocimiento amplio sobre el software de desarrollo, sin contar la gran cantidad de tiempoainvertirenlaimplementacindela solucinmsapropiada.Algunosfabricantes ofrecen soluciones a medias: poderoso hardware con un software pobre que no cumple con nuestro requerimiento hardwarebsicoalqueserequierenagregar mdulos adicionales para adaptarlo a nuestra necesidad y con software muy completo. En ste desarrollo se fusiona lo mejor de ambos mundos: Un microcontrolador con puerto USB de Microchip y un software de desarrollo LabVIEWdeNacionalInstruments. INTRODUCCIN Hoy en da, la miniaturizacin de componenteselectrnicos,ladisminucinde suconsumo decorriente yeltamao delos semiconductores,permitelaconstruccinde circuitos ms complejos, inteligentes y eficientes. No ha sido la excepcin con el microcontrolador, ya que ste se ha desarrollado notablemente, al punto de hacer ms grande sus capacidades de

comunicacin, memoria, circuitos de apoyo adicionales (ADC, oscilador interno, puertos, etc.). Dichos microcontroladores, requieren de muy poco componentes de soporte externo para implementarse y sus tecnologas se han perfeccionado, de tal manera, que casi no fallan. Algunos fabricantes tal como Microchip, se preocupan en desarrollar las herramientas para su programacin, tales como lenguajes de alto nivel para compilar el programa y programadores econmicos para descargar el programa en el chip. Debido a stas herramientas, ste chip se ha vuelto muy popular al grado que se proponen como materiasacursarenlasescuelas. Porotrolado,yanobastacontenerun chip inteligente que funcione de manera autnoma, ahora se requiere que trabajen enconjuntoconlaPCparaelmonitoreolocal y remoto (internet o intranet), control de decisiones, graficar, guardar datos en disco, etc.Estosepuedelograrconeldesarrollode unsoftwarecomoVisualBasic,VisualC,C++, cualquier otro paquete de preferencia grfico para hacer ms fcil la interfaz de usuario. Desafortunadamente, el tiempo para aprender y dominar estos paquetes es muy largo. Por lo que, National Instruments desarroll un paquete para la implementacin de una interfaz con conectividad a sus tarjetas de adquisicin (que vende por separado). Existe una gran variedad de tarjetas y su costo vara de acuerdo a sus capacidades. Conforme el software se fue volviendo popular muchos fabricantes de hardware desarrollaron tarjetas compatibles con ste software. El softwarefueevolucionandoalgradodeque

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments3/18

se puede conectar casi con cualquier dispositivo, y su manejo es muy fcil e incluyeunaayudaenlnea. ANTECEDENTES 1.LAARQUITECTURADELPUERTOUSB ApesardequeelpuertoUSBnosofrece ms ventajas que sus predecesores, su complejidad paraimplementarloesenorme, ya que su funcionamiento est basado en protocolosdesoftware. SlopuedehaberunHostenelbusque manejaatodosloscomponentesconectados comoseindicaenlafigura1. Fig.1TopologadelBUS Elhubesunelementoplugandplayen la estructura USB (Figura 2) y es un concentrador al cual, se le pueden agregar msdispositivosUSB,incluyendootrohub. La velocidad de transferencia depende de la velocidad del HUB que se est utilizando. Ver figura 3. Las velocidades tpicasson:480Mb/senhighspeed,12Mb/s fullspeedy1.5Mb/senLowspeed.

Fig.2HUBUSB Fig.3MltiplevelocidadenunBUS Elcablequetpicamenteesusadonoes largo,debidoalavelocidaddetransferencia ytienelaestructuramostradaenlafigura4. Sus terminales son del tipo diferencial y constade4hilos.

Fig.4CableUSB La arquitectura USB comprende cuatro tiposbsicosdetransferenciadedatos: Control Transfers: Es usado para configurarundispositivoalmomentodeque se conecta. Los datos entregados pueden perderse. Bulk Data Transfers: Entrega el dato por volumen,elanchodebandapuedevariar.Es usado en escner cmaras. La rfaga de datosessecuencial. Interrupt Data Transfers: Used for timely but reliable delivery of data, for example, characters or coordinates with human

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments4/18

perceptible echo or feedback response characteristics. Isochronous Data Transfers: Occupy a prenegotiated amount of USB bandwidth with a prenegotiated delivery latency. (Also calledstreamingrealtimetransfers). AunqueelPICnopuedefuncionarcomo host, ya que se requiere de una gran capacidad de manejo de datos para administrar a cada componente del BUS, es suficientequesepuedaadministrarcomoun device, para esto se requiere memorizarle los protocolos necesarios paraenlazarsealhost. Estos protocolos se le llaman descriptores y sirve para informarle al host todo lo necesario para que pueda administrarlo. Recordemos que los PICs de la serie 18Fxx5x tienen tres modos de funcionamiento: 1. USB Human Interface Device (HID): Velocidad Baja, no requieredriver. USB Communication Device Class (CDC): Velocidad Media, requiere driver. Crea un Puerto SerieVirtual. USB Custom Driver: Velocidad Alta, requiere driver. Este es el modo que usa WinUSB (para windows vista) y el mpusbapi (windows2000yposterior).

usar (endpoints), VID&PID, nombre y serie delproductoqueseconectaparaqueelhost identifiquealdriverypuedainstalarloconel fin de que el dispositivo pueda formar las pipes tneles para su comunicacin con elhost(verfigura5). Fig5.FlujodecomunicacinUSB 2.LAMPUSBAPI.DLLDEMICROCHIP Para una mayor facilidad de desarrollo de aplicaciones basadas en el bus USB, Microchiphacreadounarchivodllenelque proporciona las funciones de acceso al puerto USB con un microcontrolador de la familia PIC18Fxx5x. Para un funcionamiento correcto,senecesitaeldrivermchpusb.sys. Este driver sirve tanto para Visual Basic comoparaVisualC,entreotros.

2.

3.

Dentro de los protocolos hay que especificareltipodetransferenciadedatosa

Revisando ejemplos, y la ayuda que traeincluidasobreelmanejodeladllse verificaqueelmododeabrirlapipeesel siguiente: Primero se identifica si hay un dispositivo con el nombre VID&PID conectadoalaPCconlainstruccin: (*MPUSBGetDeviceCount)(PCHAR pVID_PID) LavariablepVID&PID,esunaentradade cadena de caracteres que da como resultado el nmero de dispositivos

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments5/18

conectados al Host, que tienen asignado elmismopVID&PID. Seguidamente con la instruccin (*MPUSBOpen)
(DWORDinstance,//Input PCHARpVID_PID,//Input PCHARpEP,//Input DWORDdwDir,//Input DWORDdwReserved);//Input<FutureUse> Esta instruccin devuelve el acceso al pipe delEndpointconelVID_PIDasignado.Todas las pipes se abren con el atributo FILE_FLAG_OVERLAPPED contenida en la DLL, sto permite que MPUSBRead, MPUSBWrite y MPUSBReadInt tengan un valordetimeout. Nota:elvalordeltimeoutnotienesentido enunapipesncrona. instance: Input: Un nmero de dispositivo para abrir. Normalmente, se utiliza primero la llamada de MPUSBGetDeviceCount para sabercuantosdispositivoshay. Esimportanteentenderqueeldriver lo comparten distintos dispositivos. El nmero devuelto por el MPUSBGetDeviceCounttienequeserigualo menor que el nmero de todos los dispositivos actualmente conectados y usando el driver genrico. Ejemplo: Si hay tres dispositivos con los siguientes PID_VID conectados: Dispositivotipo0,VID0x04d8,PID0x0001 Dispositivotipo1,VID0x04d8,PID0x0002 Dispositivotipo2,VID0x04d8,PID0x0003 y el dispositivo que nos interesa tiene VID=0x04d8 y PID=0x0002 el

MPUSBGetDeviceCount devolver un 1. Al llamar la funcin tiene que haber un mecanismo que intente llamar MPUSOpen() desde 0 hasta MAX_NUM_MPUSB_DEV. Se tiene que contar el nmero de llamadas exitosas. Cuando este nmero sea igual al nmero devuelto por MPUSBGetDeviceCount, hay que dejar de hacer las llamadas porque no puede haber msdispositivosconelmismoVID_PID. pVID_PID: Input: String que contiene el PID&VID del dispositivo objetivo. El formato es vid_xxxx&pid_yyyy. Donde xxxx es el valordelVIDyelyyyyeldelPID,losdosen hexadecimal.Ejemplo:Siundispositivotiene unVID=0x04d8yunPID=0x000b,elstringde entradaes:vid_0x04d8&pid_0x000b. pEP: Input: String con el nmero del Endpoint que se va a abrir. El formato es \\MCHP_EPzo\MCHP_EPzdependiendo dellenguajedeprogramacin.Dondezesel nmerodelEndpointendecimal.Ejemplo: \\MCHP_EP1 o \MCHP_EP1 Este argumentopuedeserNULL(nulo)paracrear lazos con Endpoints de funciones no especficas. Las funciones especficas que utilizan ste parmetro son: MPUSBRead, MPUSBWrite,MPUSBReadInt. Nota: Para utilizar MPUSBReadInt(), el formato de pEP tiene que ser \\MCHP_EPz_ASYNC.Estaopcinsloest disponibleparaunEndpointinterrupcinIN. Lapipededatosabiertacon_ASYNCdebe almacenar datos con el intervalo especificado en el Endpoint descriptor con un mximo de 100 recepciones. Cualquier otrodatorecibidodespusdellenarelbuffer deldriverseignora.Laaplicacindelusuario tienequellamarMPUSBReadInt()a menudo sinsuperarelmximode100. dwDir:EspecificaladireccindelEndpoint:

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments6/18

MP_READ: para MPUSBRead y MPUSBReadInt MP_Write:paraMPUSBWrite Se abre un pipe a la vez (hay que usar dos vecesstainstruccin),condwDir=1seabre la pipe para leer y con dwDir=0 se abre la pipeparaescribiralPIC,elresultadoquenos arrojastainstruccineselnmerodepipe quenosasignaelsistemaoperativo. dwReserved: No asignado por el momento, elvalorporomisinescero. El formato tpico de la instruccin es: MPUSBOpen(0,vid_pid,out_pipe,dwDir,0) Como tercer procedimiento, se lee el dato aplicando el nmero de pipe asignado por mediodelainstruccin:(*MPUSBRead) (HANDLEhandle, PVOIDpData, DWORDdwLen, PDWORDpLength, //Input //Output //Input //Output //Input

generalmente se declara al inicio del programaenelPIC. dwLen: Input: Especifica el nmero de bytesqueseesperaleerdelapipe. pLenght: Output: Puntero al nmero de bytesledos.MPUSBReadponeestevalora cero antes de cualquier lectura o de chequearunerror. dwMilliseconds: Input: Especifica el intervalo de timeout en milisegundos. La funcin vuelve si transcurre el intervalo aunque no se complete la operacin. Si dwMilliseconds=0, la funcin comprueba los datos de la pipe y vuelve inmediatamente. Si dwMilliseconds es infinito, el intervalo de timeout nunca termina. El formato tpico de la instruccin es: MPUSBRead(myInPipe, VarPtr(s(0)), DatosDeseados,Datos,1000)
Para enviar los datos al PIC se hace de la misma manera con la instruccin: (*MPUSBWrite) (HANDLEhandle, PVOIDpData, DWORDdwLen, PDWORDpLength, //Input //Input //Input //Output //Input

DWORDdwMilliseconds);

handle: Input: Identifica la pipe del Endpoint que se va a leer. La pipe unida tienequecrearseconelatributodeacceso MP_READ. En conclusin, handle es el nmero de pipe que nos arroj la instruccinanteriorcondwDir=1. pData: Output: Puntero al buffer que recibe el dato ledo de la pipe. El formato deldatoesunarreglodeNbytes,dondeN es el nmero de bytes que maneja el device en el arreglo que enva a la PC,

DWORDdwMilliseconds);

handle: Input: Identifica la pipe del Endpointquesevaaescribir.Lapipeunida tienequecrearseconelatributodeacceso MP_WRITE. Enconclusin,handleesel

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments7/18

nmero de pipe que nos arroj la instruccinanteriorcondwDir=0. pData: Input: Puntero al buffer que contienelosdatosquesevanaescribiren la pipe. El formato del dato es un arreglo deNbytes,dondeNeselnmerodebytes que maneja el device en el arreglo que recibedelaPC,generalmentesedeclaraal iniciodelprogramaenelPIC. dwLen: Input: Especifica el nmero de bytesquesevanaescribirenlapipe. pLenght:Output:Punteroqueproporciona el nmero de bytes que se escriben al llamar esta funcin. MPUSBWrite pone estevaloraceroantesdecualquierlectura odechequearunerror. dwMilliseconds: Input: Especifica el intervalo de timeout en milisegundos. La funcin vuelve si transcurre el intervalo aunque no se complete la operacin. Si dwMilliseconds=0, la funcin comprueba los datos de la pipe y vuelve inmediatamente. Si dwMilliseconds es infinito, el intervalo de timeout nunca termina.
El formato tpico de la instruccin es: MPUSBWrite(myOutPipe, VarPtr(SendData(0)), bytes, VarPtr(bytes), 1000) Por ultimo, se requiere cerrar las pipes, porque despus de usarlos caducan, yanoesposibleleer/escribirdenuevo.Para cerrarlos basta ejecutar la instruccin: (*MPUSBClose)(HANDLE handle); de donde handle: Input: Identifica la pipe del Endpointquesevaacerrar.

El formato tpico de la instruccin es:


MPUSBClose(myOutPipe) Existen otras dos instrucciones que no se implementaron en ste desarrollo, pero es necesarioconocerlos,stasson: MPUSBGETDLLVERSION(VOID) LeeelnivelderevisindelMPUSAPI.dll.Esta funcindevuelvelaversindelcdigodela dll en formato hexadecimal de 32bits, no realizanadaconelpuertoUSB. El formato tpico de la instruccin es: MPUSBGetDLLVersion() MPUSBREADINT(HANDLE, PDATA, DWLEN, PLENGTH,DWMILLISECONDS) handle:Input:IdentificalapipedelEndpoint que se va a leer. La pipe unida tiene que crearseconelatributodeaccesoMP_READ. pData:Output:Punteroalbufferquerecibe eldatoledodelapipe. dwLen:Input:Especificaelnmerodebytes quehayqueleerdelapipe. pLenght: Output: Puntero al nmero de bytes ledos. MPUSBRead pone este valor a cero antes de cualquier lectura o de chequearunerror. dwMilliseconds:Input:Especificaelintervalo de timeout en milisegundos. La funcin vuelvesitranscurreelintervaloaunquenose complete la operacin. Si dwMilliseconds=0, la funcin comprueba los datos de la pipe y vuelveinmediatamente.SidwMillisecondses infinito, el intervalo de timeout nunca termina.

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments8/18

El formato tpico de la instruccin es: MPUSBReadInt(myOutPipe, VarPtr(SendData(0)), bytes, VarPtr(bytes), 1000) TIPOSDETRANSFERENCIASSOPORTADOPOR ESTASINSTRUCCIONES Enesteapartadoserecomiendaquefuncin utilizar dependiendo del tipo de transferencia. Tipo Funcin Aplicabletimeout? InterruptINMPUSRead,MPUSReadIntsi InterruptOUTMPUSBWrite si BulkINMPUSBRead si BulkOUTMPUSWrite si IsochronousINMPUSBRead no IsochronousOUTMPUSBWrite no Interrupt:tipointerrupcin Isochronous:tiposncrono Nota: Input y output se refiere a los parmetros designados en las llamadas a estas funciones, que son lo opuesto a los sentidos comunes desde la perspectiva de unaaplicacinhaciendollamadas. DECLARACINDECONSTANTESYVARIABLES Aqu aparecen las constantes y variables que el fabricante recomienda usar. Todas son optativas, dejando la eleccin al programador. Tambin, se comentan las pequeas variaciones que existen al declarar estas variables en los distintos lenguajes.
MPUS_FAIL=0 MPUSB_SUCCESS=1 MP_WRITE=0 MP_READ=1 MAX_NUM_MPUSB_DEV=127 vid_pid=vid_04d8&pid_0011

EnVisualBasic:
out_pipe=\MCHP_EPx in_pipe=\MCHP_EPy

EnCyDelphi:
out_pipe=\\MCHP_EPx in_pipe=\\MCHP_EPy

SiendoxeynmerosdelEndpointporlos quesevanarealizarlastransmisiones.
Estadllsellamadeacuerdoalaconvencin dellenguajeC,NOfuncionasiesllamadacon elformatodeSTDLIB. OBJETIVO El objetivo principal del presente trabajo es integrar el software de LabVIEW con el PIC18F2455 de Microchip con el fin de disear una tarjeta de adquisicin de datos ajustada a la necesidad personalizada de cadadesarrollo. OBJETIVOSPARTICULARES 1. EnlacealaPCmedianteUSB. 2. EnlacedeMATLABalPIC. 3. Pruebasfinalesycorrecciones. 1. ENLACEALAPCMEDIANTEUSB. Para lograr el enlace a USB se utilizaron las funciones USB, incorporadas en el lenguaje C del programa CCS para PICS, dichas funciones estn preparadas para que elmicrocontroladorseareconocidocomoun dispositivo personalizado usando los descriptores que incluye el mismo lenguaje, seestablecilacantidaddedatosa64bytes (8bitsporbyte)deenvoyrecepcinhaciala PC, en la PC se descarga el driver que nos proporcionaMicrochipensupginaweb.Por parte del Hardware, el mismo compilador

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments9/18

trae en la ayuda un diagrama esquemtico para conectar al PIC dispositivos adicionales comoteclado,displaygenricosdedoslneas y grficos, el puerto serie, usb, I2C, etc. Si tiene dudas sobre la descarga del driver consulte el apartado 3. Pruebas finales y correccionesenstedocumento. ConfigurandoelHardware 1. ConecteelPICcomosemuestraenel diagrama esquemtico al final del documento. 2. Antes de compilar el cdigo de programa<<daq.c>>adjuntoenste archivo comprimido con PCWH Compiler de CCS versin 3.246 posterior, primero escoja el PIC que utilice PIC18F2455/2550/4455/4550 en la seccin #include al inicio del programa. 3. Verifique que la configuracin del PLL corresponda a la Frecuencia del Xtalqueutiliza.Ejemplo: PLL1paraXtalde4Mhz PLL2paraXtalde8Mhz PLL3paraXtalde12Mhz PLL4paraXtalde20Mhz,etc. 4. Abra el archivo C:\Archivos de programa\PICC\Drivers\usb_desc_sc ope.h ( donde se instal el compilador de CCS ) que es el descriptordelUSBubicadoensuPC,

avance hasta la seccin start device descriptors(aproxenlalinea132)y reemplace los valores del vendor id, el product id y el device release number como sigue ( puede copiar lastreslneassiguienteypegarenel archivo del descriptor <<usb_desc_scope.h>>): 0xD8,0x04, //vendor id (0x04D8 is Microchip) 0x0B,0x00,//productid 0x01,0x00,//devicereleasenumber 5. Compileelprogramaygrbeloenel PIC. NOTA IMPORTANTE: De no completar stospasoslaPCNOdetectaralPIC ConfigurandoelSoftware 1. LaDLLqueproporcionaMicrochipse puededescargardesdesusitioweb. (www.microchip.com)Asegresede obtener la versin ms actual. En la direccinwebquesemencionaenla bibliografasedescargaeldriver(link deaccesodirecto),encasodehaber caducado busque en la seccin Design Aplication Design Center Wired Conectivity USB Software/Tools << MCHPFSUSB Framework v2.4 >> simplemente teclee usb software/tools en la ventanitadebsquedaydleunclic en el botn site search,

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments10/18

generalmente el acceso a la pgina quedaenlosprimerosresultadosde la bsqueda, el cual, al darle click lleva directamente al driver. En el mismopaqueteincluyeejemplosque incluyen el programa fuente para la compresindesuuso. 2. Ejecute el driver descargado en el paso anterior e instale en la direccin que trae ya predeterminada.Esteejecutabletrae muchos ejemplos de aplicacin, entre ellos trae el driver que queda ubicadoen: "C:\MICROCHIPSOLUTIONS\USB TOOLS\MCHPUSBCUSTOM DRIVER\MCHPUSBDRIVER\ RELEASE\" 3. Instale el hardware a la PC de manera similar al que se instala un dispositivo USB que adquiere en el mercado: conecte al dispositivo a la PC, en cuanto le solicite los driver, slo proporcione la direccin donde fue descomprimido el driver (la misma direccin del paso anterior). Si todo es correcto debemos de observar en el administrador de dispositivos un nuevo hardware que seagregtalcomosemuestraenla figura 6. NOTA: Si Ud. Olvida no sustituye correctamente en el descriptor las 3 lneas que se comentanenelcdigodelprograma, el compilador CCS compilar correctamente pero al conectarse el PIC en la PC, ste no reconocer el driver.

Fig.6InstalacindelPICenlaPC Fig. 7 En propiedades del PIC instalado enlaPCseobservaelnmerodePID&VID

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments11/18

4. En propiedades del dispositivo instalado se puede observar el nmeroPID&VIDqueseconfiguren el PIC tal como se muestra en la figura7. ComentariosAdicionales Todo esto se desarroll basndose en ejemplosqueelcompiladortraeincluidosen la carpeta de examples. Cabe aclarar que los diseos en USB con PIC da a da se van incrementando. Slo basta investigar un poco en la red para ver los resultados (Consultelabibliografadestedocumento). ElcdigodelprogramadelPICseencuentra al final del documento con sus respectivos comentarios. 2. ENLACE DEL LABVIEW AL PIC PARA ELCONTROLYMONITOREO. ParapoderiniciarelenlaceconelPICes necesario que se haya concluido satisfactoriamentelainstalacindelpaquete de drivers de Microchip. En el mismo paquete que se descarga de la red obtenemos instrucciones y ejemplos en C++ quemuestrancomomanipulareldriverylos parmetros requeridos para aplicarlo. Sin embargo, an no es suficiente la informacin, porque la dificultad est en identificar el tipo de variable que acepta cada software de desarrollo y que tambin seaaceptadaporlaDLL.Porloquedenuevo sesugiereconsultarlasnotasdeaplicaciones de Microchip y ejemplos publicados en la web(concualquiersoftwarededesarrollo). Para hacer la conexin con LabVIEW simplemente se tradujeron las instrucciones al lenguaje grfico y se acondicionaronlasvariablesparaquelaDLL puedareconocerlo.

Por parte de LabVIEW es necesario conocer qufuncinesmsfcildeimplementar: Existentresmtodos: a. Hacer un ejecutable y llamarlo con la funcinsystemexecvi b.ElaborarunprogramaenCycargarloenla instruccinCodeInterfaceNode c. Manipular directamente la dll con la instruccinCallLibraryFunctionNode Los tres mtodos nos ofrecen ventajas de acuerdo al nivel de lenguaje de programacinquesetenga.Enlostrescasos se manipula la misma librera. En este desarrollo se utiliz el tercer mtodo parar manipularlalibreradeunamaneradirectay sinintermediarios. Para la implementacin de los mtodos anteriores el LabVIEW 8.2 ofrece una ayuda enlnea,lacualpermitesaberalinstantequ es lo que se requiere para la interconexin de los mdulos. Entre las ventajas que nos ofrece el labVIEW podemos mencionar: el ambiente grfico muy amigable, se puede mostrar mensajes, graficar los datos obtenidos,guardarlosenunarchivo,habilitar un indicador, mover un detector de nivel, etc., con el fin de visualizar la ocurrencia de loseventos. Para iniciar con la implementacin del cdigo, primero inicie el programa de LabVIEW, escoja la opcin blank VI y en la barra de mens dle un click al men de window Showblockdiagram. Siguiendo los pasos descritos en la seccindeantecedentesdestedocumento,

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments12/18

las instrucciones que se requieren implementar tienen la siguiente secuencia y formatoenLabVIEWson: a. Identificar el nmero de dispositivos conectados con el PID&VID y ubicar el que corresponde al hardware de su desarrollo. Formato: long_MPUSBGetDeviceCount(CStrvid_pid) Dedonde: vid_pid=vid_04d8&pid_000b Para iniciar la programacin en LabVIEWserequiereestarenlaventanadel blockdiagramdeLabVIEWpresioneelbotn derecho del mouse y en el men que sale a continuacin presione los siguientes submens connectivity libraries & executables y dle un click a Call Library Function Node y se mostrar un pequeo bloquecomosemuestraenlafigura8.Dle doble clic en la parte amarilla y saldr un men de configuracin como se muestra en lafigura9.Presionelacarpetayproporcione la direccin donde se instal la dll de Microchip (Si Ud lo instal en la direccin sugerida anteriormente queda en C:\Microchip Solutions\USB Tools\MCHPUSB Custom Driver\Mpusbapi\Dll\Borland_C e inmediatamentecargarladll.Alpresionarla flecha de men en el campo de Function Name (que apunta hacia abajo) podr observar TODAS las funciones que la dll admite, solamente tiene que anexar las variablesyacondicionareltipodeentrada. Recuerdequesevaaimplementarla primera instruccin MPUSBGetDeviceCount

el cual nos proporciona como resultado el nmero de dispositivos conectados a la PC con el PID&VID que se va a llamar, en ste caso el PID&VID que se quiere llamar es vid_04d8&pid_000b, segn las instrucciones de uso del mpusbapi.dll tenemos que declararla como string, y la misma funcin proporcionaunasalidaenformatonumrico. Fig.8.FuncinCallLibraryFunctionNode vistaenelblockdiagram Fig.9.Configuracindeparmetrosdela FuncinCallLibraryFunctionNode. Conociendo esto pasos, en la misma ventana de la figura 9 presione la flecha de men en el campo Function Name (que apunta hacia abajo) y escoja la funcin MPUSBGetDeviceCountcomosemuestraen la figura 10, seguidamente presione la pestaaparametersenlapartesuperiorde la ventana y aparecer otro men como se muestra en la figura 11. En los campos que aparecern a continuacin llnelos como sigue:

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments13/18

Name: use el que trae de manera predeterminada un nombre que pueda identificar fcilmente a la variable type: Presione la flecha de opciones y seleccione numeric, Data type: Use el que trae de manera predeterminada, presione el botn marcadocomo+yseagregarotravariable aconfigurarcomosigue: Name:PongaelnombrequeUddeseeenel campo Name (se sugiere un nombre que pueda identificar fcilmente a la variable) type:string,StringFormat:sesugieredejarla quetraedemanerapredeterminada(Cstring Pointer), Minimun size: se sugiere dejar la que trae de manera predeterminada (en blanco),presioneelbotnOKylafuncinya estconfigurada. Ahora cree una constante, escriba vid_04d8&pid_000bensuinterioryconecte al pin marcado PID&VID del bloque que acaba de configurar y el resultado que nos proporcione sta funcin ya est lista para usarse!!! Losdemsparmetrosseconfiguran de manera similar a lo descrito anteriormente es importante llegar hasta el paso (f), slo hay que tener en cuenta lo siguiente: Para la funcin MPUSBOpen, que traenunaleyendaLongalinicio,serequiere configurardeigualmaneraquelainstruccin queseacabadeexplicar,paralosquetraen la leyenda Void al inicio se configura de la siguientemanera: LlamealaFuncinCallLibraryFunctionNode y escrbale la direccin de la dll, presione el mendelcampoFunctionNameyseleccione

la funcin a utilizar (MPUSBWrite, MPUSBRead MPUSBClose) presione la pestaa de parmeters y deje el parmetro Function Name con los valores que trae de manera predeterminada y slo agregue los dems parmetros que necesita la dll de manerasimilaralodescritoanteriormentey quedarimplementadasufuncin. Fig. 10. Configurando la funcin MPUSBGetDeviceCountdempusbapi.dll Fig. 10 Configurando la funcin de salida de MPUSBGetDeviceCountdempusbapi.dll

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments14/18

Fig. 11 Agregando parmetros de la funcin MPUSBGetDeviceCountdempusbapi.dll IMPORTANTE: Para marcadoscomo: los parmetros

instance = 0, vid_pid = vid_04d8&pid_000b, EP = \MCHP_EP1, dwDir=0,dwReserved=0. c. Abra la pipe para escribir (si no desea escribirpuedeomitirstepaso). Formato: long _MPUSBOpen(long instance, CStr VID_PID, CStr EP, long dwDir, long dwReserved) Fig.12Funcionesdempusbapi.dlldeclaradas comoVoid Fig.13Configuracindelarreglode1X64 bytesde8bitsqueseenvia/recibedelPIC desdeLabVIEW

CstrsonvariablesdeltipoString, Longdeltiponumrica, Los marcados con * son del tipo variable numrica con Data type: unsigned 32 bits integer y Pass: seleccionado a Pointer to value, Y los marcados con unsigned char * son arreglos de 1X64 bytes de 8 bits (vector) y configurados con Type: Array, Data Type: unsigned8bitsinteger,Dimensions:1,Array Format: Array Data Pointer, Minimun size: seleccione la variable asignada a la longitud del arreglo a enviar / recibir, es el dato que seenvay/orecibedelPIC(fig.13). b. Abra la pipe para leer (si no desea leer puedeomitirstepaso). Formato: long _MPUSBOpen(long instance, CStr VID_PID, CStr EP, long dwDir, long dwReserved) Dedonde:

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments15/18

Dedonde: instance = 0, vid_pid = vid_04d8&pid_000b, EP = \MCHP_EP1, dwDir=1,dwReserved=0. d. Lea los datos de la pipe (solamente si la pipeestabierta)Formato: void _MPUSBRead(long Handle, unsigned char *data, long dwlen, long *length, long dwMilliseconds) Dedonde: Handle corresponde al Nmero que se obtiene como resultado de la instruccin MPUSBOpen con dwDir = 0, data = es la informacinqueenvaelPICenunvectorde 64 bytes, dwlen = 64, length = 64, dwMiliseconds=200. e. Escriba los datos de la pipe (solamente si lapipeestabierta)Formato:: void_MPUSBWrite(longHandle,unsigned char*data,longdwlen,long*length,long dwMilliseconds) Dedonde: Handle = Nmero obtenido como resultado delainstruccinMPUSBOpencondwDir=1, data = es la informacin que se enva al PIC enunvectorde64bytes,dwlen=64,length =64,dwMiliseconds=200. f. Cierre la(s) pipe(s) abierta(s), ya que una vez usados, stos caducan. Recordemos que siseabren2pipes,ambashayquecerrarlas. Formato: void_MPUSBClose(longHandle);

Dedonde: Handle = Nmero obtenido como resultado delainstruccinMPUSBOpencondwDir=0 Yparalaltimapipe,Formato: void_MPUSBClose(longHandle); Dedonde: Handle = Nmero que porporciona como resultado de la instruccin MPUSBOpen con dwDir=1 Recuerde que se debe abrir una pipe a la vez(hayqueusardosvecesstainstruccin), una vez con dwDir=1 para abrir la pipe para leer y con dwDir=0 para abrir la pipe para escribir al PIC, el resultado que nos arroja sta instruccin es el nmero de pipe que nosasignaelsistemaoperativo. No olvide seguir la secuencia de apertura y cierre de la pipe con una structura del tipo Flat sequence para su ejecucin en secuencia. El cdigo implementado en labVIEW <<DAQ.vi >> puede solicitarlo a los siguientes correos electrnicos: gpoolb@hotmail.com,lugojim@gmail.com Una vez enlazado con el PIC, los datos pueden fluir las veces que sea necesario de un sentido a otro y manipularloscomosedesee,yaquesetiene elcompletocontroldelsoftwaredelPIC(por partedelCompiladorC)yenlaPC(porparte del LabVIEW). Asegrese que la dll quede instaladoen: C:\Archivosdeprograma\Microchip Solutions\USBTools\MCHPUSBCustom Driver\Mpusbapi\Dll

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments16/18

3. Pruebasfinalesycorrecciones. ParaelenlaceconlaPCporUSBesmuy importante conectar el capacitor (C4) de 0.1uFcomoseindicaeneldiagrama,yaque, siseomitegenerarunerroralmomentodel enlace.Tambinesmuyimportantehabilitar el fusible VREGEN para que Vusb sea activado. Es importante considerar la funcin del PLL del PIC ya que de acuerdo al valor de la frecuencia del cristal depende el valor de la multiplicacindelafrecuenciadelrelojpara generarlos48MhznecesariosparaelUSB. PorloquerespectaaldescriptordelUSB, es importante considerar el valor del VID & PID, ya que si no es configurado correctamente, el driver que proporciona Microchip no lo reconocer y en consecuencia, no funcionar. Para esto no olvide sustituir en el descriptor las 3 lneas quesecomentanenelcdigodelprograma queseanexaenstedocumento. La DLL que proporciona Microchip se puede descargar desde su sitio web. Aseguresedeobtenerlaversinmsactual. En la direccin web que se menciona en la bibliografasedescargaeldriver,encasode habercaducadobusqueenlaseccin Design Aplication Design Center Wired Conectivity USB Software/Tools MCHPFSUSBFrameworkv2.1simplemente teclee usb software/tools en la ventanita debsquedaydleunclicenelbotnsite search, generalmente el acceso a la pgina queda en los primeros resultados de la bsqueda, el cual, al darle click lleva directamentealdriver.Enelmismopaquete

incluye ejemplos que incluyen el programa fuenteparalacompresindesuuso. En caso de que el LabVIEW genere error al ejecutarelprograma,esimportanteverificar que el driver de Microchip quede en C:\ del discoduroyaquesetomarcomoreferencia paraelllamadodeladllyqueelarchivoque se descarg sea el que est llamado Microchip MCHPFSUSB v2.1 Installer (la ltimaversin). Se recomienda verificar el archivo que nos proporciona Microchip en el driver, en la siguientedireccin: "C:\MICROCHIPSOLUTIONS\USB TOOLS\MCHPUSBCUSTOM DRIVER\MCHPUSBDRIVER\MCHPUSB DRIVERRELEASENOTES.HTM" Ah se proporciona informacin sobre la compatibilidad en sistemas operativos y ejemplosdesarrollados. BIBLIOGRAFA http://www.usb.org/developers/docs/ http://slalen.iespana.es/programacion/datos /MPUSBApi.pdf www.google.com.mxbsquedaPICUSB. http://www.hobbypic.com/ http://www.todopic.com.ar/foros/index.php ?topic=13418.0;do=Bookmark http://picmania.garcia cuervo.com/index.php Driverdemicrochip:

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments17/18

http://www.microchip.com/stellent/idcplg?I dcService=SS_GET_PAGE&nodeId=2651&par am=en534494 Descargadirecta: http://ww1.microchip.com/downloads/en/D eviceDoc/Microchip%20MCHPFSUSB%20v2.1 %20Installer.zip Asegresequeelarchivoseaelquetienepor nombreMCHPFSUSBFrameworkv2.1

IntegracindePIC18Fxx5xdeMicrochipconLabVIEW8.2deNationalInstruments18/18

SALIDAS
D

+5V +5V D1 R1 10K R2 10K R1 10K R2 10K R2 10K R2 10K 20 C5 0.1uF R4 150 R5 150 R4 150 R5 150 R4 150 R5 150 R4 150 R5 150 D2 D3 D4 D5 D6 D7 D8

RA0 RA1 RA2 RA3 RA4 RA5 +5V


C

2 3 4 5 6 7 R6 10K R7 100 11 1 +5V S1 SW RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 21 22 23 24 25 26 27 28

RA0 RA1 RA2 RA3 RA4/T0CKI/C1OUT/RCV RC6/TX/CK RA5/SS RC7/RX/DT/SDO RC0/T1OSO/T13CKI MCLR/VPP/RE3 RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 OSC1/CLKI U2 PIC18F2455 RC2 RC1

VDD

RB0

RB1

RB2

RB3

RB4

RB5

RB6

17 18 13 12 J1

RB7

J4 1 2 3 4 5 ICSP

OSC2/CLKO/RA6

RC4/D-/VM RC5/D+/VP VUSB GND GND

15 16 14 C4 0.1uF

1 2 3 4

10

19 8

USB

RA0

RA1

RA2

RA3

RA4

J3 POWER SUPPLY +5V 4 3 2 1 C2 2200uF C1 1000uF +12V

C7 22pF

C8 22pF S1 SW S1 SW S1 SW S1 SW S1 SW S1 SW

ENTRADAS

Diseado por: Ing. Gabriel Pool, gpoolb@hotmail.com y Julio Lugo, lugojim@gmail.com Title Integracin de PIC18F2455 con LabVIEW 8.2 Size A Date:
5 4 3

RA5

X1 12 MHz

Document Number DAQ Monday, July 07, 2008


2

Rev 01 Sheet 1
1

of

Potrebbero piacerti anche