0 Bewertungen0% fanden dieses Dokument nützlich (0 Abstimmungen)
87 Ansichten18 Seiten
Este informe describe un laboratorio de robótica para encender y apagar un LED desde una computadora usando un puerto USB. Se detalla la lista de materiales y su costo, el diagrama del circuito PIC18F4550, los pasos para construir el circuito en un protoboard, y el código en C y C# para controlar el LED a través de la interfaz USB. El objetivo es controlar el encendido y apagado de un LED rojo y verde mediante comandos enviados desde un programa en una computadora a un microcontrolador PIC conectado vía USB
Este informe describe un laboratorio de robótica para encender y apagar un LED desde una computadora usando un puerto USB. Se detalla la lista de materiales y su costo, el diagrama del circuito PIC18F4550, los pasos para construir el circuito en un protoboard, y el código en C y C# para controlar el LED a través de la interfaz USB. El objetivo es controlar el encendido y apagado de un LED rojo y verde mediante comandos enviados desde un programa en una computadora a un microcontrolador PIC conectado vía USB
Este informe describe un laboratorio de robótica para encender y apagar un LED desde una computadora usando un puerto USB. Se detalla la lista de materiales y su costo, el diagrama del circuito PIC18F4550, los pasos para construir el circuito en un protoboard, y el código en C y C# para controlar el LED a través de la interfaz USB. El objetivo es controlar el encendido y apagado de un LED rojo y verde mediante comandos enviados desde un programa en una computadora a un microcontrolador PIC conectado vía USB
CARRERA PROFESIONAL DE INGENIERIA INFORMTICA Y DE SISTEMAS
DOCENTE: ING. JOS MAURO PILLCO PRESENTADO POR: Vicente Mendoza Alexander Cuellar Vizcarra Jean Carlo Uchiri Quispe Jesus Abraham Montesionos Quispichu Edver
CUSCO 2014
INFORME DE LABORATORIO DE ROBTICA: ENCENDER Y APAGAR UN LED DESDE LA COMPUTADORA USANDO EL PUERTO USB
INFORME DE LABORATORIO
1) Tabla de elementos y costos
Nro. elementos ELEMENTOS COSTO(S/) 1 PIC 18F4550 27.00 1 PROTOBOARD 15.00 1 CRISTAL 1.50 5 RESISTENCIAS 1.00 1 CABLE USB 4.00 1 CONDENSADOR 0.5 3 LED 0.9 3 CABLES DE 2M CADA UNO 0.6 TOTAL 50.5
2) DIAGRAMA DE PIC18f4550
Pic 18f4550 inicio
Pic 18f4550 despus de quemar
VISTA PREVIA DEL PROYECTO
Para la construccin del proyecto PASO 1: Qumanos el pic 18f4550 con el programa PICkit 2 v2.61 y el quemador. Para quemar el pic necesitamos el archivo .c con las siguientes lneas de cdigo hechas en el programa PIC C COMPILER
Cdigo diseado en PIC C COMPILER #include <18F4550.h> #device adc=8 //Usa resolucin de 8 bits #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN #use delay(clock = 48 MHZ )//Treloj=48MHz ///////////////////////////////////////////////////////////////////////////// // // CCS Library dynamic defines. For dynamic configuration of the CCS Library // for your application several defines need to be made. See the comments // at usb.h for more information // ///////////////////////////////////////////////////////////////////////////// #define USB_HID_DEVICE FALSE //deshabilitamos el uso de las directivas HID #define USB_EP1_TX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for IN bulk/interrupt transfers #define USB_EP1_RX_ENABLE USB_ENABLE_BULK //turn on EP1(EndPoint1) for OUT bulk/interrupt transfers #define USB_EP1_TX_SIZE 1 //size to allocate for the tx endpoint 2 buffer #define USB_EP1_RX_SIZE 3 //size to allocate for the rx endpoint 4 buffer ///////////////////////////////////////////////////////////////////////////// //
// If you are using a USB connection sense pin, define it here. If you are // not using connection sense, comment out this line. Without connection // sense you will not know if the device gets disconnected. // (connection sense should look like this: // 100k // VBUS-----+----/\/\/\/\/\----- (I/O PIN ON PIC) // | // +----/\/\/\/\/\-----GND // 100k // (where VBUS is pin1 of the USB connector) // ///////////////////////////////////////////////////////////////////////////// //#define USB_CON_SENSE_PIN PIN_B2 //CCS 18F4550 development kit has optional conection sense pin
///////////////////////////////////////////////////////////////////////////// // // Include the CCS USB Libraries. See the comments at the top of these // files for more information // ///////////////////////////////////////////////////////////////////////////// #include <pic18_usb.h> //Microchip PIC18Fxx5x Hardware layer for CCS's PIC USB driver #include <USBbulk.h> //Configuracin del USB y los descriptores para este dispositivo #include <usb.c> //handles usb setup tokens and get descriptor reports
///////////////////////////////////////////////////////////////////////////// // // Al conectar el PicUSB al PC encendemos el Led Rojo hasta que el dispositivo // halla sido configurado por el PC, en ese momento encederemos el Led Verde. // Esperaremos hasta que se reciba un paquete proveniente del PC. Comprobaremos // el primer byte del paquete recibido para comprobar si queremos entrar en el // modo Suma, donde se realizar una suma de dos operandos, que corresponderan // con los dos bytes restantes del paquete recibido; una vez realizada la suma // enviaremos el paquete con el resultado de vuelta al PC. Si entramos en el // modo Led comprobaremos el segundo byte del paquete recibido para comprobar // si deberemos apagar los leds, encender el verder o el rojo. // /////////////////////////////////////////////////////////////////////////////
#use fast_io(B)
#byte port_b = 0XF81
int8 recibe[3]; //declaramos variables, era:int8 recibe[3]; int8 envia[1]; long i; long temperatura;
#define modo recibe[0] // Primer byte #define param1 recibe[1] // Segundo Byte #define param2 recibe[2] // Tercer byte #define resultado envia[0] void main(void) { set_tris_b( 0 ); port_b = 0;
delay_ms( 250 );
setup_adc(adc_clock_internal);//oscilador interno para la conversion setup_adc_ports(an0);//configura el pin a0 como entrada analogica set_adc_channel(0); // seleccionamos canal analogico para lectura
LED_OFF(LEDA); LED_OFF(LEDV); //encendemos led rojo LED_ON(LEDR);
usb_init(); //inicializamos el USB usb_task(); //habilita periferico usb e interrupciones usb_wait_for_enumeration(); //esperamos hasta que el PicUSB sea configurado por el host
LED_OFF(LEDA); LED_OFF(LEDR); LED_ON(LEDV); //encendemos led verde
while (TRUE) { if(usb_enumerated()) //si el PicUSB est configurado { if (usb_kbhit(1)) //si el endpoint de salida contiene datos del host { usb_get_packet(1, recibe, 3); //cojemos el paquete del host(1), y almacenamos en recibe,el tamao de los datos(4) 4bytes del EP1
if (modo == 0) // Modo_Suma { resultado = param1*param2; //hacemos la suma usb_put_packet(1, envia, 1, USB_DTS_TOGGLE); //enviamos el paquete de tamao 1byte del EP1 al PC
}
if (modo == 2) // Modo_Resta {
}
if (modo == 3) { for(temperatura = 0, i = 1; i <= 10; i++) // La actualizacion de la temperatura se realiza cada 2 segundo { temperatura = read_adc(); delay_ms( 50 ); }
1) Pic 18f4550.- Un micro controlador puede ser considerado como una computadora, pues posee una ALU (Unidad de Aritmtica y Lgica), registros, buses y unidad de control, es decir tiene una CPU (Unidad Central de Procesamiento). 2) Cristal.-Funciona como oscilador de frecuencias para el pic 18f4550 3) Condensador.- le suministra un voltaje de referencia al pic 18f4550 4) Resistencias.- dan soporte a los leds (para que resista la corriente) 5) Fuentes.- solo para la simulacin en el circuito armado toda la energa ser suministrada por el puerto USB 6) Leds.- indicadores de voltaje y programacin para el pic 18f455 7) Conexin usb.- medio de contacto entre la pc y el circuito Pas 3: Para que reconozca la computadora el circuito necesitamos de algunas libreras: Instalamos estas libreras picusb, USBbulk
Despus pegamos todas las libreras en system 32 en el disco C
Paso 4: Realizar el programa Es necesario realizar la interfaz que permita realizar la funcin de prender y apagar el LED, el siguiente programa est desarrollado en C#, y es como sigue:
CODIGO FUENTE EN C SHARP using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Diagnostics; //Clase para abrir pgina web
namespace PicUSB { public partial class PicUSB : Form { PicUSBAPI usbapi = new PicUSBAPI();
public PicUSB() { InitializeComponent(); }
private void led_verde_Click(object sender, EventArgs e) { usbapi.LedPIC(0x01); //codigo para encender led verde
}
private void led_verde_off_Click(object sender, EventArgs e) { usbapi.LedPIC(0x02); //codigo para apagar led verde }
private void led_rojo_Click(object sender, EventArgs e) { usbapi.LedPIC(0x03); //codigo para encender led rojo }
private void led_rojo_off_Click(object sender, EventArgs e) { usbapi.LedPIC(0x04); //codigo para apagar led rojo }