En esta ocasión vamos a realizar una interfaz de control y adquisición de datos mediante puerto USB (modo "BULK Transfer") utilizando un PIC 18F2550 (puede usarse cualquier otro con función USB). A través de esta interfaz pueden realizar instrumentación virtual que les permita llevar a cabo el control de procesos externos mediante una PC, registro de datos, etc.
No voy a explicar en detalle cómo funciona la comunicación USB en modo BULK ya que hay mucho información en la web sobre el tema. Este modo se utiliza para la transmisión masiva de información, sin pérdida de datos y sin la necesidad de emular un puerto serie, como hace el modo CDC.
La idea es que puedan tener como ejemplo las distintas posibilidades de entradas y salidas (analógicas y digitales), para luego utilizar tantas como deseen en cada caso en particular. El proyecto que les voy a mostrar a modo de ejemplo presenta:
- 2 Entradas digitales.
- 1 Entrada analógica (10 bits).
- 2 Salidas digitales
- 1 Salida analógica (PWM + DAC R-C)
El esquema del mismo está incluido en el archivo adjunto y fue realizado en Proteus. Para utilizar mayor cantidad de I/O, sólo es necesario adaptar el firmware siguiendo el ejemplo dado y luego el software de acuerdo a las operaciones a realizar deseadas.
En el adjunto pueden encontrar lo siguiente:
- Esquema básico del proyecto presentado
- Driver
- Firmware
- Software LabVIEW
- Software Visual Studio 2010 (C#)
El firmware está escrito en lenguaje C, mediante PICC (CCS) y para el software de control voy a dar 2 ejemplos, uno escrito en C# (Visual Studio 2010) y otro en LabVIEW. Ambos utilizan la dll “mpusbapi” para el control de las funciones del puerto (para LabVIEW se creó un Subvi específico para tal fin) y llevan a cabo las mismas tareas de leer las entradas (digital y analógica); y activar las salidas digitales, además de asignarle un valor al PWM de la salida analógica. Por otro lado, es requerido un driver para que el sistema operativo reconozca la interfaz, el cual también es provisto.
Vista del software de LabVIEW:
Ver el archivo adjunto 74003
Vista del software de Visual Studio:
Ver el archivo adjunto 74002
BulkUSB_MN (SubVI LabVIEW):
Ver el archivo adjunto 74001
Interfaz ejemplo mostrada en este proyecto:
Ver el archivo adjunto 74004
Les debo para la próxima el video del funcionamiento (no tengo la cam), todo lo posteado está probado y funcionando correctamente. Espero realicen sus propios proyectos de instrumentación virtual y comenten los resultados.
Saludos!