UTILIZAR 2 multiplexores CD74HC4067 para conseguir 32 entradas/salidas

Hola buenas a tod@s!

estoy con un proyecto y arduino mega se me queda pequeño necesito mas entradas/salidas, navegando por google me compre varios CD74HC4067, pero no encuentro el code para implementar output/input, si alguien me podria ayudar,lo agredeceria mucho. quiero algo como la imagen que adjunto… s0 s1 s2 s3 y luego A0 y A1 total 6 salidas de mega, para conseguir 32 entradas/salidas

muchas gracias.

la foto la saque de una web en chino…

Un simple contador binario te resuelve el problema de decodificar o codificar la entrada/salida.
Para el caso hay numerosa info y códigos con el CD4051 búscalo y ahi tienes soluciones.

Tienes 4 salidas que deben variar de 0 a F o sea de
0000 a 1111 en binario o bien de
0x00 a 0x0f en hexadecimal
o
0 a 15 en decimal.

Aca tienes el ejemplo con el CD4051 que tiene 8 entradas/salidas. Amplica a 16 y listo.

Hola

He leido tu post y deduzco (es obvio) que se te ha quedado pequeño el Arduino que usas y planteas ampliarlo con multiplexores/desmultiplexores analógicos de 16 canales.

Pero antes de seguir debes hacerte estas dos preguntas:

  • ¿ Necesitas usar esos canales también como salidas ?
  • ¿ Necesitas simultanear varias salidas o entradas ?

Imagina que tienes tres leds conectados y que quieres que luzcan los tres.. NO puedes.
Imagina que quieres mantener un led encendido y leer por ejemplo que tension hay en su ánodo (o cátodo).. tampoco puedes.

Ten en cuenta que el multi/desmultiplexor no posee ningun elemento que mantenga el valor escrito en los canales, es decir que si seleccionas el canal 13 y lo escribes a "1" o lo que sea, estás obligado a mantener la selección s0=1, s1=0, s2=1 y s3=1, así como el bit de salida (A0, A1, o el que uses) tanto tiempo como quieras mantener dicho nivel. Basta con que cambies la direccion o el valor de la salida para que el canal 13 quede "flotante".
Conclusion que has puesto un integrado y usado 4+1 pines para encender un led,...

Para entradas si puede ser interesante ya que la responsabilidad de mantener el nivel corresponde a la electronica externa al Arduino, y por lo tanto puedes acceder cuando quieras a cualquier canal.

Si quieres salidas digitales multiplexadas (complicandote la vida un poco) hay que recurrir a los shift register con latch triestado (normalmente de 8 bits).

Si pese a todo consideras que este circuito es la solucion que buscas y tu unica traba es el sketch para manejarlo, tanto yo como (supongo) el amigo surbyte estaremos encantados de hacerlo (aunque hay una muestra en la web que nos has enlazado).

Saludos

Edito: Tambien una opcion a considerar es el PCF8574 con acceso I2C PCF8574 datasheet

Buenas a tod@s!
En primer lugar feliz navidad :wink: , quiero agradecer a surbyte y a Alfaville por la ayuda que me ofrecen ya que en un proyecto solitario se echa de menos contar y comentar con gente que entiende del tema.
Quisiera poner en antecendes.. el verano del 2015 me rompí el tobillo y estuve varios meses con muletas y sin poder moverme.. a raíz de eso me enganche al simulador x-plane...y una cosa lleva a la otra...navegando por google vi a gente que tenía paneles de cabinas y como soy "culo veo culo quiero"…
(soy ing. tec informática) aunque laboralmente me dedico a otro cosa que nada tiene que ver...por lo que la programación la dejo como hobby.. así decidí empaparme de arduino desde 0 y hacer mis primeras soldadoras..jeje..y diseñar un panel con los mandos que principalmente usuaria en una cabina de un avión…adjunto fotos del proyecto..
Ya he conseguido transmitir-recibir datos de xplane..(me llevo bastante horas googleando) y por fin me funciona cada módulo de forma separada me queda ensamblar todo..
Al hilo de lo que me decía Alfaville efectivamente me he dado cuenta que necesito mantener el valor cuando cambie de canal.. para led por lo que descarto los CD74HC4067, (para interruptores podría funcinar…habría que probarlo) a raíz de esto me he puesto a organizar los pines que necesito en mi MEGA 2560+Shield Ethernet y me he dado cuenta que CLAVAO justo utilizo todos, no me sobra un pin.. para esta versión 1.0, para la futura 2.0 (diseñare mi propia placa con EasyEDA) necesitare muchos más pines y otra “habitación+grande” si no me echa mi mujer de casa antes..jaja
Ahora estoy en el punto de ensamblar todo..interrongantes que tengo en este momento..
.. Tengo un LCD 20*4 IIC I2C conectado a SCL-SDA….me ha llegado un segundo...cuando me ponga con ello me imagino que podre conectar a los pines (SCL-SDA) y tener los dos LCD 20X4 en cascada..? Buscare software para controlarlo y esquemas para conectarlo..
Tengo también en la recamara una pantalla Nextion 4.3 no me he puesto con ello tampoco pero creo que ya no me quedan pines?…genéricamente a cual se conectaría?
Hay alguna forma de que Rotatorio KY-040 (tengo 8 ) ocupen menos pines? Y así ahorrar espacio para otras cosas…

