111421330 Tarjeta de Adquisicion de Datos Usb

11
UNIVERSIDAD TECNOLOGICA DE TEHUACAN REPORTE TARJETA DE ADQUISICION DE DATOS USB/LABVIEW PIC 18F4550 TSU. HENOC SALINAS JUAREZ 28/10/2012 Diseño y construcción de una tarjeta de adquisición de datos por USB monitoreada y controlada con LABVIEW.

Transcript of 111421330 Tarjeta de Adquisicion de Datos Usb

Page 1: 111421330 Tarjeta de Adquisicion de Datos Usb

UNIVERSIDAD TECNOLOGICA DE TEHUACAN

REPORTE TARJETA DE ADQUISICION DE

DATOS USB/LABVIEW PIC 18F4550

TSU. HENOC SALINAS JUAREZ

28/10/2012

Diseño y construcción de una tarjeta de adquisición de datos por USB monitoreada y controlada con LABVIEW.

Page 2: 111421330 Tarjeta de Adquisicion de Datos Usb

INTRODUCCION

La adquisición de datos (DAQ) es el proceso de medir con una PC un

fenómeno eléctrico o físico como voltaje, corriente, temperatura, presión o

sonido. Un sistema DAQ consiste de sensores, hardware de medidas DAQ y

una PC con software programable. Comparados con los sistemas de medidas

tradicionales, los sistemas DAQ basados en PC aprovechan la potencia del

procesamiento, la productividad, la visualización y las habilidades de

conectividad de las PCs estándares en la industria proporcionando una

solución de medidas más potente, flexible y rentable.

PARTES DE UN SISTEMA DAQ

DISPOSITIVO DAQ

El hardware DAQ actúa como la interfaz entre una PC y señales del mundo exterior.

Funciona principalmente como un dispositivo que digitaliza señales analógicas

entrantes para que una PC pueda interpretarlas. Los tres componentes clave de un

dispositivo DAQ usado para medir una señal son el circuito de acondicionamiento de

señales, convertidor analógico-digital (ADC) y un bus de PC. Varios dispositivos DAQ

incluyen otras funciones para automatizar sistemas de medidas y procesos. Por

ejemplo, los convertidores digitales-analógicos (DACs) envían señales analógicas, las

líneas de E/S digital reciben y envían señales digitales y los

contadores/temporizadores cuentan y generan pulsos digitales

Page 3: 111421330 Tarjeta de Adquisicion de Datos Usb

DESCRIPCION DE TARJETA

El diseño de esta tarjeta consta de 8

entradas digitales, 4 entradas

analógicas y 8 salidas digitales y

una salida PWM.

Utiliza la librería mpusbapi.dll,

proporcionada por Microchip con el

controlador PicUSB.

Se realiza un programa en labview

con las librerías picusb_read y

picusb_write, quienes son las que

controlan la librería mpusbapi.dll.

Cambio o actualizacion del firmware

del pic con la utilizacion del

BOOTLOADER USB proporcionado

por microchip.

Page 4: 111421330 Tarjeta de Adquisicion de Datos Usb

EL PIC 18F4550

Es un microcontrolador programable con 32Kbytes de memoria flash de programa y 2kbytes

de SRAM de propósito general. Cuenta con 13 entradas de A / D y 18 de propósito general de

E / S.

Para la construcción de la tarjeta DAQ se uitilza el puerto B como salidas y el

puerto D como entradas, las entradas analógicas se configuraron en el puerto

A en los pines RA0,RA1,RA2 y RA3.

Utiliza un cristal de 12 MHz y dos capacitores de 22pF para la oscilación de

funcionamiento.

Page 5: 111421330 Tarjeta de Adquisicion de Datos Usb

EL FIRMWARE

