Sistema de Adquisición de Datos y de Control Externo para PC

Todo cuanto tiene que ver con la obtención, almacenamiento y proceso de la información digital, sus aplicaciones y el software y hardware utilizado.
Mensaje
Autor
Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

Sistema de Adquisición de Datos y de Control Externo para PC

#1 Mensaje por Anilandro »

Necesito un sistema de adquisición de datos para PC que pueda, además, controlar dispositivos externos, y tengo claro que para ello existen dos soluciones.

1) Adquirir un sistema comercial que sea ampliable a medida de las necesidades (todo lo que he encontrado hasta ahora es muy caro y de características no excesivamente buenas)

2) Construirlo partiendo de cero, utilizando las entradas y salidas estándar de la placa base del ordenador.

Hace unos 20 años construí algo parecido para un Sinclair Spectrum, que en principio me permitía:
- 8 entradas analógicas de 8 bits (0-10V.)
- 16 entradas digitales (nivel TTL)
- 2 salidas analógicas de 8 bits (0-10Volts)
- 16 salidas digitales (nivel TTL)
El sistema era además ampliable como mínimo a 5 veces más, añadiendo placas de un tipo u otro si se necesitaban.
La programación la efectuaba en BASIC, con las órdenes IN y OUT, y me permitió llevar a cabo algunos montajes interesantes.

Sin embargo, para el PC la cosa es diferente, ya que en el Spectrum se tenía acceso directo al bus de direcciones, de datos y de control del propio ordenador, lo cual simplificaba la tarea de diseño de la circuitería.
En un PC ni me atrevería a hacer lo mismo, porque es muchísimo más complejo y porque casi seguro que provocaría innumerables conflictos de hardware si no la destrucción del propio ordenador.

Mi idea, por lo tanto, sería utilizar el port de JUEGOS y el port paralelo CENTRONICS de la impresora.
La programación se podría llevar a cabo en C o en VBasic, utilizando las librerías INOUT (de las que carecía este lenguaje al principio).

Según la información que he reunido, en el de JUEGOS disponemos de:
- 4 entradas analógicas, persumiblemente de 8 bits
- 4 entradas digitales

En el paralelo CENTRONICS de impresora:
- 8 salidas digitales (en el bus de datos)
- 4 salidas digitales ( en el bus de control)
- 5 entradas digitales (en el bus de estado)

Diseñar la electrónica necesaria para utilizar estas posibilidades no es muy complicado, así como convertir las 8 salidas digitales del bus de datos en una analógica de 256 tramos. El problema es que 8 bits de resolución tanto de entrada como de salida me parecen pocos para algunos usos, y necesitaría 10 o mejor 12 bits, y esto si complica la cosa por la dificultad de encontrar ciertos integrados y resistencias de precisión.

Bien, este no es más que un esbozo de la idea que me gustaría llevar a cabo. Acepto sugerencias, así como si alguna alma caritativa me ahorra el trabajo informándome de algún sistema comercial bueno, bonito y barato.

Saludos a todos.

Avatar de Usuario
Sergi
Mensajes: 1723
Registrado: Vie Mar 17, 2006 10:35 am
País: El Segrià
Ciudad: Lleida
Ubicación: (a la derecha, según se mira, de la Vía Láctea)
Contactar:

#2 Mensaje por Sergi »

Hola a tod@s

hola Anilandro...

Da gusto dar la bienvenida a gente con ganas. Y eso me recuerda que yo mismo tendría que encontrar tiempo para presentarme como dios manda.

Respecto a lo que planteas, hace tiempo intente esto mismo, pero me di cuenta que superaba mi capacidad y conocimientos, sobretodo en cuanto a la programación en C o Basic. Precisamente cuando leí tu presentación pense en ello.

Le puedes echar un vistazo al debate en...

viewtopic.php?t=2891&start=0

Yo al final lo solucione poco más o menos con un tarjeta Velleman K8047 que me costo 30€ y de momento me soluciona la adquisición de los datos de las sondas del circuito de vacío y demás. Pero no deja de ser una solución limitada.

Ten por descontado que seguiré este hilo. Y si puedo aportar en algo lo haré con gusto. Aunque sin duda tus conocimientos en electrónica y programación me superan de mucho. Pero estoy a tu disposición para lo que necesites.

un saludo

Avatar de Usuario
baldo
Mensajes: 1514
Registrado: Vie Dic 23, 2005 7:54 pm
País: españa
Ciudad: coruña y madrid
Ubicación: Galicia
Contactar:

#3 Mensaje por baldo »

si no necesitas mucha velocidad puedes intentarlo por la RS232 y un microcontrolador. el pic 16f877 tiene integrado un modulo rs232 y solo necesitas un integrado el max 232 para traducir niveles de la rs a ttl, y aparte de esto tiene unos 4x8 pines, todos programables como ins o outs y cada uno con sus peculiaridades, hay unos 5 o 8 adc de 10 bits, un pwm usable como dac con un alisamiento, temporizadores, contadores, etcs.

los problemas:
1º es muy lento por la rs, aunque seguro que se puede trucar el tope 9600,
2º las xp no dejan aceder a los puertos por las buenas, funciona pero mal, hay una especie de bufer interno que lo jode todo, yo siempre controlo el flujo, un byt en una direcion y otro en otra.

Avatar de Usuario
aewolframio
Mensajes: 658
Registrado: Dom Abr 09, 2006 6:12 am
Ubicación: Cartago/Costa Rica
Contactar:

#4 Mensaje por aewolframio »

Yo he utilizado un multímetro digital marca radioshack para capturar datos desde un puerto RS232, pero no sirve para control del aparatos. Para este ùltimo punto talvez te pueda ayudar la siguiente pàgina.

http://www.windmill.co.uk/

Saludos

Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

#5 Mensaje por Anilandro »

Gracias por vuestras sugerencias. Investigaré un poco por la red para informarme mejor de cada opción. Sin embargo, tengo algunas consideraciones. En primer lugar prefiero los sistemas paralelo a los serie, porque en general los datos van más rápidos y porque a la hora de construir circuitos son "más claros" y sencillos de realizar.

Mis dos únicas experiencias en este campo concreto de la adquisición de datos han sido esa especie de controlador programable que realicé para el Spectrum y un programador de eproms para el mismo ordenador.

La ventaja de estos circuitos es que pueden interactuar en tiempo real con los programas propios. El caso del Velleman (yo utilizo en el trabajo el osciloscopio digital de mano de esta marca) parece un módulo interesante, y como dices tú, Sergi, es baratísimo y tiene la ventaja de entrar por USB, pero parece utilizar su propio programa de captura, con lo cual dificilmente me serviría. En todo caso las entradas analógicas ya creo tenerlas solucionadas con el puerto de juegos del PC.

En realidad, el mayor problema son las salidas analógicas, puesto que es difícil encontrar integrados tipo DAC de más de 8 bits, con lo cual el bus de datos del puerto paralelo me sirve únicamente para una salida de este tipo.

Estoy estudiando un sistema "multiplexor" que utilizando tres bits adicionales del bus de control me pueda desviar la salida a 8 puntos distintos, con lo cual podría controlar, por ejemplo:
- 2 salidas analógicas con resolución de 8 bits
- 2 de 16 (aunque no hay DAC's de más de 12 y los 4 restantes se quedan libres)
- 16 salidas digitales

Naturalmente el hecho de que sean multiplexadas implica utilizar algún circuito TTL del tipo "latch" 74LS374 que actua como una memoria de 8 bits para mantener el valor estable mientras el bus atiende a otra salida.

Pero todo esto son palabras. Es mejor ir pasito a pasito. Esta próxima semana intentaré dar forma a las entradas a través del puerto de juegos, aunque antes deberé montar de nuevo mi pequeño taller, ya que desde que cambié de trabajo, apenas hago nada de montaje de circuitos.

En la figura 2 de la página:

http://www.fortunecity.es/imaginapoder/ ... /gport.htm

se puede ver (aunque algo oscuro) las conexiones. En truco consiste en sustituir las resistencias por una fuente de tensión, de intensidad o una resistencia variable (es difícil de saber sin probarlo) y ver que valores nos da el XP en la rutina que tiene para ajustar el joystick.
Mi idea es controlar directamente la entrada desde VBasic, aunque no se si deberé pelearme con el XP para ello.

Mañana investigaré un poco el asunto

Un saludo a todos

Avatar de Usuario
heli
Mensajes: 1952
Registrado: Mié Sep 06, 2006 7:28 am
País: España
Ciudad: Alcalá de Henares
Ubicación: Alcala de Henares (Madrid, España)
Contactar:

#6 Mensaje por heli »

Hace 6 años que estamos en el siglo XXII, ahora es muy fácil encontrar AD y DA de más de 8 bit muy rápidos y con casi todo integrado, y muchos de ellos llevan interface série tipo I2c o SPI con lo que puedes controlarlos con muy pocas señales. Los PIC, por ejemplo llevan un AD de 10 bit (aunque no de calidad de instrumentación).
Yo he usado el LTC1090CN, procenente de un desguace, tiene 8 canales de 10 bit y se comunica por medio de sólo 4 hilos pèro solo sirve hasta 30Khz. Está pensado para instrumentación. Tambien he usado el CS5520BP que es de ¡¡¡ 20 bits !!!, se comunica vía serie mediante 4 hilos, y lleva un procesador de señal interno. Es lento (60Hz) pero para medidas de instrumentación es una maravilla. Además tengo escrito el código en C para comunicarse con él. Existe una versión más sencilla, de "sólo" 16 bit, el CS5516BP. Para D/A igual: yo he usado el AD7543JN que es de 12 bit y se controla vía série también.
Seguro que es posible encontrar buenos y baratos AD/y DA en páginas de venta online.
Para entradas y salidas digitales es mejor usar un circuito série/paralelo similar a este: http://heli.xbot.es/ampliacion/ampliacion.htm
que proporciona muchas señales con sólo 5 hilos de control. Se pierde velocidad pero se gana sencillez.
La idea del puerto de yoystick no es muy buena para aplicaciones de precisión. El convertidor de los PC es un monoestable, lo disparas y luego mides el tiempo que tarda en caer, que es proporcional a la R del joystick.
Yo llevo mucho tiempo pensando, como tú, en hacer un equipo de adquisición de datos para PC, pero siempre lo aparto por otros proyectos. Además tengo un registrados de papel de 6 canales de desguace, no va muy fino pero registra.
También tengo un Agilent 34970A.
http://www.home.agilent.com/USeng/nav/- ... 44/pd.html
Tiene el display averiado, pero con 60 canales analógicos e interface para PC se puede hacer cosas

GS3
Mensajes: 501
Registrado: Vie Sep 08, 2006 6:58 am
Ubicación: Madrid, España

Un voto más por el Velleman K8055

#7 Mensaje por GS3 »

El K8055 tiene ene muchas ventajas
-es barato
-es USB con lo cual no ocupa los puertos tradicionales y no importa que desaparezcan
-es muy sencillo de usar. viene con un interface de demostración que puedes modificar con C++. Lo compras, lo enchufas e inmediatamente estás haciendo pruebas, no perdiendo el tiempo en montajes ni programación básica ya que todo eso está hecho.

Para aplicaciones sencillas, de una sola vez, creo que es insuperable. Cualquier otra solución llevará mucho más esfuerzo de implementar.

En este momento me encuentro viajando por China un viaje de varias semanas y he dejado en casa un módulo K8055 que me vigila varias cosas y me permite controlar otras. No hace nada automáticamente porque yo no quiero, solo registra varias entradas y los cambios que se producen en ellas. Y yo puedo modificar el estado de las salidas desde donde estoy. Esto fue una cosa que hice en el último momento antes de irme aprovechando el módulo que ya tenía. No habría tenido tiempo para diseñar otra cosa. Lo bueno de esta tarjeta es que es de propósito muy general por lo que se puede utulizar para muchos proyectos distintos. Y se pueden conectar hasta cuatro tarjetas a un ordenador ya que se pueden direccionar independientemente.

Como digo, por su precio no hay solución mejor si no es metiéndose hasta las cejas en hacer tu pripio diseño.

GS3
Mensajes: 501
Registrado: Vie Sep 08, 2006 6:58 am
Ubicación: Madrid, España

caracteristicas tecnicas

#8 Mensaje por GS3 »

El módulo Velleman K8055 tiene
- 5 entradas digitales binarias
- 2 contadores: cuentan ciclos en las entradas 1 y 2. El resto las podemos contar por software, naturalmente.
- 2 entradas analógicas de 8 bits, 0-5 V
- 2 salidas analógicas de 0-5 V o PWM, ambas disponibles.
- 8 salidas digitales

Desde el interface suministrado se puede leer cualquier entrada y controlar cualquier salida de forma manual. Usando C++ o similoar se puede hacer el software que querams leer las entradas y controlar las salidas.
Cada módulo es direccionable de 0-3 de modo que se pueden controlar 4 módulos iguales desde el mismo interface.

GS3
Mensajes: 501
Registrado: Vie Sep 08, 2006 6:58 am
Ubicación: Madrid, España

#9 Mensaje por GS3 »

Este es el interface que yo hice como variación del que viene con el aparato.
Imagen
Otra cosa buena del K8055 es que tiene pulsadores y potenciómetros incorporados para probar las entradas y LEDs para observar las salidas

Avatar de Usuario
Anilandro
Mensajes: 4905
Registrado: Dom Feb 11, 2007 10:16 pm
Ubicación: Islas Baleares, España
Contactar:

#10 Mensaje por Anilandro »

Bueno, chicos, poco a poco voy atando cabos.

En primer lugar, me estoy dando cuenta de que vivo casi en la prehistoria de la adquisición de datos. Mis montajes para Spectrum tienen más de 20 años y está claro que en este tiempo las cosas han cambiado un pelín.

Entre todas las opciones me ha gustado bastante el K8055, especialmente por su conexión USB (lo que evita problemas de compatibilidad con ordenadores nuevos) y porque al tener sus rutinas en una DLL, es accesible por muchos lenguajes. Entre ellos el VB (que sin ser un experto, es el que me cuesta menos) o si falta velocidad el C++, aunque cuando estudiaba llegué a odiarlo a muerte por necesitar bastante más código para hacer cosas sencillas y por sus frecuentes problemas al momento de compilar.
La K8055 la he encontrado en:

www.velleman.be/ot/en/product/view/?id=351346

El único punto flaco de este módulo es la resolución de los canales analógicos. Los 8 bits son pobres para muchas tareas. El resto está bien. En todo caso, GS3, me interesaría saber dónde puede adquirirse y su precio orientativo.

Hojeando el catálogo de Velleman he encontrado también el K8061

www.velleman.be/ot/en/product/view/?id=364910

cuyas características son en parte mejores. Tiene 8 entradas analógicas de 10 bits, aunque sigue manteniendo los 8 bits en las salidas. Es más rápido y se pueden conectar 8 tarjetas al ordenador (por 4 del modelo anterior)

Otro asunto que ha resultado ser un pequeño calvario ha sido encontrar cómo manejar el joystick en VBasic. No porque falten páginas que hablen de ello y rutinas de demostración. De hecho estas funciones están contenidas en la winmm.dll, guardada en windows/system32, pero casi todas las explicaciones que encontraba eran parciales, obviando cosas importantes que se supone que debías saber, pero que impedían que los ejemplos llegasen a funcionar.
Al fin sí que he encontrado un par de listados en www.vb-mundo.com/ que funcionan sin problemas, permitiendo controlar el mouse, el teclado y el joystick.
En fin, sin dejar mi idea original, me interesa lo de estas placas, lo único es que no sé cómo conseguir con ellas más resolución de salida (naturalemente sin tener que comprar 4 y unirlas 2 a 2 para atacar com palabras de 16 bits un integrado DAC de más de 8.

La información de Heli también me interesa. En un listado de integrados he encontrado algunos DAC's de la misma serie, aunque preferiría tenerlo todo en la misma placa y con la misma conexión al ordenador, aparde que ninguno de ellos es de más de 12 bits.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado