# Interfaz de control para PICs USB-BULK (LabVIEW - C#)



## mnicolau

En esta ocasión vamos a realizar una interfaz de control y adquisición de datos mediante puerto USB (modo "BULK Transfer") utilizando un PIC 18F2550 (puede usarse cualquier otro con función USB). A través de esta interfaz pueden realizar instrumentación virtual que les permita llevar a cabo el control de procesos externos mediante una PC, registro de datos, etc.

No voy a explicar en detalle cómo funciona la comunicación USB en modo BULK ya que hay mucho información en la web sobre el tema. Este modo se utiliza para la transmisión masiva de información, sin pérdida de datos y sin la necesidad de emular un puerto serie, como hace el modo CDC.

La idea es que puedan tener como ejemplo las distintas posibilidades de entradas y salidas (analógicas y digitales), para luego utilizar tantas como deseen en cada caso en particular. El proyecto que les voy a mostrar a modo de ejemplo presenta:


2 Entradas digitales.
1 Entrada analógica (10 bits).
2 Salidas digitales
1 Salida analógica (PWM + DAC R-C)

El esquema del mismo está incluido en el archivo adjunto y fue realizado en Proteus. Para utilizar mayor cantidad de I/O, sólo es necesario adaptar el firmware siguiendo el ejemplo dado y luego el software de acuerdo a las operaciones a realizar deseadas.

En el adjunto pueden encontrar lo siguiente:


Esquema básico del proyecto presentado
Driver
Firmware
Software LabVIEW
Software Visual Studio 2010 (C#)

El firmware está escrito en lenguaje C, mediante PICC (CCS) y para el software de control voy a dar 2 ejemplos, uno escrito en C# (Visual Studio 2010) y otro en LabVIEW. Ambos utilizan la dll “mpusbapi” para el control de las funciones del puerto (para LabVIEW se creó un Subvi específico para tal fin) y llevan a cabo las mismas tareas de leer las entradas (digital y analógica); y activar las salidas digitales, además de asignarle un valor al PWM de la salida analógica. Por otro lado, es requerido un driver para que el sistema operativo reconozca la interfaz, el cual también es provisto.

Vista del software de LabVIEW:



Vista del software de Visual Studio:



BulkUSB_MN (SubVI LabVIEW):



Interfaz ejemplo mostrada en este proyecto:



Les debo para la próxima el video del funcionamiento (no tengo la cam), todo lo posteado está probado y funcionando correctamente. Espero realicen sus propios proyectos de instrumentación virtual y comenten los resultados.

Saludos!


----------



## Rigeliano

Excelente aporte.
Sino es mucha molestia podrías guardar el archivo de labview en versiones anteriores a la 2011.


----------



## mnicolau

Rigeliano dijo:


> Excelente aporte.
> Sino es mucha molestia podrías guardar el archivo de labview en versiones anteriores a la 2011.



Hola, no hay molestia... en qué versión lo necesitás?


----------



## Rigeliano

En la 2010 o anteriores, gracias.


----------



## mnicolau

Rigeliano dijo:


> En la 2010 o anteriores, gracias.



Acá te lo adjunto para LabVIEW 2010.

Saludos


----------



## Rigeliano

Excelente gracias, ahora solo estoy esperando a que subas el vídeo


----------



## cristian76

hola mnicolau gracias por el aporte , quise simularlo pero me dio un problema estoy probando en el visual c sharp express 2010 y me sale un mensaje de error hay un problema con el usbapi , si fueras tan amable de revisarlo pero aun haci se agradece la dedicacion que le das a tus proyectos.


----------



## mnicolau

Hola Cristian, cuando abras el proyecto (el de Visual Studio), no trates de ejecutarlo y simularlo ahí mismo (a mi también me tira el error de esa manera), sino directamente compilalo ("generar solución", con F6 en Visual Studio). Luego vas a la carpeta bin/release, ahí está el .exe compilado que funciona correctamente.

Saludos


----------



## mnicolau

Desconozco todas las capacidades de Pinguino, pero creería que para un proyecto como el que proponés necesitás mayor control sobre el código. Yo programaría el 18F2550 directo con PICC (incluso podrías llegar a necesitar algunas líneas en ASM) y luego el software en el lenguaje qué desees (podría ser VB.NET, adaptando el que publiqué en C#).

Cuando vayas adelantando algo, lo subís así te damos una mano entre todos (yo no manejo VB.NET).

Saludos


----------



## cristian76

gracias por la respuesta mnicolau , estos dias obtengo los componentes y me armo la placa para probar el software , gracias .


----------



## dinoelectro

gracias mnicolau por este excelente aporte!!! gracias a ti he podido realizar mi sueño de construir una tarjeta DAQ con el PIC18F2550... el driver me fue de mucha utilidad y el firmware me sirvio de inspiracion para programar mi propio sistema..

te invito a que le des una revizada en el siguiente link

https://www.forosdeelectronica.com/showthread.php?p=672909#post672909

saludos cordiales


----------



## mnicolau

Me alegro te haya sido útil dino! gracias por comentar 

Saludos


----------



## dinoelectro

tengo otra consulta, de pronto tu sabes como podria utilizar este sistema con visual basic 2010... ya que no tengo muchos conocimientos de C#... aunque en realidad tambien sale un error en el programa que subiste y no he podido solucionarlo..

gracias otra ves mariano que estes bien..


----------



## felipe0805

MNICOLAU muchisimas gracias, estoy probando.  (Me recomendaste tu link desde mi tema, comun pic-usb).
Te aviso como me va


----------



## felipe0805

Perdón, pero se puede simular todo sin la necesidad de montarlo en la protoboard??? Ayuda please!!


----------



## dinoelectro

yo lo simule con ISS 7.8 SP2, en sistemas operativos de 64 bits tendras que utilizar ISIS 7.9


----------



## felipe0805

Perdona, yo tengo windows 7 64 bit, dices que necesito Proteus 7.9 en adelante??
Yo tengo 7.6 quizás por eso, cuando simulo el diseño en proteus no pasa absolutamente nada. El pc no me pide buscar el driver ni nada


----------



## dinoelectro

asi es felipe, la simulacion USB para 64 bits esta disponible desde proteus 7.9... puedes descargarte la version demo en la pagina de labcenter y ver los ejemplos que trae el software, luego cargas el .hex en uno de esos ejemplos y veras que funciona bien


----------



## felipe0805

en la misma pagina de labcenter sale que el driver usb del proteus para 64bit son incompatible
alguna solucion, ??
aparte de maquina virtual?¡¡


----------



## dinoelectro

ya existe el driver para win7 de 64 bits descarga la version 7.9


----------



## felipe0805

No me funciona, ya tengo el 7.9 y al simular, ni siquiera el pc trata de buscar un driver.
Parece que voy a tener q tratar con VM. Gracias de todas formas


----------



## Decgar

Hola!, cuando corro la aplicación en proteus no se me instala el controlador, y en administrador de dispositivos me pone dispositivo desconocido...Como puedo solucionar ese problema?


----------



## mnicolau

Hola Decgar, en win 64 bits NO pude hacer funcionar el driver de Proteus correctamente, me pasa lo mismo que a vos. En Win 32 bits sí lo reconoce correctamente.

PD: estoy usando Proteus 7.10

Saludos


----------



## dinoelectro

para hacer funcionar en windows 64 bits abri el archivo de ejemplo MCHP FS USB.. luego carga el hex y me funciona perfecto..


----------



## Decgar

Ya lo solucione!!...el problema era que la versión del proteus q tenía (la versión 7.8 sp2) no funcionaba bien, la cambié por la versión 7.7 sp2 y ahora anda de diez!! Muchas gracias igual por contestar!


----------



## fernandomt84

muy bueno esta! 
el SubVI BulkUSB_MN (subvi).vi lo hiciste vos ? como puedo ver el diagrama de bloques ? 
 gracias por adelantado saludos!


----------



## mnicolau

Gracias, si, es un desarrollo propio el subvi de comunicación. Por el momento no puedo mostrar el diagrama en bloques por ser parte de un trabajo. Lo que te puedo decir es que el subvi va llamando las funciones que se encuentran dentro del dll mpusbapi.

Saludos


----------



## wansi

Excelente aporte mnicolau , estaba leyendo y queria probarlo en el Labview 2011, pero me marca el error de que no encuentra la libreria mpusbapi.dll... y como no puedo ver el codigo de bloques para cambiarle la direccion del archivo, me podrias decir en que direccion lo tiene por defecto?


----------



## wansi

Me sigue tirando el error... no se en cual direccion tengo que guardar el mpusbapi...

Creo que es por mi version de labview 2011 en 64 bits.


----------



## mnicolau

Hola wansi, cuando abras el .vi, va a buscar dónde se encuentra el archivo mpusbapi, ahí tenés que indicarle el directorio donde está ubicado. Lo mismo puede pasar si no encuentra el subVI BULK_MN.

PD: Yo también uso LabVIEW 64 bits.

Saludos


----------



## wansi

mnicolau dijo:


> Hola wansi, cuando abras el .vi, va a buscar dónde se encuentra el archivo mpusbapi, ahí tenés que indicarle el directorio donde está ubicado. Lo mismo puede pasar si no encuentra el subVI BULK_MN.
> 
> PD: Yo también uso LabVIEW 64 bits.
> 
> Saludos




Gracias mnicolau... al inicio no me pide que le indique el directorio (porque esta en la misma carpeta del proyecto), asi que intente hacer que me lo pidiera cortando y pegando en otro directorio, pero cuando lo selecciono y ejecuto me sigue marcando el mismo problema... 

Este mismo problema del mpusbapi me marcaba cuando abria otro subvi similar en el labview 2011.. asi que lo abri desde el Labview 8.6 y funcionó correctamente...
Entonces no se que podria ser... saludos y gracias por tomarte el tiempo para responder


----------



## mnicolau

De nada...

Es raro, probá con esta versión que te adjunto.

Saludos


----------



## wansi

mnicolau dijo:


> De nada...
> 
> Es raro, probá con esta versión que te adjunto.
> 
> Saludos



Me sigue sin funcionar, ya he intentado todas las maneras... Un favor, podrias pasarlo a la version 8.6 y al labview 2009?... quisiera comprobar mi teoria...


----------



## mnicolau

Adjunto para versión 8.6.

Saludos


----------



## wansi

mnicolau dijo:


> Adjunto para versión 8.6.
> 
> Saludos



GRACIAS, ya resolvi mi problema...


----------



## TECNICO 93

Esta conexion usb podra con todas las salidas y entradas y las entradas analoga y las 2 salidas pwm


----------



## benjami

Hola mnicolau tengo el mismo problema que wansi, solo que tengo el labview 2012 de 64 bits. me podrías ayudar


----------



## EL SHABRI

Hola un cordial saludo a todos los participantes en este tema, voy a iniciar con un proyecto que contempla comunicacion PIC - LABVIEW por medio del bus USB, mucho agradeceré toda la información y ayuda que puedan brindarme.....he intentado abrir los archivos del VI y el SubVI y se presenta el error referente a las versiones del LabView, MNICOLAU por fa podrias acolitarte con esos archivos para LabView 2009 de 32 bits y si es posible con el diagrama de bloques delk Sub VI.

Cuento con Proteus 7.8 SP2, Windows 7 de 32 bits, LabView 2009 de 32 bits, con estas herramietas tendré algun problema en cuanto a los drivers para el USB o no?


----------



## djbeatter

Windows me manda esteerror, ya intente de todo y no logro conectar... me ayudan? GRACIAS!!!


----------



## mnicolau

djbeatter dijo:


> Windows me manda esteerror, ya intente de todo y no logro conectar... me ayudan? GRACIAS!!!



Estás probando la simulación, o un circuito armado?

Saludos


----------



## djbeatter

Ambos... Tengo el circuito ARMADO y al correr el vi de la interfaz me dice q*ue* esta desconectado.
Tengo también el driver de este link que también leí q*ue* es necesario pero nada.
El administrador de dispositivos de windows me dice que el mejor software para el driver ya esta instalado cuando le doy actualizar.


----------



## gumen

djbeatter dijo:


> Ambos... Tengo el circuito ARMADO y al correr el vi de la interfaz me dice q*ue* esta desconectado.
> Tengo también el driver de este link que también leí q*ue* es necesario pero nada.
> El administrador de dispositivos de windows me dice que el mejor software para el driver ya esta instalado cuando le doy actualizar.



amigo ya checaste que la conecxion este bien te reomiendo que chekes en especial el capacitor del VUSB te lo digo porq ami me dio el mismo problema y eso era lo que fayaba, tambien checa tu  pin numero 1 del pic es decir el reset checa en el ccs q este configura como hadware y no como software

ami tambien me dio el mismo problema y batalle mucho pero al final solo era el capacitor y que el reset taba configurado como sofware por lo q no ocupa la resistencia aterrizada a 5v checate eso y mas que nada la conexion en el proto,, un saludo





mnicolau dijo:


> En esta ocasión vamos a realizar una interfaz de control y adquisición de datos mediante puerto USB (modo "BULK Transfer") utilizando un PIC 18F2550 (puede usarse cualquier otro con función USB). A través de esta interfaz pueden realizar instrumentación virtual que les permita llevar a cabo el control de procesos externos mediante una PC, registro de datos, etc.
> 
> No voy a explicar en detalle cómo funciona la comunicación USB en modo BULK ya que hay mucho información en la web sobre el tema. Este modo se utiliza para la transmisión masiva de información, sin pérdida de datos y sin la necesidad de emular un puerto serie, como hace el modo CDC.
> 
> La idea es que puedan tener como ejemplo las distintas posibilidades de entradas y salidas (analógicas y digitales), para luego utilizar tantas como deseen en cada caso en particular. El proyecto que les voy a mostrar a modo de ejemplo presenta:
> 
> 
> 2 Entradas digitales.
> 1 Entrada analógica (10 bits).
> 2 Salidas digitales
> 1 Salida analógica (PWM + DAC R-C)
> 
> El esquema del mismo está incluido en el archivo adjunto y fue realizado en Proteus. Para utilizar mayor cantidad de I/O, sólo es necesario adaptar el firmware siguiendo el ejemplo dado y luego el software de acuerdo a las operaciones a realizar deseadas.
> 
> En el adjunto pueden encontrar lo siguiente:
> 
> 
> Esquema básico del proyecto presentado
> Driver
> Firmware
> Software LabVIEW
> Software Visual Studio 2010 (C#)
> 
> El firmware está escrito en lenguaje C, mediante PICC (CCS) y para el software de control voy a dar 2 ejemplos, uno escrito en C# (Visual Studio 2010) y otro en LabVIEW. Ambos utilizan la dll “mpusbapi” para el control de las funciones del puerto (para LabVIEW se creó un Subvi específico para tal fin) y llevan a cabo las mismas tareas de leer las entradas (digital y analógica); y activar las salidas digitales, además de asignarle un valor al PWM de la salida analógica. Por otro lado, es requerido un driver para que el sistema operativo reconozca la interfaz, el cual también es provisto.
> 
> Vista del software de LabVIEW:
> 
> Ver el archivo adjunto 74003
> 
> Vista del software de Visual Studio:
> 
> Ver el archivo adjunto 74002
> 
> BulkUSB_MN (SubVI LabVIEW):
> 
> Ver el archivo adjunto 74001
> 
> Interfaz ejemplo mostrada en este proyecto:
> 
> Ver el archivo adjunto 74004
> 
> Les debo para la próxima el video del funcionamiento (no tengo la cam), todo lo posteado está probado y funcionando correctamente. Espero realicen sus propios proyectos de instrumentación virtual y comenten los resultados.
> 
> Saludos!





amigo la verdad te felicito por tu esfuerzo tu proyecto me sirvio de mucha ayuda para relizar mi DAQ ahora el problema es el siguiente realize una libreria como la tuya, USB_BULK_MN pero aun no funciona igual de bien como la tuya la verdad espeor un poco de ayuda de tu parte, tendras algun correo para poderte enviar mi libreria y chekes en que puede estar fayando, aclaro la libreria jala bien pero cuando desconecto el dispositivo ya no la reconoce ocupo detener el programa en labview y resetear el pic y veo que la tuya funciona perfectamente

saludos desde zacatecas mexico


----------



## djbeatter

No me queda claro de lo del pin1, estoy grabando el pic tal y como viene el la programación de ccs,y para lo del reset tengo un push botton para reseater, y pues el capacitor esta como debe... Seguiré intentando y luego explico...


----------



## COSMICO

Hola amigo mnicolau.
Muy buen trabajo, se ve de perla.
Tengo un problemilla para simularlo. Mi sistema operativo es XP, y tengo proteus 7.10
Cuando intento simularlo, me pide los driver, pero no me acepta los que alli hay.
Tiene alguna idea de por que?
"los driver los busco en la carpeta drivers de tu aplicacion..


----------



## mnicolau

Hola gente, yo también he tenido varios problemas con la simulación, armen el circuito y verán que funciona correctamente la comunicación, está más que probado ya (lo pueden ver en las imágenes del 1º post).

PD: coincido con Gumen, es fundamental el capacitor de 470nF desde el pin "Vusb" a GND.

Saludos


----------



## COSMICO

Mi problema, era la version de proteus, instale el 7.6 sp0 y funciono bien.
Los driver de la version 7.10, fallaban.


----------



## djbeatter

oigan no logro instalar el driver, alguien q m diga paso a paso.. Lo k toy aciendo es grabar en el pic el firmware d la interfaz, he copiado a windows,system32 los archivsdl driver y he seleccionad manualment instalar el driver y nada... Auxilio


----------



## COSMICO

NO NO no.
Lo que tienes que hacer, es conectar la interfaz fisicamente al laptop a pc, lo que tengas.
Cuando lo reconosca, aparecera una pantalla que pide instalar los drivers; te dara opcion de conectar a internet para buscalos, le marcas no en el momento, siguiente, buscar manualmente, y te diriges a la carpeta donde estan los driver, pinchas sobre la carpeta drivers, le das aceptar y despues siguiente al asistente, y listo el los instalara..


----------



## mnicolau

COSMICO dijo:


> Mi problema, era la version de proteus, instale el 7.6 sp0 y funciono bien.
> Los driver de la version 7.10, fallaban.



Gracias por el dato, no conocía ese problema 

Saludos


----------



## djbeatter

Ya probé eso y nada. Seguiré probando, por el momento no me funciona aun.
Aunque no logro conseguir el oscilador de cuarzo a 48MHz ni a 20MHz, solo a 4MHz, de hecho la interfaz la modifique a esa pausa.


----------



## dinoelectro

djbeatter dijo:


> Ya probé eso y nada. Seguiré probando, por el momento no me funciona aun.
> Aunque no logro conseguir el oscilador de cuarzo a 48MHz ni a 20MHz, solo a 4MHz, de hecho la interfaz la modifique a esa pausa.




puede trabar con 4,8,12,16 o 20MHz.. cristal de 48Mhz no vas a conseguir en ninguna parte

el PLL para 4 es 1
el PLL para 8 es 2
el PLL para 12 es 3
el PLL para 16 es 4
el PLL para 20 es 5


----------



## GNM

ya logre solucionar mi problema con al librería una pregunta amigo, ¿con cuantas entradas análogas al mismo tiempo *h*as probado tu programa? porque conmigo la verdad al leer 5 entradas se *h*ace medio lento dependiendo de la computadora.


----------



## mnicolau

Estás simulando la interfaz? Si es así está claro que va a andar cada vez más lento mientras más elementos agregues.

Saludos


----------



## GNM

No amigo ya lo tengo *h*asta en tar*j*eta, pero al momento de leer una entrada anda bien, pero al conectarle ya 5 entradas y graficarlas se *h*ace algo lento, *¿*a *qu*e cre*e*s que se deba o es algo natural*? *oye otra duda más. *¿*se podrá poner un filtro en labview*?* ya q*ue* mi señal entra con un poco de ruido y la ocupo muy fina, Gracias.


----------



## gerardots

buen dia acabo de encontrar tu tema y me interesa desarrollarlo, pero tengo un problema, mi version de labview es 8.5 no me puedes guerdar el vi en esta version. Te lo agradezco de antemano. Saludos


----------



## mnicolau

Buen día Gerardo, te adjunto para la versión 8.5.

GNM, subí el programa así lo reviso.

Saludos


----------



## gerardots

Te lo agradesco mnicolau realizare pruebas y cualquier cosa comento, saludos desde mexico!.


----------



## GNM

mnicolau dijo:


> Buen día Gerardo, te adjunto para la versión 8.5.
> 
> GNM, subí el programa así lo reviso.
> 
> Saludos



Saludos mnicolau gracias ya resolvi el problema que tenia y pues solo era la computadora que traia un procesador muy chafa pero al ponerla en una normal jalo perfectamente.... te comento que estoy aciendo un brazo robotico con labview mediante comunicacion bulk... la idea es esta controlar 5 o 6 servos con PWM mediante software, gracias a la libreria de dinoelectrico eh podido tener avances y ya puedo controlas 8 salidas pwm desde labview el problema es la frecuencia los calculos tienen que ser exactos porque los servos son muy delicados tu no te sabes las formulas para calcular PWM por software mediante ccs?? o que conoscas algun metodo para complementar lo anterior??

Pic18f2550 
cristal a 20Mhz 
pero con el PLL a 48Mhz

Frecuencia deseada 50hz por cada PWM


GRACIAS


----------



## Puncx

GNM dijo:


> Saludos mnicolau gracias ya resolvi el problema que tenia y pues solo era la computadora que traia un procesador muy chafa pero al ponerla en una normal jalo perfectamente....
> 
> Pic18f2550
> cristal a 20Mhz
> pero con el PLL a 48Mhz
> 
> Frecuencia deseada 50hz por cada PWM
> 
> 
> GRACIAS



¿Que tal GNM?.. Oie podrias adjuntar tu archivo, es que no he podido añadirle mas salidas analogicas.. Un saludo y de antemano gracias


----------



## calillon

hola muy buen proyecto,quisiera saver si me puedes ayudar lo que pasa es que tengo un problema ala hora de ejecutar la simulacion en el labview me dice interfaz no encontrada no se si puedas ayudarme con eso.gracias de antemano.


----------



## Americo

Buenas mnicolau.. muchas gracias... tu programa en CCS termino por aclararme muchas dudas que tenia con el conversor analogo digital utilizando a 10bits; ademas que pude añadir un pwm gracias al ejemplo...Ahora porfin termine mi tartjeta.. por lo menos solo en simulacion..... solo faltaria la implementacion, con algunos detalles que desearia agregar como un DAC, Reles, y cosas que ya son extras.. lo basico ya esta...

Una consulta mnicolau... que variaciones le hicistes al picusb.vi de Adrian Jose (https://www.forosdeelectronica.com/f26/usb-labview-entre-otros-18338/) son muchas?? o hicistes otro programa labview nuevo para tu libreria que compartistes.??

bueno les comparto mi esquema: de mi tarjeta por el momento en simulcion con pic 18f4550
- 1 entrada digital (1byte)
- 1 salida digital (1byte)
- 1 pwm
- 4 entradas ADC
saludos..


----------



## mnicolau

Hola Americo, me alegro te haya sido útil la información aportada.

Desconozco cómo funciona el VI que comentás pero supongo lo hará de manera similar, ya que se trabaja sobre las funciones de la dll de Microchip. Yo armé el subVI desde cero, estudiando la dll en cuestión.

Calillon, pudiste resolver tu problema? Sino comentá un poco más cómo estás probando y lo vemos...

Saludos


----------



## Americo

buen dia mariano, si pudieras indicarme de tu libreria pic_usb_bulk de labview.. ¿el retardo de lectura y escritura colocas 100.. esta variable es necesaria, define el tiempo de muestreo, y supongo que esta relacionada con el refresh del programa en labview..o estoy completamente mal... ?
¿Este tiempo de muestreo lo pudiera poner tan bajo como el Pic lo permita (en mi caso 18f4550).. ?

Comparto mi ccs simulacion proteus y labview.

bueno saludos y gracias otra vez por compartir tu proyecto mnicolau .


----------



## lucaspascual135

Buen dia mnicolau, me gustaria saber si ya puedes mandar el diagrama en bloque del programa en labview, seria de muchisima ayuda.


----------



## calillon

hola mnicolau, si resolvi el problema que tenia y otra vez gracias por el aporte q compartiste.
saludos....


----------



## pachr

Tengo problemas para poder abrir los programas, muestro aquí las imágenes como me sale.
Si me pueden dar la solución p*or*q*ue* estoy necesitando desarrollar mi DAQ.
La carpeta está en el escritorio, y al iniciar el archivo me pide la librería dll.
La cargo normal pero al correrlo me sale error de la imagen1, luego quiero correr el subvi y me sale error (imagen2)



Aquí las imágenes.


----------



## wansi

pachr dijo:


> Tengo problemas para poder abrir los programas, muestro aquí las imágenes como me sale.
> Si me pueden dar la solución p*or*q*ue* estoy necesitando desarrollar mi DAQ.
> La carpeta está en el escritorio, y al iniciar el archivo me pide la librería dll.
> La cargo normal pero al correrlo me sale error de la imagen1, luego quiero correr el subvi y me sale error (imagen2)
> 
> 
> 
> Aquí las imágenes.



Hola Pachr. Según las "imp pant" que subiste; podría decir que estas utilizando un labview en versión 64 bits; ya que el programa esta hecho en 32 bits.  No importa que versión de Win utilices, tienes que usar el labview en versión 32 b. Te recomiendo que utilices la version en 2012 (32 bits). Funciona perfectamente.


----------



## ray9043

Que tal, ami si me funciona al 100%. Yo tengo un pic18f4550 y con una insignificante modificacion al firmware funciono igual. Lo tengo conectado a un acelerometro y me marca los valores de manera inmediata. El problema es que necesito otras 2 entradas analogicas.

Como puedo agregarle mas entradas analogicas al VI y al firmware del pic?

Saludos y muchas gracias


----------



## dinoelectro

ray9043 dijo:


> Que tal, ami si me funciona al 100%. Yo tengo un pic18f4550 y con una insignificante modificacion al firmware funciono igual. Lo tengo conectado a un acelerometro y me marca los valores de manera inmediata. El problema es que necesito otras 2 entradas analogicas.
> 
> Como puedo agregarle mas entradas analogicas al VI y al firmware del pic?
> 
> Saludos y muchas gracias



Claro que puedes agregar mas entradas y salidas analogicas y digitales.. mariano nos dio un ejemploi de ahi es facil ampliarlo segun tus necesidades.. de echo yo haci lo hice.


----------



## ray9043

Ya lo modifique, el firmware y el software (labview) pero el mismo dato me aparece en los 2 indicadores analogicos, segun yo necesito modificar el SubVI usb bulk pero este se encuentra bloqueado con clave. Como le hicieron para agregar entradas y salidas???


----------



## dinoelectro

no necesitas modificar el subVI, unicamente el firmware en el PIC y el programa en labview..
revisa los comentarios anteriores, en este mismo tema, puse alguna informacion como armar una tarjeta DAQ.


----------



## ray9043

ya lo solucione, eran unos pequenos problemas en el codigo en C, ya pude tener los 3 gauges analogos. La tarjeta daq, yo uso un pinguino con pic18f450 y lo programe para daq.

Gracias


----------



## mnicolau

Dejo una variante del SubVI de LabVIEW para la comunicación Bulk. En este caso cada una de las acciones (Apertura de la comunicación, lectura, escritura y cierre de comunicación) se realizan con bloques individuales. 

La ventaja respecto del SubVI del 1º post es que se evita la apertura y cierre de la comunicación en cada llamado al mismo, haciendo más eficiente la comunicación. También permite individualizar el proceso de lectura y escritura, haciendo posible la realización de estas acciones en distintas etapas, según fuera necesario.



*Nunca olvidarse de colocar el bloque final de cierre de comunicación!* En caso de abrirla y luego no cerrarla, es posible que deban reiniciar la PC o eventualmente borrar y reinstalar el driver para que el hardware vuelva a ser detectado.

En la descripción de cada bloque se encuentran detalladas las entradas y salidas correspondientes.

*PD: por favor algún mod colocar esta información en el 1º post.*

Saludos


----------



## Americo

Gracias por compartir el nuevo programa de labview.. lo probare en casita... saludos Mariano


----------



## mijac27

se podria conectar para controlar un motor paso a paso por usb?


----------



## marcodifeo1

Hola mnicolau, me parece un post excelente. 

Intenté correr la simulación en Proteus 7.8 SP2 y en la version 8.0, pero no logro instalar el driver, cada vez que corro la simulación me detecta que se conecta un dispositivo USB, y lo detecta como "sidpositivo desconocido" pero cuando voy a instalar el driver a la carpeta que vos pasaste "Driver Interfaz" me dice que no se encuentra el controlador. También probé en XP, pero me ocurre lo mismo.
Agradecería si alguien me puede orientar para resolver este problema. 
Saludos!

PD: También instalé los respectivos Virtual USB en las dos versiones de Proteus.


----------



## dinoelectro

marcodifeo1 dijo:


> Hola mnicolau, me parece un post excelente.
> 
> Intenté correr la simulación en Proteus 7.8 SP2 y en la version 8.0, pero no logro instalar el driver, cada vez que corro la simulación me detecta que se conecta un dispositivo USB, y lo detecta como "sidpositivo desconocido" pero cuando voy a instalar el driver a la carpeta que vos pasaste "Driver Interfaz" me dice que no se encuentra el controlador. También probé en XP, pero me ocurre lo mismo.
> Agradecería si alguien me puede orientar para resolver este problema.
> Saludos!
> 
> PD: También instalé los respectivos Virtual USB en las dos versiones de Proteus.



companero no pierdas tiempo simulando USB en Proteus no es nada confiable.... armalo funciona bien te lo garantizo!


----------



## marcodifeo1

Gracias dinoelectro, pronto la estaré armando, porque ando corto de tiempo.

Les cuento que con Proteus 7.6 SP0 pude hacer andar la simulación, como había dicho COSMICO. No se porque en las otras versiones no anda, quizás es un problema de configuración del Proteus. Al principio no andaba pero me di cuenta de que en el esquema de Proteus no conicidían las entradas y las salidas con lo que decía el código fuente, con una leve modificación pude hacerlo andar de maravilla.

Una duda que tengo es porqué las componentes del array enviado del PIC a la PC no pueden ser mayores a 8bits. Cuando pensé en realizar este proyecto tenía idea de enviar una cadena de bits de tamaño igual al encadenamiento de todas las variables que deseara enviar y truncarlos luego en el labview para separarlos y procesarlos. Si pudieran orientarme en que tan incorrecto es mi pensamiento les agradecería.

Bueno, agradezco nuevamente su ayuda y gracias a este aporte podre realizar mi propia placa, sería mi primer proyecto con PIC así que es un gran punto de partida.

Saludos!

PD: Cuando arme mi proyecto lo estaré compartiendo a la comunidad.


----------



## alxander077

amigo trate de realizar la simulacion de tu proyecto pero no logra reconocer el dispositivo usb... me aparece el asistente.. ubico la raiz ....\drivers Interfaz y dice que no se puede instalar el hardware

No se que estoy haciendo mal.. ya tengo dias con esto.. 

Aqui una imagen... 
http://www.subirimagenes.net/i/130708045058283233.png


----------



## marcodifeo1

Yo tuve el mismo problema, y lo solucioné instalando la versión de Proteus 7.6 SP0. Probé con la 7.8 y la 8.0 y tuve el problema que mencionas. En verdad no se cual es el problema, si encontras otra solución compartila por favor. 

Saludos.


----------



## alxander077

gracias..!! ya intale la version 7.6 de proteus y ahora si se instalo el driver.. sabes yo tb probe con las versiones que mencionas y sigo sin encontrar solucion alguna... lo que quisiera es hacer funcionar los drivers en windows 7x64 y con proteus 8... en eso estoy x ahora.. si encuentro la solucion de seguro la posteo! pero si alguien sabe que nos informe..


----------



## rubenchaco

Disculpen mi ignorancia soy nuevo en esto de los microcontroladores pero quisiera saber para que sirve en la practica, cuales son sus alcances, que puedo realizar con el mismo o es simplemente un juguete?. Se me rompió la placa electrónica del lavarropas, la heladera o el split, no la consigo, lo puedo reemplazar con esto?. Puedo desconectar la computadora?. 
Saludos.


----------



## Meta

Hola:

Puedes hacer de todo, incluso el control de una lavadora, o como lo llaman ustedes, lavaropas. Si quieres algo serio y fiable, paga un PLC.

Saludo.


----------



## zurits

mnicolau dijo:


> Dejo una variante del SubVI de LabVIEW para la comunicación Bulk. En este caso cada una de las acciones (Apertura de la comunicación, lectura, escritura y cierre de comunicación) se realizan con bloques individuales.
> 
> La ventaja respecto del SubVI del 1º post es que se evita la apertura y cierre de la comunicación en cada llamado al mismo, haciendo más eficiente la comunicación. También permite individualizar el proceso de lectura y escritura, haciendo posible la realización de estas acciones en distintas etapas, según fuera necesario.
> 
> 
> 
> *Nunca olvidarse de colocar el bloque final de cierre de comunicación!* En caso de abrirla y luego no cerrarla, es posible que deban reiniciar la PC o eventualmente borrar y reinstalar el driver para que el hardware vuelva a ser detectado.
> 
> En la descripción de cada bloque se encuentran detalladas las entradas y salidas correspondientes.
> 
> *PD: por favor algún mod colocar esta información en el 1º post.*
> 
> Saludos



Excelente post mnicolau, limpio, claro y útil, agradecería mucho que resubieras este nuevo vi para Labview2010.

Al momento me llevo 2 días trastear con la simulación y después de probar con Win8 x86/x64+Proteus 8 SP1, 7.10, 7.9, 7,8 conseguí simularlo en Proteus 7.6 SPO+Win7 x86 y concluí que el problema de Proteus 8 + Win8 x64 son los certificados del driver "Eltima USB software"(que viene en Proteus 8 SP0 C:\Archivo de programa\Labcenter\Driver USB) que tiene la firma de certificado original firmado hasta el 2012; pueden revisarlo con VisualStudio 2012. 

Es por ello que a dinoelectro y a otros les funcionó las simulaciones cuando publicaste el post, incluso intenté forzar la firma digital para este año por software pero sin éxito.

Sin embargo tal vez este equivocado y alguien pudo simularlo en una instalación fresca de Win8 x64 o x86.

PD: Espero que reconsideres en liberar la contraseña del "modulo usb" en Labview.

Gracias por compartir y felicitaciones.


----------



## Sant0

Hola amigos!! 

Alguien lo pudo hacer andar con WIN de 64bits?? Cual es el link de descarga de la libreria mpusbapi.dll necesaria??? Algun ejemplo completo para C# please!!

Gracias


----------



## femioxantos

Hola Mnicolau, excelente post!, estoy tratando de ejecutarlo en Win7 x86 con proteus 7.9, todo anda bien, instalo el emulador usb.  Cuando ejecuto la simulación anda perfecto y se levanta la instalación del driver, pregunta, este driver funcionaría en mi máquina con win 7? o es sólo para xp? no logro instalarlo.  Si lo tienes para win7 pudieras facilitarlo?,

alguien lo pudo levantar en win 7?

gracias.


----------



## mnicolau

Gracias femioxantos por el comentario,
El driver funciona perfecto para XP, 7 y 8. Tanto para x86, como para x64.

Cual es el problema a la hora de instalarlo?

Saludos


----------



## femioxantos

hola mnicolau, no se si estoy mal, por favor corrígeme si es así:

1. abro el dsn en proteus 7.9 modo administrador(ya tengo instalado el driver emulador usb del proteus)
2. en el pic modifico la ruta del .hex pues en el proyecto apuntaba a propia.hex
3. ejecuto el proyecto y veo el osciloscopio y el usb analizer.
4. windows levanta el instalador del driver y no lo encuentra.
5. me voy al administrador de dispositivos y le doy actualizar driver de forma manual, busco la carpeta Driver Interfaz. pero windows me dice que no encuentra driver.

qué crees que pueda ser, o definitivamente yo lo entiendo mal?

gracias de nuevo por tu colaboración.


----------



## jonathansata

Hola Nicolau felicitaciones por tu proyecto y gracias por compartirlo.

quiero implementarlo pero en lugar del PIC18F2550 utilizo PIC18F4550, supongo que no hay casi ningun cambio en el hardware (excepto la alimentacion del pic, no estoy seguro si la conexion usb aliemnta al pic a los pines Vdd y Vss porque en el esquema de proteus no se ve)

en cuanto al firmware solo debo cambiar la libreria del 2550 por la del 4550?
para el 4550 tambien sirve el PID y VID de 4D8 y 0010?

y el driver que subiste sirve de igual manera para el 4550?

de todas formas muchas gracias por tu aporte, espero que me puedas ayudar con mis inquietudes

Saludos !!!


----------



## femioxantos

mnicolau dijo:


> Gracias femioxantos por el comentario,
> El driver funciona perfecto para XP, 7 y 8. Tanto para x86, como para x64.
> 
> Cual es el problema a la hora de instalarlo?
> 
> Saludos



hola mnicolau, no se si estoy mal, por favor corrígeme si es así:

1. abro el dsn en proteus 7.9 modo administrador(ya tengo instalado el driver emulador usb del proteus)
2. en el pic modifico la ruta del .hex pues en el proyecto apuntaba a propia.hex
3. ejecuto el proyecto y veo el osciloscopio y el usb analizer.
4. windows levanta el instalador del driver y no lo encuentra.
5. me voy al administrador de dispositivos y le doy actualizar driver de forma manual, busco la carpeta Driver Interfaz. pero windows me dice que no encuentra driver.

qué crees que pueda ser, o definitivamente yo lo entiendo mal?

gracias de nuevo por tu colaboración.


----------



## zurits

femioxantos dijo:


> hola mnicolau, no se si estoy mal, por favor corrígeme si es así:
> 
> 1. abro el dsn en proteus 7.9 modo administrador(ya tengo instalado el driver emulador usb del proteus)
> 2. en el pic modifico la ruta del .hex pues en el proyecto apuntaba a propia.hex
> 3. ejecuto el proyecto y veo el osciloscopio y el usb analizer.
> 4. windows levanta el instalador del driver y no lo encuentra.
> 5. me voy al administrador de dispositivos y le doy actualizar driver de forma manual, busco la carpeta Driver Interfaz. pero windows me dice que no encuentra driver.
> 
> qué crees que pueda ser, o definitivamente yo lo entiendo mal?
> 
> gracias de nuevo por tu colaboración.



Prueba con Proteus 7.6 SP0 sobre Windows Xp o 7 de x86, si lees las respuestas anteriores notaras que muchos probaron con proteus 7.9 sin exito. Yo use con Proteus 7.6 SP0 y no dio problemas, mnicolau asegura que corre en x64 y x86 de Win XP,7 y 8, pero no aclaró si fue en una instalación nueva de Windows.


----------



## jsgx181x

Hola, estudio Ingenieria Electronica, debo presentar un proyecto y estaba pensando en una interfaz en Labview para controlar motores DC o paso a paso con un ATmega8, o almenos enviar algun tipo de dato al microcontrolador, encender un led, etc. He revisado aportes anteriores en el foro, (inlcuso este) pero quisiera que me den una idea concisa de lo que se necesita para comunicar la pc desde LabView con el Microcontrolador, algunos conceptos puntuales, pues nocion ya tengo. Y si fuera posible ejemplos para poder guiarme o alguna informacion adicional; de antemano, gracias por su ayuda.

Saludos


----------



## usuario

Estoy haciendo un sistema de control de temperatura de una termobalanza.
Uso Labview 12.0 y un PIC.
Sucede que logro leer y escribir bien por un corto tiempo y luego obtengo un error de las funciones Visa. ¿Qué puedo hacer?

Este es el error que me sale:
Error- 1073807339


----------



## Ardogan

Si tenés la posibilidad de googlear (o cualquier otro buscador):
https://www.google.com.ar/?gws_rd=ssl#q=labview+visa+error+1073807339

Cita de http://digital.ni.com/public.nsf/allkb/874B379E24C0A0D686256FCF007A6EA0
*
Solution:* 
There are several reasons why you might receive this error message, the most common of which are detailed below:


A timeout error is generally indicative of a different problem.   Check the command strings sent to the VISA Read and Write calls and  ensure that they are written in the proper syntax for your instrument.

*Note: *A  new line or carriage return is often required at the end of a command. A  good way to test this in LabVIEW is to right-click the command string  control on the front panel and change the display to '\' Codes Display  mode. In this mode, a carriage return is \r, a line feed is \n, and an  end of line is \r\n. Verify that the command being sent to the serial  device has the termination character that the device requires.
The port's communication settings may not be configured  correctly. Verify that the Baud Rate, Data Bits, Parity, Stop Bits, and  Flow Control are set correctly to correspond with your hardware  requirements.
This error may be induced by attempting to read more bits than are available at the serial port.
The VISA Property Node for Bytes At Port should be  implemented to ensure that the data read by VISA is limited to exactly  the amount of data available.         



Additionally, can verify that you are not trying to read too  many bytes by reading only 1 byte at a time. If you do not get the  error when doing so, increment the number of bytes you read until you  get the timeout error again. This tells you how many bytes that command  sends back.

*Note: *If you still receive the error  while reading only 1 byte, verify the command to make sure it has been  written correctly and that you have also terminated the command string  correctly (as brought up in solution 1).
 
Older instrumentation may not respond rapidly to commands  written to the port, causing a large delay between VISA Write and VISA  Read. Applications designed to interface with this type of  instrumentation should anticipate this delay, and implement a Wait  function between VISA Write and Read to effectively avoid a potential  timeout error.     


Timeouts can also occur when you read or write large amounts of  data, since large data sets often take longer than the default timeout  period of 2000 ms to transfer across the serial port. You can manually  designate the VISA Session Timeout in different ways, depending on your  development system. Please see below for instruction on setting the VISA  Timeout:

*LabVIEW:* You can use VISA Set Timeout located in the Functions palette under *Instrument I/O»VISA»VISA Advanced* 


​ *LabWindows™ /CVI:* You can use the viSetAttribute function with its Attribute_Name parameter is set to _VI_ATTR_TMO_VALUE_.
*Note:* Changing the Timeout value for your VISA session will affect *all*  VISA Writes and Reads in your session. However, you are able to set  this property/attribute at any point during the session, allowing you to  configure it as needed.
///////////////////////////////////
Hay algo en castellano también: http://digital.ni.com/public.nsf/allkb/97D814071169A8B48625735D005AEBB2



*Error -1073807339 al utilizar "VISA Read" o "VISA Write" en un VI Serial
*

*Software Primario:*   Driver Software>>NI-VISA
*Versión de Software Primario:*   2.6
*Versión de Software Primario Corregido:*    N/A
*Software Secundario:*   N/A




*Problema:*     Cuando trato de hacer una lectura o escritura con VISA, obtengo el error de VISA -1073807339:
 "VISA:  (Hex 0xBFFF0015) Timeout expired before operation completed."
 ¿Cómo puedo corregir este error?


*Solución:*    Sigue los siguientes pasos para eliminar este u otros errores de  “timeout” (error que surge cuando se ha cumplido el tiempo de espera para que suceda algún evento específico) serial.
 1.     Verifica  que todos los parámetros de la configuración serial sean correctos (por  ejemplo, razón de baudio, bits de datos y bits de parada). Tanto el  dispositivo como el puerto serial deben tener la misma configuración.

 2.     Intenta incrementar el valor de “timeout” de la sesión de VISA. Este error ocurre frecuentemente  cuando  estás leyendo o escribiendo grandes cantidades de datos y toma un  tiempo mayor que el tiempo preestablecido para enviar o recibir datos.

 3.     Si  este error surge al hacer una lectura VISA, verifica que no estés  tratando de leer demasiados bytes. Lee solamente 1 byte a la vez durante  la detección de errores.

*Nota: *Si  no obtienes el error ahora, incrementa el número de bytes que lees  hasta que obtengas el error nuevamente. Esto te dirá cuantos bytes  regresa dicho comando.

 También  puedes utilizar un Nodo de Propiedad para leer el Número de Bytes en el  Puerto Serial. Haz click derecho sobre el Nodo de Propiedad y  selecciona “*Select VISA Class>>I/O Session>>Serial Instr*”. Posteriormente haz click derecho en el Nodo de Propiedad y selecciona “*Properties>>Serial Settings>>Number of Bytes at Serial Port*”.

 4.     Si aún recibes el error mientras lees un solo byte, verifica el comando para asegurarte que ha sido escrito correctamente.
 Nota:  Verifica que has terminado el comando de caracteres correctamente. Una  nueva línea o un retorno de carrete usualmente se requieren al final de  un comando. Una buena forma de probar esto en LabView es hacer click  derecho en el control de “string” en el panel frontal y cambiar la forma  en que se despliega al modo *'\' Codes Display**. En este modo, el retorno de carrete es “\r”, una nueva línea es “\n”, y un fin de línea es “\r\n”. *  Verifica que el comando enviado al dispositivo serial tiene el carácter de terminación que el dispositivo requiere.



*Ligas Relacionadas:* 
KnowledgeBase 3F4AG87U : Default Time-out for VISA Read and Write VIs


----------



## Jhon Anderson Irigoin

Disculpen, no se como utilizar el driver para la conexión entre el proteus y Labview, que es lo que debo hacer para que este funcione?


----------



## Amoretaselectrosystem

Hola buenas noches.
Alguno que lo allá echo en Linux? .
Gracias!!!

Hola buenas tardes. Alguno sabe cuál podría ser para Linux?.
Gracias!!!


----------

