Algunos proyectos avanzados con microcontroladores PIC

#81
Primero que nada muy buena la informacion!! Queria preguntar si alguien pudo hacer la aplicacion para VB .net.
Tengo descargados otros ejemplos y cuando trato de compilar hay distintos tipos de errores. No se bien como hacer la aplicacion con la libreria que mencionan. La otra duda es que hacer con aquellos archivos que dicen que son los driver (aquellos que son .h , .inf, etc)

Tengo Win 7 de 64 bits, VB express 2010, CCS y PIC 18f2550

Tambien tengo problemas con el reconocimiento del dispositivo, intente desde panel de control pero no hay caso.

Desde ya muchas gracias, saludos desde argentina
 
#82
la tarjeta que tengo es la de pinguino hace un tiempo la hice funcionar y todo bien. he hecho ya una segunda placa con las mismas caracteristicas y con un pic 18f4550 nuevo . y sigue igual =( en si todo funciona las entradas analogicas las entradas digitales las salidas digitales tambien pero con ese problema de voltaje =( ... alguna idea que pueda ser ? mis dos tarjetas sufren el mismo problema ..
adjunto el modelo de hardware
 

Adjuntos

Última edición:
#84
probe con la info publicada el dia 28 y ahora esta funcionando bien =) muchas gracias ... son pocas lineas de interfaz pero andando al 100% ... agradecido mi estimado por la ayuda que brindas a los que nos sabemos mucho aun de usb .. gracias desde Perú
 
#85
Hola antonio, si deseas contar pulsos con el DAQ, debes ingresar una onda cuadrada por el PIN RA4.
sin embargo el contador no es tan veloz como para contar las revoluciones de un motor..

Saludos!
existe alguna manera de modificar la DAQ para poder trabajar con un encoder ... no se quiza usando un cristal de 48Mhz ... necesito usar tres encoder con la DAQ ... gracias de antemamo
 
#86
existe alguna manera de modificar la DAQ para poder trabajar con un encoder ... no se quiza usando un cristal de 48Mhz ... necesito usar tres encoder con la DAQ ... gracias de antemamo
Deberías modificar el código, el micro-controlador posee el modulo CCP ideal para trabajar con encoders. sin embargo tendrían que sacrificarse las dos salidas PWM.
 
#87
Hola Dinoelectro, he estado siguiendo este proyecto desde hace mucho tiempo, felicitaciones por tu trabajo y gracias por compartirlo con todos. me gustaría desarrollar el proyecto que contiene la transferencia de datos HID pero debido a la gran cantidad de información que has subido a los foros no se exactamente cual es el archivo que contiene el firmware de este tipo de transferencia y a cual pic pertenece si al 4550 o al 2550. estaré atento a su respuesta . muchas gracias
 
#89
Que tal dinoelectro,Muy buen proyecto!!
estoy realizandolo tambien pero con el modo HID solo que veo que el SubVI es el que tiene la configuracion para leer las entradas analogicas ,sin tu SubVI el proyecto no anda,podrias dar un ejemplo de como se haria la ultima adaptacion al 18F4550 por medio del sofware en labview
Gracias un Saludo.
 
#90
hola ivan, el subvi que publique es cortesía de mariano nicolau y es útil para interfaces bulk transfer únicamente.

para trabajar en modo HID, primeramente tendrás que modificar el programa en el PIC, me imagino que eso ya lo habrás echo, luego deberías tener el NI-VISA instalado en tu computador, ejecutar el asistente para crear un driver compatible con tu dispositivo.
 
Última edición:
#91
Que tal Dinoelectro, Gracias por contestar,Y es verdad el codigo para el modo HID cambia ,pero relativamente es Nada,solo en la configuración Y Gracias a sus grandes aportaciones ya tengo tambien al 100 el mio.
Les Agradezco,Saludos.
 
#92
Hola dinoelectro

estoy construyendo tu proyecto, y veo que en el pbc que se encuentra en el pdf pinguino40 solamente hay 4 capacitores, hace falta el capacitor C4 del regulador 7805 que se muestra en el esquemático, podrías ayudarme con esa duda?
 
#94
gracias por responder dinoelectro, hasta ahora trabajo con el pic18f4550 y con el lenguaje C para programar microcontroladores y la verdad me ha costado. por ahora estoy tratando de interpretar los archivos que subiste en el rar "6.Sistema de Adquisicion de datos Bulk Transfer" en el compilador c ccs. y me doy cuenta que el el codigo daqBULK18F4550.c llama a un fichero para la comunicacion con el pc , en este caso llama al fichero daqBulk.h ..... ahora como yo quiero es hacer una comunicación HID (por la facilidad del plug&play) creo que ese fichero no es el que necesito pues en una linea del codigo dice " #DEFINE USB_HID_DEVICE FALSE " . por otra parte en el rar que subiste tambien hay otro fichero que se llama " daqDescriptor.h " pero este no es llamado por el codigo c. ademas que los dos archivos .h que he mencionado tienen diferentes PID y VID .... como ves tengo las ideas revueltas, ojala puedas ayudarme explicandome cual es la manera correcta de utilizar este codigo y cuales ficheros utilizar para compilar el pic y realizar la comunicacipin HID. de nuevo te agradezco por tu ayuda y disponibilidad para ayudarnos
 
#95
cambiar
#DEFINE USB_HID_DEVICE FALSE "
por
#DEFINE USB_HID_DEVICE TRUE "

y listo... si te vota errores el compilador, ve a C:\...PICC libraries y busca los archivos que te faltan.. luego copia y pega esos archivos en la misma carpeta donde estas guardando tu programa.

saludos!
 
#96
Hola Dinoelectro, soy José Luis nuevo en esta comunidad. Estoy empezando con labview y que mejor cosa que tratar con datos reales mediante un DAQ y viendo ejemplos de otros que ya saben. Como tengo dos tarjetas pinguino con 18f2550 me decidí a probar tu proyecto, pero no tengo una versión actualizada de labview. ¿Podrías hacer el favor de exportar el proyecto que hiciste para el 18F2550 a labview 8.5 (me temo que versiones mas modernas del programa no correrán bien en mi ordenador)?

Enhorabuena por tu proyecto y un saludo desde España
 
#98
cambiar
#DEFINE USB_HID_DEVICE FALSE "
por
#DEFINE USB_HID_DEVICE TRUE "

y listo... si te vota errores el compilador, ve a C:\...PICC libraries y busca los archivos que te faltan.. luego copia y pega esos archivos en la misma carpeta donde estas guardando tu programa.

saludos!

gracias por responder dinoelectro, efectivamente modifiqué el archivo daqBulk.h
cambié el PID por 0x0010 y el VID por 0x04D8 y cambié las lineas de

#DEFINE USB_HID_DEVICE FALSE "
por
#DEFINE USB_HID_DEVICE TRUE "

pero al compilar me aparecieron una serie de errores que al parecer dicen que hay un conflicto con el fichero usb.c pero no entiendo que es exactamente. de nuevo te pido ayuda para solucionar esto y seguir desarrollando tu proyecto

adjunto dos imagenes de lo que me pasa al compilar en ccs , estoy trabajando con el pi18f4550 y la version de ccs que tengo en 4.057

gracias dinoelectro
 

Adjuntos

#99
Gracias por tu interés dinoelectro (ya me imaginaba que podría estar protegido el subVi por lo que he podido leer en un post del forero Mariano Nicolau que hacía referencia a que el SubVi pertenecía a un trabajo suyo). Voy a actualizar Labview aunque me vaya más lento y probaré tu gran trabajo.

Ssaludos ...
 
hola jhonathan sata .. intenta con este codigo:

Código:
#include <18f4550.h>
#fuses HS,NOWDT
#use delay(clock=20000000)
#define USB_CONFIG_HID_TX_SIZE   10
#define USB_CONFIG_HID_RX_SIZE   3
#include <pic18_usb.h> 
#include <usb_desc_hid.h>
#include <usb.c>  
void main(void){
   int8 i;
   int8 out_data[USB_CONFIG_HID_TX_SIZE];
   int8 in_data[USB_CONFIG_HID_RX_SIZE];
   usb_init_cs();
   set_tris_a(255);
   set_tris_b(255);
   set_tris_c(0);
   set_tris_d(0);
   setup_adc_ports(ALL_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);
   set_adc_channel(0);
   setup_timer_2(T2_DIV_BY_4,127,1);
   setup_ccp1(CCP_PWM);
   setup_ccp2(CCP_PWM);
   setup_timer_0 (RTCC_EXT_H_TO_L);
   memset(in_data, 0x00, USB_CONFIG_HID_RX_SIZE);
   memset(out_data, 0x00, USB_CONFIG_HID_TX_SIZE);
   while (TRUE){
      usb_task();
      if (usb_enumerated()){
      for(i=0;i<8;i++){
      set_adc_channel(i);
      out_data[i]=read_adc();
      }
      out_data[8]= input_b();
      out_data[9]= get_timer0();   
      if (usb_put_packet(1, out_data, USB_CONFIG_HID_TX_SIZE, USB_DTS_TOGGLE)){}
      if (usb_kbhit(TRUE)){
            usb_get_packet(1, in_data, USB_CONFIG_HID_RX_SIZE);
            set_pwm1_duty(in_data[0]);
            set_pwm2_duty(in_data[1]);
            output_d(in_data[2]);            
         }
      }
   }
}
 
Arriba