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 que una Raspberry Pi interactúe con hasta 16 entradas o salidas Usando solo unos pocos pines GPIO. Es perfecto para expandir las capacidades de E/S de su Raspberry Pi cuando se trabaja con múltiples sensores o dispositivos.


Lo que necesitarás

  1. Frambuesa pi (Cualquier modelo con soporte de GPIO, por ejemplo, PI 3, PI 4)
  2. CD74HC4067 Multiplexor
  3. Dispositivos de entrada analógicos o digitales (por ejemplo, sensores, interruptores)
  4. Cables de placa y jersey
  5. Python instalado en la frambuesa pi

Paso 1: Comprender 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 habilitar pin (es) para activar el multiplexor (activo bajo).
  • Un solo Com (común) pin 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 el CD74HC4067 al Raspberry Pi

Conecte el multiplexor al Raspberry Pi de la siguiente manera:

Pin CD74HC4067 Pin de frambuesa 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)
Interno GND (bajo activo)
Comunicarse GPIO18 (pin 12, entrada/salida analógica)
S0-S15 Conectar sensores/dispositivos

Paso 3: Instale las bibliotecas requeridas

Actualice su Raspberry Pi e instale bibliotecas de Python para el control GPIO.

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

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

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

Ejemplo de código de python

import RPi.GPIO as GPIO
import time

# Define GPIO pins
S0 = 17
S1 = 27
S2 = 22
S3 = 23
COM = 18  # Common pin for input/output

# Initialize GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup([S0, S1, S2, S3], GPIO.OUT)
GPIO.setup(COM, GPIO.IN)  # Set COM pin as input for reading data

# Function to select a channel
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)  # Small delay for channel stabilization
            value = GPIO.input(COM)  # Read data from the active channel
            print(f"Channel {channel}: {value}")
        time.sleep(1)
except KeyboardInterrupt:
    print("Exiting...")
finally:
    GPIO.cleanup()

Paso 5: Aplicaciones del CD74HC4067 con Raspberry Pi

  1. Leyendo múltiples sensores: Interfaz con hasta 16 sensores (por ejemplo, temperatura, humedad o luz).
  2. E/S digital en expansión: Administre múltiples interruptores, LED o relés.
  3. Integración del sensor analógico: Leer señales de potenciómetros, joysticks o sensores de humedad del suelo.
  4. Automatización del hogar: Controle múltiples dispositivos como luces, ventiladores o electrodomésticos.

Solución de problemas

  1. No hay datos de los canales:

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

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

    • Agregue un pequeño retraso (time.sleep(0.1)) entre los canales de conmutación para permitir la estabilización de la señal.

Conclusión

El CD74HC4067 Multiplexor es una forma poderosa y rentable de expandir las capacidades de entrada/salida de Raspberry Pi. Siguiendo esta guía, puede interactuar fácilmente con hasta 16 dispositivos analógicos o digitales utilizando solo 4 pines GPIO. ¡Experimente con varios sensores y aplicaciones para aprovechar al máximo este módulo versátil! 🚀

Escribir un comentario

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.