Usando o multiplexador CD74HC4067 com o Raspberry Pi

Using the CD74HC4067 Multiplexer with the Raspberry Pi

CD74HC4067 é um multiplexador analógico/digital de 16 canais que permite que um Raspberry Pi intera 16 entradas ou saídas Usando apenas alguns pinos GPIO. É perfeito para expandir os recursos de E/S do seu Raspberry Pi ao trabalhar com vários sensores ou dispositivos.


O que você precisará

  1. Raspberry Pi (Qualquer modelo com suporte GPIO, por exemplo, PI 3, PI 4)
  2. Multiplexador CD74HC4067
  3. Dispositivos de entrada analógicos ou digitais (por exemplo, sensores, interruptores)
  4. Fios de pão e jumper
  5. Python instalado No Raspberry Pi

Etapa 1: Compreendendo o CD74HC4067

O CD74HC4067 tem:

  • 16 canais de entrada/saída (S0-S15)
  • 4 pinos de controle (S0, S1, S2, S3) para selecionar o canal ativo.
  • 1 Ativar pino (en) Para ativar o multiplexador (ativo baixo).
  • Um único Pino com (comum) para comunicação compartilhada.

Tabela de verdade para a seleção de canais

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

Etapa 2: Fiação do CD74HC4067 para o Raspberry Pi

Conecte o multiplexador ao Raspberry Pi da seguinte forma:

CD74HC4067 PIN Pino de framboesa pi
VCC 3.3V (pino 1)
Gnd GND (pino 6)
S0 Gpio17 (pino 11)
S1 Gpio27 (pino 13)
S2 GPIO22 (pino 15)
S3 Gpio23 (pino 16)
En GND (ativo baixo)
Com Gpio18 (pino 12, entrada/saída analógica)
S0-S15 Conectar sensores/dispositivos

Etapa 3: Instale as bibliotecas necessárias

Atualize seu Raspberry Pi e instale as bibliotecas Python para controle GPIO.

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

Etapa 4: Código Python para ler dados do multiplexador

Aqui está um script python para controlar o CD74HC4067 e ler dados dos canais conectados.

Exemplo de código 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()

Etapa 5: Aplicações do CD74HC4067 com Raspberry Pi

  1. Lendo vários sensores: Interface com até 16 sensores (por exemplo, temperatura, umidade ou luz).
  2. Expandindo E/S digital: Gerencie vários comutadores, LEDs ou relés.
  3. Integração do sensor analógico: Leia sinais de potenciômetros, joysticks ou sensores de umidade do solo.
  4. Automação residencial: Controle vários dispositivos como luzes, ventiladores ou aparelhos.

Solução de problemas

  1. Sem dados de canais:

    • Verifique a fiação dos pinos de controle S0-S3 e o pino COM.
    • Verifique se os sensores/dispositivos estão conectados corretamente aos pinos S0-S15.
  2. Seleção incorreta do canal:

    • Verifique a tabela de verdade para as configurações S0-S3.
    • Verifique se o pino está conectado ao GND para ativação.
  3. Leituras intermitentes:

    • Adicione um pequeno atraso (time.sleep(0.1)) entre os canais de comutação para permitir a estabilização do sinal.

Conclusão

O Multiplexador CD74HC4067 é uma maneira poderosa e econômica de expandir os recursos de entrada/saída do Raspberry Pi. Seguindo este guia, você pode interface facilmente com até 16 dispositivos analógicos ou digitais usando apenas 4 pinos GPIO. Experimente vários sensores e aplicações para aproveitar ao máximo este módulo versátil! 🚀

Deixe um comentário

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.