Mostrando las entradas con la etiqueta 18f4550. Mostrar todas las entradas
Mostrando las entradas con la etiqueta 18f4550. Mostrar todas las entradas

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

domingo, 19 de agosto de 2012

DAQ con pic 18f4550 + Labview


DAQ con pic 18f4550 + Labview

Amigos, ahora les quiero compartir un proyecto fabuloso que encontré para los que comienzan con el aprendizaje y pruebas en labview y pics.

Este proyecto es una tarjeta de adquisicion de datos también conocida como DAQ la cual hizo uno de nuestros amigos de foros de electrónica dinoelectro y que quiero compartir

DAQ 18F4550 + Labview