Usb y labVIEW , entre otros

Hola adrianjpc,

He estado mirando este blog, esta interesante pero me parece poco profesional y etico de tu parte no mensionar al verdadero autor de este trabajo que es el amigo J1M (http://www.hobbypic), todo los codigos del pic y el labview el los ha desarrollado y lo unico que tu has hecho es copiarlos, talvez tienes el merito de haber modificado las linea de codigo de la entrada analogica, pero realmente te mececes el diploma de reconocimineto? cual es tu aporte?
Ademas la comunicacion del Pic con el labview es muy lenta, no es de alta velocidad como tu afirmas, como se esto? por que ya tambien baje los mismos archivos que tu de la pagina de J1M.

Hola amigo yo no sabia eso pero ya el enlace de ese proyecto ya no sirve alguien tiene los archivos de adrianjpc que hizo de la DAQ si alguien fuera tan amable de subirlos se lo agradeceria mucho.
 
hola, una disculpa por no haber leido todo el tema primero pero quisiera saber si tambien funciona para windows 7 o si tiene q ver q sea de 32 o 64 bits, aun soy algo nuevo en esto de programacion by te agradeceria me pudieras ayudar gracias ....
 
BUENAS AMIGOS ALGUIEN TIENE EL DIAGRAMA DE ESTA TARJETA PARA PODER COMENSAR APRACTICAR CON LABVIEW LES AGRADESERIA UN MIL SI ME PUDIERAN PASAR EL CODIGO DEL PIC Y DRIVER,.VIs PARA LABVIEW 2009
 
no colega simplemente crangel17 pregunto el tamaño del endpoint en otras palabras en realidad cuantos bytes podriamos enviar o recibir practicamente al mismo tiempo ( sabemos que no es al mismo tiempo si no que es muy rapido ) ese se muestra aca :
Código:
#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    128               //size to allocate for the tx endpoint 1 buffer
#define USB_EP1_RX_SIZE    128

lo que quice decir es que hasta aca llego la prueba y se envia perfectamente

saludos espero que haya quedado claro .......

hola jokelnice
tengo una duda, e probado :cry:

#define USB_EP1_TX_SIZE 128

en winxp y funciona perfecto pero cuando lo pruebo en win7 no reconoce el usb del pic, e hecho pruebas y me reconoce el puerto usb solo si programa el pic así

#define USB_EP1_TX_SIZE 64

me interesa usarlo a 128;)

no cambio la programación solo la parte de transmisión

gracias :aplauso::apreton:
 
Hola jokenilnice, queria preguntarte si esos drivers en XP, pudieran ejecutarse en wondows 7 ultimate, supongo que esta ultima version del windows 7 no se ve limitada como la Home o Home Premium. Estoy trabajando con serial pero me gustaria migrar a USB. Gracias por tu interes.
 
Moyano Jonathan:
Hola buen día, mi nombre es Gaby soy estudiante de ingenieria en electrononica.

Oye solo que tenemos muchas dudas yo y mi compañera de proyecto, acerca de la comunicación serial por medio de Labview y un pic 18f2550

Mira tenemos un programa que realizamos en MikroC para la comunicación utilizando un cable serial. La comunicación fue un éxito utilizando la herramienta UART que nos ofrece el MikroC, el problema aquí es que el profesor nos pidió que hiciramos el mismo programa pero ahora implementando Labview.

No somos muy buenas utilizando el Labview pero lo intentamos. Hicimos una interfaz en labview 8.6, sabemos que si envia y recibe el datos ya que conectamos el cable serial e hicimos un puente en los pines 2 y 3, con esto observamos que la comunicacion serial con los Visa si funciono, pero, al conectar nuestra placa con el pic no hace lo que queremos, se supone que tenemos programado el pic para que encienda un led medio segundo cuando haya comunicacion serial. Sabemos que si le llega algo por que enciende el led pero no sigue con el proceso que queremos que haga.

