TODOPIC

FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: EdoNork en 23 de Junio de 2009, 08:43:02

Título: Codificar 10 líneas a 4 y viceversa
Publicado por: EdoNork en 23 de Junio de 2009, 08:43:02
Hola a todos:

Tengo que enviar las señal de control desde un PIC a 10 relés.
¿Existe algún integrado que codifique esas 10 líneas a 4? Así podría utilizar un cable de datos con menos polos.
Necesitaría, por supuesto, su integrado complementario en destino, para descodificar esas 4 líneas a las 10 que necesito.
Las señales irían así:

PIC --> Codificador --> cable --> Descodificador --> ULN2803 --> Relés

Como el ULN2803 solo puede controlar 8 relés, los dos restantes los dispararía con un par de transistores.

Perdón por la poco precisión de la pregunta, pero soy nuevo en esto y se lo que quiero hacer, pero no conozco los medios existentes para hacerlo.

Un saludo.
Título: Re: Codificar 10 líneas a 4 y viceversa
Publicado por: AKENAFAB en 23 de Junio de 2009, 09:40:00
Podrias hacerlo con registro de corrimiento y solo usarias 2 lineas.

Datos y Clock.

SErian de mejor ayuda los que tienen latch , asi primero cargas los valores de los relevadores que quieres habilitar y luego habilitas salidas. 74HC164 , 74hc299 me parece que son utiles.

Saludos!
Título: Re: Codificar 10 líneas a 4 y viceversa
Publicado por: sycho en 23 de Junio de 2009, 10:33:18
PIC --> Codificador --> cable --> Descodificador --> ULN2803 --> Relés
El codificador lo puedes implementar en el pic, así te ahorras el codificador y utilizas menos pines del pic.

Puedes usar codificación BCD (directamente indicas el número del relé que quieres activar, en binario), y como decodificador puedes usar un 74LS145. Si los relés no son muy grandes, puedes manejarlos directamente con éste integrado (hasta unos 20mA) mediante low side switching. Mirate el datasheet y entenderás facilmente como funciona...

Pero no se si te habrás fijado en que codificando con 4 bits sólo puedes tener un relé activado a la vez, así que no se si te servirá.
Título: Re: Codificar 10 líneas a 4 y viceversa
Publicado por: EdoNork en 23 de Junio de 2009, 14:04:27
Akenafab: voy a estudiar eso que me cuentas.

sycho: no entiendo porqué solo puedo tener activo un relé. Con 4 bits tengo 16 valores. Solo necesito 10 valores, con buscar el binario que coincide con los puertos que quiero tener abiertos o cerrados y mandarlo en forma de 4 bits... pero no se si exuste un integrado que lo haga.

Me gusta la idea de mandarlo codificado con el PIC. Pero como pueda implementar lo de Akenafab, creo que lo tengo solucionado.

¡Qué pena estar tan verde en electrónica!

Gracias a los dos.

Un saludo.

P.D. Si alguien tiene alguna otra idea, que no se la ahorre ;)
Título: Re: Codificar 10 líneas a 4 y viceversa
Publicado por: sycho en 23 de Junio de 2009, 16:03:11
sycho: no entiendo porqué solo puedo tener activo un relé. Con 4 bits tengo 16 valores. Solo necesito 10 valores, con buscar el binario que coincide con los puertos que quiero tener abiertos o cerrados y mandarlo en forma de 4 bits...
Exacto, tienes 16 valores. Pero como codificas por ejemplo que se encienda en 1 y el 9?
De esos 16 valores te serán útiles 11. Un valor significará todos los relés a off y los demás 10 corresponderán a cada uno de los relés.

Para la idea de Akenafab puedes utilizar registros de desplazamiento que se cargan mediante una comunicación síncrona (data, clock y latch). Por ejemplo con dos 74HC595 (tienen 8bit cada uno) en cascada (Q7' del primero al data del segundo) tendrás 16 salidas utilizando sólo 3 pines del pic. Para manejarlos tendrás que enviar 16bits en serie síncrono (datos y reloj) y posteriormente "latchear" para que se propaguen a la salida. La comunicación es equivalente a un bus SPI (data, clk, LE)...
De ésta forma SI tendrás control independiente de cada relé.

Si quieres ahorrarte los ULN2803 puedes intentar conseguir registros de desplazamiento con drivers incluidos como TPIC6B595 o MIC5821. Éstos son capaces de dar 100mA por cada salida y hasta 500mA en total.

También tienes los denominados "expansores de bus" por i2c (2 líneas), por ejemplo: http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3376/ln/en
Título: Re: Codificar 10 líneas a 4 y viceversa
Publicado por: KALLITOS en 23 de Junio de 2009, 19:00:14
Y por que no usas comunicación serial, si es necesario le metes tambien RS485 y tienes hasta mas de mil metros de distancia, creo seria la solucion, un pic16F624 esta por demas barato.

saludos