Sie sind auf Seite 1von 18

UNIVERSIDAD NACIONAL SAN ANTONIO ABAD DEL CUSCO

FACULTAD DE CIENCIAS QUMICAS, FSICAS Y MATEMTICAS


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 LEDA PIN_C2
#define LEDV PIN_C6
#define LEDR PIN_C7


#define LED_ON output_high
#define LED_OFF output_low

#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 );
}

//temperatura /= 5;
resultado=temperatura;
usb_put_packet(1, envia, 1, USB_DTS_TOGGLE);

}

if (modo == 1) // Modo_Led
{
if (param1 == 0)
{
LED_OFF(LEDV); LED_OFF(LEDR);
} //apagamos los leds


if (param1 == 1)
{
LED_ON(LEDV);
} //encendemos led verde
if (param1 == 2)
{
LED_OFF(LEDV);
} //apagamos led verde
if (param1 == 3)
{
LED_ON(LEDR);
} //encendemos led rojo
if (param1 == 4)
{
LED_OFF(LEDR);
} //encendemos led azul
}

}
}
}
}
//==========================================================================/
//==========================================================================



Paso 2 : Armamos el circuito en el protoboard



1
2
3
4
6
5
7


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
}

private void leds_off_Click_1(object sender, EventArgs e)
{
usbapi.LedPIC(0x00); //codigo para apagar los leds
}
private void MOSTRAR_LDR_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
timer1.Start();
timer1.Enabled = true;
}

private void salir_Click(object sender, EventArgs e)
{
this.Close();


}

public void salir()
{ }
private void secuencial_Click(object sender, EventArgs e)
{
Timer t =new Timer();
// t.Interval=5000;
t.Enabled=true;
int p = 300;
// temptxt.Text = "inicio";
while (t.Enabled==true&&p>0)
{
if (t.Enabled==true)
{
//temptxt.Text = "OSCURO";

usbapi.LedPIC(0x01);
t.Interval = 50000;
t.Enabled = true;

}
usbapi.LedPIC(0x02);
if (t.Enabled==true)
{
//temptxt.Text = "CLARO";
usbapi.LedPIC(0x03);
t.Interval = 50000;
t.Enabled = true;


}
usbapi.LedPIC(0x04);

p--;
}
usbapi.LedPIC(0x00);
t.Enabled = false;
}

private void btnSALIR_Click(object sender, EventArgs e)
{
this.Close();
}

private void label1_Click(object sender, EventArgs e)
{

}



PASO 5 .- funcionamiento del circuito
Conectamos el circuito a la laptop y hacemos ejecutar el programa diseado en c Sharp



Hacemos clip en leds verde



Prende el leds verde

Cuando seleccionamos secuencial

Leds verde


Se prende simultneamente los leds

Leds Verde
Leds Rojo

Das könnte Ihnen auch gefallen