__->__He estado viendo los PCF8574 y tienen buena pinta “a priori” si guardan valor led-interruptor por lo que cuando necesite más pines voy a profundizar en este integrado.
Una vez más agradezco vuestras ganas de ayudarme.
Un saludo Omar












Bueno tirón de orejas, y venías tan bien con tanto elogio, jajaja.
Las fotos deben verse omaalva directamente en el post asi que aprovecha tus adjuntos y captura uno a uno el enlace de cada imagen adjuntada con botón derecho del mouse, copia y pega en un txt y luego ve a More, luego Modify y ya puedes editar tu último post.
Ahora usando el icóno de imagen de pantalla junto al eslabón puedes ir pegando una a una las imágenes que se irán viendo.
Al final quedará un post largo pero con todas las fotos visibles.
De lo contrario pocos las van a descargar. Se lo que te digo.

Tengo otra alternativa mas alla que el MEGA o DUE sean las mejores opciones.
Puedes usar 74HC165 para leer datos y también los retiene porque son latch, es mas rapido y solo usa 3 pines y puedes ir sumando en cascada, o sea cada Integrado lee 8 pero si sumas otro ya tienes 16 y asi creces en tamaño.
La contraparte osea para tener salidas es el 74HC595. Se conecta de manera similar.
Con estos elementos puedes hacer cosas enormes y son muchos mas baratos que los I2C.
Con 4 74HC165 tienes 32 entradas y con 4 74hc595 tienes 32 salidas usando un NANO si quieres.
Claro que tmb con los dispositivos I2C pero a una fracción del costo.

Buenas.

Muy buena pinta tiene ese proyecto, y muy ingenioso el uso de canaletas PVC de instalación eléctrica.

En cierto modo me da envidia, pero bueno,…

Yo me decanto por añadir más ATmega2560 através de la conexion SPI, siendo el master el actual y siendo el resto esclavos.
Tan solo hacer el software de los esclavos aunque viendo el conjunto que llevas montado yo diría que es casi coser y cantar…

Esto ofrece:

  • crecimiento cuasi ilimitado.
  • rapidez de comunicacion
  • capacidad de proceso distribuida.
  • precio muy contenido

arreglao!! :smiley: muchas gracias, voy a estudiar lo que me habeis indicado.

Mira estes es un esquema donde combinan un 74165 o sea 8 entradas y 16 salidas.

Aca puedes ver todo el concepto de lo que te expliqué antes

Expandes cualquier micro con esta configuración.

Fuente

Hola:

¿Exactamente para qué este cuadro de mandos?

Me llama mucho la atención y tiene demasiado empeño en él.

Aquí hay algo de información para ampliar salidas.
http://www.educachip.com/ampliar-los-pines-de-arduino/

Ánimos y adelante. Felices fiestas 2016.

A mi me parece que salvo para pequeños proyecto (manejar un LCD y cosas así) usar 74HC595 - 74HC165 como ampliación de salidas-entradas tiene mas inconvenientes que ventajas.

  • para modificar el último bit es necesario escribir toda la cadena anterior, que en el ejemplo son 15 bits previos y el dieciseisavo que sería el de nuestro interés (si pasamos a 24, 32 ,.. es de locos).

  • el circuito de la parte inferior deberia ser realmente este:

    tal y como se ve mas abajo en la página referenciada, lo cual añade un pin más a usar

  • el uso consume bastante proceso del ya sobrecargado ATmega2560, sobre todo en los encoders y señales con cambios rápidos, porque todas las señales del intefaz hay que generarlas por software, y escribir o leer un determinado bit de una cadena larga no mejora las cosas (pensemos que hay que estar haciendo un barrido constante para poder detectar cambios en input).

  • No resulta despreciable la implementacion hardware pues no siempre necesitaremos concentrar toda la expansion en un mismo punto.

Repito, y esto es una opinion, no creo que sea la solución mas idónea.