lunes, 25 de febrero de 2013

Puertos bidireccionales con PIC 18F4550 + Labview


Hace tiempo me encontré con un compañero que se encontraba diseñando un control automatizado de maquinaria en una empresa a base del PIC 18F4550 y me comentaba que iba a cambiar el microprocesador por un PIC 32MX795 ya que contaba con mas puertos de entrada y salida y de los cuales necesitaria.

Yo al analizar el PIC 18F4550 encontré que era posible llevar a cabo tareas E/S con el mismo puerto haciendo unos cambios en la programación del pic y me he propuesto como proyecto desarrollar una interfaz para mi amigo.

A continuación se iré mostrando los pasos y análisis realizados para dicha tarea:

Primero es necesario conocer las características de este PIC como lo muestro en las tablas a continuación:





Una vez conociendo las características procedemos con la programación del PIC:



unsigned char readbuff[64] absolute 0x500;   // Buffers should be in USB RAM, please consult datasheet
unsigned char writebuff[64] absolute 0x540;

char cnt;
char cnt2;
char pr;
char pr2;

void interrupt(){
   USB_Interrupt_Proc();                   // USB servicing is done inside the interrupt
}

void main(void){
  ADCON1 |= 0x0F;                         // Configure all ports with analog function as digital
  CMCON  |= 7;                            // Disable comparators
  TRISA=0;
  PORTA=0;
  for(cnt=0;cnt<64;cnt++)
   writebuff[0]=PORTA;

  HID_Enable(&readbuff,&writebuff);       // Enable HID communication

  while(1){
    while(!HID_Read())
      ;
     if  (PORTA>0){
     TRISB=255;
     PORTB=255;
   
     for(cnt=0;cnt<64;cnt++)
    writebuff[1]=PORTB;
     }
     if  (PORTA==0){
     TRISB=0;
     PORTB=0;
      for(cnt=0;cnt<64;cnt++)
     PORTB=readbuff[1];
     }
   
         if  (PORTC>0){
     TRISD=255;
     PORTD=255;

     for(cnt=0;cnt<64;cnt++)
    writebuff[1]=PORTD;
     }
     if  (PORTC==0){
     TRISD=0;
     PORTD=0;
      for(cnt=0;cnt<64;cnt++)
     PORTD=readbuff[1];
     }


    while(!HID_Write(&writebuff,64))
      ;
  }
}

Este programa lo grabamos en el pic como lo hemos venido haciendo en proyectos anteriores en los cuales hemos utilizado labview y este pic con su debido driver. Para los que apenas comienzan con este rollo les dejo el link a la explicacion para crear el driver y la inicialización de labview y pics.

Enlace

Para acabar este proyecto les dejo una imagen de la programación en labview y su interfaz.




Una vez que he terminado hemos hecho pruebas que han salido de maravilla y mi compañero ha quedado maravillado de la ayuda brindada, ahora se encuentra implementado este proyecto en el control de maquinas en la industria.

Espero que les sirva y les dejo un link para que descarguen un ejemplo del programa en labview que encontré un día navegando en internet en una pagina alemana

Archivos Labview

No hay comentarios.:

Publicar un comentario