ITFIP. Juan Carlos Osuna. Adolfo Quimbayo. Miguel Suárez Sierra. ADQUISICION DE DATOS USANDO COMUNICACIÓN USB EN MODO HID
ADQUISICION DE DATOS USANDO COMUNICACIÓN COMUNICACIÓN USB EN E N MODO HID Osuna Romero, Juan Carlos.
[email protected] Carlos.
[email protected] ITFIP Quimbayo, Adolfo.
[email protected] [email protected] ITFIP Suárez Sierra, Miguel.
[email protected] ITFIP Abstract — Implementing Implementing USB HID communication presents a microcontroller PIC18F4550 and LabVIEW. The code programmed to the PIC microcontroller reading cyclically sends its analog-digital converter (ADC) value of an RTD PT100 temperature to a personal computer via the USB bus. Key words — USB HID, data acquisition, bridge Wheatstone,
linearization
INTRODUCCION
sea de 1 mA, para evitar el efecto del autocalentamiento en el sensor, se tiene que: Rr = V/I = 5 volt / 0.001 amp = 5000 Ω Pero como la RTD tiene 100 Ω entonces la otra resistencia debe ser de 4900 Ω. Comercialmente no se encuentra este valor por lo tanto se hace uso de una resistencia de 4.7K Ω
de precisión.
E
l protocolo HID realiza la implementación de los dispositivos de manera sencilla. Los dispositivos definen sus paquetes de datos y luego presentan un descriptor HID al host. El descriptor HID es codificado como un grupo de bytes que describen los paquetes de datos del dispositivo. Esto incluye: cuantos paquetes soporta el dispositivo, el tamaño de los paquetes, y el propósito de cada byte y bit en el paquete. En HID, el intercambio de datos se hace a través de Reports, que son estructuras con formato flexible que pueden manejar muchos tipos de datos. Cada report tiene un tamaño fijo. Además se conoce como responder a los datos de un cierto report, así, saber que report usar para la respuesta. En general hay 3 tipos de reports: de entrada, salida y de características. Como mencionamos antes, en USB hay distintos tipos de transferencias. En el caso de HID sólo se usan las trasferencias de control y por interrupción.
Fig. 1 Puente de Wheatstone con los valores resistivos
Para realizar la operación de hallar la diferencial de voltaje en el puente Wheatstone se hace uso del amplificador operacional de instrumentación AD620
II. MEDICION DE TEMPERATURA Se llevara a cabo con la RTD PT- 100: Resistencia de 100 Ω a 0°C. Para medir los pequeños cambios de resistencia se implmentara implmentara dos divisores de tensión en paralelo, uno de los cuales contiene el transductor de temperatura, es decir, la PT100. Diseñado de forma que en el valor mínimo a medir de temperatura, temperatura, ambos divisores den la misma tensión (Vd = 0 V), sólo hará falta medir la diferencia de tensión entre las salidas para obtener una señal que dependerá de la variable a medir. Esta estructura se conoce como puente de Wheatstone. Para el montaje del puente Wheatstone se tiene una fuente de alimentación de 5 voltios teniendo en cuenta que para una temperatura de 0 ºC el valor de de la RTD es de 100 Ω
y se busca que la corriente a través de cada una de las ramas
Arquitectura de Computadores
Fig.2 Circuito de adecuación de la PT100 PT100
Con el fin de adecuar el voltaje diferencial entre un valor de 0 a 5 voltios se busca el factor de ganancia teniendo en cuenta que el máximo valor de temperatura a medir es de 50
ITFIP. Juan Carlos Osuna. Adolfo Quimbayo. Miguel Suárez Sierra. ADQUISICION DE DATOS USANDO COMUNICACIÓN USB EN MODO HID grados centígrados cuyo valor en el puente de Wheatstone es igual a 17,6 milivoltios, por tanto: Ganancia = 5 volt / 0.0176 volt = 284. Lo cual indica que la resistencia de ganancia para el amplificador según la ecuación de la hoja de datos es: RG=49.4k/G-1=49.4k/283=174,5 Ω.
#DEFINE USB_HID_DEVICE
TRUE
#define USB_EP1_TX_ENABLE USB_ENABLE_INTERRUPT //turn on EP1 for IN bulk/interrupt transfers #define USB_EP1_TX_SIZE
8
#define USB_EP1_RX_ENABLE USB_ENABLE_INTERRUPT //turn on EP1 for OUT bulk/interrupt transfers #define USB_EP1_RX_SIZE
8
#include
//Funciones de bajo nivel(hardware) para la serie PIC 18Fxx5x que serviran en usb.c #include //Aqui es donde van las descripciones de este dispositivo (como lo reconocera windows) Fig. 3 Circuito implementado para medición de temperatura
III.
PROGRAMACION DEL PIC
Se realiza la programación del PIC18F4550 en lenguaje C con el fin de lograr la lectura de temperatura, teniendo en cuenta para ellos la activación el convertidor ADC y la comunicación USB HID que permitirá a LABVIEW realizar la adquisición de los datos para mostrarlos en el computador, asimismo, se requiere que se varíe la velocidad de un ventilador de manera proporcional a la temperatura para lo cual se hace uso de la generación de una señal PWM. El programa queda estructurado como sigue: /*************** VARIADOR VELOCIDAD CON SENSOR TEMPERATURA PT100.C ************* Descripcion: Control de velocidad de motor d.c. por PWM por lectura de temperatura por medio de RTD PT100. Entradas: PT100 puente Wheastone -> pin ra0 ADC Salidas:
PWM -> CCP1/RC2
*/ #include <18F4550.h> #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,P LL5,CPUDIV1,VREGEN #use delay(clock=48M)
Arquitectura de Computadores
#include manejo del usb
//libreria para el
#define LEDR PIN_C0 //Led rojo para la espera de la conexion USB #define LEDV PIN_C1 //Led verde, se enciende cuando el USB esta conectado #define LED_ON output_low #define LED_OFF output_high int pwm; int8 Salida[8]; int8 Entrada[8];
void main() { setup_adc_ports(AN0); setup_adc(ADC_CLOCK_INTERNAL); set_adc_channel(0);
setup_ccp1(CCP_PWM); como PWM
// Configurar CCP1
// Usamos el modulo CCP1 como PWM, para ello configuramos el TMR2 de sus tres // formas distintas mediante el preescales(1,4,16) que nos tres distintas frecuencias. // El ciclo viene determinado por (1/clock)* 4 * t2div * (periodo+1), donde en este caso // clock=4MHz y periodo=127.
ITFIP. Juan Carlos Osuna. Adolfo Quimbayo. Miguel Suárez Sierra. ADQUISICION DE DATOS USANDO COMUNICACIÓN USB EN MODO HID
// Frecuencias: // ·T2_DIV_BY_1 -> 128us // ·T2_DIV_BY_4
graficar, establecer límites de alarma y guardar en un archivo. -> 7,81KHz
-> 512us
-> 1,95KHz
// ·T2_DIV_BY_16 -> 2,05ms -> 487,8Hz
setup_timer_2(T2_DIV_BY_16, 127, 1); LED_ON(LEDR); LED_OFF(LEDV); usb_init(); usb_task(); //Monitorea el estado de la conexion conectandose y desconectandose automaticamente usb_wait_for_enumeration(); //espera infinitamente hasta que el dispositivo fue enumerado
Fig. 4 Diagrama circuito electrónico
Antes de ejecutar el VI se debe seleccionar el puerto a leer que corresponde con el “resource name” y el archivo donde
se almacenan los datos obtenidos.
LED_ON(LEDV); LED_OFF(LEDR); while (TRUE) { usb_task(); if (usb_enumerated()) { Salida[0]=read_adc(); usb_put_packet(1, Salida, 1, USB_DTS_TOGGLE); } pwm=read_adc(); set_pwm1_duty(pwm/2); } }
IV.
CONCLUSIONES
Fig. 5 Panel frontal del VI
INSTRUMENTO VIRTUAL
El código del VI desarrollado detecta la llegada de un dato al puerto USB de la PC a través de una interrupción USB. Una vez conectado el dispositivo de adquisición de datos el sistema operativo lo detecta, sin embargo, el driver se genera con el NI VISA DRIVE WIZARD para que LABVIEW pueda tener control sobre él.
Fig. 6 Diagrama de bloques del VI
Para la comunicación con el dispositivo USB es conveniente obtener su “resource name”. El cual se halla ejecutando la utilidad de LabVIEW lla mada “Visa Interactive Control”, después de haber instalado el driver.
Establecemos el procedimiento a seguir para la implementación de la comunicación USB en modo HID con la finalidad de crear un sistema de adquisición de datos, en este caso temperatura, por medio de un instrumento virtual con el cual se pueda dar manejo a la información obtenida.
El VI permite obtener el valor de la temperatura leído por el PIC18F4550 y mostrarlo en una escala, asimismo, se puede Arquitectura de Computadores
CONCLUSIONES
ITFIP. Juan Carlos Osuna. Adolfo Quimbayo. Miguel Suárez Sierra. ADQUISICION DE DATOS USANDO COMUNICACIÓN USB EN MODO HID Identificamos la facilidad que presenta este tipo de comunicación para la solicitud de información al PIC, sin embargo, no realizamos envío de datos desde LABVIEW, ya que no profundizamos en la forma que se estructura el paquete para permitir establecer el código necesario para leerlo. El desarrollo de este proyecto nos permite establecer pautas para la creación de tarjetas de adquisición de datos que puedan manejar al mismo tiempo otros tipos de variables físicas y ejercer control sobre actuadores que se encuentren en un proceso determinado. LITOGRAFIA [1]http://materias.fi.uba.ar/7609/material/S0307MedicionTe mperatura2.pdf [2] http://www.orbelec.es/prodtienda/datos/08222.pdf [3] http://tec.upc.es/ie/RTDs.pdf [3]http://es.scribd.com/doc/98843574/Usb-Con-Pic18f4550y-Labview-Rev-2012 [4] C compiler IDE
Arquitectura de Computadores