Usb y labVIEW , entre otros

Quisiera abrir este espacio para compartir experiencias en el desarrollo de proyectos utilizando este software desarrollado por national instruments , y conocer mas sobre este programa que tantas cosas facilita .

pues bien para comenzar el foro me gustaría comentarles de otro foro muy bueno que se encargo de explicarnos paso a paso la comunicación USB.

https://www.forosdeelectronica.com/f24/control-dispositivos-traves-modulo-usb-pic18f2550-17458/

agradecimientos de paso a jonathan moyano por sus colaboraciones , les recomendaria que para entender lo de como funciona en si el protocolo leerse el anterior para entender conceptos ya en la aplicación con labview
 
bueno comenzemos como lo nombre anteriormente vamos a comunicarnos por el protocolo usb y si leyeron la pagina anterior la primer forma de comunicarse sera usb en modo cdc que sera a grandes rasgos la emulacion del puerto serial , ahora que necesitamos :
1.sotfware labview ( yo estoy utilizando ni labview 8.6 )
2.microcontrolador 18f4550( compatible con usb )
3.proteus para probar los circuitos si se desea .
4:compillador ccs picc
el resto se ira mostrando

le dejo algunas paginas para comprendan muchos terminos necesarios entre ellos ( vendor ,id , usb modo bulk, mpbuspapi , usb modo cdc , etc

https://www.forosdeelectronica.com/f24/control-dispositivos-traves-modulo-usb-pic18f2550-17458/
http://picmania.garcia-cuervo.com/USB_0_Desencadenado.php
http://www.muchotrasto.com/USB2Microchip.php

en que consiste el proyecto : el protocolo usb se puede trabajar en modo cdc ( Communication Device Class) que no es mas que utilizar nuestro micro junto con unas librerias proporcionadas por picc en donde podemos hacerle creer al PC , que lo que esta conectado no es un micro si no es un puerto serial y se logra esto el programa en labview consistira en hacer una sencilla comunicacion serial aunque en realidad sea ( usb ) , bueno necesitamos el driver suministrado por microchip para editarle el vendor y el id en primera instancia y algunos otros como nombre del dispositivo aca continuacion solo las lineas que se editan

Código:
 .....
[SourceDisksNames]

[DeviceList] 
%DESCRIPTION%=DriverInstall, USB\VID_04D8&PID_0001 ///   se edita : vendor : 04D8 y el id 0001 " yo quise el 0001"[/b]

;------------------------------------------------------------------------------
;  Windows 2000/XP Sections
;------------------------------------------------------------------------------
Código:
.......
;------------------------------------------------------------------------------
;  String Definitions
;------------------------------------------------------------------------------

[Strings] 
MCHP="jonathan Technology Inc." // modificable
MFGNAME="jonathan Technology Inc."// modificable
DESCRIPTION="DISPOSITIVO USB_CDC"   // nombre 
SERVICE="driver de emulacion de puerto serial// modificable"
y finalmente el driver es este .
 

Adjuntos

  • driver_para_usb_cdc_622.rar
    850 bytes · Visitas: 1,524
entones teniendo nuestro driver ya instalado ahora sef¡guimos con el micro y en esencia lo primero que queremos hacer en labview es enviarle datos al micro y que el lo muestre por un puerto entonces el codigo es este
Código:
#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
#include ".\libreria\usb_cdc.h"
#rom int 0xf00000={1,2,3,4}

void main() {
   int8 x;
   set_tris_b(0x00);
   output_b(0x00);
   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.
            if(usb_cdc_kbhit()){ // En espera de nuevos caracteres en el buffer de recepción.
                x=usb_cdc_getc();
                output_b(x);
              }
             }
       }while (TRUE); // bucle infinito.
}

pero recuerden que hay que personalizar nuestro dispositivo hay entran las librerias de picc una es la usb_cdc.h que son para que funcione y otra llamada picUSB_CDC.h que si es la que editamos para personalizar el dispositivo y se modifican las siguientes lineas
Código:
        0x10,0x01, //usb version in bcd  ==2,3
         0x02, //class code. 0x02=Communication Device Class ==4
         0x00, //subclass code ==5
         0x00, //protocol code ==6
         USB_MAX_EP0_PACKET_LENGTH, //max packet size for endpoint 0. (SLOW SPEED SPECIFIES 8) ==7

        [b] 08,0x04,           //vendor id (0x04D8 is Microchip)
         0x01,0x00,           //product id yo quise el 0001      nota : es el mismo vendor y id de el driver que [/b]modificaron 

