# DAQ USB con pic 18f4550



## dinoelectro (Sep 30, 2011)

Hola amigos del foro, vengo ahora con un tema bastante bueno... se trata de una tarjeta de adquisicion y control de datos similar a la de *National Instruments*, el costo para construirla es de unos 20 dolares... economica teniendo en cuenta el costo de las tarjetas comerciales

Las prestaciones son las siguientes;

·         8 entradas analógicas resolución 10 bits (Puerto RA0:RE2)

·         8 entradas digitales (Puerto RB0:RB7)

·         8 salidas digitales (Puerto RD0:RD7)

·         Comunicación USB (emulando RS232)

Acepto todo tipo de critica que vaya en bien del desarrollo de este proyecto... suguerencias y comentarios son bienvenidos y si pueden mejorarlo, quedare eternamente agradecido

Incluyo agradecimiento a paginas amigas que me dieron toda la informacion para desarrollar el proyecto,..el credito es todo de ellas"


----------



## dinoelectro (Oct 1, 2011)

Olvide algo... el DAQ es compatible con el sistema operativo de 64 bits WIN 7 pero tendras que usar el driver que adjunto ahora mismo el el archivo comprimido...


----------



## totoxa (Oct 2, 2011)

Gracias, yo estoy haciendo algo parecido, pero en "usb puro".
EDIT: Podrias poner el código fuente del programa de PC?


----------



## gonzalocg (Oct 2, 2011)

nunca *h*a*b*ia visto esa configuracion del cristal, en serie con un condensador a tierra y sin in*v*olucrar el otro pin, es un error en el circuito o realmente eso funciona?


----------



## dinoelectro (Oct 2, 2011)

...gonzalocg es cierto hay un error en el esquematico... gracias por advertirmelo, 
aunque la simulacion si funciono debido a que tu configuras la velocidad del cristal en el cuadro de opciones que te sale al cargar el *.hex





totoxa dijo:


> Gracias, yo estoy haciendo algo parecido, pero en "usb puro".
> EDIT: Podrias poner el código fuente del programa de PC?



ese codigo fuente esta echo en delphi... lo encontraras en www.sixca.com

..seguramente en el archivo anterior no muestra las imagenes .. adjunto un nuevo archivo correjido el problema


----------



## dinoelectro (Oct 3, 2011)

lo he disenado en ARES espero les guste!!

Si tienen un diseno mejor, compartanlo!!!


----------



## dinoelectro (Oct 15, 2011)

Hace unos dias tube la visita de un amigo que decia que se debe acondicionar las entradas, para que este prospecto de DAQ tenga una funcionalidad valida, en parte tubo mucha razon, sin embargo circuito universal para acondicionamiento de senales no existe,... me explico; acondicionar una senal para recibir datos de un sensor de luz, no sera lo mismo que acondicionarlo para recibir temperatura, o presion... hasta los mejores DAQ necesitaran de circuitos externos de acondicionamiento.

Sin embargo este DAQ puede trabajar perfectamente con labVIEW o measurement Studio, estos paquetes de software poseen filtros digitales, sumadores, restadores, multiplicadores,.. y otras librerias que te pudieran servir para acondicionar la senal, evitandose de esta forma el hardware adicional


----------



## PaulElecto (Oct 18, 2011)

hola amigo estube buscando por la web un circuito de adquisicion de datos usb y encontre este foro quiero construirme uno para hacer pruebas de comunicacion entre labview y hardware. una consulta esta tarjeta me va a protejer la compu de algun fallo que pueda suceder en mis proyectos


----------



## dinoelectro (Oct 18, 2011)

Todo el maltrato recibira tu desafortunado PIC (a tu compu no le pasara nada), a lo mucho tendras que comprar PIC nuevo.
Revisa el archivo *completo.rar* que subi anteriormente, ahi tienes todos los detalles para construirlo esquemas, fotos y PCB. recuerda cualquier duda estoy a las ordenes


----------



## titockmente (Oct 19, 2011)

Has probado meterle una señal de 1kHz? Como se ve? Hay algo parecido a lo que quieren hacer que lo encontre por aca:

http://uelectronika.blogspot.com/2010/04/picusb-y-labview.html

Pero tiene el problema que comento, con una señal senoidal de mas de 10Hz muere.
Abrazo!


----------



## dinoelectro (Oct 20, 2011)

Gracias titocokmente, ahora mismo voy a revisar la pagina que me recomiendas; tengo el mismo problema, a frecuencias mayores a 1Khz ya no funciona, sin embargo el codigo fuente el que estoy trabajando tiene algunas ventajas

8 analogicas resolucion 10bits
8 salidas digitales
8 entradas digitales

y quiero adaptarle unas dos salidas PWM

_*si logramos cambiar el codigo fuente y en lugar de utilizar el CDC rs232, utilizamos HID.. se seguro mejoraremos la velocidad de adquisicion*_
saludos


----------



## titockmente (Oct 20, 2011)

En principio y sin mirar el codigo opino que mientras mas canales analogicos adquieras al mismo tiempo, mas lenta es la conversion. Has contemplado el uso de interrupciones?


----------



## dinoelectro (Oct 20, 2011)

En realidad no lo he programado yo, el *hex baje de www.sixca.com, pero para mejorarlo propongo que antes de empezar a adquirir datos, se deberia entrar en modo configurarcion, para especificar cuantos canales analogicos muestrear...

la velocidad de comunicacion es de 19200bps, emulando RS232.  de seguro con interrupciones se mejoraria el desempeno... no se en realidad el codigo no lo tengo

Nota: para entender como funciona, bajate el archivo completo.rar, que subi anteriormente

saludos


----------



## yurimilena (Oct 21, 2011)

HOLA  yo me encuentro desarollando un proyecto similar , es un multimetro digital con interface al pc por medio de USB e interfaz grafica en labview  ya logre que el pc me reconozca el pic, yo hago la comunicacion por medio del modo  CDC, pero ahora necesito enviar una señal por el  cad del pic y me encuentro en la etapa de acondicionamiento de la señal para poder medir en labview el voltaje y si es posible visualizar la señal, en principio es la señal de la red electrica, mi pregunta es si esos filtros digitales que tiene labview en verdad pueden ayudarme a filtrar la señal??? para evitarme mas hardware en la etapa de acondicionamiento??????
gracias agradezco su ayuda y tan pronto tenga listo el proyecto posteare ya que esto me ha servido muchisimo


----------



## dinoelectro (Oct 21, 2011)

yurimilena dijo:


> mi pregunta es si esos filtros digitales que tiene labview en verdad pueden ayudarme a filtrar la señal??? para evitarme mas hardware en la etapa de acondicionamiento??????
> gracias agradezco su ayuda y tan pronto tenga listo el proyecto posteare ya que esto me ha servido muchisimo



estimado amigo, labVIEW tiene excelentes funciones para el filtrado de la señal, pero no siempre puedes sustituir el hardware, todo depende, debes asegurarte que la senal de ingreso este acondicionada en un rango entre 0 y 5 voltios para no dañar a tu PIC... ademas si vas utilizar el DAQ que propongo, la frecuencia de la señal, si es alterna debe ser menor a 1KHz. 

si muestras tu esquema y tu codigo fuente talvez te pudiera ayudar mejor. saludos


----------



## PaulElecto (Nov 3, 2011)

hola que tal mira sera factible poner el ULN2803 en las salidas del PIC18F4550 para proteger al micro y no se me queme, porque el ULN2803 es unidireccional


----------



## yurimilena (Nov 3, 2011)

