ITFIP. Juan Carlos Osuna. Adolfo Quimbayo. Miguel Suárez Sierra.

ADQUISICION DE DATOS USANDO
COMUNICACIÓN USB EN MODO HID

Arquitectura de Computadores
Abstract — 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

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.


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 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, 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
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.
















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






Fig.2 Circuito de adecuación de la 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
ADQUISICION DE DATOS USANDO
COMUNICACIÓN USB EN MODO HID


Osuna Romero, Juan Carlos. josunaromero@yahoo.es ITFIP
Quimbayo, Adolfo. adolfo.quimba@hotmail.com ITFIP
Suárez Sierra, Miguel. misusibu@hotmail.com ITFIP


E
ITFIP. Juan Carlos Osuna. Adolfo Quimbayo. Miguel Suárez Sierra. ADQUISICION DE DATOS USANDO
COMUNICACIÓN USB EN MODO HID

Arquitectura de Computadores
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 Ω.






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)
#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 <pic18_usb.h>//Funciones de bajo
nivel(hardware) para la serie PIC 18Fxx5x
que serviran en usb.c
#include <usb_desc_hid.h>//Aqui es donde van
las descripciones de este dispositivo (como
lo reconocera windows)
#include <usb.c> //libreria para el
manejo del usb
#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); // Configurar CCP1
como PWM

// 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

Arquitectura de Computadores

// Frecuencias: //
·T2_DIV_BY_1 -> 128us -> 7,81KHz
// ·T2_DIV_BY_4 -> 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
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. 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.
Para la comunicación con el dispositivo USB es conveniente
obtener su “resource name”. El cual se halla ejecutando la
utilidad de LabVIEW llamada “Visa Interactive Control”,
después de haber instalado el driver.
El VI permite obtener el valor de la temperatura leído por el
PIC18F4550 y mostrarlo en una escala, asimismo, se puede
graficar, establecer límites de alarma y guardar en un
archivo.







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.









CONCLUSIONES



Fig. 5 Panel frontal del VI








Fig. 6 Diagrama de bloques del VI

CONCLUSIONES


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.

ITFIP. Juan Carlos Osuna. Adolfo Quimbayo. Miguel Suárez Sierra. ADQUISICION DE DATOS USANDO
COMUNICACIÓN USB EN MODO HID

Arquitectura de Computadores
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-Pic18f4550-
y-Labview-Rev-2012
[4] C compiler IDE