miércoles, 25 de mayo de 2011

PRESENTACION

Esta guia esta dirigida para todos aquellos interesados en realizar laboratorios de robotica, especialmente a los alumnos que están cursando electiva profesional IV. y teoría de control.
 En el desarrollo académico del ingeniero de sistemas, debe cursar y aprobar varias materias, una de ellas es  electiva profesional IV, cuyo objetivo es Dar a conocer a los alumnos los fundamentos teóricos y prácticos referente al estudio y aplicación de la robotica.

LENGUAJES DE PROGRAMACION


Puede Seleccionar MPLAB o PICC para Programar el pic, es desicion del Programador

MPLAB: Es una herramienta para escribir y desarrollar código en lenguaje ensamblador para los microcontroladores PIC. MPLAB incorpora todas las herramientas necesarias para la realización de cualquier proyecto, ya que además de un editor de textos cuenta con un simulador en el que se puede ejecutar el código paso a paso para ver así su evolución y el estado en el que se encuentran sus registros en cada momento.

link de descarga  de Mplab.

videotutorial de programacion en Mplab

PICC Es una herramienta para escribir y desarrollar código en lenguaje de alto nivel, basado en C, integrando todas los complementos necesario para realizar un proyecto.

link de descarga  de Pic C compiler

videotutorial de programacion en picC

PROGRAMAS NECESARIOS

PROTEUS:Es una compilación de programas de diseño y simulación electrónica, desarrollado por Labcenter Electronics que consta de los dos programas principales: Ares e Isis, y los módulos VSM y Electra.
link de descarga

JAVA Y JCREATOR: Es un entorno de desarrollo integrado (IDE) para programación en lenguaje Java  en entorno Windows. Existe dos versiones de este programa, una es comercial (JCreator PRO), y tiene algunos complementos mas que la version gratuita (JCreator LE), este actua como mascara sobre el JDK.

link de descarga 

RECOMENDACIONES


  • cuando se trabaja en java el puerto USB, se debe descargar una libreria llamada "jpicusb" lo cual sera de gran ayuda y le permitira que el programa le funcione corrrectamente. 
link de descarga
http://sourceforge.net/projects/jpicusb/
  • para que el circuito sea detectado por el puerto usb y el computador pueda leer y enviar informacion se debe descargar e instalar algunos drivers.
link de descarga 

COMPONENTES ELECTRÓNICOS



Estos los elementos eléctricos y electrónicos que se necesitan para el laboratorio a desarrollar

CIRCUITO ELECTRICO

Circuito Electrico en Proteus


Esta imagen muestra la simulacion de Proteus, se insertan todos los componentes en el plano, como el puerto, el microcontrolador, los cristales, condensadores y demas que necesitemos, aqui podemos ejecutar para simular el funcionamiento.



CODIGO PIC-C

CÓDIGO  PICC del microcontrolador



#include "C:\Users\ALFRED\Desktop\LAB3\display.h"
#use delay(clock=48000000)
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#define USB_HID_DEVICE     FALSE   //deshabilitamos el uso de las directivas HID
#define USB_EP1_TX_ENABLE  USB_ENABLE_BULK  
#define USB_EP1_RX_ENABLE  USB_ENABLE_BULK   
#define USB_EP1_TX_SIZE    32                 //tamaño para la tx del buffer endpoint 1
#define USB_EP1_RX_SIZE    32                   //tamaño para la rx del buffer endpoint 1


#include <pic18_usb.h> //Microchip PIC18Fxx5x Hardware layer for CCS's PIC USB driver
#include "header.h"       //Configuración del USB y los descriptores para este dispositivo
#include <usb.c>       //handles usb setup tokens and get descriptor reports

#byte puerto_b = 06