No sabemos si el problema esta en el codigo de mikroc o en la
interfaz del labview.
Estamos mas inclinadas al hecho de que sea el código en mikroc, debido a que no estamos muy seguras de la comparación que se hace con la ventana de mikroc donde antes realizábamos las practicas y que hemos cambiado por la interfaz creada por nosotras en labview, que en caso del serial seria en mikroc TOOLS/USART Terminal y con eso ya aparece esta ventana que reemplazamos, he de ahí donde sale la parte del código que creemos que reemplazar porque en el archivo de .h , nosotros lo llamamos UART1_Read() o en UART1_Write(), entonces para utilizar la interfaz del labview ¿cual seria?

Crees que podrias ayudarnos, te paso el código que tengo en mikroc , para que lo revises y nos digas si puedes ayudarnos.

De antemano muchisimas gracias por tu tiempo. :cry:

Codigo MikroC
char uart_rd;

void main() {

ADCON1 |= 0x0F; //Configura AN pins as digital
CMCON |= 7; // Disable comparators
TRISB=0;
TRISC=0;
UART1_Init(9600); // Initialize UART module at 19200 bps
Delay_ms(100); // Wait for UART module to stabilize

UART1_Write_Text("GRACIAS");
PORTC.B0=0;
PORTC.B1=0;
PORTC.B2=0;

while (1) { // Endless loop
if (UART1_Data_Ready()) { // If data is received,
uart_rd = UART1_Read(); // read the received data,

PORTB.B1=1;
Delay_ms(500);
PORTB.B1=0;



while (uart_rd == 'E' ) {
if (uart_rd =='E')
{
PORTC.B0=1;
PORTC.B1=0;
PORTC.B2=0;
Delay_ms(750);

PORTC.B0=0;
PORTC.B1=0;
PORTC.B2=0;
Delay_ms(750);

PORTC.B0=1;
PORTC.B1=0;
PORTC.B2=0;
Delay_ms(750);

PORTC.B0=1;
PORTC.B1=1;
PORTC.B2=0;
Delay_ms(2000);

PORTC.B0=1;
PORTC.B1=0;
PORTC.B2=0;
Delay_ms(750);

PORTC.B0=1;
PORTC.B1=0;
PORTC.B2=1;
Delay_ms(1000);



UART1_Write(uart_rd);

uart_rd = UART1_Read();

if (uart_rd =='M') {

PORTC.B0=0;
PORTC.B1=0;
PORTC.B2=0;

break;
}

}
}
UART1_Write(uart_rd); // and send data via UART
}
}
}
 
Hola, creo que tenemos las mismas dudas. Pues estoy por implementar pero hay varias paginas sobre como implementar la lectura de serial. Creo que deberias leer un poco mas sobre el uso del VISA (el modulo de comunicacion que tiene LabVIEW). Me ha funcionado y estoy programando con Pro Basic Pro, es mas fácil y voy a pasarme a USB. Saludos y buena suerte
 
Hola muchas gracias, pero ya lo resolvimos.
El problema estaba en la configuracion del COM en Labview, es que era necesario agregarlo para poder utilizarlo. Esto lo hicimos primero abriendo la interfaz en Labview y seleccionamos Tools/Measurement & Automation Explorer.../ Devices, ya ahí seleccionamos el COM con el que se va a trabajar y se selecciona Save. Con esto ya se puede utilizar la comunicación serial sin ningun problema...

De todas maneras gracias por tu respuesta :)
 
Saludos a la comunidad, deseo plantear un problema que tengo con Labview. Se trata de un proyecto, en el que simulo un proceso determinado. Lo que deseo es que a mi proceso pueda accederse desde internet y pueda ser controlado desde ahí, he seguido los pasos que se indica en la ayuda para usar el web publishimg tool.

Los pasos que seguí fueron:

1. Activé el web server en Options Web Server: Configuration
2. En el Web Publishing tool, escogí la Opción Embedded, y seleccioné el VI que deseo publicar.

Sin embargo cuando pongo la opción preview in browser, la página que se me abre en el explorador me saca el siguiente mensaje:

Your internet address (pc01.cpe.satnet.net) is not allowed to retrieve documents from this server.

Deseaba saber si alguien con experiencia en el manejo de Labview puede ayudarme a resolver este problema, saludos.
 
hola jokelnice me parece que este un buen foro ya que aporta mucho a uno como estudiante

