¿como puedo hacer esto?. (como una puerta).

¡Hola!

No tengo muchos conocimientos de electrónica, asi que voy a intentar explicar lo mas sencillo que me sea posible lo que quiero hacer a ver si me podeis decir que integrado necesito o como solucionarlo si existe otro modo.

Tengo 9 señales lógicas en función de su voltage (0v ó 5V). Las he llamado S0, S1,..,S8 (en total las 9 señales/sensores).

en función de que señal se active quiero colocar un valor en tres patillas de un PIC16F84, es decir, algo como esta tabla:

Sendor Patillas Pic.

------------------------

1 000 2 001 3 010 4 011 5 100 etc. etc. " " ¿entendeis?.....

Luego iré leyendo las 3 patillas del PIC16f84 y en función de que valor tengas sabré que señal/sensor se ha activado.

¿Existe algúna forma de hacer que en función de que señas (1-9) se haya activado, se produca una salida de tres bits para colocarla en las patillas del pic?.

Gracias!

Reply to
Carmelo J. Morales Muñoz
Loading thread data ...

seguro que hay algún chip que lo hace, pero tambien se puede hacer a pelo con unos cuantos diodos. Conectas las entradas del pic a 0V con tres resistencias, y luego desde cada una de esas lineas llevas diodos a las entrada que han de adquirir el valor 1

tambien lo puedes hacer con un multiplexor, usando tres salidas y una entrada, vas escaneado desde el pic todas las lineas. tiene la ventaja de que si se activan varias linea puedes saberlo (en los otros casos no).

Reply to
Nolo Pongo

"Carmelo J. Morales Muñoz" escribió en el mensaje news:bvm24p$370$ snipped-for-privacy@nsnmrro2-gest.nuria.telefonica-data.net...

[...]

[...]

Puedes usar un 74HC147, que te codifica (con prioridad) 10 líneas a 4. Con 9 sensores necesitas 4 bits para representar el estado, no te vale con 3.

Saludos Miguel Giménez

Reply to
Miguel Gimenez

Gracias a ambos, lo voy a intentar con diodos, a ver si soy capaz,....

Gracias a ambos, si no lo consigo con diodos buscaré ese integrado.

bye!

Reply to
Carmelo J. Morales Muñoz

Con diodos lo consigues, pero es mas elegante un integrado.

1 ---/\/\/\-------------------+ | 2 ---/\/\/\----------------+ | | | 3 ---/\/\/\-------------+ | | | | | 4 ---/\/\/\----------+ | | | | | | | 5 +----|>|-----------|--|--|--+ +----|>|-----------|--|--+ | | | | | 6 +----|>|-----------|--|--|--+ +----|>|-----------|--+ | | | | | | 7 +----|>|-----------|--|--+ | +----|>|-----------|--+ | | | | | | 8 +----|>|-----------|--|--|--+ +----|>|-----------+ | | | | | | | 9 +----|>|-----------|--|--+ | +----|>|-----------+ | | | | | | | | | | | b3 b2 b1 b0

La codificacion queda: 1 0001 2 0010 3 0100 4 1000 5 0011 6 0101 7 0110 8 1001 9 1010

Si asignas el estado 0000 te ahorras dos diodos

1 -- NC 2 ---/\/\/\-------------------+ | 3 ---/\/\/\----------------+ | | | 4 ---/\/\/\-------------+ | | | | | 5 ---/\/\/\----------+ | | | | | | | 6 +----|>|-----------|--|--|--+ +----|>|-----------|--|--+ | | | | | 7 +----|>|-----------|--|--|--+ +----|>|-----------|--+ | | | | | | 8 +----|>|-----------|--|--+ | +----|>|-----------|--+ | | | | | | 9 +----|>|-----------|--|--|--+ +----|>|-----------+ | | | | | | | | | | | | | | | b3 b2 b1 b0

La codificacion queda:

