FREE SHIPPING ON ALL ORDERS OVER £20

60 DAY HASSLE-FREE RETURNS

Met behulp van de CD74HC4067 -multiplexer met de Raspberry Pi

Using the CD74HC4067 Multiplexer with the Raspberry Pi

De CD74HC4067 is een 16-kanaals analoge/digitale multiplexer waarmee een Raspberry Pi verbinding kan maken met maximaal 16 ingangen of uitgangen met gebruik van slechts een paar GPIO-pinnen. Het is perfect voor het uitbreiden van de I/O-mogelijkheden van je Raspberry Pi wanneer je met meerdere sensoren of apparaten werkt.


Wat u nodig hebt

  1. Raspberry Pi
  2. CD74HC4067 Multiplexer
  3. Analog or Digital Input Devices
  4. Breadboard en jumperdraden
  5. Python geïnstalleerd op de Raspberry Pi

Stap 1: Begrijpen van de CD74HC4067

De CD74HC4067

  • 16 Input/Output-kanalen (S0-S15)
  • 4 controlepinnen (S0, S1, S2, S3) om het actieve kanaal te selecteren.
  • 1 Pincode inschakelen (EN) om de multiplexer te activeren (actief LAAG).
  • Een enkele COM (gemeenschappelijke) pin

Waarheidstabel voor kanaalselectie

S3 S2 S1 S0 Actief kanaal
0 0 0 0 S0
0 0 0 1 S1
0 0 1 0 S2
... ... ... ... ...
1 1 1 1 S15

CD74HC4067

Sluit de multiplexer als volgt aan op de Raspberry Pi:

CD74HC4067 Pin Raspberry Pi Pin
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 (actief LAAG)
COM GPIO18 (Pin 12, analoge ingang/uitgang)
S0-S15 Connect sensors/devices

Step 3: Install Required Libraries

Update je Raspberry Pi en installeer Python-bibliotheken voor GPIO-besturing.

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

Step 4: Python Code to Read Data from the Multiplexer

Hier is een Python-script om de CD74HC4067 gegevens van de verbonden kanalen lezen.

Python-codevoorbeeld

python
import RPi.GPIO as GPIO
import time

# Definieer GPIO-pinnen
S0 = 17
S1 = 27
S2 = 22
S3 = 23
COM = 18  # Gemeenschappelijke pin voor invoer/uitvoer

# Initialiseer GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup([S0, S1, S2, S3], GPIO.OUT)
GPIO.setup(COM, GPIO.IN)  # Stel COM-pin in als invoer voor het lezen van gegevens

# Functie om een kanaal te selecteren
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)  # Korte vertraging voor kanaalstabilisatie
            value = GPIO.input(COM)  # Lees gegevens van het actieve kanaal
            print(f"Kanaal {channel}: {value}")
        time.sleep(1)
except KeyboardInterrupt:
    print("Afsluiten...")
finally:
    GPIO.cleanup()

Stap 5: Toepassingen van de CD74HC4067 met Raspberry Pi

  1. Meerdere sensoren uitlezen: Interface with up to 16 sensors (e.g., temperature, humidity, or light).
  2. Digitale I/O uitbreiden: Manage multiple switches, LEDs, or relays.
  3. Analoge sensorintegratie: Read signals from potentiometers, joysticks, or soil moisture sensors.
  4. Huisautomatisering: Control multiple devices like lights, fans, or appliances.

Probleemoplossing

  1. No Data from Channels:

    • Controleer de bedrading van de S0-S3-controlepinnen en de COM-pin.
    • Zorg ervoor dat de sensoren/apparaten correct zijn aangesloten op de S0-S15-pinnen.
  2. Onjuiste kanaalselectie:

    • Controleer de waarheidstabel voor S0-S3-configuraties.
    • Zorg ervoor dat de EN-pin is verbonden met GND voor activering.
  3. Wisselende metingen:

    • Voeg een kleine vertraging toe (time.sleep(0.1)) between switching channels to allow signal stabilization.

Conclusie

De CD74HC4067 multiplexer

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.

Laat een reactie achter