quisiera saber si me puedes echar una mano con un programa en labview el cual adquiera el voltaje de ra0
del pic18f4550 apartir de un potenciometro conectado a dicho pin (de 0 a 5v).

la comunicacion mediante la clase cdc ya la logre y envio los datos utilizando hyperterminal (funciona bien :) aunq ps como ya saben en la hyperterminal los datos van llenando la pantalla jajajajaj)

lo que quiero es que en el labview cuando yo varie el pot se refleje inmediatamente el valor en un indicador. trate de hacer el programa pero ps me fallo jejejej ya configure el VISA serial, instale el driver visa etc de hecho si existe comunicacion pero no se como tatar los datos de forma adecuada para lograr
lo que quiero.

este es el programa del pic para un cristal de 4 MHz a la entrada:

// se adquiere una señal analogica via USB CDC la cual se visualiza en labview

#include <18F4550.h> // Definición de registros internos.
#device ADC=10 //eleccion de la resolucion del ADC en este caso 10 bits
#fuses XTPLL,PLL1,CPUDIV1,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,VREGEN,NOPBADEN
#use delay(clock=48000000) // Frecuencia máxima de trabajo.

#include "usb_cdc.h" // Descripción de funciones del USB.
#include "usb_desc_cdc.h" // Descriptores del dispositivo USB.

float resolucion=5.0/1023.0; //se declara la variable resolucion la cual almacenara el valor de la resolucion del adc
float voltaje=0;