#device pic18f4550 #include <18F4550.h> #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,CPUDIV1,VREGEN #use delay(clock=48000000) // Cristal de 12MHz #use rs232(baud=9600, parity=N, xmit=PIN_C6, rcv=PIN_C7, bits=8) // Configuración del puerto RS232 // ========================================================================= // Definiciones para la librería dinámica CCS. Para la configuración dinámica // hay que definir algunos valores. Están explicados en usb.h // ========================================================================= #define USB_HID_DEVICE FALSE // Deshabilitamos el uso de las directivas HID #define USB_EP1_TX_ENABLE USB_ENABLE_BULK // Activa EP1(EndPoint1) para las transferencias IN Bulk/Interrupt #define USB_EP1_RX_ENABLE USB_ENABLE_BULK // Activa EP1(EndPoint1) para las transferencias OUT Bulk/Interrupt #define USB_EP1_TX_SIZE 4 // Tamaño reservado para el Buffer Tx EndPoint1 #define USB_EP1_RX_SIZE 3 // Tamaño reservado para el Buffer Rx EndPoint1 #include <pic18_usb.h> // Microchip PIC18Fxx5x Hardware para el CCS PIC USB Driver #include <PicUSB.h> // Configuración del USB y los descriptores para este dispositivo #include <usb.c> // Handles usb ,tokens y descriptores //MONITOREO DE ESTADO #DEFINE ESTADO PIN_C0 //SALIDAS POR EL PUERTO B #define SALIDAB OUTPUT_B #define ENTRADA INPUT_D //MODO PWM #define PWW PIN_C1 // PORTC.0 Pulso PWW //CONTROL DE SALIDAS #define LED_ON output_high // Salida en alto #define LED_OFF output_low // Salida en bajo #define CAMBIA_LED output_toggle // Conmuta salida #define PULSO_OFF output_low // Salida en bajo #define PULSO_ON output_high // Salida en alto //datos de salida de la pc #define modo recibe[0] // Byte que indica el modo de operación #define param1 recibe[1] // Primer parámetro recibdo #define param2 recibe[2] // Segundo parámetro recibdo //entradas del pic analogicas y digitales #define entrada_0 envia[0] // Byte a envíar en las entradas #define entrada_1 envia[1] // Byte a envíar en las entradas #define entrada_2 envia[2] // Byte a envíar en las entradas #define entrada_3 envia[3] // Byte a envíar en las entradas //MODOS DE OPERACION #define SALIDAS 1 // Modo de encender leds #define ENTRADAS 2 // Modo de leer las entradas

Page 6: 111421330 Tarjeta de Adquisicion de Datos Usb

#define ANALOGICAS 3 // Modo de leer las entradas analogicas #define CONTROLPWW 4 // Modo de asignar el valor de PWW void main(void) // Función Principal int8 recibe[3]; // Declaramos la variable recibe de 3 bytes int8 envia[4]; // Declaramos la variable envía de 4 bytes int8 valorPWW=0; // Valor del pulso PWW int8 i; // Indice del bucle PWW set_tris_b(0x00); set_tris_d(0xFF); // puerto b salidas y puerto d entradas setup_adc_ports(AN0_TO_AN3); // Asigna el conversor A/D setup_adc(ADC_CLOCK_INTERNAL); // Asigna la velocidad output_d(0xff); LED_OFF(ESTADO); // ENCENDEMOS EL LED ROJO DE ESTADO Y APAGAMOS EL VERDE PULSO_OFF(PWW); // Pulso en bajo usb_init(); // Inicializamos el USB usb_task(); // Habilita el periferico usb y las interrupciones usb_wait_for_enumeration(); // Esperamos hasta que el PicUSB sea configurado por el PC LED_ON(ESTADO); // APAGAMOS EL LED ROJO DE ESTADO Y ENCENDEMOS EL VERDE while (TRUE) // Se cumple siempre (Bucle infinito) if(usb_enumerated()) // Si el PicUSB está configurado if (valorPWW!=0) // Si valorPWW no es cero if(valorPWW==0xFF) // Si es el máximo PULSO_ON(PWW); // Pulso en alto else PULSO_ON(PWW); // Pulso en alto for (i=1;i<=valorPWW;++i) // valorPWW en alto delay_us(100); // Retardo de 100us PULSO_OFF(PWW); // Pulso en bajo for (i=1;i<=(255-valorPWW);++i) // (255-valorPWW) en bajo delay_us(100); // Retardo de 100us else PULSO_OFF(PWW); // Pulso en bajo si valorPWW es cero

Page 7: 111421330 Tarjeta de Adquisicion de Datos Usb

if (usb_kbhit(1)) // Si el EndPoint de salida contiene datos del PC usb_get_packet(1, recibe, 3); // Cojemos el paquete de tamaño 3 bytes del EP1 // y lo almacenamos en la variable recibe if (modo==SALIDAS) // Modo enviar salidas SALIDAB(PARAM1); if (modo==ENTRADAS) // Modo de leer las entradas entrada_0=ENTRADA(); usb_put_packet(1,envia,1,USB_DTS_TOGGLE); // Enviamos el paquete de tamaño 1 bytes del EP1 al PC if (modo==ANALOGICAS) // Modo de leer las entradas analógicas set_adc_channel(0); // Canal A0 delay_us(10); // Retardo entrada_0 = read_adc(); // Lee el valor set_adc_channel(1); // Canal A1 delay_us(10); // Retardo entrada_1 = read_adc(); // Lee el valor set_adc_channel(2); // Canal A2 delay_us(10); // Retardo entrada_2 = read_adc(); // Lee el valor set_adc_channel(3); // Canal A3 delay_us(10); // Retardo entrada_3 = read_adc(); // Lee el valor usb_put_packet(1,envia,4,USB_DTS_TOGGLE);

