UNIVERSIDAD MODELOESCUELA DE INGENIERÍA MAESTRÍA EN MECATRÓNICA Integración de PIC18F2455 de Microchip™ con LabVIEW™ 8.2 de National Instruments™ con MPUSBAPI.DLL PRESENTAN: ING. JULIO ALEJANDRO LUGO JIMÉNEZ PARA LA MATERIA: SENSORES Y ACTUADORES PROFESOR: MC. PEDRO NAJERA GARCIA MÉRIDA, YUCATÁN A 28 DE JUNIO DE 2008 ING. GABRIEL JESÚS POOL BALAM (www. Leonardo Gus Peltinovich por su apoyo para la realización de éste trabajo. Agradecimientos: Al Centro de Investigación científica de Yucatán A.2 de National Instruments™ 2 / 18 .mx ) sobre todo al departamento de Instrumentación representado por Ing. C.cicy. JUNIO 2008 Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. circuitos de apoyo adicionales (ADC. orientada a la interacción y trabajo exclusivo con productos del fabricante. y/o acción de control sobre el mundo físico requiere tradicionalmente de una tarjeta de adquisición de datos que por lo general es limitada en hardware. el tiempo para aprender y dominar estos paquetes es muy largo. requieren de muy poco componentes de soporte externo para implementarse y sus tecnologías se han perfeccionado. Esto se puede lograr con el desarrollo de un software como Visual Basic. Por otro lado. No ha sido la excepción con el microcontrolador. National Instruments desarrolló un paquete para la implementación de una interfaz con conectividad a sus tarjetas de adquisición (que vende por separado). control de decisiones. Existe una gran variedad de tarjetas y su costo varía de acuerdo a sus capacidades. C++. INTRODUCCIÓN Hoy en día. al punto de hacer más grande sus capacidades de comunicación. control de decisiones. ya que éste se ha desarrollado notablemente. guardar datos en disco. Por lo que. se preocupan en desarrollar las herramientas para su programación. permite la construcción de circuitos más complejos. tales como lenguajes de alto nivel para compilar el programa y programadores económicos para descargar el programa en el chip. ya no basta con tener un chip inteligente que funcione de manera autónoma. El software fue evolucionando al grado de que Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. ahora se requiere que trabajen en conjunto con la PC para el monitoreo local y remoto (internet o intranet).). Conforme el software se fue volviendo popular muchos fabricantes de hardware desarrollaron tarjetas compatibles con éste software. inteligentes y eficientes. etc. guardar datos en disco. etc. Debido a éstas herramientas. que casi no fallan. ó cualquier otro paquete de preferencia gráfico para hacer más fácil la interfaz de usuario. un software que administre los datos en la PC para el monitoreo local y remoto. Algunos fabricantes tal como Microchip. éste chip se ha vuelto muy popular al grado que se proponen como materias a cursar en las escuelas. RESUMEN El diseño de un sistema de monitoreo de variables como presión. temperatura. Visual C. oscilador interno. En éste desarrollo se fusiona lo mejor de ambos mundos: Un microcontrolador con puerto USB de Microchip y un software de desarrollo LabVIEW de Nacional Instruments. la disminución de su consumo de corriente y el tamaño de los semiconductores.. Algunos fabricantes ofrecen soluciones a medias: poderoso hardware con un software pobre que no cumple con nuestro requerimiento ó hardware básico al que se requieren agregar módulos adicionales para adaptarlo a nuestra necesidad y con software muy completo. y un conocimiento amplio sobre el software de desarrollo. etc. graficar. velocidad. etc.2 de National Instruments™ 3 / 18 . puertos. Dichos microcontroladores. de tal manera. sin contar la gran cantidad de tiempo a invertir en la implementación de la solución más apropiada. la miniaturización de componentes electrónicos. memoria. Desafortunadamente. graficar. Fig. • Interrupt Data Transfers: Used for timely but reliable delivery of data. debido a la velocidad de transferencia y tiene la estructura mostrada en la figura 4.2 de National Instruments™ 4 / 18 . Los datos entregados pueden perderse. characters or coordinates with human‐ Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. 4 Cable USB La arquitectura USB comprende cuatro tipos básicos de transferencia de datos: • Control Transfers: Es usado para configurar un dispositivo al momento de que se conecta. 2 HUB USB Fig. Ver figura 3. • Bulk Data Transfers: Entrega el dato por volumen.5Mb/s en Low‐speed. La velocidad de transferencia depende de la velocidad del HUB que se esté utilizando. 12Mb/s full‐speed y 1. Fig. 1 Topología del BUS El hub es un elemento plug and play en la estructura USB (Figura 2) y es un concentrador al cual. ANTECEDENTES 1. Fig. su complejidad para implementarlo es enorme. 3 Múltiple velocidad en un BUS El cable que típicamente es usado no es largo. ya que su funcionamiento está basado en protocolos de software. Sus terminales son del tipo diferencial y consta de 4 hilos. Las velocidades típicas son: 480Mb /s en high speed. for example. se le pueden agregar más dispositivos USB. el ancho de banda puede variar. Es usado en escáner ó cámaras. La ráfaga de datos es secuencial. Sólo puede haber un Host en el bus que maneja a todos los componentes conectados como se indica en la figura 1. incluyendo otro hub. LA ARQUITECTURA DEL PUERTO USB A pesar de que el puerto USB nos ofrece más ventajas que sus predecesores. se puede conectar casi con cualquier dispositivo. y su manejo es muy fácil e incluye una ayuda en línea. • Isochronous Data Transfers: Occupy a prenegotiated amount of USB bandwidth with a prenegotiated delivery latency. perceptible echo or feedback response characteristics. Este es el modo que usa WinUSB (para windows vista) y el mpusbapi (windows 2000 y posterior). Fig 5. Recordemos que los PICs de la serie 18Fxx5x tienen tres modos de funcionamiento: 1. no requiere driver. Estos protocolos se le llaman descriptores y sirve para informarle al host todo lo necesario para que pueda administrarlo. es suficiente que se pueda administrar como un “device”. requiere driver. 2. Microchip ha creado un archivo dll en el que proporciona las funciones de acceso al puerto USB con un microcontrolador de la familia PIC18Fxx5x. USB Human Interface Device (HID): Velocidad Baja. VID&PID. entre otros.sys. es una entrada de cadena de caracteres que da como resultado el número de dispositivos Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. Dentro de los protocolos hay que especificar el tipo de transferencia de datos a Revisando ejemplos. para esto se requiere “memorizarle” los protocolos necesarios para enlazarse al host. nombre y serie del producto que se conecta para que el host identifique al driver y pueda instalarlo con el fin de que el dispositivo pueda formar las “pipes” ó túneles para su comunicación con el host (ver figura 5).2 de National Instruments™ 5 / 18 . Crea un Puerto Serie Virtual. se necesita el driver mchpusb. USB Custom Driver: Velocidad Alta. usar (endpoints). requiere driver. Para un funcionamiento correcto. LA MPUSBAPI. (Also called streaming real time transfers). ya que se requiere de una gran capacidad de manejo de datos para administrar a cada componente del BUS. Este driver sirve tanto para Visual Basic como para Visual C. 3.DLL DE MICROCHIP Para una mayor facilidad de desarrollo de aplicaciones basadas en el bus USB. USB Communication Device Class (CDC): Velocidad Media. Aunque el PIC no puede funcionar como host. y la ayuda que trae incluida sobre el manejo de la dll se verifica que el modo de abrir la pipe es el siguiente: Primero se identifica si hay un dispositivo con el nombre VID&PID conectado a la PC con la instrucción: (*MPUSBGetDeviceCount)(PCHAR pVID_PID ) La variable pVID&PID. Flujo de comunicación USB 2. La aplicación del usuario tiene que llamar MPUSBReadInt() a menudo sin superar el máximo de 100. Cualquier otro dato recibido después de llenar el buffer del driver se ignora. PID 0x0002 Dispositivo tipo 2. // Input PCHAR pEP. los dos en hexadecimal. El formato es “\\MCHP_EPz” o “\MCHP_EPz” dependiendo del lenguaje de programación. VID 0x04d8. Es importante entender que el driver lo comparten distintos dispositivos. se utiliza primero la llamada de MPUSBGetDeviceCount para saber cuantos dispositivos hay. PID 0x0003 y el dispositivo que nos interesa tiene VID=0x04d8 y PID=0x0002 el MPUSBGetDeviceCount devolverá un ‘1’. PID 0x0001 Dispositivo tipo 1. Ejemplo: “\\MCHP_EP1” o “\MCHP_EP1” Este argumento puede ser NULL (nulo) para crear lazos con Endpoints de funciones no específicas. hay que dejar de hacer las llamadas porque no puede haber más dispositivos con el mismo VID_PID. Se tiene que contar el número de llamadas exitosas. VID 0x04d8. // Input PCHAR pVID_PID. MPUSBReadInt. pEP: Input: String con el número del Endpoint que se va a abrir. MPUSBWrite. Cuando este número sea igual al número devuelto por MPUSBGetDeviceCount. El formato es “vid_xxxx&pid_yyyy”. VID 0x04d8. Ejemplo: Si hay tres dispositivos con los siguientes PID_VID conectados: Dispositivo tipo 0. // Input <Future Use> Esta instrucción devuelve el acceso al pipe del Endpoint con el VID_PID asignado. Normalmente. Seguidamente con la instrucción (*MPUSBOpen) (DWORD instance. // Input DWORD dwDir. pVID_PID: Input: String que contiene el PID&VID del dispositivo objetivo. Todas las pipes se abren con el atributo FILE_FLAG_OVERLAPPED contenida en la DLL. instance: Input: Un número de dispositivo para abrir. Ejemplo: Si un dispositivo tiene un VID=0x04d8 y un PID=0x000b. MPUSBWrite y MPUSBReadInt tengan un valor de time‐out. Las funciones específicas que utilizan éste parámetro son: MPUSBRead. conectados al Host. Donde xxxx es el valor del VID y el yyyy el del PID. La pipe de datos abierta con “_ASYNC” debe almacenar datos con el intervalo especificado en el Endpoint descriptor con un máximo de 100 recepciones. Esta opción sólo está disponible para un Endpoint interrupción IN. // Input DWORD dwReserved).2 de National Instruments™ 6 / 18 . dwDir: Especifica la dirección del Endpoint: Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. que tienen asignado el mismo pVID&PID. El número devuelto por el MPUSBGetDeviceCount tiene que ser igual o menor que el número de todos los dispositivos actualmente conectados y usando el driver genérico. el string de entrada es: “vid_0x04d8&pid_0x000b”. Nota: el valor del time‐out no tiene sentido en una pipe síncrona. Nota: Para utilizar MPUSBReadInt(). el formato de pEP tiene que ser “\\MCHP_EPz_ASYNC”. ésto permite que MPUSBRead. Donde z es el número del Endpoint en decimal. Al llamar la función tiene que haber un mecanismo que intente llamar MPUSOpen() desde 0 hasta MAX_NUM_MPUSB_DEV. DWORD dwLen. vid_pid. // Input // Output // Input // Output // Input generalmente se declara al inicio del programa en el PIC. pLenght: Output: Puntero al número de bytes leídos. handle: Input: Identifica la pipe del Endpoint que se va a leer. PVOID pData. el intervalo de time‐out nunca termina. El formato típico de la instrucción es: MPUSBRead(myInPipe. Si dwMilliseconds es infinito. En conclusión. con dwDir=1 se abre la pipe para leer y con dwDir=0 se abre la pipe para escribir al PIC. “handle” es el Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. pData: Output: Puntero al buffer que recibe el dato leído de la pipe. La pipe unida tiene que crearse con el atributo de acceso MP_READ. Si dwMilliseconds=0. PDWORD pLength. DWORD dwLen. se lee el dato aplicando el número de pipe asignado por medio de la instrucción: (*MPUSBRead) (HANDLE handle. DatosDeseados. // Input // Input // Input // Output // Input DWORD dwMilliseconds). donde N es el número de bytes que maneja el “device” en el arreglo que envía a la PC. DWORD dwMilliseconds). La pipe unida tiene que crearse con el atributo de acceso MP_WRITE. handle: Input: Identifica la pipe del Endpoint que se va a escribir. El formato del dato es un arreglo de N bytes. dwLen: Input: Especifica el número de bytes que se espera leer de la pipe. “handle” es el número de pipe que nos arrojó la instrucción anterior con dwDir=1. MP_READ: para MPUSBRead y MPUSBReadInt MP_Write: para MPUSBWrite Se abre un pipe a la vez (hay que usar dos veces ésta instrucción). dwMilliseconds: Input: Especifica el intervalo de time‐out en milisegundos. VarPtr(s(0)). 0) Como tercer procedimiento. el valor por omisión es cero. PDWORD pLength. La función vuelve si transcurre el intervalo aunque no se complete la operación. PVOID pData. out_pipe.2 de National Instruments™ 7 / 18 . la función comprueba los datos de la pipe y vuelve inmediatamente. dwReserved: No asignado por el momento. MPUSBRead pone este valor a cero antes de cualquier lectura o de chequear un error. el resultado que nos arroja ésta instrucción es el número de pipe que nos asigna el sistema operativo. dwDir. Datos. 1000) Para enviar los datos al PIC se hace de la misma manera con la instrucción: (*MPUSBWrite) (HANDLE handle. En conclusión. El formato típico de la instrucción es: MPUSBOpen(0. el intervalo de time‐out nunca termina. La función vuelve si transcurre el intervalo aunque no se complete la operación. El formato típico de la instrucción es: MPUSBWrite(myOutPipe. dwLen: Input: Especifica el número de bytes que hay que leer de la pipe. Para cerrarlos basta ejecutar la instrucción: (*MPUSBClose)(HANDLE handle). la función comprueba los datos de la pipe y vuelve inmediatamente. éstas son: MPUSBGETDLLVERSION(VOID) Lee el nivel de revisión del MPUSAPI. Si dwMilliseconds=0. MPUSBRead pone este valor a cero antes de cualquier lectura o de chequear un error. el intervalo de time‐out nunca termina. 1000) Por ultimo. DWMILLISECONDS) handle: Input: Identifica la pipe del Endpoint que se va a leer. DWLEN. la función comprueba los datos de la pipe y vuelve inmediatamente. pLenght: Output: Puntero que proporciona el número de bytes que se escriben al llamar esta función. pData: Output: Puntero al buffer que recibe el dato leído de la pipe. Si dwMilliseconds es infinito. La función vuelve si transcurre el intervalo aunque no se complete la operación. bytes. dwMilliseconds: Input: Especifica el intervalo de time‐out en milisegundos. de donde handle: Input: Identifica la pipe del Endpoint que se va a cerrar. La pipe unida tiene que crearse con el atributo de acceso MP_READ. no realiza nada con el puerto USB. Esta función devuelve la versión del código de la dll en formato hexadecimal de 32bits. PLENGTH. pero es necesario conocerlos. Si dwMilliseconds es infinito. pData: Input: Puntero al buffer que contiene los datos que se van a escribir en la pipe. MPUSBWrite pone este valor a cero antes de cualquier lectura o de chequear un error. Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. porque después de usarlos caducan. donde N es el número de bytes que maneja el “device” en el arreglo que recibe de la PC. generalmente se declara al inicio del programa en el PIC. El formato del dato es un arreglo de N bytes. VarPtr(bytes). ya no es posible leer / escribir de nuevo. dwMilliseconds: Input: Especifica el intervalo de time‐out en milisegundos. El formato típico de la instrucción es: MPUSBGetDLLVersion() MPUSBREADINT(HANDLE.2 de National Instruments™ 8 / 18 . se requiere cerrar las pipes. Si dwMilliseconds=0. pLenght: Output: Puntero al número de bytes leídos. VarPtr(SendData(0)). PDATA. número de pipe que nos arrojó la instrucción anterior con dwDir=0. El formato típico de la instrucción es: MPUSBClose (myOutPipe) Existen otras dos instrucciones que no se implementaron en éste desarrollo.dll. dwLen: Input: Especifica el número de bytes que se van a escribir en la pipe. VarPtr(SendData(0)). NO funciona si es llamada con el formato de STDLIB. OBJETIVO El objetivo principal del presente trabajo es integrar el software de LabVIEW con el PIC18F2455 de Microchip con el fin de diseñar una tarjeta de adquisición de datos ajustada a la necesidad personalizada de cada desarrollo. se comentan las pequeñas variaciones que existen al declarar estas variables en los distintos lenguajes. el mismo compilador Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. en la PC se descarga el driver que nos proporciona Microchip en su página web. incorporadas en el lenguaje C del programa CCS para PICS. También. Enlace de MATLAB al PIC. 3. Para lograr el enlace a USB se utilizaron las funciones USB. El formato típico de la instrucción es: MPUSBReadInt(myOutPipe. Pruebas finales y correcciones. 2. VarPtr(bytes). MPUSReadInt ‐si Interrupt OUT‐MPUSBWrite si Bulk IN MPUSBRead si Bulk OUT MPUSWrite si Isochronous IN‐MPUSBRead no Isochronous OUT‐MPUSBWrite no Interrupt: tipo interrupción Isochronous: tipo síncrono Nota: “Input” y “output” se refiere a los parámetros designados en las llamadas a estas funciones. Tipo Función ¿Aplicable time‐out? Interrupt IN‐MPUSRead. 1000) TIPOS DE TRANSFERENCIAS SOPORTADO POR ESTAS INSTRUCCIONES En este apartado se recomienda que función utilizar dependiendo del tipo de transferencia. que son lo opuesto a los sentidos comunes desde la perspectiva de una aplicación haciendo llamadas. dichas funciones están preparadas para que el microcontrolador sea reconocido como un dispositivo personalizado usando los descriptores que incluye el mismo lenguaje. DECLARACIÓN DE CONSTANTES Y VARIABLES Aquí aparecen las constantes y variables que el fabricante recomienda usar. Todas son optativas. Enlace a la PC mediante USB. 1.2 de National Instruments™ 9 / 18 . ENLACE A LA PC MEDIANTE USB. dejando la elección al programador. se estableció la cantidad de datos a 64 bytes (8 bits por byte) de envío y recepción hacia la PC. Esta dll se llama de acuerdo a la convención del lenguaje C. Por parte del Hardware. bytes. OBJETIVOS PARTICULARES 1. MPUS_FAIL=0 MPUSB_SUCCESS=1 MP_WRITE=0 MP_READ=1 MAX_NUM_MPUSB_DEV=127 vid_pid= “vid_04d8&pid_0011” En Visual Basic: out_pipe= “\MCHP_EPx” in_pipe= “\MCHP_EPy” En C y Delphi: out_pipe= “\\MCHP_EPx” in_pipe= “\\MCHP_EPy” Siendo x e y números del Endpoint por los que se van a realizar las transmisiones. 246 ó posterior. etc. Conecte el PIC como se muestra en el diagrama esquemático al final del documento. Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.com ) Asegúrese de obtener la versión más actual. display genéricos de dos líneas y gráficos. en caso de haber caducado busque en la sección Design Aplication Design Center Wired Conectivity USB Software/Tools << MCHPFSUSB Framework v2. Pruebas finales y correcciones en éste documento. //vendor id (0x04D8 is Microchip) 0x0B.0x00.h ( donde se instaló el compilador de CCS ) que es el descriptor del USB ubicado en su PC. La DLL que proporciona Microchip se puede descargar desde su sitio web. Verifique que la configuración del PLL corresponda a la Frecuencia del Xtal que utiliza. Abra el archivo C:\Archivos de programa\PICC\Drivers\usb_desc_sc ope. 4. (www. Compile el programa y grábelo en el PIC. etc.microchip. primero escoja el PIC que utilice PIC18F2455/2550/4455/4550 en la sección #include al inicio del programa. Antes de compilar el código de programa <<daq. 2. Ejemplo: PLL1 … para Xtal de 4Mhz PLL2 … para Xtal de 8 Mhz PLL3 … para Xtal de 12 Mhz PLL4 … para Xtal de 20 Mhz.0x00.c>> adjunto en éste archivo comprimido con PCWH Compiler de CCS versión 3.4 >> ó simplemente teclee “usb software/tools” en la ventanita de búsqueda y déle un clic en el botón “site search”. usb. NOTA IMPORTANTE: De no completar éstos pasos la PC NO detectará al PIC Configurando el Software 1. //product id 0x01. avance hasta la sección start device descriptors (aprox en la linea 132) y reemplace los valores del vendor id. 3. el product id y el device release number como sigue ( puede copiar las tres líneas siguiente y pegar en el archivo del descriptor <<usb_desc_scope.h>> ) : 0xD8. Configurando el Hardware 1.2 de National Instruments™ 10 / 18 . I2C. En la dirección web que se menciona en la bibliografía se descarga el driver (link de acceso directo).0x04. trae en la ayuda un diagrama esquemático para conectar al PIC dispositivos adicionales como teclado. el puerto serie. Si tiene dudas sobre la descarga del driver consulte el apartado 3. //device release number 5. Fig. NOTA: Si Ud. al darle click lleva directamente al driver. 2. sólo proporcione la dirección donde fue descomprimido el driver (la misma dirección del paso anterior). Este ejecutable trae muchos ejemplos de aplicación.2 de National Instruments™ 11 / 18 . Ejecute el driver descargado en el paso anterior e instale en la dirección que trae ya predeterminada. Olvida ó no sustituye correctamente en el descriptor las 3 líneas que se comentan en el código del programa. en cuanto le solicite los driver. éste no reconocerá el driver. entre ellos trae el driver que queda ubicado en: "C:\MICROCHIP SOLUTIONS\USB TOOLS\MCHPUSB CUSTOM DRIVER\MCHPUSB DRIVER\ RELEASE\ " 3. el compilador CCS compilará correctamente pero al conectarse el PIC en la PC. En el mismo paquete incluye ejemplos que incluyen el programa fuente para la compresión de su uso. 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. el cual. generalmente el acceso a la página queda en los primeros resultados de la búsqueda. 6 Instalación del PIC en la PC Fig. 7 En propiedades del PIC instalado en la PC se observa el número de PID&VID Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. Si todo es correcto debemos de observar en el administrador de dispositivos un nuevo hardware que se agregó tal como se muestra en la figura 6. Hacer un ejecutable y llamarlo con la función “system exec vi” b. Por lo que de nuevo se sugiere consultar las notas de aplicaciones de Microchip y ejemplos publicados en la web (con cualquier software de desarrollo). Siguiendo los pasos descritos en la sección de antecedentes de éste documento. etc. Sólo basta investigar un poco en la red para ver los resultados (Consulte la bibliografía de éste documento). En este desarrollo se utilizó el tercer método parar manipular la librería de una manera directa y sin intermediarios. Para iniciar con la implementación del código. se puede mostrar mensajes. escoja la opción blank VI y en la barra de menús déle un click al menú de window Show block diagram. Entre las ventajas que nos ofrece el labVIEW podemos mencionar: el ambiente gráfico muy amigable. porque la dificultad está en identificar el tipo de variable que acepta cada software de desarrollo y que también sea aceptada por la DLL. En el mismo paquete que se descarga de la red obtenemos instrucciones y ejemplos en C++ que muestran como manipular el driver y los parámetros requeridos para aplicarlo. guardarlos en un archivo. Para la implementación de los métodos anteriores el LabVIEW 8. En propiedades del dispositivo instalado se puede observar el número PID&VID que se configuró en el PIC tal como se muestra en la figura 7. Elaborar un programa en C y cargarlo en la instrucción “Code Interface Node” c.2 ofrece una ayuda en línea. aún no es suficiente la información. Sin embargo. mover un detector de nivel. habilitar un indicador. En los tres casos se manipula la misma librería. con el fin de visualizar la ocurrencia de los eventos. Comentarios Adicionales Todo esto se desarrolló basándose en ejemplos que el compilador trae incluidos en la carpeta de “examples”..2 de National Instruments™ 12 / 18 . 4. Manipular directamente la dll con la instrucción “Call Library Function Node” Los tres métodos nos ofrecen ventajas de acuerdo al nivel de lenguaje de programación que se tenga. Por parte de LabVIEW es necesario conocer qué función es más fácil de implementar: Existen tres métodos: a. graficar los datos obtenidos. El código del programa del PIC se encuentra al final del documento con sus respectivos comentarios. primero inicie el programa de LabVIEW. 2. Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. Para hacer la conexión con LabVIEW simplemente se “tradujeron” las instrucciones al lenguaje gráfico y se acondicionaron las variables para que la DLL pueda reconocerlo. Cabe aclarar que los diseños en USB con PIC día a día se van incrementando. Para poder iniciar el enlace con el PIC es necesario que se haya concluido satisfactoriamente la instalación del paquete de drivers de Microchip. ENLACE DEL LABVIEW AL PIC PARA EL CONTROL Y MONITOREO. la cual permite saber al instante qué es lo que se requiere para la interconexión de los módulos. Configuración de parámetros de la Función Call Library Function Node. 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 función MPUSBGetDeviceCount como se muestra en la figura 10. y la misma función proporciona una salida en formato numérico. Formato: long _MPUSBGetDeviceCount(CStr vid_pid) De donde: vid_pid = vid_04d8&pid_000b Para iniciar la programación en LabVIEW se requiere estar en la ventana del block diagram de LabVIEW presione el botón derecho del mouse y en el menú que sale a continuación presione los siguientes submenús connectivity libraries & executables y déle un click a Call Library Function Node y se mostrará un pequeño bloque como se muestra en la figura 8. en éste caso el PID&VID que se quiere llamar es vid_04d8&pid_000b. Déle doble clic en la parte amarilla y saldrá un menú de configuración como se muestra en la figura 9. Al presionar la flecha de menú en el campo de Function Name (que apunta hacia abajo) podrá observar TODAS las funciones que la dll admite. Presione la carpeta y proporcione la dirección donde se instaló la dll de Microchip (Si Ud lo instaló en la dirección sugerida anteriormente queda en “C:\Microchip Solutions\USB Tools\MCHPUSB Custom Driver\Mpusbapi\Dll\Borland_C” e inmediatamente cargará la dll. las instrucciones que se requieren implementar tienen la siguiente secuencia y formato en LabVIEW son: a. Fig. En los campos que aparecerán a continuación llénelos como sigue: Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. seguidamente presione la pestaña “parameters” en la parte superior de la ventana y aparecerá otro menú como se muestra en la figura 11. Función Call Library Function Node vista en el block diagram Fig. 9. 8. Identificar el número de dispositivos conectados con el PID&VID y ubicar el que corresponde al hardware de su desarrollo. solamente tiene que anexar las variables y acondicionar el tipo de entrada. según las instrucciones de uso del mpusbapi. Conociendo esto pasos. Recuerde que se va a implementar la primera instrucción MPUSBGetDeviceCount el cual nos proporciona como resultado el número de dispositivos conectados a la PC con el PID&VID que se va a llamar.dll tenemos que declararla como string.2 de National Instruments™ 13 / 18 . presione el botón OK y la función ya está configurada. Minimun size: se sugiere dejar la que trae de manera predeterminada (en blanco). Configurando la función MPUSBGetDeviceCount de mpusbapi. MPUSBRead ó MPUSBClose) presione la pestaña de parámeters y deje el parámetro Function Name con los valores que trae de manera predeterminada y sólo agregue los demás parámetros que necesita la dll de manera similar a lo descrito anteriormente y quedará implementada su función. Fig. presione el menú del campo Function Name y seleccione la función a utilizar (MPUSBWrite.2 de National Instruments™ 14 / 18 .dll Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. se requiere configurar de igual manera que la instrucción que se acaba de explicar. Data type: Use el que trae de manera predeterminada.dll Fig. String Format: se sugiere dejar la que trae de manera predeterminada (C string Pointer). sólo hay que tener en cuenta lo siguiente: Para la función MPUSBOpen. que traen una leyenda Long al inicio. para los que traen la leyenda Void al inicio se configura de la siguiente manera: Llame a la Función Call Library Function Node y escríbale la dirección de la dll. Ahora cree una constante. Name: use el que trae de manera predeterminada ó un nombre que pueda identificar fácilmente a la variable type: Presione la flecha de opciones y seleccione numeric. 10. 10 Configurando la función de salida de MPUSBGetDeviceCount de mpusbapi. escriba vid_04d8&pid_000b en su interior y conecte al pin marcado PID&VID del bloque que acaba de configurar y el resultado que nos proporcione ésta función ya está lista para usarse!!! Los demás parámetros se configuran de manera similar a lo descrito anteriormente es importante llegar hasta el paso (f). presione el botón marcado como + y se agregará otra variable a configurar como sigue: Name: Ponga el nombre que Ud desee en el campo Name (se sugiere un nombre que pueda identificar fácilmente a la variable) type: string. long dwReserved) De donde: Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. Formato: long _MPUSBOpen(long instance. 13). Los marcados con * son del tipo variable numérica con Data type: unsigned 32 bits integer y Pass: seleccionado a Pointer to value. Abra la pipe para escribir (si no desea escribir puede omitir éste paso). long dwDir. long dwDir. Y los marcados con unsigned char * son arreglos de 1X64 bytes de 8 bits (vector) y configurados con Type: Array. 12 Funciones de mpusbapi.dll declaradas como Void Fig. vid_pid = “vid_04d8&pid_000b”. Dimensions: 1. dwDir = 0. dwReserved = 0. b. Long del tipo numérica. Abra la pipe para leer (si no desea leer puede omitir éste paso). Data Type: unsigned 8 bits integer. long dwReserved) Fig. Fig. CStr VID_PID. Formato: long _MPUSBOpen(long instance. 13 Configuración del arreglo de 1X64 bytes de 8 bits que se envia/recibe del PIC desde LabVIEW Cstr son variables del tipo String. CStr EP. Minimun size: seleccione la variable asignada a la longitud del arreglo a enviar / recibir.dll IMPORTANTE: Para marcados como: los parámetros instance = 0. EP = “\MCHP_EP1”. CStr VID_PID. 11 Agregando parámetros de la función MPUSBGetDeviceCount de mpusbapi. CStr EP. c.2 de National Instruments™ 15 / 18 . Array Format: Array Data Pointer. es el dato que se envía y/o recibe del PIC (fig. long dwlen. data = es la información que envía el PIC en un vector de 64 bytes. los datos pueden fluir las veces que sea necesario de un sentido a otro y manipularlos como se desee. dwMiliseconds = 200. una vez con dwDir=1 para abrir la pipe para leer y con dwDir=0 para abrir la pipe para escribir al PIC. El código implementado en labVIEW <<DAQ. Asegúrese que la dll quede instalado en: C:\Archivos de programa \Microchip Solutions\USB Tools\MCHPUSB Custom Driver\Mpusbapi\Dll Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. De donde: Handle = Número que porporciona como resultado de la instrucción MPUSBOpen con dwDir = 1 Recuerde que se debe abrir una “pipe” a la vez (hay que usar dos veces ésta instrucción).com. e. unsigned char *data. éstos caducan. Lea los datos de la pipe (solamente si la pipe está abierta) Formato: void _MPUSBRead(long Handle. De donde: Handle = Número obtenido como resultado de la instrucción MPUSBOpen con dwDir = 0 Y para la última “pipe”.2 de National Instruments™ 16 / 18 . f. lugojim@gmail. De donde: instance = 0. long dwMilliseconds) De donde: Handle = Número obtenido como resultado de la instrucción MPUSBOpen con dwDir = 1. ambas hay que cerrarlas. long *length.com Una vez enlazado con el PIC. Cierre la(s) pipe(s) abierta(s). Formato: void _MPUSBClose(long Handle). dwDir = 1. dwReserved = 0. unsigned char *data. vid_pid = “vid_04d8&pid_000b”. long dwlen. dwlen = 64.vi >> puede solicitarlo a los siguientes correos electrónicos: gpoolb@hotmail. el resultado que nos arroja ésta instrucción es el número de pipe que nos asigna el sistema operativo. Formato: void _MPUSBClose(long Handle). data = es la información que se envía al PIC en un vector de 64 bytes. ya que se tiene el completo control del software del PIC (por parte del Compilador C) y en la PC (por parte del LabVIEW). Recordemos que si se abren 2 pipes. length = 64. dwlen = 64. EP = “\MCHP_EP1”. long dwMilliseconds) De donde: Handle corresponde al Número que se obtiene como resultado de la instrucción MPUSBOpen con dwDir = 0. length = 64. d. Escriba los datos de la pipe (solamente si la pipe está abierta) Formato:: void _MPUSBWrite(long Handle. long *length. No olvide seguir la secuencia de apertura y cierre de la “pipe” con una “structura” del tipo “Flat sequence” para su ejecución en secuencia. ya que una vez usados. dwMiliseconds = 200. al darle click lleva directamente al driver.pdf www. BIBLIOGRAFÍA http://www.usb. ya que si no es configurado correctamente. En la dirección web que se menciona en la bibliografía se descarga el driver.ar/foros/index. La DLL que proporciona Microchip se puede descargar desde su sitio web. ya que. generalmente el acceso a la página queda en los primeros resultados de la búsqueda. http://www.iespana. es importante verificar que el driver de Microchip quede en C:\ del disco duro ya que se tomará como referencia para el llamado de la dll y que el archivo que se descargó sea el que está llamado Microchip MCHPFSUSB v2.mx búsqueda “PIC USB”. Asegurese de obtener la versión más actual.garcia‐ cuervo. no funcionará.1 ó simplemente teclee “usb software/tools” en la ventanita de búsqueda y déle un clic en el botón “site search”.2 de National Instruments™ 17 / 18 .google. en la siguiente dirección: "C:\ MICROCHIP SOLUTIONS\USB TOOLS\MCHPUSB CUSTOM DRIVER\MCHPUSB DRIVER\MCHPUSB DRIVER RELEASE NOTES. Para el enlace con la PC por USB es muy importante conectar el capacitor (C4) de 0.do=Bookmark http://picmania.com/index. el driver que proporciona Microchip no lo reconocerá y en consecuencia.0. es importante considerar el valor del VID & PID.org/developers/docs/ http://slalen.es/programacion/datos /MPUSBApi. si se omite generará un error al momento del enlace. Pruebas finales y correcciones. el cual. Se recomienda verificar el archivo que nos proporciona Microchip en el driver. 3. Por lo que respecta al descriptor del USB.1 Installer (la última versión). en caso de haber caducado busque en la sección Design Aplication Design Center Wired Conectivity USB Software/Tools MCHPFSUSB Framework v2. También es muy importante habilitar el fusible VREGEN para que Vusb sea activado.1uF como se indica en el diagrama.php Driver de microchip: Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8. Es importante considerar la función del PLL del PIC ya que de acuerdo al valor de la frecuencia del cristal depende el valor de la multiplicación de la frecuencia del reloj para generar los 48Mhz necesarios para el USB.com.todopic.hobbypic.com/ http://www.php ?topic=13418.HTM" Ahí se proporciona información sobre la compatibilidad en sistemas operativos y ejemplos desarrollados. Para esto no olvide sustituir en el descriptor las 3 líneas que se comentan en el código del programa que se anexa en éste documento.com. En caso de que el LabVIEW genere error al ejecutar el programa. En el mismo paquete incluye ejemplos que incluyen el programa fuente para la compresión de su uso. 2 de National Instruments™ 18 / 18 .microchip.zip Asegúrese que el archivo sea el que tiene por nombre MCHPFSUSB Framework v2. http://www.com/downloads/en/D eviceDoc/Microchip%20MCHPFSUSB%20v2.com/stellent/idcplg?I dcService=SS_GET_PAGE&nodeId=2651&par am=en534494 Descarga directa : http://ww1.1 Integración de PIC18Fxx5x de Microchip™ con LabVIEW™ 8.microchip.1 %20Installer. 5 4 3 2 1 SALIDAS D +5V +5V D1 R1 10K R2 10K R1 10K R2 10K R2 10K R2 10K 20 C5 0.2 Size A Date: 5 4 3 RA5 X1 12 MHz B A Document Number DAQ Monday.1uF 1 2 3 4 10 B 19 8 9 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 A Diseñado por: Ing. July 07.com Title Integración de PIC18F2455 con LabVIEW 8.1uF R4 150 R5 150 R4 150 R5 150 R4 150 R5 150 R4 150 R5 150 D2 D3 D4 D5 D6 D7 D8 D 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 C J4 1 2 3 4 5 ICSP OSC2/CLKO/RA6 RC4/D-/VM RC5/D+/VP VUSB GND GND 15 16 14 C4 0.com y Julio Lugo. lugojim@gmail. 2008 2 Rev 01 Sheet 1 1 of 1 . Gabriel Pool. gpoolb@hotmail.
Report "Integración de PIC18F2455 con LabVIEW 8.2 con mpusbapi.dll"