Hola dinoelectro muchas gracias por tu ayuda efectivamente el rango que estoy manejando para la entrada al pic es entre 0 y 3 voltios  consta de 2 operacionales el primero es un atenuador en modo diferencial de 10 a 1,es decir que si entran 30 voltios a la salida del amp op tendre 3 voltios, este es el m{aximo valor que puede entrar, ya que utilizo un transformador cuya salida solo da hasta 30 volts ac, luego utilizo un circuito sumador con amplificador operacional para subir esta señal senoidal a un nivel positivo y poder trabajarla en el pic y asi poderla enviar a labview.

sin embargo esta señal no es muy buena, a lo ultimo le coloque un condensador electrolitico de 1uf y mejoro muchisimo, pero la verdad quiero utilizar filtros digitales y verificar que si funcionen, solo que hasta el momento solo tengo la etapa de acondicionamiento y estoy trabajando en la conversion ad para poder ver la señal en labview


----------



## dinoelectro (Nov 5, 2011)

yurimilena dijo:


> Hola dinoelectro muchas gracias por tu ayuda efectivamente el rango que estoy manejando para la entrada al pic es entre 0 y 3 voltios  consta de 2 operacionales el primero es un atenuador en modo diferencial de 10 a 1,es decir que si entran 30 voltios a la salida del amp op tendre 3 voltios, este es el m{aximo valor que puede entrar, ya que utilizo un transformador cuya salida solo da hasta 30 volts ac, luego utilizo un circuito sumador con amplificador operacional para subir esta señal senoidal a un nivel positivo y poder trabajarla en el pic y asi poderla enviar a labview.



Hola yurilema, sabes que es muy probable que el transformador este introduccionedo ruido electromagnetico, si puedes reemplazarlo por un optoacoplador seria mejor... hace unos dias publique un documento en este mismo foro llamado* "Tecnicas para ahorrar hardware con PIC micros"* ahi menciono como recibir altos voltajes a traves de una resistencia de 1M... talvez esa info te pudiera servir de algo... saludos amigo cuentame como esta yendo todo, he??? saludos



PaulElecto dijo:


> hola que tal mira sera factible poner el ULN2803 en las salidas del PIC18F4550 para proteger al micro y no se me queme, porque el ULN2803 es unidireccional



claro que si yo he conectado un ULN2803 para controlar unos reles, motores de paso, matrices de LED etc... funciona perfecto... pero si lo que deseas es controlar motores de corroente continua, te recomiendo mejor el L293D. saludos


----------



## yurimilena (Nov 10, 2011)

hola amigo dinoelectro, espero que te encuentres muy bien y de antemano te doy las gracias por tu valiosa ayuda.
de nuevo acudo a ti, estoy tratando de adquirir un voltaje dc  del adc del pic y que este sea mostrado en pantalla en el labview por medio de un wave form chart, pero tengo duda si puedo hacer que los valores que recibo en el puerto se interpreten en el programa como numeros decimales, por otro lado aunque hago un retardo muy pequeño la comunicaci{on es demasiado lenta  no se que pueda estar pasando.

te envio el vi de labview y el programa del pic, la interfaz la realizo por medio del USB emulando un puerto serial


----------



## dinoelectro (Nov 10, 2011)

ahora lo reviso... pero dime estas enviando codigos ASCII y quieres transformarlos a formato decimal?... para que labview los pueda graficar?? si es asi labview tiene funciones para transformar datos a decimal... revisa string to number conversion functions entre las librerias de labview


----------



## yurimilena (Nov 10, 2011)

hola muchisimas gracias, si la verdad es que necesito grafica una onda seno en labview con los datos que lleguen efectivameneres  envio caracteres ascii y lo que deseo ver son numeros decimales para poder graficar e indicar el valor de una medicion



dinoelectro dijo:


> Hola amigos del foro, vengo ahora con un tema bastante bueno... se trata de una tarjeta de adquisicion y control de datos similar a la de *National Instruments*, el costo para construirla es de unos 20 dolares... economica teniendo en cuenta el costo de las tarjetas comerciales
> 
> Las prestaciones son las siguientes;
> 
> ...





hola me parece demasiado bueno tu proyecto podrias hacerme el favor de enviar el link de la pagina donde lo tienes ???????, desafortunadamente no puedo ver las imagenes y me gustaria guiarme de este, muchas gracias


----------



## dinoelectro (Nov 11, 2011)

aqui te dejo el archivo todo detallado;...cualquier consulta no dudes en preguntar
saludos!!!


----------



## yurimilena (Nov 12, 2011)

HOLA muchisimas gracias definitivamente muy buen trabajo 

y en especial tu colaboración en todo momento. 

espero terminar este proyecto y asi compartirlo en este foro


----------



## CARLOS0907 (Nov 13, 2011)

yurimilena en el código escrito en c para el pic hay un problema en el momento de enviar el dato ya que el adc esta definido de 10 bits por tanto el dato adquirido y almacenado en a es de 10bits, la funcion printf(usb_cdc_putc,a) imprime un dato tipo char(8 bits) en ese caso el dato enviado serán los 8 bits menos significativos de 'a'.

puedes definir la resolución del adc de 8 bits con eso puedes enviar datos de 1 solo byte, declaras la variable 'a' como un tipo de dato char o int8. con eso podras enviar los datos de a un byte. Luego, en cuanto a labview, lastimosamente no tengo al versión 9 pero si quieres  exportarla o guárdala para la versión 8 y con gusto te ayudo.
en el siguiente link hay un vídeo en donde explico un trabajo realizado enviando datos de forma serial con xbee a labview (que operacional mente es lo mismo que estas haciendo )si quieres podría facilitarte la interfaz en labview.

http://ecginalabrico.blogspot.com/2011/11/electrocardiografo-inalambrico.html


----------



## yurimilena (Nov 14, 2011)

HOLA  CARLOS MUCHISIMAS GRACIAS POR TU AYUDA voy a probarlo de nuevo como tu me indicas.

y por lo de la interfaz claro que si 

Por otro lado me surge una inquietud, yo necesito enviar desde labview varias ordenes al pic para que de acuerdo a esto el pic tome la decision de la  magnitud va a medir para el caso tendria solo 3 (V,I,R), lo que sucede es que cuando yo ejecuto el programa y coloco la x (como si fuera la opcion que necesito digamos voltaje ) el programa le indica al pic que lea el adc pero si al momento coloco la y (que tiene otra opcion por ejemplo corriente) el programa en labview se demora mucho para mostrar la informacion, de acuerdo a la configuracion del pic e incluso cuando ya he seleccionado la otra opcion  el cambio no es rapido sino que sigue mostrando la info de la opcion (x).

Bueno voy a seguir tus indicaciones y de nuevo muchas gracias 

luego posteo para que veas los resultado que obtuve


----------



## CARLOS0907 (Nov 14, 2011)

Hola yurimilena la interfaz  la acabo de subir al blog en el mismo link que te deje en el anterior mensaje http://ecginalabrico.blogspot.com/, espero te sea útil.

En cuanto a lo que quieres hacer va a ser un poco lenta la respuesta debido  a que el el micro tienes retardos que si los sumas te dan algo mas de 1.5s, podrías cambiar e retardo para esperar la conversión analógica digital a mucho menos digamos solo 10us, por otra parte seria algo mejor enviar un dato desde labview cada vez  para indicar cual es el dato que quieres adquirir por ejemplo si envías 'x' desde labview el micro te responde con el dato de Voltaje, si envías 'y' el micro te responde con el de corriente y etc. en ese orden de ideas puedes usar el programa de labview que subí y antes de entrar al while donde se reciben los datos pones un visa write y envías la opción que quieras, también podrías repetir el proceso 3 veces para recibir todos los datos al tiempo. a continuación dejo aun forma "opcional" de como lo puedes hacer en el micro.

        if(usb_cdc_kbhit()){ // en espera de nuevo(s) caracter(es) en el buffer.

            switch(usb_cdc_getc()) {

            case 'x':
                     set_adc_channel(0);
                     delay_us(100);
                     a=read_adc();
                     printf(usb_cdc_putc,a);

                      break;
            case 'y':
                     set_adc_channel(1);
                     delay_us(100);
                     a=read_adc();
                     printf(usb_cdc_putc,a);

                      break;
            case 'z':
                     set_adc_channel(2);
                     delay_us(100);
                     a=read_adc();
                     printf(usb_cdc_putc,a);

                      break;
            default:
            }

Me dices si no me hice entender.


----------



## yurimilena (Nov 14, 2011)

HOLA DE NUEVO GRACIAS  Y ESTA DE MARAVILLA TU PRODUCTO espero tambien postear el mío tan pronto lo termine porque gracias a personas como tu  como dinoelectro, entre otros he podido ir desarrollandolo poco a poco.,

BUENO seguire en pruebas y  ya les cuento como me fue


----------



## dinoelectro (Nov 14, 2011)

Excelente carlos097.. estoy muy interesado en construir un electrocardiografo?? en cuanto al equipo XBee .. es facil conseguir?? cuanto podria costar??? en dolares... gracias de antemano

supongo para acondicionar la senal utilizas un amplificador instrumental AD620.. o no??


----------



## fralver (Nov 15, 2011)

Hola amigos, acabo de unirme q este interesante post, felicitar en primer lugar a dinoelectro por su aporte, muchas gracias amigo. Yo estaba buscando informacion de como realizar una tarjeta de adquiscion de datos, y bueno me topé con este lugar. GRacias. voy a ver tu archivo, y esperopueda construir mi propia tarjeta. Bueno aqui les dejo mi pequeña pagina que por ahora solo tiene simuladores en labview, http://www.facebook.com/Simulacionconfralver gracias , muchas gracias.

Gracias a todos ustedes por este aporte.


----------



## diegmv (Nov 15, 2011)

Hola a todos...No se si pueden ayudarme con esta pregunta 
Estoy trabajando en una tarjeta similar a al que realista `pero ademas necesito salidas analogicas.
Mi pregunta es si es posible colocar a la salida de un DAC0800 un amplificador LM324 en lugar a algun otro que use alimentacion positiva y negativa; ya que el puerto usb de la compu da 5v y no se como alimentar algun otro amplificador que no sea el LM324 con dicho voltaje.

O existe otro conversor digital analogo que pueda utilizar en la tarjeta

Anticipada gracias por sus respuestas..


----------



## CARLOS0907 (Nov 15, 2011)

Hola diegmv el problema es que aunque este Amp puede trabajar solo con voltaje positivo tiene el mismo problema que la mayoria de los amp solo trabajan en un rango de hasta Vcc-1.5v eso en tu caso seria un voltaje  maximo de 3.5V, pero si lo que quieres es obtener un voltaje no es necesario el amp, este se usa cuando lo que se necesita es obtener una salida de corriete.en caso de que de todas maneras necesites el amp te recomiendo buscar uno que sea rail to rail. exitos


----------



## fralver (Nov 15, 2011)

Hola amigo estoy muy emcionado por este proyecto, wauu , gracias por este aporte, sabes, quisiera hacerte algunas preguntas. Bueno estoy en cero diria yo en lo que son los Pics, pero como estuve haciendo algunos simuladores en labview, y pues tambien trabajando con una daq usb 6008, jejeje lastima no era mio. es de mi facultad. entonces quise construir una daq, y me encontre con tu post. Nose amigo si podrias detallarme paso a paso de como puedo hacer este proyecto, ya q estoy leyendo de como quemar un pic, y todo eso, recien como le menciono estoy empezando en esto, ademas vi en tu articulo que publicastes, q tambien trabajastes con sensores de temperatura , humedad, -- mi siguiente pregunta seria, los sensores los conectas directo o hicistes algun acondicionamiento a la señal. Gracias. MUchas gracias. Y tambien quisiera si existe algun lugar donde pueda encontrar como fabricar un quemador de Pics.


----------



## CARLOS0907 (Nov 16, 2011)

hola dinoelectro disculpa por no haberte contestado antes, los xbee segun el tipo, pueden costar entre 35 y 50 dolares los que trabajan sobre 2.4Ghz que tienen un alcance de 100m a 1 milla hay otros que pueden trabajar el bandas de mas baja frecuencia 430Mhz y tienen alcances de hasta 20Km pero estos son un poco mas costosos y requieren de algunas antenas para aumentar ganancia http://www.digi.com/technology/wireless/products  lo puedes comprar en http://www.sparkfun.com/products/8742


----------



## yurimilena (Nov 17, 2011)

HOLA CHICOS vengo con una inquietud si tengo un delay de 500 ms es mucho tiempo  para que el conversor haga todo el proceso y lugo me transmita los 8 bits al pc???? 

es que los datos que veo en el pc se demoran mucho en llegar aprox 20 s y estoy utilizando com usb por bulk transfer, no deberia ser mas rápido que cdc????

la verdad estoy algo confundida en esta etapa agradezco a ustedes me puedan orientar


----------



## diegmv (Nov 17, 2011)

gracias por tu respuesta carlos, osea sino utilizo un amplificador tendria ya una salida de voltaje y esta podria ser de rango de 0v a 5v, y si sabes de algun circuito me lo podrisas faciltar porfa...
He trabajo con tarjetas como la labjack U3 y esta tarjeta tenia la posibilidad de darme 0 a 5v pero no se si saben que tipo de conversion utiliza ademas tiene muy buena resolucion.

ah otra pregunta a ver si pueden ayudarme estoy en la tarjeta utilizando comucniacion usb cdc con lavbiew para la obtencion de datos no tengo ningun problema pero al momento de enviar solo puede enviar un dato de 8 bits, es decir un caracter en ascci para recibir en el micro con la funcion usb_cdc_getc, como podría enviar una cadena de caracteres empleando la misma funcion de visa write en labview y recibirla mediante el comando usb_cdc_getc en el micro....
gracias por su ayuda


----------



## CARLOS0907 (Nov 17, 2011)

En labview tienes que convertir los datos que quieras enviar a string, y en el micro usas usb_cdc_gets con s, es par recibir string. Espero te sea de ayuda.


----------



## dinoelectro (Nov 17, 2011)

fralver dijo:


> Hola amigo estoy muy emcionado por este proyecto, wauu , gracias por este aporte, sabes, quisiera hacerte algunas preguntas. Bueno estoy en cero diria yo en lo que son los Pics, pero como estuve haciendo algunos simuladores en labview, y pues tambien trabajando con una daq usb 6008, jejeje lastima no era mio. es de mi facultad. entonces quise construir una daq, y me encontre con tu post. Nose amigo si podrias detallarme paso a paso de como puedo hacer este proyecto, ya q estoy leyendo de como quemar un pic, y todo eso, recien como le menciono estoy empezando en esto, ademas vi en tu articulo que publicastes, q tambien trabajastes con sensores de temperatura , humedad, -- mi siguiente pregunta seria, los sensores los conectas directo o hicistes algun acondicionamiento a la señal. Gracias. MUchas gracias. Y tambien quisiera si existe algun lugar donde pueda encontrar como fabricar un quemador de Pics.



El acondicionamiento es muy sencillo para un sensor de temperatura LM35 o similar... si te bajas la hoja de datos de este integrado veras algunos circuitos que pudieran servirte.... yo acondicione luz y temperatura y tuve buenos resultados con este DAQ casero  

Respecto al grabador puedes armarte PICKit2 en este foro mismo he publicado PICKit2 + HIDBootloader... buscalo 
pero desde ya te anticipo, construir PICKIT te sale casi por el mismo precio que comprar el original, a lo mucho te ahorras unos 20 dolares... yo lo construi con 45 dolares para ser exacto.



CARLOS0907 dijo:


> hola dinoelectro disculpa por no haberte contestado antes, los xbee segun el tipo, pueden costar entre 35 y 50 dolares los que trabajan sobre 2.4Ghz que tienen un alcance de 100m a 1 milla hay otros que pueden trabajar el bandas de mas baja frecuencia 430Mhz y tienen alcances de hasta 20Km pero estos son un poco mas costosos y requieren de algunas antenas para aumentar ganancia http://www.digi.com/technology/wireless/products  lo puedes comprar en http://www.sparkfun.com/products/8742



Gracias Carlos por la info... para experimentar comenzare con el mas economico... todavia no me contestas??? que circuito integrado utilizaste para acondicionar la senal de tu electrocardiografo????


----------



## Shadraziel (Nov 17, 2011)

Hola Dinoelectro, me encanto tu contribución, y aunque soy nuevo en esto de la programación por pic, estoy interesado en armar un tarjeta DAQ para labview, y tengo todos los materiales necesarios, solo que yo utilizo siempre para programar el pickit3 pero lo uso en lenguaje .ASM, uso el Mplab del fabricante para la programación y la configuración de bits. En este proyecto me podrías decir como grabo (quemo) la información en el PIC? Soy nuevo en este tema del HID bootloader y demas... Veo que suministras un archivo .Hex para la simulación en proteus, puedo usar este mismo para programar el pic? MUCHAS GRACIAS DE ANTEMANO!


----------



## CARLOS0907 (Nov 17, 2011)

Para acondicionar la señal se uso un ina128 de Texas Instrument con una configuracion de filtros recomendados en el datashet del opa333 en ñla pagina 11, luego adquiero la señal en un pic18f4550 y realizo un filtro rechasabanda(60hz) digital IIR en el mismo, labview solo se encarga de visualizar.


----------



## Shadraziel (Nov 18, 2011)

Buenas tardes a todos, Ya solucione el problema con el pickit3 y ya pude programar, lo único que se me ha complicado es que la configuración de bits del 18f4550 con pickit 2 es la mencionada en el archivo, pero con el pickit3 es diferente, alguien me podría colaborar??


----------



## dinoelectro (Nov 18, 2011)

Shadraziel dijo:


> Buenas tardes a todos, Ya solucione el problema con el pickit3 y ya pude programar, lo único que se me ha complicado es que la configuración de bits del 18f4550 con pickit 2 es la mencionada en el archivo, pero con el pickit3 es diferente, alguien me podría colaborar??



En realidad no he utilizado nunca PICKIT 3... o sino te ayudaria con gusto amigo... el archivo HEX, que suministre debes grabar con esta configuracion:

0e24 1e3e 8300 0081 c00f e00f 400f

para que el PC reconozca el dispositivo deberas instalar el driver para winXP o win7/vista segun sea el caso... saludos


----------



## thunder2 (Nov 19, 2011)

Hola dinoelectro, perdon por molestar pero quiero preguntarte ¿Como debo configurar los fuses del PIC18F2550 en el momento de grabarlo con PICKit2?, soy nuevo con los PIC18F y solo he manejado los PIC16F. Muchas gracias y hasta luego.


----------



## Shadraziel (Nov 19, 2011)

Muchas gracias por tu respuesta Dinoelectro, fue de muchísima utilidad la información que me diste, pero me gustaría saber que compilador usaste para quemar el micro, o que programa usaste para pasarle el .Hex con el pickit2 (que por cierto ya conseguí uno prestado) o si alguien del foro me podría colaborar para grabar mi micro, la verdad me encantaría que sirviera, puesto que ya diseñe la tarjeta y todo, pero dada la programación que no he podido hacer mi compu no lo reconoce... AYUDA!!


----------



## dinoelectro (Nov 19, 2011)

Shadraziel dijo:


> Muchas gracias por tu respuesta Dinoelectro, fue de muchísima utilidad la información que me diste, pero me gustaría saber que compilador usaste para quemar el micro, o que programa usaste para pasarle el .Hex con el pickit2 (que por cierto ya conseguí uno prestado) o si alguien del foro me podría colaborar para grabar mi micro, la verdad me encantaría que sirviera, puesto que ya diseñe la tarjeta y todo, pero dada la programación que no he podido hacer mi compu no lo reconoce... AYUDA!!



Todo esta programado en C18, se compilo con MPLAB... necesitas conococer un poco del protocolo RS232 pero no es nada complicado. te recomiendo que primero simules el sistema ahi se te despejaran algunas dudas

Si grabas el *.hex en tu PIC y todo esta correctamente conectado aparecera un mensaje 
pidiendo que instales el nuevo hardware encontrado... indica la carpeta donde lo tienes (los drivers ya he subido tanto para sistemas operativos de 32 y 64 bits)... descargatelos



thunder2 dijo:


> Hola dinoelectro, perdon por molestar pero quiero preguntarte ¿Como debo configurar los fuses del PIC18F2550 en el momento de grabarlo con PICKit2?, soy nuevo con los PIC18F y solo he manejado los PIC16F. Muchas gracias y hasta luego.



Hola amigo, para configurar los fuses puedes hacerlo mediante codigo, para ello deberia saber en que lenguaje programas tus PIC

Tambien MPLab ofrece una interfaz grafica para que los vayas configurando manualmente solo dando Cliks con tu raton.. ve al menu Configure\Configuration Bits una vez que los configuras vas al menu File\export.. e indicas donde guardar tu archivo .hex

espero te haya sido de ayuda


----------



## Shadraziel (Nov 20, 2011)

Muchas gracias por tan valiosa información, te cuento que ya pase el .hex al pic y ha funcionado de maravilla, ya lo he instalado en el computador y ahora estoy haciendo un programa en el labview. Me gustaría saber si has trabajado con labview y si me pudieras de dar un ejemplo para una salida digital, digamos si quiero prender un led en el puerto de salidas digitales tengo que diseñar otro código en el código base? o simplemente es alguna instrucción en el labview? Mil gracias!!


----------



## thunder2 (Nov 20, 2011)

Gracias dinoelectro por tu respuesta, lo hago por CCS aunque tambien tengo instalado el Maplab C18 pero soy principiante. Gracias por tu ayuda y muchos exitos para ti.



Tengo otra pregunta dinoelectro,¿Se puede en vez del 18F4550 utilizar el 18F2550?, ya que es el que dispongo por el momento.


----------



## Shadraziel (Nov 21, 2011)

Muchas gracias por todos los aportes que ha hecho la comunidad. Me gustaría saber si alguien ha usado ese troyecto con Labview, es que no se como hacer la comunicación, no me quiere leer ningún dato, toca reprogramar con otro código?


----------



## dinoelectro (Nov 21, 2011)

Shadraziel dijo:


> Muchas gracias por todos los aportes que ha hecho la comunidad. Me gustaría saber si alguien ha usado ese troyecto con Labview, es que no se como hacer la comunicación, no me quiere leer ningún dato, toca reprogramar con otro código?



SI he trabajado en labview, pero en este momento no tengo ningun ejemplo para subirlo ya que estoy en un computador ajeno... pero te recomiendo revises la tabla que esta en el manual en pdf "daq con pic18f4550"... asegurate de descargarte el que esta en fotrmato pdf para que puedas ver las imagenes....   

una buena forma de aprender el protocolo es utilizando el programa DOCKLIGHT que puedes descargarte gratuitamente de internet... envia los comandos y el micro te enviara la respuesta

una cosa mas, recuerda que el #13 corresponde a la tecla enter de un teclado estandar... (revisa el pdf) saludos





thunder2 dijo:


> Gracias dinoelectro por tu respuesta, lo hago por CCS aunque tambien tengo instalado el Maplab C18 pero soy principiante. Gracias por tu ayuda y muchos exitos para ti.
> 
> 
> 
> Tengo otra pregunta dinoelectro,¿Se puede en vez del 18F4550 utilizar el 18F2550?, ya que es el que dispongo por el momento.



hola thunder2, no creo que puedas utilizar este proyecto con un 18f2550 debido a que todos los puertos son necesarios RA, RB, RC, RD y RE... el 18F2550 no posee los puertos RD y RE


----------



## jesores (Nov 30, 2011)

He reproducido este proyecto, en protoboard, usando el diagrama de sixca(http://www.sixca.com/eng/articles/usbdaq/index.html) y la recomendación de la palabra de configuración que nos diste para poder grabar el USBDAQ.hex al pic, sin ella windows marcaba mal funcionamiento del dispositivo. Lo hice usando un JDM, (puerto serie) y Winpic800. 

Como aprendi pascal bajo el IDE Delphi en la facultad, me las arregle para hacer funcionar el codigo de sixca,(descargue delphi 7, version libre, aperentemente hecha por alguien ajeno a Embarcadero y logre instalarle la libreria Comport). Veo que entre tu hardware mínimo y el de sixca hay algunas diferencias, ¿porque hiciste los cambios?, me gustaria saber las razones para aprender del tema. Tengo un problema con la tarjeta, el cuál es que al estar leyendo las entradas digitales se bloquea el programa y empieza a fallar, como no reconocer el COM10 o de plano no responder y tengo que finalizarlo con el administrador de tareas. 

Para volver a probar el sistema tenía que reinciar la computadora para volver a hacer funcionar el daq, mejoro al actualizar el controlador, el que mencionas que es para win7, pero si se habre con bloc de notas (el mchpcdc.inf) menciona que es para varios windows incluyendo el xp, y creo que es mejor porque es del 2010 y el original de sixca es del 2004.


----------



## dinoelectro (Nov 30, 2011)

*ADVERTENCIA: En el esquematico que subi al inicio de este tema hay un error grave... el cristal de 20 MHZ esta mal conectado... mil disculpas por este error...*

Recomiendo leas el ultimo pdf que subi en este mismo tema... ahi tendras todo el proyecto correjido, sin errores y mejor explicado 

Ademas inclui alguna mejoras al esquema de sixca:

un boton para bootloader (el bootloader no funciona con este proyecto, pero sera util en otros) 
un boton para reset... 
una fuente alimentacion de 5 voltios (no es necesaria para este proyecto ya que la alimentacion la recibes directamente del puerto USB)

los cambios que realice no afectan en nada al sistema; yo no tengo ningun problema de hacer funcionar este DAQ

el ultimo driver que subi soporta los sistemas operativos de 32 y 64 BITS (WINXP/VISTA/WIN7) mientras que el que te descargas de sixca solo soporta sistemas operativos de 32 bits

Saludos!!


----------



## jesores (Nov 30, 2011)

¿Cuál es la configuración que tienes armado fisicamente, la de la figura 8 del pdf o la de la figura 1?  Veo que en la figura 8, el final de los tres capacitores C2,C3 y C1 van conectados entre si. Yo lo solde como en la figura 1. ¿Crees que eso pueda estarme ocasionando el inconveniente que te comento? Tu figura 1 se parece mas al diagrama de sixca. 

Las figuras que te comento las tome del pdf con el que respondiste a otra forista en el mismo tema.

Segun tengo entendido, los capacitores que van al cristal del pic sirven para mejorar la señal de reloj del mismo, la configuración(capacitores para cristal) la he visto desde que aprendi algo de pics con el pic16f84. 

Se me hace interesante que la configuración de sixca y la del  proyecto pinguino sean muy parecidas. 

Yo andaba en busca de fabricar un daq lo más sencillo posible y me habían recomendado pinguino pero aun no he encontrado una liga que muestro como se podría realizar dicho daq utilizando la tarjeta pinguino.


----------



## dinoelectro (Nov 30, 2011)

En la figura 8  el PIN negativo de C1 C2 y C3 deberian estar conectados a tierra... por lo tanto el diagrama de la figura 1 es la manera correcta, el diagrama de sixca tambien es correcto y el diagrama que tienes dibujado con ese PIC negro tambien es correcta 

C1=22pf y C2=22pf  sirven para mejorar la senal de reloj estas en lo cierto.. C3 puede ser desde 0.47u a 47uf.. la resistencia de 1M no es necesaria

recomendaciones:


Los buffers de comunicacion deben estar configurados a nivel minimo  para obtener mejores resultados (ve a administrador de dispositivos y configuralos)

no uses un COM superior a COM5

un capacitor 104 entre VCC y GND puede ayudar a estabilizar al sistema colocalo muy cerca del PIC

la tarjeta pinguino es precisamente la misma que recomiendo construir...


suerte!!


----------



## jesores (Nov 30, 2011)

Yo he estado usando un COM10, lo voy a cambiar y comento como me fue.

¿Con un capacitor de 104 te refieres a uno de 0.1uF?

El "104" es lo que se debe de ver en el capacitor ceramico, supongo.

Muchas gracias por tu apoyo desinteresado.


----------



## dinoelectro (Dic 1, 2011)

puedes colocar un capacitor entre 0.1uf y 10uf; para purificar la senal nada mas...
gracias a ti por tu interes!!!!


----------



## jesores (Dic 2, 2011)

Ya no tengo problemas con la placa, el capacitor de 0.1uF, me fue de mucha utilidad. 

Ahora  recuerdo haberlo visto en Pinguino, GTP-USB-lite programmer y otros diseños, que igual refieren que debe de estar lo mas cerca al microcontrolador.

Tambien cambie el COM10 al COM3. Aunque el COM10 me lo asignaba mi computadora porque los otros se encontraban "en uso". Lo pongo entre comillas porque investigue en internet que al conectar equipos que usen los puertos COM, windows los asigna y no los deja libres para cuando no están dichos dispositivos. El proceso es sencillo: 

Usar el COM1 para cambiarlo al COM3, ignorar las advertencias. 
Despues el que era el COM1, ahora COM3 se regresa a COM1 y así queda libre el COM3 para la placa.

Digo que fue el capacitor el que termino dejando funcional la placa porque aun después de cambiar a COM3, aun falseaba la comunicación con la placa.


----------



## biopic (Dic 2, 2011)

hola a todos , 
dinoelectro que bueno  que tus proyectos vayan muy bien  comova 
y que ha pasado con la entrenadora ???un saludo


----------



## dinoelectro (Dic 2, 2011)

hola biopic,... francamente no he tenido tiempo para terminarlo ahora mismo voy a publicar algunos avances... miralo en el tema correspondiente

saludos!!!!

https://www.forosdeelectronica.com/f24/aporte-kit-entrenamiento-picmicro-40-pines-65843/#post588363


----------



## dinoelectro (Dic 5, 2011)

presento el esquematico completo de mi DAQ construido...







ahora una vista 3D del PCB disenado en ARES...

https://www.forosdeelectronica.com/picture.php?albumid=653&pictureid=5617

una descripcion del prototipo construido

https://www.forosdeelectronica.com/picture.php?albumid=653&pictureid=5616

la interface en labview..

https://www.forosdeelectronica.com/picture.php?albumid=653&pictureid=5619

y otra en visual basic..

https://www.forosdeelectronica.com/picture.php?albumid=653&pictureid=5620

otro prototipo en fase de construccion:

https://www.forosdeelectronica.com/picture.php?albumid=653&pictureid=5618


----------



## jesores (Dic 5, 2011)

Hola de nuevo, ya que me logre construir un DAQ funcional gracias a la ayuda del foro. Mi pregunta es la siguiente ¿El sistema cuanto tiempo pueda estar ininterrumpidamente funcionando? Recuerdo haber visto que podia servir como parte de una estación meteorologica.


----------



## dinoelectro (Dic 5, 2011)

jesores dijo:


> Hola de nuevo, ya que me logre construir un DAQ funcional gracias a la ayuda del foro. Mi pregunta es la siguiente ¿El sistema cuanto tiempo pueda estar ininterrumpidamente funcionando? Recuerdo haber vsito que podia servir como parte de una estación meteorologica.



hola jesores; todo depende de la fuente de alimentacion.. si piensas conectarle sensores talves sea necesario que pienses en disenar una fuente externa para que no tomes la alimentacion del puerto...


----------



## jesores (Ene 10, 2012)

¿Es posible utilizar este DAQ con un sistema operativo basado en Linux, como Ubuntu?


----------



## dinoelectro (Ene 10, 2012)

hola jesores... deberas investigar si microchip te da los drivers para esos sistemas operativos ( hasta que yo se solo hay drivers para WINDOWS de 32 y 64 bits... 

en ultimo de los casos deberias desarrollar tu el driver cosa que creo es bastante complicada, para los que no conocemos mucho de USB 2.0...

saludos!!!


----------



## TECNICO 93 (Feb 23, 2012)

hola dinoelectro yo estoy realizando una tarjeta   utilizo hid ya se controlan 8 leds  y 6 entradas analogas ya tengo abierto un tema  pero ps no he tenido suerte de que lo lean pero aqui de dejo mi avanse solo faltaria activar cuatro entradas digitales y dos salidas analogas sin mas me dispido ..


----------



## dinoelectro (Feb 24, 2012)

... excelente Tecnico donde lo puedo revisar? si es HID mucho mejor todavia!!!
a ver si nos dedicamos a la parte del software tambien.. seria interesante construir una libreria de clases para usarlo con labview o visual basic...

saludos tecnico


----------



## TECNICO 93 (Feb 24, 2012)

A qui te lo dejo para que lo chequen y me puedad ayudar a activar las demas opciones

https://www.forosdeelectronica.com/f26/activar-entras-digitales-salidas-analogas-pic-18f4550-69917/


----------



## Nuyel (Mar 7, 2012)

Una pregunta, estoy intentando controlarlo en el VB 2010 y la verdad no es que lo sepa usar del todo, hice este código para las salidas digitales, aunque quizás no es la mejor forma.

```
Sub DigiOut(ByVal Port As String, ByVal Data As String)
        Dim buffer As Byte() = New Byte(4) {}
        buffer(0) = 42 '*
        buffer(1) = 65 'A
        buffer(2) = Port 'Puerto a escribir
        buffer(3) = Data 'Dato a escribir
        buffer(4) = 13 'Fin de comando
        SerialPort.Write(buffer, 0, 5)
    End Sub
```
Así solo lo convoco escribiendo "DigiOut(numero de puerto, bit a colocar)" y funciona bien, pero ya no se como leer los datos de entrada, ¿podrían darme un ejemplo?


----------



## dinoelectro (Mar 7, 2012)

por ejemplo para leer la entrada analogica AN0

debes enviar el comando *C0#13

es decir en lenguaje basic quedaria:

                      "*C0" & vbcrlf

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If Not (SerialPort1.IsOpen) Then
            SerialPort1.Open()
            SerialPort1.Write("*C0" & vbCrLf)
            adcvalue1 = SerialPort1.Readline
            Label2.Text = adcvalue1
            SerialPort1.Close()
        End If
    End Sub


----------



## Nuyel (Mar 7, 2012)

Pues entonces no se que hago mal, cuando pongo el SerialPort1.Readline() se congela el programa, es como si no recibiera el final de la linea.


----------



## dinoelectro (Mar 8, 2012)

Nuyel dijo:


> Pues entonces no se que hago mal, cuando pongo el SerialPort1.Readline() se congela el programa, es como si no recibiera el final de la linea.




hola nuyel.. te dejo un ejemplo de como leer la puerta analogica A0 y activar el pin D0... espero eso te ayude

consejo:
utiliza serialport1.readexisting()
 y aprovecha el evento datareceived


----------



## Nuyel (Mar 13, 2012)

Gracias, ya con eso pude hacerlo





La verdad es la primera vez que uso un PIC y también que intento acceder a datos de un recurso en Basic, todos mis programas en basic solo hacían bonitas ventanitas con botones para presionar  además como estudio ingeniería electromecánica solo nos dieron un curso básico con pseudocódigo, apenas acabó de descubrir como se hacia el gráfico , como pregunta, se supone que estoy haciendo un electrocardiógrafo, la frecuencia de corte superior del circuito amplificador se supone es de 150Hz y según el teorema de Nyquist necesitaria un muestreo a 300Hz pero me imagino esto tiene limitaciones con la velocidad de 19200 baudios y eso de tener que transmitir 4 caracteres y recibir 8 ¿cual seria el mejor valor para el evento del timer y recibir la mayor cantidad de samples posibles?
Lo único que me faltaría seria modificar el registro del microcontrolador por que necesito que la referencia positiva provenga del un regulador de bajo ruido para tener filtrada la fuente análoga de los amplificadores ya que veo que salta mucho (con eso de que el multimetro me detecta de 5.1V a 5.09V en el puerto y teniendo que amplificar una señal de 1mV eso estaría muy jodido), pienso usar los INA333 y OPA2333 a 3V, las terminales de entrada que no use ¿las conecto directo a VDD o VSS?


----------



## dinoelectro (Mar 16, 2012)

hola nuyel, nunca e construido un electrocardiografo, asi que no podre ayudarte mucho con eso.. sin embargo te comento que este DAQ lo he mejorado muchisimimo, ya no utilizo la calse CDC, sino mas bien HID...  la velocidad de comunicacion es 64KBytes por segundo por lo que basta y sobra para  aplicaciones en electromedicina... ahora mismo lo estoy documentado y la proxima semana lo posteare..

saludos cordiales!!!


----------



## Nuyel (Mar 17, 2012)

Mmmm... pues ya veré como es el nuevo diseño, por ahora el que pueda trazar la gráfica me basta para poder comenzar con el circuito análogo, pero si me gustaría poder usar VREF+ (AN3) con otro voltaje para tener bien filtrada la fuente análoga de la del circuito digital, lo otro que se me ocurre es hacer dos fuentes a 3,3V creo que con esa solo habría que conectar el terminal VUSB a VDD y desactivar el regulador del PIC


----------



## narb (Jul 14, 2012)

hola dinoelectro, la verdad me parece muy interesante tu proyecto; en el instituto la verdad solo existen 2 daq para toda la carrera, y resulta ser un material demasiado caro y muy últil; sería de gran apoyo me pudieras compartir el resultado de proyecto, ya que me parecería muy viable. Gracias


----------



## dinoelectro (Jul 16, 2012)

HOLA NARB, te sugiero revices este DAQ el cual es mucho mejor en el siguiente Link:

https://www.forosdeelectronica.com/f24/algunos-proyectos-avanzados-microcontroladores-pic-78040/

Nota es mas veloz y facil de usar ya que utiliza la clase Bulk Transfer para enviar los datos hasta el computador..

saludos!!


----------



## hokokehatake (Ago 31, 2012)

Muchisimas gracias por tu aporte, tengo buen rato buscando un diseño como este es que e tratado de hacerlos en ares y proteus por mi parte pero al tiempo de pasarlo a ares no me reconoce algunos de los dispositivos utilizados y es un buen problema, tendré que implementarlo ya después comparto si me funciono


----------



## dinoelectro (Sep 1, 2012)

Los componentes que no encuentres en ARES los puedes construir tu mismo.. hay mucha informacion acerca de como hacerlo en la web

en los siguientes links encontraras mejor información y mas actualizada.. 

https://www.forosdeelectronica.com/f24/algunos-proyectos-avanzados-microcontroladores-pic-78040/


https://www.forosdeelectronica.com/f13/librerias-proteus-1933/

saludos


----------



## frantronica (Ene 2, 2013)

Hola yo soy nuevo y he llegado hasta aqui buscando la forma de meter datos por usb para presentarlos en un programa que estoy desarrollando en Delphi 7 y consiste en una grafica que se va desplazando un pixel cada 5 segundos y grabando cada 5 segundos en un archivo que se genera automaticamente en cada cambio de mes. lo estoy preparando para guardar dos canales analogicos de 8 bits pero lo modificaré para 10 y hasta 70 datos digitales.
El proyecto está en pañales pero deseo compartirlo con vosotros en
https://hotfile.com/dl/187136604/92d8422/7_grafica_5.rar.html
me contais algo.


----------



## frantronica (Ene 31, 2013)

Sigo mejorando el sistema de adquisicion de datos y representacion.
En esta ocasion puedo representar dos canales analogicos de hasta 10 bits y 55 datos binarios mediante una grafica en Trendline con una frecuencia en este caso de 5 segundos.

https://hotfile.com/dl/191759079/9d1e6df/Grafica_10_2.rar.html

Me gustaria que expusierais vuestras sugerencias.


----------



## dinoelectro (Feb 1, 2013)

hola frantronica, veo que todavía no estas adquiriendo datos reales... únicamente generas datos aleatorios desde el computador...

podrías tal ves armarte el DAQ que publique anteriormente y adquirir hasta 8 analogicas. revisalo 

https://www.forosdeelectronica.com/f24/algunos-proyectos-avanzados-microcontroladores-pic-78040/

estare atento a tus avances

 ..-  saludos .-


----------



## frantronica (Feb 1, 2013)

por ese motivo he llegado a este foro.
Ya he adquirido el 18f4550 y poco a poco me pondre con ello.
Intentaré empezar utilizando el compilador CCS_PCWHD_v.4.093 que es el que siempre he utilizado en mis anteriores proyectos con el 16F877A-20MHz.
gracias.


----------



## leyenda (Feb 6, 2013)

hola foro tengo una inquetid con respecto a la daq 

estoy trabajando en el control de la intensidad de unas bombillas de luz de dia. ya tengo el circuito que controla la lumidad esun circuito muy sencillo aqui va mi pregunta ¿ como hago para controlarlo con la daq de labview ya que el voltaje de este circuito son 30 v aproxidamente y la daq solo maneja 0-5v o 10v ? que circuito o que elemento me ayuda a reducir el voltaje para poder controlarlo mediante labview gracias


----------



## dinoelectro (Feb 7, 2013)

no necesitas atenuar el voltaje unicamente necesitaras de optoacopladores para aislar el DAQ de los 30V..

el MOC3021 y un TRIAC se recomienda para cargas de corriente alterna... si es corriente continua puedes utilizar un ULN2803.


----------



## leyenda (Feb 8, 2013)

es para corriente alterna este es el circuito controlo 8 bombillas


----------



## dinoelectro (Feb 9, 2013)

te falta aislar opticamente el circuito de control  del circuito de potencia. revisa el siguiente tema tal vez te ayude: 

https://www.forosdeelectronica.com/f24/sistema-adquisicion-control-datos-18f2550-68547/

saludos!!


----------



## frantronica (Feb 15, 2013)

Ya lo tengo.
Lo revisais y me comentais.


----------



## frantronica (Feb 16, 2013)

Nueva versión con algunos cambios y explicaciones en el siguiente enlace.

https://hotfile.com/dl/194722327/a85347b/Proyecto_18F4550_con_Delphi_Ver001.rar.html


----------



## fenix129 (Feb 20, 2013)

Hola que tal, en primera te felicitar por los aportes sobre las DAQ, y es por eso el motivo de este mensaje, he leído los post en el foro y he visto que han ido modificando las DAQ, entonces quería saber si fuera posible que me ayudaran en la proporción del código de ccs para construir una con el pic18f4550:

4 entradas analógicas resolución (Puerto RA0:RA3)
8 entradas digitales (Puerto RB0:RB7)
8 salidas digitales (Puerto RD0:RD7)
2 salidas las cuales proporcionen una salida PWM

Ya que he visto que hay varias aportaciones, pero todas cambian y algunos los he probado pero no me han funcionado, así que es por ese motivo que decidí poner este mensaje, ya que estoy comenzando a trabajar en labview y me gustaría hacer una DAQ. Espero y me puedan ayudar. Se agradece su respuesta.


----------



## dinoelectro (Feb 22, 2013)

En el siguiente link podras revisar el diseño definitivo de este DAQ ademas de un ejemplo en labview

https://www.forosdeelectronica.com/f24/algunos-proyectos-avanzados-microcontroladores-pic-78040/

saludos


----------



## lucaspascual135 (Mar 4, 2013)

Buenas tardes, me parecio muy bueno este post y debido a que estoy trabajando en algo similar y no me esta funcionando quise probar este proyecto. 
La cuestion que segui los pasos como esta aqui y cuando quiero darle start al programa SVP me sale un error adujuntado a continuacion. Alguien le paso algo similar? Yo tengo instalado windows seven 32 bits, puede ser que tenga algo que ver el sistema operativo?
Espero alguna respuesta. Desde ya muchas gracias. Saludos


----------



## gladiadortuc (Mar 4, 2013)

LUCASPASCUAL: No tengo idea de para qué sirve ese programa SVP, pero el error se refiere a que no está definido el puerto RS232, o Puerto COM. Es posible que 1) tu PC no lo tenga, 2) el programa SVP no contempla el acceso directo cuando está Win7 (windows no te deja hacer nada!!). 
Fijate en la configuración de Windows si tenés el Puerto COM1, COM2, etc. Generalmente está el COM1. Y en el software SVP quizá puedas configurar para acceder al puerto, en el caso que lo tengas, que es donde se conecta el dispositivo que se comunica con el PC.
Saludos.


----------



## dinoelectro (Mar 4, 2013)

este daq tiene algunas falllas que ido corrijiendo... si lees los comentarios anteriores encontraras el link donde postee el diseno definitivo y mejorado.

saludos!


----------



## lucaspascual135 (Mar 5, 2013)

muchas gracias por sus respuesta, hechare una mirada a lo que me dijiste dinoelectro


----------



## FireLion (Mar 19, 2013)

Hola que interesante se ve este proyecto, la verdad es que apenas estoy incursionando en el campo de la programación y en estos momento estoy tratando de hacer un proyecto con el pic 16f876A y estoy interesado en enviar datos desde el pic al pc. ¿es posible lograrlo con el pic que estoy utilizando? y si es posible ¿que clase de interfaz necesitaría para recibir esos datos en el pc?.
muchas gracias.


----------



## Nuyel (Mar 19, 2013)

Pues en tu caso es usar el puerto RS232 o conseguir un adaptador USB-UART para comunicarte con la USART del PIC


----------



## FireLion (Mar 20, 2013)

hola amigo gracias por responder, mira es que soy muy nuevo en esto de los microcontroladores y necesito saber con mas claridad como le hago para enviar datos al pc y utilizarlos desde allí ya sea con un programa hecho en c++.
¿a que clase de adaptador te refieres y como podría utilizarlo? ¿y también como se hace eso del RS232?
saludos


----------



## Nuyel (Mar 20, 2013)

RS232 es un estandar que define un bus de comunicación, las PC lo tienen comunmente como un conector DE-9 macho (tambien hay uno DB-25 pero es menos comun ya que basta 3 lineas para comunicarse en modo asincrono), las PC modernas no lo incluyen aunque algunas tienen el header para que le conecter el conector, usando este puerto solo requeririas un adaptador de niveles como el tipico MAX232 ya que el protocolo tambien usa voltajes negativos (este chip incluye una bomba de carga para generarlos apartir de los 5V).
Por lo del USB-UART es uno que convierte la comunicación UART (en este PIC aparece como U*S*ART pero eso es por tambien soportar modo sincrono) a USB, generalmente usando un puerto RS232 virtual pero solo disponiendo de los pines Tx/Rx (algunos adaptadores llevan tambien los demás pines del estandar).

Usarlo como RS232 (virtual o real) es la manera más simple, pero si no sabes como manejar el USART del PIC te recomendaria empezar con eso y algun programa como Termite (bastante bueno, en especial por el modo hexadecimal me es bastabte util) enviando y recibiendo los comandos manualmente, en la pagina 4 dinoelectro me habia dejado un ejemplo en Visual Basic .net, ultimamente hice uno en C# donde recibo los datos analogos en paquetes de 2 Bytes y aumento la velocidad de transferencia, no te puedo ayudar en el lado del PIC por que esto lo he estado haciendo con Lenguaje Arduino, aún no me he tomado tiempo de aprender a programar PICs.


----------



## mauropl91 (May 28, 2013)

Hola me parece perfecto tu proyecto, pero no tendras un daq con alguna salida para control de servomotor?


----------



## dinoelectro (May 28, 2013)

intenta con el daq que publique en este link;

https://www.forosdeelectronica.com/f24/algunos-proyectos-avanzados-microcontroladores-pic-78040/

posee dos PWM para el control de servos. Saludos!!!


----------



## GEORGECAT7 (Jul 21, 2013)

soy nuevo en esto pero he diseñado esta tarjeta espero que alguno l revise y me diga si algun error muchas gracias

Tiene 8 entradas analogas 
8 entradas digitalas
8 salidas listas para trabajaras a 12v
2 salidas modulo CCP para configurarlas al gusto



Tiene integrado a la salida un ULN2803 para adaptarle mayor voltaje 
abrir con PCB Wizard


----------



## Alfredo (Feb 10, 2015)

mpusbapi dll solo en labview de 32-bit o funciona en 64-bit??


----------



## dinoelectro (Feb 11, 2015)

solo en 32 bits.. pero puede instalarse en windows de 64 bits


----------



## Alfredo (Feb 12, 2015)

Hola Dinoelectro gracias por tu pronta respuesta, tengo otra inquietud he estado tratando de simular en Proteus y establecer la conexion con labview he seguido todas las instrucciones que le has dejado a los otros colegas e incluso estuve leyendo las publicaciones de Moyano pero no he podido instalar los controladores, el controlador llega hasta el punto de casi instalarse pero despues el Proteus se cierra y me  apaga el computador apareciendome el Famoso "Blue Screen" yo se que us recomendaron montarlo de UNA vez para evitar esos problemas, pero queria dar la guerra ya que deseo simular para  acondicionar unas señales de unos sensores de un proyecto de curso, que opinas habra alguna solucion.


----------



## dinoelectro (Feb 12, 2015)

Hola Alfredo; la simulacion USB no funciona del todo bien en sistemas operativos de 64 bits una vez consegui simular en windows XP De 32 bits pero no te recomiendo que construyas este DAQ sino el publicado bajo el tema "Algunos proyectos avanzados con microcontroladores PIC" ese funciona genial tiene una excelente resolucion de 10 bits y una buena velocidad de muestreo.. este Daq publicado aqui no funciona del todo bien... saludos

Ver el archivo adjunto 117226

Ver el archivo adjunto 117226


----------



## JonnyGarcia (Mar 24, 2017)

Hola. Soy nuevo en el foro. 

Necesito de su ayuda.

Requiero hacer un datalogger de luz (lumenes o luxes) que almacene algunas muestras tomadas en la memoria interna y después las transfiera a una base de datos como LabView.
Mi pregunta es: puedo hacer el datalogger por separado mostrando en una lcd los lumenes y en la misma ldr conectar el DAQ que han hecho en este foro y mostrar el comportamiento en labview o c#.



La pagina Sixca no aparece en internet


----------



## dinoelectro (Mar 25, 2017)

JonnyGarcia dijo:


> Hola. Soy nuevo en el foro.
> 
> Necesito de su ayuda.
> 
> ...




<Hola este DAQ no controla LCD habria que modificar el codigo... un mejor DAQ, con labview lo encuentras aqui:

https://www.forosdeelectronica.com/f24/algunos-proyectos-avanzados-microcontroladores-pic-78040/


----------



## JonnyGarcia (Mar 25, 2017)

Hola. pretendo hacer 2 circuitos.
1.- Datalogger con cualquier pic que muestre los lumenes en una lcd provenientes de una LDR.
2.- Crear una tarjeta de adquisición de datos que se conecte a la LDR para mandar los datos a la PC.

¿Creen que halla problemas si ambos circuitos están tomando datos de la misma LDR?


----------



## dinoelectro (Mar 25, 2017)

JonnyGarcia dijo:


> Hola. pretendo hacer 2 circuitos.
> 1.- Datalogger con cualquier pic que muestre los lumenes en una lcd provenientes de una LDR.
> 2.- Crear una tarjeta de adquisición de datos que se conecte a la LDR para mandar los datos a la PC.
> 
> ¿Creen que halla problemas si ambos circuitos están tomando datos de la misma LDR?



No creo que tengas ningun problema.... sin embargo ¿porque vas hacer con dos PIC lo que puede hacerse con uno solo?


----------



## JonnyGarcia (Mar 28, 2017)

Hola. El problema es que no soy bueno programando y no sabría usar los 2 códigos.
De hecho me ha estado ayudando mucho un enlace que dejaron, donde vienen unos cursos con el PIC18F4550.

Muchas Gracias. 

Por su amabilidad, les voy a pasar un un programa hecho por un doctor muy apreciable y bueno en la programación de PIC's de mi institución (Doctor Villalobos Piña).
El código es una tarjeta de adquisición de datos por medio del RS-232.

Esperando que les sea de buena utilidad y felicitándolos por su gran ayuda en aprende a usar el PIC18F4550. 

También me gustaría que se hiciera una sala de discusión donde sólo se subieran programas y simulaciones con tal PIC para la práctica, así como con el dsPIC30F4011. Saludos.

```
//***************************************************************************************
// PROGRAMA:    Que efectúa al adquisición de datos
// OBJETIVO:    Abir la puerta al tratamiento de señales en control digital
// FECHA:       14  de Febrero 2017
// DISEÑO:      FJVP
//***************************************************************************************

#include <18F4550.h>
#device ADC=8

#FUSES WDT                      //Watch Dog Timer
#FUSES WDT1                     //Watch Dog Timer uses 1:1 Postscale
#FUSES FCMEN                    //Fail-safe clock monitor enabled
#FUSES IESO                     //Internal External Switch Over mode enabled
#FUSES PUT                      //Power Up Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES BORV21                   //Brownout reset at 2.1V
#FUSES VREGEN                   //USB voltage regulator enabled
#FUSES PBADEN                   //PORTB pins are configured as analog input channels on RESET
#FUSES LPT1OSC                  //Timer1 configured for low-power operation
#FUSES MCLR                     //Master Clear pin enabled
#FUSES STVREN                   //Stack full/underflow will cause reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOCPB                    //No Boot Block code protection
#FUSES NOCPD                    //No EE protection
#FUSES NOWRT                    //Program memory not write protected
#FUSES NOWRTC                   //Configuration registers not write protected
#FUSES NOWRTB                   //Boot block not write protected
#FUSES NOWRTD                   //Data EEPROM not write protected
#FUSES NOEBTR                   //Memory not protected from table reads
#FUSES NOEBTRB                  //Boot block not protected from table reads

   //-------- Configuración de la velocida del procesador -------
#FUSES   PLL1                       // Cristal de 12Mhz/3 = 4Mhz de entrada al 
#FUSES   CPUDIV1                    // 96Mhz (del PLL) /2 =48Mhz reloj del sistema
#FUSES   HSPLL                      // Se le dice al programador del chip que usa oscilador primaro derivado del PLL

   //------ Definición de registros de hardware ----
#WORD  OSCCON=getenv("sfr:OSCCON")   
//#WORD OSCCON=0xFD3
#WORD PORTC=getenv("sfr:PORTC")
#BYTE PORTC_L=PORTC
#BIT  LED=PORTC_L.0     //RC0

   //--------- Directiva para generar base de tiempo en el leguanje PICC---
#use delay(clock=48000000,restart_wdt)


   //----sub rutina  para serial


#use RS232(BAUD=9600,XMIT=PIN_C6,RCV=PIN_C7,BITS=8,ERRORS,RESTART_WDT)



   //------- Variables globales-----------
   unsigned char BUF_DAT[500];
   long PUNT,i;
   Boolean BAND_CAP,BAND_LISTO;

   //-------- Subrutina que efectúa el flasheo --------------
void FLASHEO(long TIE)
{
   LED=1;
   delay_ms(TIE);
   LED=0;
   delay_ms(TIE);   
   LED=1;
   delay_ms(TIE);
   LED=0;
   delay_ms(TIE);   
   RESTART_WDT();
   return;
}
   //----- Subrutina de servicio de interrupción del timer 0 ---------
#INT_TIMER0
void INT_SOB_TMR0(void)
{
   LED=~LED;                     // Bit toggle del LED
   if(BAND_CAP)
      {
         if(PUNT<500)
            {
               BUF_DAT[PUNT]=READ_ADC();        // Se captura cada muestra de la señal
               PUNT++;                          // Aumento el puntero
            }
         else
            {
               PUNT=0;
               BAND_LISTO=True;
               BAND_CAP=False;
            }      
      }   
   SET_TIMER0(65535-12000);      // Se obliga a ejectuar 12,000 cuentas que son Fs=1Khz
   RESTART_WDT();
   return;
}

   //--------SUBRUTINA DE USART
   
 #INT_RDA
 
 void INT_REC_SER(void)
 {
 
 unsigned char DATO;
 
    if(kbhit())   // verificar si hay dato disponible en el UART
      {
         DATO=GETC();   //
         //PUTC(DATO);
         if(DATO=='D')
         {     
               //printf("Iniciando captura de frame........ \n\r");
               PUNT=0;
               BAND_CAP=True;
         }
         
         else
         {
            PUNT=0;
            //printf("Comando no valido........... \n\r");
            BAND_CAP=False;
         
         }
      }
   RESTART_WDT();
   return;
 }
   
   
   //------- Subrutina que inicializa el procesador ---------
void INI_CPU(void)
{
   OSCCON=0;    
   SET_TRIS_A(0xFF);          //RA0 Generador de señales
   SET_TRIS_B(0xFF);
   SET_TRIS_C(0B10111110);    //RC0.-LED, RC6.-TX,RC7.-RX
   SET_TRIS_D(0xFF);
   SET_TRIS_E(0xFF);
   SETUP_TIMER_0(T0_INTERNAL|T0_DIV_1);
   SET_TIMER0(65535-12000);               // Se obliga a ejectuar 12,000 cuentas que son Fs=1Khz
   SETUP_ADC(ADC_CLOCK_INTERNAL);
   SETUP_ADC_PORTS(ALL_ANALOG);
   SET_ADC_CHANNEL(0);              //Se configura para leer RA0
   ENABLE_INTERRUPTS(INT_TIMER0);
   ENABLE_INTERRUPTS(INT_RDA);        //INTERRUPCION RECEPCION SERIAL
   ENABLE_INTERRUPTS(GLOBAL);      
   RESTART_WDT();
   return;
}
   //--- Cuerpo de programa principal ------
void main()
{
   INI_CPU();        // Llamada a inicializar el procesador
   FLASHEO(100);     // Llamada a una subrutina que efectúa un flasheo de un led

   BAND_CAP=False;
   
   while(TRUE)
   {
      if(BAND_LISTO)
      {
      
         for(i=0;i<500;i++)
         {
            //printf("Dato No.%ld=%X \n\r",i,BUF_DAT[i]);
            printf("%X",BUF_DAT[i]);
            RESTART_WDT();
         }
            
         BAND_LISTO=False;   
      }
      RESTART_WDT();
   }

}
```



Hola. Tengo 2 preguntas. 
1.- ¿Qué función tiene el puente que está entre el capacitor y el terminal-block?
2.- Cuando quiero instalar el driver en LabView me aparece una contraseña. ¿Cómo se lo instalo?

Saludos.


----------



## dinoelectro (Mar 29, 2017)

Hola. Gracias por colaborar con el código.
Te recomiendo que construyas el DAQ publicado bajo el tema: "Algunos proyectos avanzados con microcontroladores PIC"
Ese funciona genial, tiene una excelente resolución de 10 bits y una buena velocidad de muestreo.
El DAQ publicado aquí, no funciona bien. Saludos.

Ver el archivo adjunto 117226
Ver el archivo adjunto 117226


----------



## JonnyGarcia (Mar 29, 2017)

Hola. Ya pude hacer la interfaz con el DAQ HID. Pero no se porque me da muchas oscilaciones como si tuviera mucho ruido. Seria bueno que mandaran un ejemplo de adquisición de datos de un potencio-metro o una foto-resistencia. Ya probé las entradas analógicas a tierra y el tl084 pero continúan las oscilaciones. Con cualquier entrada analógica que use oscilan las otras en el LabView y en el AN4 hace conteo con solo poner un cable. Alguien que pueda ayudarme?


----------



## Serch18 (Abr 13, 2017)

gracias dinoelectro


----------