1 0000 2 0001 3 0010 4 0100 5 1000 6 0011 7 0101 8 0110 9 1001

Saludos. Eduardo.

Reply to
Eduardo
¿Te has fijado en lo que te han dicho? Con 3 bits sólo puedes representar el estado de 8 sensores, no de 9, a no ser que asignes a dos sensores la misma combinación de 3 bits.

--

Saludos de José Manuel García snipped-for-privacy@terra.es http://213.97.130.124

"Carmelo J. Morales Muñoz" escribió en el mensaje news:bvme38$khn$ snipped-for-privacy@nsnmrro2-gest.nuria.telefonica-data.net...

Reply to
pepitof

La única manera que se me escurre de leer 9 bits con 3 patras es utilizar un registro de desplazamiento con entrada paralelo - salida serie.

entonces usas las tres patas como sigue:

pata 1 - entrada de datos al PIC pata 2 - salida de reloj del pic al registro pata 3 - señal de 'strobe' para cargar los bits de los sensores en el registro.

Mediante este sistema puedes leer los bits que te de la gana a traves de las tres patitas, conectando varios registros de desplazamiento en serie.

Si buscas bien, puedes utilizar un único registro de 8 bits, conectando el noveno a la entrada serie de cascada.

El programa para leer los bis suele ser algo como así:

define entrada = pata1 define clock = pata2 define strobe = pata3

pon a 0 buffer0 // 8 bits inferiores pon a 0 buffer1 // bit inferior (último) pon a 0 clock pon a 1 strobe pon a 0 strobe bucle de 8 veces { pon a 1 clock pon entrada en bit 0 de buffer0 pon a 0 clock desplaza buffer0 a la izquierda 1 bit } pon a 1 clock pon entrada en bit 0 de buffer 1 pon a 0 clock

Melkor ... de bit bucket brigade

Reply to
Melkor

Pues despues de ver tu post, a mi se me ha escurrido cómo hacerlo con una sola pata, una entrada. Pones un multiplexor, un contador para direccionar el multiplexor, y un oscilador para que el contador cuente, entonces recibes en la entrada del pic secuencialmente todos los valores.

Falta detectar cual es cual, que lo puedes hacer con otra pata de entrada que te diga el momento en el que el contador vale 0, o una patilla de salida aplicada al reset, o bien usando algún otro tipo de lógica. Por ejemplo si usas un multiplexor de 16 a 1, y solo vas a usar 9 entradas, y sabes que no habrá dos activadas a la vez, puedes poner dos entradas de las no usadas fijas a 1, y en base a eso saber el valor del contador en cada momento.

Reply to
Nolo Pongo

Hombre, pozí, pero lo chulo aquí era hacerlo con un solo integrado, sin añadir demasiada lógica ¿no?

Y si quieres usar una sola pata, pues usa otro pic, que son gratis, y le metes un programilla que envie por serie todas las patas menos la salida, que puedes montarla en bidireccional para comunicarse con un sólo hilo con el pic maestro. Aunque lo que yo prefiero es usar una linea de reloj para sincronizar los bits, para no depender de temporizaciones, pero bueno, eso son gustos.

¿Se nota que prefiero el i2c a las comunicaciones asíncronas ?

Melkor ... síncrono

Reply to
Melkor

Si, gracias!.... realmente quería 2 elevado a 3, es decir, 8. No me di cuenta al escribir...... Estoy haciendo ahora mismo con diodos a ver que tal queda en el Workbench...

Nuevamente gracias!

Reply to
Carmelo J. Morales Muñoz

Entonces busca un codificador decimal-binario o codificador de prioridad con salida binaria, por ejemplo el 74148 o 74348.

--

Saludos de José Manuel García snipped-for-privacy@terra.es http://213.97.130.124

"Carmelo J. Morales Muñoz" escribió en el mensaje news:bvrdke$6eh$ snipped-for-privacy@nsnmrro2-gest.nuria.telefonica-data.net...

tal

Reply to
pepitof

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.