Använda CD74HC4067 multiplexer med Raspberry Pi

Using the CD74HC4067 Multiplexer with the Raspberry Pi

De CD74HC4067 är en 16-kanals analog/digital multiplexer som gör att en Raspberry Pi kan gränssnitt med upp till 16 ingångar eller utgångar använder bara några GPIO -stift. Det är perfekt för att utöka I/O -kapaciteten för din Raspberry Pi när du arbetar med flera sensorer eller enheter.


Vad du behöver

  1. Hallon (Varje modell med GPIO -stöd, t.ex. PI 3, PI 4)
  2. CD74HC4067 multiplexer
  3. Analoga eller digitala ingångsenheter (t.ex. sensorer, switchar)
  4. Breadboard och jumpertrådar
  5. Python installerad på Raspberry Pi

Steg 1: Förstå CD74HC4067

CD74HC4067 har:

  • 16 Ingångs-/utgångskanaler (S0-S15)
  • 4 Kontrollstift (S0, S1, S2, S3) För att välja den aktiva kanalen.
  • 1 Aktivera stift (EN) För att aktivera multiplexern (aktiv låg).
  • En singel Com (vanlig) stift för delad kommunikation.

Sanningstabell för val av kanal

S3 S2 S1 S0 Aktiv kanal
0 0 0 0 S0
0 0 0 1 S1
0 0 1 0 S2
... ... ... ... ...
1 1 1 1 S15

Steg 2: Kopplar CD74HC4067 till Raspberry Pi

Anslut multiplexern till Raspberry Pi enligt följande:

CD74HC4067 -stift Hallon pi
Vcc 3.3V (stift 1)
Gard GND (stift 6)
S0 GPIO17 (stift 11)
S1 GPIO27 (stift 13)
S2 GPIO22 (stift 15)
S3 GPIO23 (stift 16)
Sv GND (aktiv låg)
Com GPIO18 (stift 12, analog ingång/utgång)
S0-S15 Anslut sensorer/enheter

Steg 3: Installera obligatoriska bibliotek

Uppdatera din Raspberry Pi och installera pythonbibliotek för GPIO -kontroll.

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

Steg 4: Python -kod för att läsa data från multiplexern

Här är ett Python -skript för att styra CD74HC4067 och läsa data från de anslutna kanalerna.

Python -kodexempel

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()

Steg 5: Tillämpningar av CD74HC4067 med Raspberry Pi

  1. Läser flera sensorer: Gränssnitt med upp till 16 sensorer (t.ex. temperatur, luftfuktighet eller ljus).
  2. Utöka digital I/O: Hantera flera switchar, lysdioder eller reläer.
  3. Analog sensorintegration: Läs signaler från potentiometrar, joysticks eller jordfuktighetssensorer.
  4. Hemautomation: Kontrollera flera enheter som ljus, fläktar eller apparater.

Felsökning

  1. Inga data från kanaler:

    • Kontrollera ledningarna för S0-S3-styrstift och COM-stiftet.
    • Se till att sensorer/enheter är korrekt anslutna till S0-S15-stiften.
  2. Felaktig kanalval:

    • Kontrollera sanningstabellen för S0-S3-konfigurationer.
    • Se till att EN -stiftet är anslutet till GND för aktivering.
  3. Intermittenta avläsningar:

    • Lägg till en liten försening (time.sleep(0.1)) mellan omkopplingskanaler för att möjliggöra signalstabilisering.

Slutsats

De CD74HC4067 multiplexer är ett kraftfullt och kostnadseffektivt sätt att utöka Raspberry Pis input/utgångsfunktioner. Genom att följa den här guiden kan du enkelt gränssnitt med upp till 16 analoga eller digitala enheter med bara 4 GPIO -stift. Experimentera med olika sensorer och applikationer för att få ut det mesta av denna mångsidiga modul! 🚀

Lämna en kommentar

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.