const int8 Lenbuf=32;
int8 recbuf[Lenbuf];
void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_spi(FALSE);
   setup_wdt(WDT_OFF);
   setup_timer_0(RTCC_INTERNAL);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   setup_oscillator(False);

   // TODO: USER CODE!!
   set_tris_b (0x00);
  
   delay_ms(500);
   usb_init();
   usb_task();
   usb_wait_for_enumeration();
   enable_interrupts(global);
   output_bit (pin_b0,0);
   output_bit (pin_b1,0);
   output_bit (pin_b2,0);
   output_bit (pin_b3,0);
   output_bit (pin_b4,0);
   output_bit (pin_b5,0);
   output_bit (pin_b6,0);
   output_bit (pin_b7,1);
   while(true){
      if(usb_kbhit(1)){
         usb_get_packet(1, recbuf, Lenbuf);
        
         if(recbuf[0]==0){
            output_bit (pin_b0,1);
            output_bit (pin_b1,1);
            output_bit (pin_b2,1);
            output_bit (pin_b3,1);
            output_bit (pin_b4,1);
            output_bit (pin_b5,1);
            output_bit (pin_b6,0);
         }
         if(recbuf[0]==1){
            output_bit (pin_b0,0);
            output_bit (pin_b1,1);
            output_bit (pin_b2,1);
            output_bit (pin_b3,0);
            output_bit (pin_b4,0);
            output_bit (pin_b5,0);
            output_bit (pin_b6,0);
         }
         if(recbuf[0]==2){
            output_bit (pin_b0,1);
            output_bit (pin_b1,1);
            output_bit (pin_b2,0);
            output_bit (pin_b3,1);
            output_bit (pin_b4,1);
            output_bit (pin_b5,0);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==3){
            output_bit (pin_b0,1);
            output_bit (pin_b1,1);
            output_bit (pin_b2,1);
            output_bit (pin_b3,1);
            output_bit (pin_b4,0);
            output_bit (pin_b5,0);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==4){
            output_bit (pin_b0,0);
            output_bit (pin_b1,1);
            output_bit (pin_b2,1);
            output_bit (pin_b3,0);
            output_bit (pin_b4,0);
            output_bit (pin_b5,1);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==5){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,1);
            output_bit (pin_b3,1);
            output_bit (pin_b4,0);
            output_bit (pin_b5,1);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==6){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,1);
            output_bit (pin_b3,1);
            output_bit (pin_b4,1);
            output_bit (pin_b5,1);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==7){
               output_bit (pin_b0,1);
               output_bit (pin_b1,1);
               output_bit (pin_b2,1);
               output_bit (pin_b3,0);
               output_bit (pin_b4,0);
               output_bit (pin_b5,0);
               output_bit (pin_b6,0);
         }
         if(recbuf[0]==8){
            output_bit (pin_b0,1);
            output_bit (pin_b1,1);
            output_bit (pin_b2,1);
            output_bit (pin_b3,1);
            output_bit (pin_b4,1);
            output_bit (pin_b5,1);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==9){
            output_bit (pin_b0,1);
            output_bit (pin_b1,1);
            output_bit (pin_b2,1);
            output_bit (pin_b3,1);
            output_bit (pin_b4,0);
            output_bit (pin_b5,1);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==65||recbuf[0]==97){
            output_bit (pin_b0,1);
            output_bit (pin_b1,1);
            output_bit (pin_b2,1);
            output_bit (pin_b3,0);
            output_bit (pin_b4,1);
            output_bit (pin_b5,1);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==66||recbuf[0]==98){
            output_bit (pin_b0,0);
            output_bit (pin_b1,0);
            output_bit (pin_b2,1);
            output_bit (pin_b3,1);
            output_bit (pin_b4,1);
            output_bit (pin_b5,1);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==67||recbuf[0]==99){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,0);
            output_bit (pin_b3,1);
            output_bit (pin_b4,1);
            output_bit (pin_b5,1);
            output_bit (pin_b6,0);
         }
         if(recbuf[0]==68||recbuf[0]==100){
            output_bit (pin_b0,0);
            output_bit (pin_b1,1);
            output_bit (pin_b2,1);
            output_bit (pin_b3,1);
            output_bit (pin_b4,1);
            output_bit (pin_b5,0);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==69||recbuf[0]==101){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,0);
            output_bit (pin_b3,1);
            output_bit (pin_b4,1);
            output_bit (pin_b5,1);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==70||recbuf[0]==102){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,0);
            output_bit (pin_b3,0);
            output_bit (pin_b4,1);
            output_bit (pin_b5,1);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==71||recbuf[0]==103){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,1);
            output_bit (pin_b3,1);
            output_bit (pin_b4,1);
            output_bit (pin_b5,1);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==72||recbuf[0]==104){
            output_bit (pin_b0,0);
            output_bit (pin_b1,1);
            output_bit (pin_b2,1);
            output_bit (pin_b3,0);
            output_bit (pin_b4,1);
            output_bit (pin_b5,1);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==73||recbuf[0]==105){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,0);
            output_bit (pin_b3,1);
            output_bit (pin_b4,0);
            output_bit (pin_b5,0);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==74||recbuf[0]==106){
            output_bit (pin_b0,0);
            output_bit (pin_b1,1);
            output_bit (pin_b2,1);
            output_bit (pin_b3,1);
            output_bit (pin_b4,0);
            output_bit (pin_b5,0);
            output_bit (pin_b6,0);
         }
         if(recbuf[0]==75||recbuf[0]==107){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,0);
            output_bit (pin_b3,1);
            output_bit (pin_b4,0);
            output_bit (pin_b5,0);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==76||recbuf[0]==108){
            output_bit (pin_b0,0);
            output_bit (pin_b1,0);
            output_bit (pin_b2,0);
            output_bit (pin_b3,1);
            output_bit (pin_b4,1);
            output_bit (pin_b5,1);
            output_bit (pin_b6,0);
         }
         if(recbuf[0]==77||recbuf[0]==109){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,0);
            output_bit (pin_b3,1);
            output_bit (pin_b4,0);
            output_bit (pin_b5,0);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==78||recbuf[0]==110){
            output_bit (pin_b0,0);
            output_bit (pin_b1,0);
            output_bit (pin_b2,1);
            output_bit (pin_b3,0);
            output_bit (pin_b4,1);
            output_bit (pin_b5,0);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==79||recbuf[0]==111){
            output_bit (pin_b0,0);
            output_bit (pin_b1,0);
            output_bit (pin_b2,1);
            output_bit (pin_b3,1);
            output_bit (pin_b4,1);
            output_bit (pin_b5,0);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==80||recbuf[0]==112){
            output_bit (pin_b0,1);
            output_bit (pin_b1,1);
            output_bit (pin_b2,0);
            output_bit (pin_b3,0);
            output_bit (pin_b4,1);
            output_bit (pin_b5,1);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==81||recbuf[0]==113){
            output_bit (pin_b0,1);
            output_bit (pin_b1,1);
            output_bit (pin_b2,1);
            output_bit (pin_b3,0);
            output_bit (pin_b4,0);
            output_bit (pin_b5,1);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==82||recbuf[0]==114){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,0);
            output_bit (pin_b3,1);
            output_bit (pin_b4,0);
            output_bit (pin_b5,0);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==83||recbuf[0]==115){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,1);
            output_bit (pin_b3,1);
            output_bit (pin_b4,0);
            output_bit (pin_b5,1);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==84||recbuf[0]==116){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,0);
            output_bit (pin_b3,1);
            output_bit (pin_b4,0);
            output_bit (pin_b5,0);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==85||recbuf[0]==117){
            output_bit (pin_b0,0);
            output_bit (pin_b1,1);
            output_bit (pin_b2,1);
            output_bit (pin_b3,1);
            output_bit (pin_b4,1);
            output_bit (pin_b5,1);
            output_bit (pin_b6,0);
         }
         if(recbuf[0]==86||recbuf[0]==118){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,0);
            output_bit (pin_b3,1);
            output_bit (pin_b4,0);
            output_bit (pin_b5,0);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==87||recbuf[0]==119){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,0);
            output_bit (pin_b3,1);
            output_bit (pin_b4,0);
            output_bit (pin_b5,0);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==88||recbuf[0]==120){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,0);
            output_bit (pin_b3,1);
            output_bit (pin_b4,0);
            output_bit (pin_b5,0);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==89||recbuf[0]==121){
            output_bit (pin_b0,0);
            output_bit (pin_b1,1);
            output_bit (pin_b2,1);
            output_bit (pin_b3,0);
            output_bit (pin_b4,0);
            output_bit (pin_b5,1);
            output_bit (pin_b6,1);
         }
         if(recbuf[0]==90||recbuf[0]==122){
            output_bit (pin_b0,1);
            output_bit (pin_b1,0);
            output_bit (pin_b2,0);
            output_bit (pin_b3,1);
            output_bit (pin_b4,0);
            output_bit (pin_b5,0);
            output_bit (pin_b6,1);
         }
      }
   } 
}