Autor Tema: Codificar 10 líneas a 4 y viceversa  (Leído 2878 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado EdoNork

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 616
    • ElektroQuark
Codificar 10 líneas a 4 y viceversa
« 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.
« Última modificación: 23 de Junio de 2009, 14:04:58 por EdoNork »
Mi blog sobre electrónica y cosillas afines: www.elektroquark.com
EQVideo en Youtube
El foro de KiCad en castellano.
Mi librería para KiCad ¡AQUÍ!

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3193
Re: Codificar 10 líneas a 4 y viceversa
« Respuesta #1 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!
« Última modificación: 23 de Junio de 2009, 09:47:11 por AKENAFAB »

Desconectado sycho

  • PIC16
  • ***
  • Mensajes: 195
Re: Codificar 10 líneas a 4 y viceversa
« Respuesta #2 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á.

Desconectado EdoNork

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 616
    • ElektroQuark
Re: Codificar 10 líneas a 4 y viceversa
« Respuesta #3 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 ;)
Mi blog sobre electrónica y cosillas afines: www.elektroquark.com
EQVideo en Youtube
El foro de KiCad en castellano.
Mi librería para KiCad ¡AQUÍ!

Desconectado sycho

  • PIC16
  • ***
  • Mensajes: 195
Re: Codificar 10 líneas a 4 y viceversa
« Respuesta #4 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
« Última modificación: 23 de Junio de 2009, 17:30:26 por sycho »

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1255
Re: Codificar 10 líneas a 4 y viceversa
« Respuesta #5 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
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.


 

anything