// RR2 cambiado para       0x61,0x04, //vendor id (0x04D8 is Microchip, or is it 0x0461 ?)  ==8,9
// compatibilidad con .inf 0x33,0x00, //product id   ==10,11
// de Microchip
importante el vendor y el id

Código:
         8, //length of string index
         USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
         'C',0,
         'D',0,                                                                                        // modificable 
         'C',0,[/b]
   //string 2 --> nombre del dispositivo
         22, //length of string index
         USB_DESC_STRING_TYPE, //descriptor type 0x03 (STRING)
         '*',0,
         'J',0,
         'O',0,
         'N',0,
         'A',0,
         'T',0,                                                                                           // modificable 
         'H',0,
         'A',0,
         'N',0,
         '*',0
};
con esto ya nuestro dispositivo seria reconocido ( una vez conectado buscar en el asistente de harware nuevo encontrado el driver ) si todo esta bien en administrador de dispositivos el puetos debe su dispositivo a cual se le asigno un COM
 
Ahora si entra.. labview como hasta el momento todo esta bien ahora es una sencilla comuncicacon serie la cual con ocho botones manejarenos los 8 bits que enviaremos despues el micro los reconoce y los saca por el puerto b entones aca les dejo la carpeta donde esta todo lo necesario y por supuesto el VI de labview antes les envio la demostracion :

YouTube - usb y labview

y el ejemplo esta aqui

version para 8.2 para que le funcione a la mayoria
 

Adjuntos

  • enviar_datos_cdc_191.rar
    173.8 KB · Visitas: 2,402
hola aqui molestando otra vez la verda que tu aporte esta de lujo pero lamentablemente tengo solo el lab view 8.5 seria posible que mejores la calidad de tu imagen del VI para tratar de probarlo en mi programa ya que no tengo el mismo que tu....mira la verdad en la u estoy aprendiendo un poco de el programa me parece super interesante pero como que estos son mis primeros pininos en el programa y me mandaron a investigar como hacer la comunicacion de el usb con lab view seria mucho molestarte que me explicaras o me brindes un poquin de información en cuanto a como preparas a lab view para escritura y lectura del puerto segun lei es emulando el puerto serial.
que tomas en cuenta para hacer el VI y como instalas las demas cosas para que tu proyecto sirva muchas gracias por la respuesta de antemano
 
me podrias explicar como relaciono el driver con el lab view...por favor la verdad me interesa mucho esta chevere el programa ayudame para poder sacarlo por favor
 
claro patico21 haber dejemos labview paro lo ultimo ....... para que funcione este codigo que necesitas :1) el driver
2) el programa del microcontrolador con las librerias que son proporcionadas por ccs picc
3) el ultimas el programa en labview .

para probar el programa es sencillo no se si ya hayas hecho alguna comunicacion serial donde configuramos baudios , paridad .. etc .... todo se resume en que si logramos hacer que nuestro pc reconozca que nuestro micro es un puerto serie podemos tratar la comunicacion como cualquier comunicacion serial

ahora si como funciona el ejemplo ....
dentro del la carpeta del ejemplo esta una que es el codigo del microcontrolador alli esta el cogigo fuente , el .hex y la carpeta donde estan las librerias que es donde tu personalizarias tu dispositivo y estan las librerias para que la comunicacion funcione ; pero si lo que quieres es probar el ejemplo dejas todo como esta y cargas el .hex ( lo puedes cargar directamente al micro o puedes simularlo en proteus perfectamente ) ; teniendo esto ya hecho en el dispositivo procederemos a conectarlo al pc , cuando hagas esto el pc lo reconocera pero abrira el asistente de nuevo harware encontrado alli entra el driver alli escogeras la opcion que dice instalar desde una lista o ubicacion especifica , despues escoges incluir esta ubicacion en la busqueda y alli buscas la carpeta donde quedo el driver que fue la primera descarga que se hizo "tambien se modifica" si lo deseas personalizar, si no lo puedes dejar tal como esta para probar y listo si todo esta bien cuando finalice el asistente para probar te diriges a administrador de dispositivos y debe haber un puerto serial ( com ) que lo ha reconocido tu pc ...... pero sera en realidad nuestro micro
 
ahora si entra labview como te decia , es facil y es hacer una comunicacion serial los vi basico estan en instrument I/O // para solucionar lo de que no te corre el programa en labview 8.5 vamos hacer un experimento y me cuentas si te funciono voy a cargar solamente el runtime de labview 8.6 tu lo instalas y en teoria deberia correr el programa si no me cuentas aca esta el link .



