Documentos de Académico
Documentos de Profesional
Documentos de Cultura
OBJETIVO GENERAL:
Disear e implementar una comunicacin serial para transmitir la conversin analgica digital de una seal senoidal.
OBJETIVO ESPECFICO:
1. Disear y comprobar el funcionamiento de una conversin analgica digital con resolucin mnima a 10 bits.
2. Disear y comprobar el funcionamiento de una comunicacin serial USB y como mnimo RS232 a 115 Kbps.
3. Disear una interface en Labview para el monitoreo de seales.
4. Establecer criterios tcnicos y/o conclusiones
ACTIVIDADES DESARROLLADAS
1. MARCO TERICO
Microcontrolador con mdulo USB 2.0. Soporta Low speed 1.5Mb/s y full speed 12Mb/s.
1kB de memoria de doble acceso va USB
35 pines I/O disponibles
Memoria de programa flash de 32 kB
RAM de 2048 Bytes
EEPROM de datos de 256 Bytes
Velocidad de la CPU 12 MIPS
Oscilador externo de dos modos hasta 48 MHz
Oscilador interno selecionable entre 8 frecuencias desde 31kHz hasta 8MHz
Oscilador secundario con Timer 1 de hasta 32kHz
Opciones de oscilador dual permiten que la velocidad de la CPU y del mdulo USB sean diferentes
ADC de 10 bits y 13 canales
Tecnologa nanoWatt que brinda caractersticas y funciones de bajo consumo y ahorro de energa
Voltaje de operacin 4.2V a 5.5V
4 Timer(desde Timer0 a Timer3). Uno de 8 bits y 3 de 16 bits
2 mdulos de captura/comparacin/PWM
Resolucin CS N 076-04-2016-04-20
VICERRECTORADO DOCENTE Cdigo: GUIA-PRL-001
El mdulo conversor Analgico-Digital (ADC) del pic 18F4550 dispone de 13 entradas y es capaz de medir la tensin
analgica en cada una de ellas y convertirla en un valor digital de 10bits [3].
Resolucin CS N 076-04-2016-04-20
VICERRECTORADO DOCENTE Cdigo: GUIA-PRL-001
El registro ADCON1 es el encargado de configurar las entradas como analgicas o digitales y fijar la tensin de referencia
del conversor. Para configurar todas las entradas como analgicas: ADCON1=0x0F; Para configurar RA0 y RA1 como
entradas analgicas y el resto digitales: ADCON1=0x0D; [3]
Tiempo de adquisicin
El tiempo de descarga es necesario para dar inicio a un nuevo muestreo por el canal A/D [4]
En la siguiente imagen se muestra una tabla del Tad respecto a la Fosc, esto nos indica cual debe ser el divisor de la Fosc
para respetar el Tiempo de Adquisicin y Conversin [4]
.
Fig. 3 Tabla del Tad respecto a la Fosc [4]
Resolucin CS N 076-04-2016-04-20
VICERRECTORADO DOCENTE Cdigo: GUIA-PRL-001
El USB (Bus de serie universal), como su nombre lo sugiere, se basa en una arquitectura de tipo serial. Sin embargo, es una
interfaz de entrada/salida mucho ms rpida que los puertos seriales estndar.
La arquitectura serial se utiliz para este tipo de puerto por dos razones principales:
La arquitectura serial le brinda al usuario una velocidad de reloj mucho ms alta que la interfaz paralela debido a que este
tipo de interfaz no admite frecuencias demasiado altas (en la arquitectura de alta velocidad, los bits que circulan por cada
hilo llegan con retraso y esto produce errores);
Los cables seriales resultan mucho ms econmicos que los cables paralelos.
A partir de 1995, el estndar USB se ha desarrollado para la conexin de una amplia gama de dispositivos.
1.4 LABVIEW
LabVIEW es un software de ingeniera de sistemas que requiere pruebas, medidas y control con acceso rpido a hardware e
informacin de datos [8].
El entorno de programacin de LabVIEW simplifica la integracin de hardware para aplicaciones de ingeniera, as usted
tiene una manera consistente de adquirir datos desde hardware de NI y de terceros. LabVIEW reduce la complejidad de la
programacin, as usted puede enfocarse en su problema de ingeniera. LabVIEW le permite visualizar resultados
inmediatamente con la creacin integrada de interfaces de usuario de clic-y-arrastre y visualizadores de datos integrados.
Para convertir sus datos adquiridos en resultados del negocio reales, usted puede desarrollar algoritmos para anlisis de datos
y control avanzado con IP de matemticas y procesamiento de seales o reutilizar sus propias bibliotecas desde una variedad
de herramientas. Para garantizar la compatibilidad con otras herramientas de ingeniera, LabVIEW puede interactuar o
reutilizar bibliotecas de otros software y lenguajes de fuente abierta [8].
2. DISEO Y CLCULOS:
2.2. CLCULOS
Primero hacemos los clculos necesarios para la Conversin Analgica Digital del Pic18F4550:
Resolucin CS N 076-04-2016-04-20
VICERRECTORADO DOCENTE Cdigo: GUIA-PRL-001
= 0.8
= 20
1
=
1
=
20
= 5 108
0.8 106
=
5 108
= 16
= 2.45
Frecuencia de conversin:
1
=
1
=
16
= 62500
= 62.5
Si encontramos tx para la comunicacin USB 2.0:
2.0 = 480
# = 10
# = 20
Resolucin CS N 076-04-2016-04-20
VICERRECTORADO DOCENTE Cdigo: GUIA-PRL-001
1
= #
1
= (20)
480
1
= (20)
480 106
= (20)(2.0833 109 )
= (20)(2.0833)
= 41.66
= 1
= + + +
= 0.8 + 16 + 1 + 3
= 20.8
= 2
1
= 2
1 1
=2
1 2
=
= 2
= 2(20.8)
= 41.6
1
=
1
=
41.6
= 24038
= 24.038
Resolucin CS N 076-04-2016-04-20
VICERRECTORADO DOCENTE Cdigo: GUIA-PRL-001
Luego de hacer los clculos correspondientes tenemos que esta prctica est orientada a realizar la conversin
analgico/digital y digital/analgico.
Para la primera parte comenzamos con la conversin analgica/digital de una seal por medio del PIC18F4550; para esto
utilizamos el programa MikroC; para programar esta conversin.
Como el PIC18F4550 cuenta con un conversor de 10 bits entonces al momento de hacer la conversin de analgico/digital el
PIC leer 2^10 datos es decir 1024 datos.
# = 210
# = 1024
Al realizar esto obtenemos la conversin de una seal analgica a una seal digital.
Teniendo que el valor de voltaje como 5V el cual maneja el PIC tenemos que:
= 0
= 5
=
= 5 0
= 5
Ahora encontramos el valor de voltaje por divisin:
=
#
5
=
1024
= 4.88
2.3. CODIGOS
Al ya obtener la seal digital por medio del mdulo USB conectamos el PIC con Labview.
Resolucin CS N 076-04-2016-04-20
VICERRECTORADO DOCENTE Cdigo: GUIA-PRL-001
3. RECURSOS:
Cantidad Descripcin
1 PIC 18F4550
2 Capacitores 22pF
1 Capacitores 47uF
1 Oscilador
1 Cable USB
1 Osciloscopio
1 Generador de Funciones
2 Sonda
4. BIBLIOGRAFA
[1] Salas, J., Salas, J. and perfil, V. (2017). PIC 18F4550. [online] Todoelectrodo.blogspot.com. Available at:
http://todoelectrodo.blogspot.com/2013/02/pic-18f4550.html [Accessed 27 Oct. 2017].
[2] need for bits. (2017). 1. Encender y Apagar un LED mediante un botn, PIC18F4550 ASM. [online] Available at:
https://need4bits.wordpress.com/2012/06/30/asmp01_encender_un_led_pic18f4550/ [Accessed 27 Oct. 2017].
[3] PIC 18F45XX, El mdulo ADC (Analogic Digital Converter). (2017). [ebook] Departamento de Electronica. Available
at: http://www.iesluisdelucena.es/dpp/docs/presentaciones/MPLABX_C18_El_conversor_ADC_rev041212.pdf [Accessed
27 Oct. 2017].
[4] Maker Electronico. (2017). Convertidor Anlogo Digital ADC con el PIC18F4550 - Maker Electronico. [online]
Available at: https://www.makerelectronico.com/convertidor-analogo-digital-adc-pic18f4550/ [Accessed 27 Oct. 2017].
[5] →, V. (2017). 04 Conversion de Analgico a Digital por Interrupcin. [online] Guas para principiantes. Available
at: https://unasguiasmas.wordpress.com/2014/08/29/04-conversion-de-analogico-a-digital-por-interrupcion/ [Accessed 27
Oct. 2017].
[6] Ni.com. (2017). USB-6212 - National Instruments. [online] Available at: http://www.ni.com/es-cr/support/model.usb-
6212.html [Accessed 25 Oct. 2017].
[7] Ni.com. (2017). What Is Data Acquisition? - National Instruments. [online] Available at: http://www.ni.com/data-
acquisition/what-is/esa/ [Accessed 27 Oct. 2017].
[8] Ni.com. (2017). Compre LabVIEW - National Instruments. [online] Available at: http://www.ni.com/es-
cr/shop/labview/buy-labview.html [Accessed 27 Oct. 2017].
[9] CCM. (2017). USB (Bus de serie universal). [online] Available at: http://es.ccm.net/contents/407-usb-bus-de-serie-
universal [Accessed 31 Oct. 2017].
unsigned char readbuff[64] absolute 0x500; // Buffers should be in USB RAM, please consult datasheet
unsigned char writebuff[64] absolute 0x540;
unsigned char reserved[256] absolute 0x400;
Resolucin CS N 076-04-2016-04-20
VICERRECTORADO DOCENTE Cdigo: GUIA-PRL-001
void interrupt(){
USB_Interrupt_Proc(); // USB servicing is done inside the interrupt
}
void Adc_Read_self(void)
{
unsigned char savereg1=TRISA; //Guarda el valor con el que entra el registro TRISA
unsigned char savereg3=PORTA; //Guarda el valor con el que entra el registro PORTA
unsigned char resultado[2]={0,0};
TRISA=0xFF; //Configura el puerto A como entrada
while(!HID_Write(&writebuff,64))
;
void main(void){
ADCON1=0b00001110;
CMCON = 7; // Disable comparators
TRISA = 0xFF;
Resolucin CS N 076-04-2016-04-20
VICERRECTORADO DOCENTE Cdigo: GUIA-PRL-001
while(1){
Adc_Read_self();
}
}
/* Device Descriptor */
const struct {
char bLength; // bLength - Descriptor size in bytes (12h)
char bDescriptorType; // bDescriptorType - The constant DEVICE (01h)
unsigned int bcdUSB; // bcdUSB - USB specification release number (BCD)
char bDeviceClass; // bDeviceClass - Class Code
char bDeviceSubClass; // bDeviceSubClass - Subclass code
char bDeviceProtocol; // bDeviceProtocol - Protocol code
char bMaxPacketSize0; // bMaxPacketSize0 - Maximum packet size for endpoint 0
unsigned int idVendor; // idVendor - Vendor ID
unsigned int idProduct; // idProduct - Product ID
unsigned int bcdDevice; // bcdDevice - Device release number (BCD)
char iManufacturer; // iManufacturer - Index of string descriptor for the manufacturer
char iProduct; // iProduct - Index of string descriptor for the product.
char iSerialNumber; // iSerialNumber - Index of string descriptor for the serial number.
char bNumConfigurations; // bNumConfigurations - Number of possible configurations
} device_dsc = {
0x12, // bLength
0x01, // bDescriptorType
0x0200, // bcdUSB
0x00, // bDeviceClass
Resolucin CS N 076-04-2016-04-20
VICERRECTORADO DOCENTE Cdigo: GUIA-PRL-001
0x00, // bDeviceSubClass
0x00, // bDeviceProtocol
8, // bMaxPacketSize0
USB_VENDOR_ID, // idVendor
USB_PRODUCT_ID, // idProduct
0x0001, // bcdDevice
0x01, // iManufacturer
0x02, // iProduct
0x00, // iSerialNumber
0x01 // bNumConfigurations
};
/* Configuration 1 Descriptor */
const char configDescriptor1[]= {
// Configuration Descriptor
0x09, // bLength - Descriptor size in bytes
0x02, // bDescriptorType - The constant CONFIGURATION (02h)
0x29,0x00, // wTotalLength - The number of bytes in the configuration descriptor and all of its subordinate
descriptors
1, // bNumInterfaces - Number of interfaces in the configuration
1, // bConfigurationValue - Identifier for Set Configuration and Get Configuration requests
0, // iConfiguration - Index of string descriptor for the configuration
USB_SELF_POWER, // bmAttributes - Self/bus power and remote wakeup settings
USB_MAX_POWER, // bMaxPower - Bus power required in units of 2 mA
// Interface Descriptor
0x09, // bLength - Descriptor size in bytes (09h)
0x04, // bDescriptorType - The constant Interface (04h)
0, // bInterfaceNumber - Number identifying this interface
0, // bAlternateSetting - A number that identifies a descriptor with alternate settings for this
bInterfaceNumber.
2, // bNumEndpoint - Number of endpoints supported not counting endpoint zero
0x03, // bInterfaceClass - Class code
0, // bInterfaceSubclass - Subclass code
0, // bInterfaceProtocol - Protocol code
0, // iInterface - Interface string index
// Endpoint Descriptor
Resolucin CS N 076-04-2016-04-20
VICERRECTORADO DOCENTE Cdigo: GUIA-PRL-001
// Endpoint Descriptor
0x07, // bLength - Descriptor size in bytes (07h)
0x05, // bDescriptorType - The constant Endpoint (05h)
USB_HID_EP, // bEndpointAddress - Endpoint number and direction
USB_TRANSFER_TYPE, // bmAttributes - Transfer type and supplementary information
0x40,0x00, // wMaxPacketSize - Maximum packet size supported
EP_OUT_INTERVAL // bInterval - Service interval or NAK rate
};
const struct {
char report[USB_HID_RPT_SIZE];
}hid_rpt_desc =
{
{0x06, 0x00, 0xFF, // Usage Page = 0xFF00 (Vendor Defined Page 1)
0x09, 0x01, // Usage (Vendor Usage 1)
0xA1, 0x01, // Collection (Application)
// Input report
0x19, 0x01, // Usage Minimum
0x29, 0x40, // Usage Maximum
0x15, 0x00, // Logical Minimum (data bytes in the report may have minimum value = 0x00)
0x26, 0xFF, 0x00, // Logical Maximum (data bytes in the report may have maximum value = 0x00FF = unsigned
255)
0x75, 0x08, // Report Size: 8-bit field size
0x95, HID_INPUT_REPORT_BYTES,// Report Count
0x81, 0x02, // Input (Data, Array, Abs)
// Output report
0x19, 0x01, // Usage Minimum
0x29, 0x40, // Usage Maximum
0x75, 0x08, // Report Size: 8-bit field size
0x95, HID_OUTPUT_REPORT_BYTES,// Report Count
0x91, 0x02, // Output (Data, Array, Abs)
0xC0} // End Collection
};
4,
0x03,
{0x0409}
};
void USB_Init_Desc(){
USB_config_dsc_ptr[0] = &configDescriptor1;
USB_string_dsc_ptr[0] = (const char*)&strd1;
USB_string_dsc_ptr[1] = (const char*)&strd2;
USB_string_dsc_ptr[2] = (const char*)&strd3;
}
Resolucin CS N 076-04-2016-04-20
VICERRECTORADO DOCENTE Cdigo: GUIA-PRL-001
Resolucin CS N 076-04-2016-04-20
VICERRECTORADO DOCENTE Cdigo: GUIA-PRL-001
RESULTADO(S) OBTENIDO(S):
Al realizar la prctica logramos convertir una seal analgica entregada por un generador de funciones a una seal digital, la
cual fue procesada por el PIC 18F4550, despus de esto a travs de comunicacin USB conectamos el PIC con una
aplicacin en Labview la cual permite la conversin de esta seal nuevamente de digital a analgica.
CONCLUSIONES:
Para esta prctica se calcul los tiempos necesarios para lograr el correcto funcionamiento del PIC18F4550, en los cuales
calculamos los tiempos de adquisicin, conversin, Tad, etc, del ADC con los cuales calculamos las frecuencias con las que
podamos trabajar, pero al momento de probar la prctica, nos dio el inconveniente de que no aceptaba el rango de
frecuencias calculadas, esto se debe a que la comunicacin USB nos restringe mucho respecto a la frecuencia
Resolucin CS N 076-04-2016-04-20
VICERRECTORADO DOCENTE Cdigo: GUIA-PRL-001
Resolucin CS N 076-04-2016-04-20