// Enviamos el paquete de tamaño 4 bytes del EP1 al PC if (modo==CONTROLPWW) // Modo de control PWW valorPWW=param1; // Asignamos el valor del PWW

Page 8: 111421330 Tarjeta de Adquisicion de Datos Usb

EL CIRCUITO Y EL PCB DAQ

Lista de Componentes

1 PIC 18f4550 1 zócalo DIP 40 pines 2 Tira de pines 1 Cristal de 20 MHz 1 Conector USB tipo D 2 capacitores 22pF 3 diodos led 1 resistencia 10kΩ 1/2W 2 resistencias 220Ω 1/2W 1 placa fenólica 10x10 cm

Los archivos de ISIS y PROTEUS se anexan en el archivo comprimido ubicado

en la carpeta del reporte.

RA0/AN02

RA1/AN13

RA2/AN2/VREF-/CVREF4

RA3/AN3/VREF+5

RA4/T0CKI/C1OUT/RCV6

RA5/AN4/SS/LVDIN/C2OUT7

RA6/OSC2/CLKO14

OSC1/CLKI13

RB0/AN12/INT0/FLT0/SDI/SDA33

RB1/AN10/INT1/SCK/SCL34

RB2/AN8/INT2/VMO35

RB3/AN9/CCP2/VPO36

RB4/AN11/KBI0/CSSPP37

RB5/KBI1/PGM38

RB6/KBI2/PGC39

RB7/KBI3/PGD40

RC0/T1OSO/T1CKI15

RC1/T1OSI/CCP2/UOE16

RC2/CCP1/P1A17

VUSB18

RC4/D-/VM23

RC5/D+/VP24

RC6/TX/CK25

RC7/RX/DT/SDO26

RD0/SPP019

RD1/SPP120

RD2/SPP221

RD3/SPP322

RD4/SPP427

RD5/SPP5/P1B28

RD6/SPP6/P1C29

RD7/SPP7/P1D30

RE0/AN5/CK1SPP8

RE1/AN6/CK2SPP9

RE2/AN7/OESPP10

RE3/MCLR/VPP1

U1

PIC18F4550

VCC

D+

D-

GND

J1

AU-Y1007-R

X120 Mhz

C1

22p

C2

22p

C31n

INAN1

INAN2

INAN3

INAN4

OUTD1

OUTD2

OUTD3

OUTD4

OUTD5

OUTD6

OUTD7

OUTD8

OSC2

OSC1

OSC2

OSC1

D-

D+

D-

D+

ESTADO

D1LED-GREEN

D2LED-RED

R1330R

R2330R

ES

TA

DO

ES

TA

DO

R3

10KR

IND1

IND2

IND3

IND4

IND5

IND6

IND7

IND8

1

2

3

4

5

6

7

8

SALIDAS

TBLOCK-I8

1

2

3

4

5

6

7

8

ENTRADAS

TBLOCK-I8

1

2

POWER

TBLOCK-I2

INAN1

INAN2

INAN3

INAN4

C42200u

R4

220R

D3

LED-GREEN

OUTD1

OUTD2

OUTD3

OUTD4

OUTD5

OUTD6

OUTD7

OUTD8

IND1

IND2

IND3

IND4

IND5

IND6

IND7

IND8

INAN5

INAN6

INAN7

INAN8

1

2

3

4

5

6

7

8

ANALOGICAS

TBLOCK-I8

INAN5

INAN6

INAN7

INAN8

JP1JUMPER2

12345

ICSPCONN-SIL5

OU

TD

8

OU

TD

7

OU

TD

6

MC

LR

MCLR

1

2

3

4

ALIMENTACION

TBLOCK-I4

Page 9: 111421330 Tarjeta de Adquisicion de Datos Usb

LAS LIBRERÍAS PICUSB_READ Y PICUSB_WRITE

Read_usb

VID_PID= Identificador del dispositivo ReceiveData= Datos recibidos desde el PIC. ExpectedReceiveLength= Largo de datos esperados SendDelay= Tiempo de pausa entre datos recibidos.

write usb

VID_PID= Identificador del dispositivo SendData= Datos enviados al PIC. SendLenght= Largo de datos enviados. SendDelay= Tiempo de pausa entre datos enviados.

Page 10: 111421330 Tarjeta de Adquisicion de Datos Usb

EL PROGRAMA DE LABVIEW PANEL FRONTAL

DIAGRAMA DE BLOQUES

Page 11: 111421330 Tarjeta de Adquisicion de Datos Usb

SELECCIONA EL MODO DE OPERACIÓN

CONTROLA LAS SALIDAS

MUESTRA LAS ENTRADAS

DIGITALES

MUESTRA LAS ENTRADAS ANALOGICAS

CONTROLA PWM