void main() {

setup_adc(adc_clock_internal); //frecuencia a la cual se van a tomar la muestras en este caso la misma del reloj
setup_adc_ports(AN0); // RA0 se configura como entrada analogica
set_adc_channel(0); //Selección del canal 0 (RA0)

usb_cdc_init(); // Configuramos al puerto virtual.
usb_init(); // Inicializamos el stack USB.
while(!usb_cdc_connected()) {} // espera a detectar una transmisión de la PC (Set_Line_Coding).

do{


usb_task();

if (usb_enumerated()){ // Espera a que el dispositivo sea enumerado por el host.


delay_ms(1); //estabilizacion del adc
voltaje=resolucion*read_adc();//se guarda el valor leido en el canal 0
delay_ms(1); //estabilizacion del adc
printf(usb_cdc_putc,"%f",voltaje);



}

tambien adjunto el vi realizado

de antemano gracias

este es el vi lo habia olvidado

por cierto hay alguna instruccion en especifico para adquirir una cadena de caracteres provenientes de

la pc como en la comunicacion res232 que gets(); ?¿ :S jejjej disculpen pero soy nuevo en esto
 

Adjuntos

  • voltaje.rar
    10.6 KB · Visitas: 126
Última edición:
Hola Memowwe, no entendi la respuesta, por favor podrias aclararme si eso de 1024 es de bits o que podria ser?. Lo que entiendo es que podria con un amplificador operacional amplificar la señal que genera el electrodo. Pero hasta ahi nada mas. Gracias y por favor podrias aclarar mi duda.

Beuno ya te lo explico megatron mas abajo, para amplificar la señal con opamp, te recomiendo un INA128, INA129,(de instrumentacion) etc, o los amplificadores operaciones tipo opa27 de bajo ruido, son muy buenos , en fin hay un monton, yo te recomiendo estos porque los he usado
 
Hola a todos

Estoy trabajando en un proyecto parecido a los acá expuestos, le estoy trabajando a las salidas digitales con el pic18f4550 y labview, por medio de la librería MPUSBAPI.DLL el inconveniente que tengo es que la respuesta no es en tiempo real se demora de 1 a 2 seg adjunto diagrama labview para su colaboración.
 

Adjuntos

  • labview.rar
    38.7 KB · Visitas: 135
  • labviewsae.JPG
    labviewsae.JPG
    65.3 KB · Visitas: 117
Hola a todos

Estoy trabajando en un proyecto parecido a los acá expuestos, le estoy trabajando a las salidas digitales con el pic18f4550 y labview, por medio de la librería MPUSBAPI.DLL el inconveniente que tengo es que la respuesta no es en tiempo real se demora de 1 a 2 seg adjunto diagrama labview para su colaboración.

bueno ami tambien me paso, es Labview, es muy lento, ya que con otros lenguajes responde mas rapido.
Suerte ¡¡
 
este es el codigo que tengo para trabajar el puerto d coom salida y el b como entrada las salidas me funcionan bien, pero las entradas la verdad nose por que no he podido crear el programa en labview espro una ayuda

#include <18F4550.h>
#fuses HSPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)



#define USB_HID_DEVICE FALSE
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK
#define USB_EP1_TX_SIZE 4
#define USB_EP1_RX_SIZE 3

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




#define modo recibe[0]
#define param recibe[1]
#define entrada_0 envia[0]
#define entrada_1 envia[1]
#define entrada_2 envia[2]
#define entrada_3 envia[3]
#define entrada_4 envia[4]
#define entrada_5 envia[5]
#define entrada_6 envia[6]
#define entrada_7 envia[7]


void temp (void);
int8 recibe[2];
int8 envia[4];



void main(void)
{
set_tris_d(0x00);
output_d(0x00);
set_tris_b(0xff)
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
disable_interrupts(GLOBAL); //deshabilitamos todas las interrupciones


usb_init(); //inicializamos el USB
usb_task(); //habilita periferico usb e interrupciones
usb_wait_for_enumeration(); //esperamos hasta que el PicUSB sea configurado



LED_OFF(LEDR); //Apagamos el led Rojo
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, 2); //Cachamos el paquete de tamaño 2bytes del EP1 y


if (modo==1)
{
output_d(param); //El dato param recibido lo mandamos al puerto o registro d
entrada_0=input(PIN_B0);
entrada_1=input(PIN_B1);
entrada_2=input(PIN_B2);
entrada_3=input(PIN_B3);
entrada_4=input(PIN_B4);
entrada_5=input(PIN_B5);
entrada_6=input(PIN_B6);
entrada_7=input(PIN_B7);

usb_put_packet(1,envia,4,USB_DTS_TOGGLE);

}
 
aqui etsa tu codigo, si requieres el proyecto completo dime,, se reciben 2 bytes, el byte
[0], es el 'comando', para poner en el puerto B, lo que biene en el byte [1], en total, d ela pc envias 2 bytes, un comando y otro que es data,
la aplicacion en labview, esta algo en desorden, porque yano la he usado, pero es simple, te adjunto todo hasta el driver, si te falta algo avisa, mero arriba en pdata, de izquierda a derecha, en el byte 0, pon un 1,, quedara asi, (0 y el otro campo en 1) esto representa que ne el byte 0 pongas un 1, que es comando para que el micro ponga en el puerto B,lo que recibe en el byte 1, ahora modifica podata asi (1 XXX) donde las x son el byte a representar en puerto B. espero ser claro y que te sirva, modificarlo para entradas es muy facil

#include <main.h>
//#include <usbadc.h>
#include <pic18_usb.h>
//#define USB_CON_SENSE_PIN PIN_B2
#include <pic18_usb.h>
#include "usb_desc_scope.h" //USB Configuration and Device descriptors for this UBS device
#include <usb.c>
#include <PIC18F4550_registers.h>



void main()
{

setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
//setup_pp(PMP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);
trisb = 0x00;
int8 recibe[2]; //declaramos variables
int8 envia[3];

usb_init();
usb_task();
usb_wait_for_enumeration();

while (1)
{
if(usb_enumerated())
{
if (usb_kbhit(1)) //si el endpoint de salida contiene datos del host
{usb_get_packet(1, recibe,2);


if(recibe[0]==0x01)
{

PORTB = recibe[1]; // read_adc();
//envia[0]=ADRESL;
//envia[1]=ADRESH;

//usb_put_packet(1, envia,2, USB_DTS_TOGGLE);
}
}
}




}







//TODO: User Code

}
 

Adjuntos

  • usb 8bit digital.rar
    258.1 KB · Visitas: 158
Última edición:
Disculpen la pregunta alguien ha realizado la coneccion entre el Labview y un PLC que sea Mitsubishi les agradeceria mucho un poco de informacion me pueden dar una pista de como se debe hacer muchas gracias de antemano
 
Atrás
Arriba