Ampliar entradas y salidas en PIC

Para variar, en vez de postear un problema voy a dar una solución.
Para los que necesiten ampliar las entradas y salidas en un PIC (o cualquier otro micro) llevo usando mucho tiempo este sistema que está basado en registros de desplazamiento CMOS serie CD40xx baratitos. Como ejemplo propongo un circuito que, con solo 5 pines del pic, proporciona 64 entradas y 64 salidas!
Aquí:

http://www.arrakis.es/~helitp/ampliacion/ampliacion.htm

he puesto la explicación del circuito, esquemas y fuentes en C de pruebas.
Saludos a todo el foro!
 
Última edición por un moderador:
Muchas gracias por este ejemplo, parece ser muy interesante, sobre todo para usarse con un 16f628 ya que el numero de entradas y salidas es algo reducido
 
Que me conviene para expandir las salidas de un pic? Se que el tema esta por todos lados, pero cada uno da su opinion y se vuelve confuso, asique pido la de ustedes, que recomiendan? :confused:
 
Hola, Sutson. Todas las opciones que te den pueden ser válidas. Tú tendrás que valorar la que más te conviene, según tu proyecto.

Recientemente he utilizado el siguiente truco para ampliar las entradas de un PIC (y por tanto liberar patas para utilizarlas como salidas):

Necesitaba conectar 4 pulsadores al PIC (un teclado sencillo). Colocando una resistencia de distinto valor en serie con cada pulsador podemos hacer 4 divisores de tensión. Juntamos las cuatro señales a una única entrada analógica del PIC y obtenemos un valor de entrada diferente según el pulsador que acciones. Así hemos liberado 3 patas del PIC. No es una solución muy elegante pero es sencilla.
 

Adjuntos

  • Entradas.jpg
    Entradas.jpg
    55.9 KB · Visitas: 108
Melghost ese tipo de solución era la que empleaba un televisor que teníamos, se cayo durante un temblor y viendo las partes me pareció curioso que los botones del frente se manejaba con divisores resistivos, la ventaja era que también reduce bastante el numero de cables y no se requieren más que resistencias. Imagina 100 botones con solo 3 cables, claro que el limite dependerá de la resolución del ADC y la capacidad de filtrar adecuadamente la señal análoga, es mejor dejar un espacio amplio para evitar falsos por interferencias.

Ahora, para las salidas yo he pensado en dos, una es esta de registros de desplazamiento con latch, pero antes de esta, como no encontraba el famoso 74HC595 por donde vivo y no conocía los que se mencionan aquí, use un registro de desplazamiento TTL LS y aparte un latch de 3 estados, en esa configuración ponía más latch en paralelo al registro y perdía un pin extra por cada latch, pero la ventaja es la velocidad, con los seriales si necesitaba cargar un valor al primer bit tiene que enviarse toda la cadena nuevamente, digamos por ejemplo con el circuito aquí expuesto se tienen que enviar 64bits para cambiar uno, en mi caso solo tenia que enviar 8 al latch correspondiente, empleando este mismo sistema se puede manejar las entradas ya que el latch es de 3 estados, además si también empleas otro circuito decodificador de 4bits 16 salidas reduces el numero de pines para controlar los latch. ya incluso si lo usas así sin el registro de desplazamiento puedes controlar 128 salidas con 12 pines a alta velocidad usando 16 74HC374 y un 74HC154 para controlarlos :unsure: se me esta ocurriendo intentar armar tal masivo circuito solo para experimentar :LOL:

Ya al final depende de cuanta velocidad necesitas en la comunicación para usar los registros seriales o implementar latches en paralelo. Pero claro, siempre puedes intentar buscar un expansor I/O I2C, tienes más ventaja por que algunos generan interrupciones y puedes hacerlos operar como entrada o salida además de que al ser I2C no pierdes el puerto para comunicar con otros dispositivos I2C.
 
Última edición:
Si haces la prueba con los 16 74HC374 ya subirás una foto ;)

Si hacen falta tantas salidas me convence más lo del I2C o algo parecido y dividir el proyecto en módulos.
 
holas soy nuevo en esto y quisiera su ayuda de uds. quisiera saber como aumentar las salidas de pic 16f628a para tener mas salidas o mas leds con los mismos efectos
 

Adjuntos

  • pro481v207.zip
    23 KB · Visitas: 29
  • 481schematic.jpg
    481schematic.jpg
    109.2 KB · Visitas: 121
Si solo deben activar una salida a la vez, pueden emplear un CD4028. Con 4 bits, puedes controlar hasta 10 salidas.

Para ampliar entradas puedes emplear de CD40147, tambien si solo debes activar una por vez. Con 4 bits puedes controlar hasta 10 entradas.

Saludos
 
Hola:

Se suele usar un expansor de bus como indica abajo, por I2C. También hay SPI, más rápido aún. Aún se puede usar otros PIC conectado en I2C o PSI haciendo de expansor de bus.

Fig2606_PCF8574.gif

http://www.pic16f84a.org/proteus.html#Proteus_Capitulo_26

Puedes usar muchísimos y te vale como entrada y salidas digitales.
2006_9_22_11_30_43_2.jpg


También tienes PIC que de base viene con 60 pines, 80 pines e incluso 100 pines.

PIC16F gama media:
PIC16F1526
PIC16F1527
PIC16F1946
PIC16F1947
PIC16F946

Saludo.
 
Atrás
Arriba