Obtenga entrega gratuita en todas las órdenes más de £20!

Usando el multiplexor CD74HC4067 con Raspberry Pi

Using the CD74HC4067 Multiplexer with the Raspberry Pi

El CD74HC4067 es un multiplexor analógico/digital de 16 canales que permite a una Raspberry Pi conectarse con hasta 16 entradas o salidas usando solo unos pocos pines GPIO. Es perfecto para ampliar las capacidades de E/S de tu Raspberry Pi cuando trabajas con múltiples sensores o dispositivos.


Qué necesitarás

  1. Raspberry Pi (cualquier modelo con soporte GPIO, p. ej., Pi 3, Pi 4)
  2. CD74HC4067 Multiplexor
  3. Dispositivos de entrada analógicos o digitales (p. ej., sensores, interruptores)
  4. Protoboard y cables dupont
  5. Python instalado en la Raspberry Pi

Paso 1: Entendiendo el CD74HC4067

El CD74HC4067 tiene:

  • 16 canales de entrada/salida (S0-S15)
  • 4 pines de control (S0, S1, S2, S3) para seleccionar el canal activo.
  • 1 pin de habilitación (EN) para activar el multiplexor (activo LOW).
  • Un único pin COM (común) para comunicación compartida.

Tabla de verdad para la selección de canales

S3 S2 S1 S0 Canal activo
0 0 0 0 S0
0 0 0 1 S1
0 0 1 0 S2
... ... ... ... ...
1 1 1 1 S15

Paso 2: Cableado del CD74HC4067 a la Raspberry Pi

Conecta el multiplexor a la Raspberry Pi de la siguiente manera:

CD74HC4067 Pin Pin de la Raspberry Pi
VCC 3.3V (Pin 1)
GND GND (Pin 6)
S0 GPIO17 (Pin 11)
S1 GPIO27 (Pin 13)
S2 GPIO22 (Pin 15)
S3 GPIO23 (Pin 16)
EN GND (Activo LOW)
COM GPIO18 (Pin 12, Entrada/Salida analógica)
S0-S15 Conectar sensores/dispositivos

Paso 3: Instalar las bibliotecas requeridas

Actualiza tu Raspberry Pi e instala las bibliotecas Python para controlar GPIO.

sudo apt update && sudo apt upgrade -y
sudo apt install python3-rpi.gpio

Paso 4: Código Python para leer datos del multiplexor

Aquí tienes un script en Python para controlar el CD74HC4067 y leer datos de los canales conectados.

Ejemplo de código Python

import RPi.GPIO as GPIO
import time

# Definir pines GPIO
S0 = 17
S1 = 27
S2 = 22
S3 = 23
COM = 18  # Pin común para entrada/salida

# Inicializar GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup([S0, S1, S2, S3], GPIO.OUT)
GPIO.setup(COM, GPIO.IN)  # Configurar el pin COM como entrada para leer datos

# Función para seleccionar un canal
def select_channel(channel):
    GPIO.output(S0, channel & 0x01)
    GPIO.output(S1, (channel >> 1) & 0x01)
    GPIO.output(S2, (channel >> 2) & 0x01)
    GPIO.output(S3, (channel >> 3) & 0x01)

try:
    while True:
        for channel in range(16):
            select_channel(channel)
            time.sleep(0.1)  # Pequeña espera para la estabilización del canal
            value = GPIO.input(COM)  # Leer datos del canal activo
            print(f"Canal {channel}: {value}")
        time.sleep(1)
except KeyboardInterrupt:
    print("Saliendo...")
finally:
    GPIO.cleanup()

Paso 5: Aplicaciones del CD74HC4067 con Raspberry Pi

  1. Lectura de múltiples sensores: Interfaz con hasta 16 sensores (p. ej., temperatura, humedad o luz).
  2. Expansión de E/S digital: Gestiona múltiples interruptores, LEDs o relés.
  3. Integración de sensores analógicos: Lee señales de potenciómetros, joysticks o sensores de humedad del suelo.
  4. Automatización del hogar: Controla múltiples dispositivos como luces, ventiladores o electrodomésticos.

Resolución de problemas

  1. Sin datos en los canales:

    • Verifica el cableado de los pines de control S0-S3 y del pin COM.
    • Asegúrate de que los sensores/dispositivos estén correctamente conectados a los pines S0-S15.
  2. Selección de canal incorrecta:

    • Revisa la tabla de verdad para las configuraciones de S0-S3.
    • Asegúrate de que el pin EN esté conectado a GND para la activación.
  3. Lecturas intermitentes:

    • Añade una pequeña espera (time.sleep(0.1)) entre el cambio de canales para permitir la estabilización de la señal.

Conclusión

El CD74HC4067 multiplexor es una forma potente y rentable de ampliar las capacidades de entrada/salida de la Raspberry Pi. Siguiendo esta guía, puedes conectar fácilmente hasta 16 dispositivos analógicos o digitales usando solo 4 pines GPIO. ¡Experimenta con varios sensores y aplicaciones para aprovechar al máximo este versátil módulo! 🚀

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.

Escribir un comentario