sin embargo te explico un poco el programa te decia que tiene tres vi basicos uno que configura el puerto serial , otro que escribe o envia datos a nuestro dispositivo y otro que cierra el protocolo , en cuanto a lo de los botones simplemente colocas los botones utilizas un build array es decir metes esto en un array ( vector ) de booleanos despues usas Boolean Array To Numbe que pasa el array a numero despues build array de nuevo este es otro array pero este solo tiene una posicion y es numerico despues Byte Array To String que pasa el numero a su respectivo codigo ascil para que pueda ser enviado y listo este es el dato que se envia

espero que te sirva cualquier cosa me cuentas ya sea por el foro o por mensajes
 
Moyano Jonathan dijo:
Jokelnice, te felicito por tus avances en labview, cualquier cosa que pueda ayudarte me decís.

gracias jonathan moyano ...... pero si te fijas es basicamente todo lo que tu has desarrollado lo unico que hice fue manejarlo con labview que es lo mio , y te adelanto que ya estoy manejando tambien muchas cosas de hecho mi proyecto de grado esta muy avanzado en la comunicacion usb yo, ya te habia comentado que yo habia hecho la comunicacion por bulk pero que no habia entendido algunos conceptos y cualquier cosa o cualquier duda te preguntaria muchas gracias ah y muy pronto mas ejemplos de labview logicamente
 
muchas gracias pana la verdad que me anima mucho comnezar a adelantar esto para lo de la u y por curiosidad dejame hacer lo que me dices y te cuento como me fue
 
master . lo mejor seria utilizar la mayor cantiad de bits por usb , ya que por paralelo ya es obsoleto

gran aporte lo leere con calma para introducirme al tema
 
que tal amigos ya estoy preparando un ejemplo con la comunicacion us en modo bulk transfer y utilizando la mpbuspapi de microchip dentro de poco lo posteo
 
bueno para que funcione los siguientes ejemplos necesitamos , saber varios conceptos hay que tener en claro que el ejemplo anterior es basicamente emular un puerto serial y en labview se trabajaba como eso como una ( comunicacion serial ) ahora lo que se va a realizar es llamar una libreria que hizo microchip para que los dispositivos que soportaban el protocolo usb funcionaran basicamente esta la bien llamada mpbuspapi.dll que se consigue en la pagina de microchip ( que es simplemente una libreria con funciones (abrir conecion , escribir , leer , cerrar etc.) logicamente hablando del protocolo usb ) lo primero es conocer dichas funciones ::

adjunto la expliacion de cada una de las funciones
 

Adjuntos

  • fundiones_de_la_libreria_usb_110.pdf
    103.3 KB · Visitas: 1,504
para la demostracion del ejemplo solo vamos a utilizar una en especifico y dejare alos lectores que con su ingenio y sabiduria sepan utilizar las demas para aprobechar todo el protocolo usb , a continuacion la explicaion de la funcion :
la funcion que voy a utilizar se llama MPUSBGETDEVICECOUNT ( ) ;

MPUSBGETDEVICECOUNT(PVID_PID)
: Devuelve el número de dispositivo con VID_PID asignado.
pVID_PID: Input: cadena de caracteres del número de identificación asignado.
MPUSBGetDeviceCount(vid_pid)


que quiere decir esto : como sabemos el vendor es el identificativo del fabricante , y el id el del producto , lo que debemos suponer que un fabricante debe tener varios productos es decir el mismo vendor pero con diferentes id .
para eso es que sirve esta funcion debuelve el numero de dispositivos o mejor devuelve un numero que equivale a cada producto que este conectado al pc es decir un mismo vendor y los diferentes vi de aca un ejemplo

Si hay tres dispositivos con los siguientes PID_VID conectados:
Dispositivo tipo 0, VID 0x04d8, PID 0x0001
Dispositivo tipo 1, VID 0x04d8, PID 0x0002
Dispositivo tipo 2, VID 0x04d8, PID 0x0003

entonces la funcion nos devolvera un 3 ya que hay tres dispositivos
teniendo claro esto solo nos falta explicar como integramnos esa libreria en labview
 
y ahora toda la teoria :::


Llibrerias compartidas e labview


en e menu conectivity/libraries & executables se encuentra el nodo call library funtion node que permite enlazar funciones de librerias compartidas .
al colocar el nodo en el diagrama de bloques y cinfigurarlo aparece la pantalla :
 

Adjuntos

  • 123_150.jpg
    123_150.jpg
    24.1 KB · Visitas: 1,746
Atrás
Arriba