Implementación de Comunicación USB con Microcontrolador PIC18F4550 y LabVIEW by Física Yohan Pérez-Moret

Uso del Microcontrolador PIC18F4550

Uso del Microcontrolador PIC18F4550

El presente artículo completo lo puedes encontrar en el siguiente link: Implementación de Comunicación USB con Microcontrolador PIC18F4550 y LabVIEW 

Algunos de los materiales que utilizarán los puedes encontrar en nuestra tiena online Ferrustronix:

Resumen

Se presenta el desarrollo, simulación e implementación de la comunicación USB con un microcontrolador PIC18F4550 y LabVIEW. El código programado al microcontrolador PIC envía cíclicamente la lectura de su conversor análogo-digital (AD) y el estado del pin RA4 a una computadora personal a través del bus USB. El código del microcontrolador fue escrito en lenguaje C, con el compilador CCS 4.018. En LabVIEW 8.0 se generó el driver para el dispositivo USB y se diseñó un instrumento virtual (VI) para atender la comunicación.

El VI se encarga de graficar la lectura AD del PIC y a petición del usuario que lo opera de enviarle un valor de un byte, el cual es cargado en el puerto B del PIC. Se realiza la simulación utilizando Proteus 7.2 y el VI diseñado. Por último se muestra la implementación práctica en la placa de demostración PICDEM 2 plus, la cual fue modificada para la funcionalidad USB.

Introducción El bus serie universal o en sus siglas en inglés: USB, posee algunas características como son:

  • Integridad de la señal por el uso de apantallamientos, drivers y receptores diferenciales.
  • Los dispositivos USB de clase HID (Human Interface Device) son soportados por los sistemas operativos desde Windows Millennium en adelante.
  • En dispositivos USB 2.0 se pueden transmitir datos a razón de 480 megabits por segundo.
  • Los cables USB individuales pueden extenderse hasta 5 m de distancia y más con el uso de multiplexores de puertos o HUB.
  • El bus USB puede suplir hasta 500 mA @ 5 V a cada uno de los dispositivos conectados, eliminando el uso de fuentes y cables externos en aplicaciones de baja potencia.

Esas características, por citar solo algunas, hacen del bus USB una opción útil en aplicaciones de instrumentación electrónica. Muchos fabricantes de microcontroladores programables como Microchip, están incluyendo un modulo USB en sus dispositivos. Facilitando el desarrollo de aplicaciones de instrumentación que aprovechen las capacidades USB.

Por otra parte, el soporte brindado por los fabricantes de computadoras personales (PC) a los puertos seriales RS232 y paralelos Centronics, de amplio uso entre los instrumentistas, cada vez es menor.

En la actualidad es común que una PC incluya solo un puerto serial RS-232, o ninguno en el caso de algunas portátiles, y sí varios puertos USB.

En el presente trabajo se presenta el uso del módulo USB que posee el microcontrolador PIC18F4550 (1) del fabricante Microchip y su atención utilizando LabVIEW 8.0.

Kit PIC18F4550

Kit PIC18F4550

Configuración del Reloj del PIC para el uso del módulo USB

El PIC18F4550 incluye un sistema de generación de reloj distinto a los microcontroladores de su misma gama. Ello para poder cumplir los requerimientos del USB en alta y baja velocidad. El PIC18F4550 incluye un sistema de prescalers y postscalers que garantizan la frecuencia del módulo USB en alta y baja velocidad a partir de diferentes valores de un oscilador primario. Sucede que el módulo USB solo acepta 6 MHz para el modo de baja velocidad o 48 MHz para alta velocidad, respectivamente. Por ello, el microcontrolador ofrece un juego de fusibles, que bien configurados, permiten lograr dichas velocidades a partir de otras frecuencias del reloj externo utilizado. En la sección 2.0 de la referencia (1) se dan los detalles sobre la configuración del reloj del módulo USB.

Cuando se diseña el código fuente para usar el módulo USB del PIC18F4550, en la línea que define la frecuencia del oscilador se debe incluir la frecuencia a usar en el núcleo del microcontrolador, que no necesariamente tiene que coincidir con la del oscilador utilizado.

Por ejemplo, en nuestro caso se empleó un oscilador activo de 4 MHz, no obstante, en la línea 39 del código fuente, ver anexo A, se definió otro valor de frecuencia: 24 MHz, el cual corresponde a la frecuencia a la que trabajará el núcleo del microcontrolador al ser activado el PLL multiplicador de frecuencia, necesario en este caso para generar la frecuencia correcta al módulo USB.

Luego, en la línea 40, se programaron los fusibles USBDIV, PLL y CPUDIV con valores tales que garanticen que a partir de los 4 MHz del oscilador externo, el módulo USB trabaje a la frecuencia de 48 MHz definida en la línea 39.

Es importante señalar también que para utilizar el módulo USB no cualquier valor de reloj es válido. En la sección 2.3 de la referencia (1) se muestra una tabla con las frecuencias y tipos de osciladores compatibles con el USB, relacionados con los valores de los fusibles de configuración USBDIV, PLL y CPUDIV. Una sección de esa tabla se reproduce en la Fig. 3.

Por ejemplo, si se dispone del oscilador HS de 24 MHz de la columna “Input Oscillator frecuency” de la Fig. 3, entonces las frecuencias posibles para el núcleo del microcontrolador serían 24 MHz, 12 MHz, 8 MHz y 6 MHz, según la columna “Microcontroller Clock Frecuency”. Suponiendo que escogemos la frecuencia de 8 MHz para el núcleo tendríamos que escribir las siguientes líneas de código en PICC:

#fuse delay(clock=8000000)

#fuses HS, NOWDT, NOPROTECT, NOLVP,

NODEBUG, USBDIV, PLL6, CPUDIV3,

VREGEN

Nótese que en la primera línea de código anterior, no se definió la frecuencia del oscilador externo HS de 4 MHz, sino la frecuencia de trabajo resultante del PLL y CPUDIV escogidos

BIBLIOGRAFÍA

Pérez-Moret, F. Y., & por La Derecha, P. C. B. (2012). Implementación de Comunicación USB con Microcontrolador PIC18F4550 y LabVIEW. URL www. youblisher. com/pdf/481469.

 

You may also like...

3 Responses

  1. Erasmo Ayala Yáñez dice:

    buena informacion

     
  2. Santiago dice:

    Ya no abre la dirección para accesar al artículo completo.

     

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *