Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




Matriz 8x4 puerto paralelo


       



#1  Matriz 8x4 puerto paralelo
Marcelo
Colaborador
Registrado: 27 Jul 2005
Mensajes: 373
Ubicación: Venezuela
citar
Saludos,

Estoy tratando de hacer una matriz de 8 entradas (las 8 del puerto paralelo - desde D0 hasta D7) y 4 salidas, todas a nivel TTL.

La idea es poder escoger cual de las 8 entradas corresponde a cada salida, por ejemplo:
D5 es la salida 1
D3 es la salida 2
D0 es la salida 3
D7 es la salida 4

De esta forma podré "setear" las 4 salidas con cuatro entradas que yo escoja arbitrariamente desde el puerto paralelo y asimismo podré cambiarlas mediante un DipSwitches o jumpers cuando lo desee.

He intentado utilizar multiplexores 8x1, pero el problema que tengo es como llevar una señal específica a uno solo de los multiplexores (debería usar 4 de ellos para esta idea)

No es problema lo que viene luego de las salidas pues el circuito aislado ópticamente ya lo tengo diseñado. Estas 4 salidas controlan los emisores de unas optocuplas (u optoaislantes) que controlan un circuito de 4 relays.

Saludos y gracias por la ayuda que puedan dispensar.

Marcelo. Question

#2  
MaMu
Moderador
Registrado: 18 Abr 2005
Mensajes: 912
Ubicación: Argentina - Buenos Aires - Capital Federal
citar
Cual es la razon que impide que utilices como entradas las 5 lineas del registro de Estado? ya que puedes conmutar dichas señales a masa y conseguir asi entradas digitales. El problema de utilizar el registro de Datos como entradas, es que posiblemente tengas una diferencia real entre la tensión en bornes del Latch y la lectura de señales, que lo más común que sucede es que tengas una lectura del registro diferente a la presencia de tensión en bornes, esto se debe a que la lectura se realiza en base a una media sensada desde la configuración del centronics. Esto se explica de la siguiente manera, puedes estar enviando un valor lógico alto (5V) a determinado datos, por ejemplo D3 y estar midiendo con el multímetro un nivel bajo (0V) a la salida del puerto paralelo. En caso de ser necesario el evitar utilizar las entradas desde el registro de estado, yo te recomendaria que lo hagas desde el registro de control. Ten en cuenta que estas configuraciones varian segun la norma del puerto que se haya establecido (ECP - EPP - EX). Tengo muchisimas interfaces por puerto paralelo realizadas, tanto para logica TTL como para control de potencia de CA. Hago esta aclaración ya que el registro de datos abarca los 8 bits del registro de Datos de D0..D7 y se recomienda el uso de los mismos como Salidas y no como entradas. (por el inconveniente anteriormente explicado).
Saludos, cualquier consulta sera respondida a la brevedad.

Pegale una mirada a este thread... tuve problemas por una compra de componentes defectuosos.
http://forosdeelectronica.com/viewtopic.php?t=274

#3  
Marcelo
Colaborador
Registrado: 27 Jul 2005
Mensajes: 373
Ubicación: Venezuela
citar
Gracias MaMu por tu respuesta y la excelente explicación.

Te comento,

Las señales de las cuales hablo en mi post inicial son todas salidas desde el puerto paralelo hacia la interfaz y creo que no lo expliqué lo suficiente.

No hago lecturas de señal desde el puerto en ningún momento.

Ahora te explico porque necesito esto.

La interfaz controla el movimiento de un telescopio cassegrain de 14 pulgadas (4 señales: Norte, Sur, Este y Oeste) para astrofotografía.

Una cámara toma fotos cada x segundos de una estrella de referencia escogida por mi con la ayuda de un telescopio más pequeño montado sobre el de 14 pulgadas. Esta foto es analizada por un software y determina cuanto segundos de arcos se ha desviado el telescopio y envía las señales pertinentes (todas salidas) hacia el puerto paralelo para corregir esa infima desviación mediante la interfaz que está conectada al telescopio. No hay retroalimentación por el puerto, ésta se realiza por medio de la foto de guiado y el análisis de ella.

Esas desviaciones distorsionan la foto final que está tomando otra cámara colocada en el telescopio principal si no son corregidas (estamos hablando de 5 a 10 minutos de exposición contínua a obturador abierto).

Ahora el problema:

La interfaz que diseñé, está aislada ópticamente del puerto paralelo y éste (el puerto paralelo) solo envía señales hacia la base de un transistor que polarizado, enciende el led de la optocupla. De allí en adelante tengo, del lado de los transistores del optoaislante, un circuito para controlar las bobinas de 4 relés de 5 voltios (de esos que se usan en los modems)

El problema radica en que utilizo varios programas para tomar fotos y controlar el movimiento del telescopio (y bastante caros por cierto), pero cada uno de ellos está programado para enviar las señales de control por distintos pines del registro de datos (D0 a D7), por consiguiente tendría que hacer una interfaz para cada uno de ellos.

Actualmente tengo unas especies de "patch cords" o puentecitos de cables por llamarlos de alguna forma, con los cuales "puenteo" a mano los pines que me interesan según el programa que utilizo, pero esto además de peligroso debido al riesgo de volarme algún driver del puerto (aunque tomo la precaución de apagar la interfaz antes de puentear) es muy fastidioso y difícil hacerlo a obscuras y a la intemperie.

La idea es poder hacer una matríz análoga a un teclado por ejemplo, que me permita definír que registro debe conectarse a que pin de entrada de la interfaz (8 del paralelo hacia 4 del circuito), para lo que desearía utilizar un circuito lógico y unos dipswitches o jumpers para hacerlo . Podría ser un PLA?, también pensé en un manejador de siete segmentos...pero no doy pié con bola todavía

Entiendo el malentendido del post anterior. Cuando digo una matriz de 8 entradas y 4 salidas me refiero al circuito que necesito. Las 8 entrada de ese circuito serían las salidas D0 a D7 del puerto paralelo, y las salidas de ese circuito serían las entradas a la interfaz.

Bueno, DISCULPA LO LARGO!!! pero espero que haya podido explicar bien el problemita.

Saludos y gracias nuevamente.

Marcelo.

#4  
MaMu
Moderador
Registrado: 18 Abr 2005
Mensajes: 912
Ubicación: Argentina - Buenos Aires - Capital Federal
citar
Lindo trabajito el del telescopio :D .
Ahora bien, a ver si te entendi correctamente, lo que vos tenes es un circuito el cual recoge los 8 bits del puerto paralelo (D0..D7) que, mediante el uso de optoacopladores para proteger el mismo, produce la exitación del fototransistor para la conmutación de las bobinas de los relé. Hasta ahi vamos bien, es muy claro. Tu problema es que, utilizas un programa A que maneja los bits D0, D3 y D7 y utilizas un programa B que maneja los bits D1, D2, D5 y D6, entonces, como solo tenés las 4 salidas necesarias, te vez obligado a puentear las salidas de datos D0..D7 a los optoacopladores según el software que estas utilizando de turno. Lograste determinar cuales son los bits que maneja cada software? Por lo que veo, es que todos los softwares solo manejan 4 bits (de entre D0..D7) es decir 1 bit por cada una de las 4 salidas de relé.

Si es correcto esto, avisame que seguimos adelante con la solución, tengo varios circuitos dando vueltas por aca.

Edit 1

El problema del Multiplexor son las lineas de datos, al igual que ocurriria utilizando algun array (PLA) ya que como bien te pregunte, deberiamos conocer que bits utilza cada soft, como para poder definir las salidas. Lo que si se podria hacer, una vez determinando que bits utiliza cada soft, realizar la suma BCD de cada operación y compararla a un valor establecido (Jumpers o Dip Switch y/o memoria) que vos definas, ya que pienso que quizas armas un circuito y el dia de mañana agregas un nuevo soft y seguiras en la misma. Siempre hablando en BCD, seteamos las conbinaciones de cada uno de los soft que estes corriendo, tomamos en cuenta que hay A3,A2,A1 y A0 posibilidades es decir, 4 relés activados o ninguno y sus combinaciones. Como realizamos esto a partir de 8 bits, muy simple, sumamos el valor BCD del puerto paralelo a un numero decimal (por ejemplo y para no salirnos de la lógica TTL) y lo comparamos con nuestros valores almacenados (seria bueno alguna memoria) y que sea el circuito que identifique el software y active las correspondientes entradas.
Un ejemplo práctico seria :
El Soft "Cosmo X" (jeje que imaginación!!!) utiliza para posicionar un motor de movimiento vertical el dato D2 y para posicionar un motor de movimiento horizontal el D6 , (D2 -> BCD = 4 / D6 -> =64), datos seteados
BCD = 4 activa relé 1 / BCD = 64 activa relé 3, sumatoria 68 activa relé 1 y 3. Y asi por cada soft.

Espero haber sido claro... saludos.

#5  
Marcelo
Colaborador
Registrado: 27 Jul 2005
Mensajes: 373
Ubicación: Venezuela
citar
Saludos MaMu,

Lo que explicas es correcto; es tal cual lo que quiero hacer.

Los algoritmos que usan esos programas solo mandan una señal a la vez es decir, solo Norte, Sur, Este u Oeste; nunca van a mandar SurEste por ejemplo lo cual implicaría 2 señales simultáneas, aunque creo que ésto no complica o simplifica el circuito de ninguna manera.

Tal como lo explicas, el circuito debería permitirme hacer cualquier combinación deseada, pues no se con que se van a venir estos tipos de los softwares en un futuro. Más aun, si el circuito me permitiera utilizar 8 entradas y 8 salidas combinadas o mezcladas a voluntad sería más general y útil todavía. Y te digo esto porque esos mismos programas utilizan otras salidas del mismo puerto paralelo para controlar motores paso a paso o una interfaz pwm para motores DC con contadores digitales (optical encoders), que tienen la función de enfocar automáticamente la cámara CCD (otro proceso bastante tediosos en astrofotografía).

Sin embargo, como yo utilizo un circuito controlado por puerto serial que diseñé hace ya algún tiempo para esto del foco en realidad no me hace falta aun.

La idea del BCD me parece muy interesante, pero no entiendo mucho como "setearía" desde el punto de vista manual, las entradas y salidas. Tendría 4 dipswitches de 8 siwtches cada uno para programarlo?

Me parece que este sería un buen proyecto para poder dar cierta "compatibilidad" a todos estos desarrollos de software que si a ver vamos no entiendo porque no se ponen de acuerdo para usar todos las mismas señales en una forma estandarizada.

Los programas que tengo (3) usan:

N D0 D1 D0
S D3 D2 D3
E D4 D3 D5
O D5 D4 D7

y poseo un cuarto que permite definirlo desde el software (lo que soluciona todo por cierto).

Saludos y gracias.
Marcelo.

#6  
Li-ion
Moderador
Registrado: 26 Ene 2005
Mensajes: 1001
Ubicación: Armenia, Colombia
citar
Creo que tu problema se resuelve de una forma mas fácil, si partimos del hecho de que cada programa que utilizas ocupa pines diferentes del puerto, solo debes utilizar compuertas OR para sacar una única señal de control.

Ejemplo

N = D0 OR D1
S = D2 OR D3
E = D4 OR D5
O = D6 OR D7

En este caso la salida del la compuerta OR seria la señal que controle el optoacoplador.

Compuertas OR: CD 407, 7432 (Quad input OR Gate)

Saludos.

#7  
MaMu
Moderador
Registrado: 18 Abr 2005
Mensajes: 912
Ubicación: Argentina - Buenos Aires - Capital Federal
citar
Si, como bien dice Li-ion, el uso de compuertas es lo más sencillo, ya que ahora conociendo los datos, la comparación máxima es en 3 variables, aunque presenta un inconveniente en D3. (Sur o Este), y lo que no quita que en algun futuro soft, presente inconvenientes con algun otro dato.

#8  
Marcelo
Colaborador
Registrado: 27 Jul 2005
Mensajes: 373
Ubicación: Venezuela
citar
Gracias muchachos por las respuestas.

La compuertas lógicas básicas fue lo primero que pensé en utilizar, pero luego de un pequeño análisis me di cuenta que funcionan siempre y cuando no hayan pines comunes entre dos direcciones distintas.
Déjenme tratar de explicarles.

Las direcciones que usan los programas son:

N D0 D1 D0
S D3 D2 D3
E D4 D3 D5
O D5 D4 D7

Si como dice Li-ion, para el optoacoplador que controla ESTE implemento D4 OR D3 OR D5 y para el que controla OESTE hago D4 OR D5 OR D7, vemos que D4 y D5 son comunes para ambos casos.
Esto quiere decir que cuando un programa mande a activar ESTE, en la interfaz se activará tantyo ESTE y OESTE, lo cual no funciona.

Esa solución sirve si no existe coincidencia de pines entre direcciones distintas.

Saludos y gracias.

Marcelo.

#9  
Li-ion
Moderador
Registrado: 26 Ene 2005
Mensajes: 1001
Ubicación: Armenia, Colombia
citar
Siendo así el caso, entonces utiliza un multiplexor 2 a 1 controlado por los cuatro pines de control del puerto, configuras los cuatro pines con algún programita sencillo en visual basic. El multiplexor que puedes usar es el 74157 (Quad 2- line-to-1 data selector/multiplexer with non-inverting output) o el 74158 que tiene las salidas invertidas.

El posible inconveniente que puedas tener es que alguno de los programas escriba en el registro de control a la ves que lo hace en el de datos, en ese caso debes usar un latch en el circuito, que conserve la configuración de control.

#10  
Marcelo
Colaborador
Registrado: 27 Jul 2005
Mensajes: 373
Ubicación: Venezuela
citar
Saludos

Li-ion, podrías explicarme un poco más tu idea?
Me parece que la solución de utilizar un programa auxiliar (no tengo problemas con VB y C++) controlando el circuito podría se la ideal.
Los programas que menciono no utilizan los registros de control y tampoco los de estado.
Voy a pensar en algo así a ver.

Gracias.

[/img]

 Responder



Google
 


 Temas de interés 
No hay mensajes nuevos Entrada/Salida de audio a traves de USB
No hay mensajes nuevos Como separar señales, si son entrada y salida de datos
No hay mensajes nuevos Circuito acondicionador de entrada 4-40mA y salida 0-10 V
No hay mensajes nuevos Conectar salida video de camara a monitor video
No hay mensajes nuevos Circuito con reles para puerto paralelo con salida de 3.3v

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||