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
- Raspberry Pi
- CD74HC4067 Multiplexer
- Analog or Digital Input Devices
- Breadboard en jumperdraden
- 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
- Meerdere sensoren uitlezen: Interface with up to 16 sensors (e.g., temperature, humidity, or light).
- Digitale I/O uitbreiden: Manage multiple switches, LEDs, or relays.
- Analoge sensorintegratie: Read signals from potentiometers, joysticks, or soil moisture sensors.
- Huisautomatisering: Control multiple devices like lights, fans, or appliances.
Probleemoplossing
-
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.
-
Onjuiste kanaalselectie:
- Controleer de waarheidstabel voor S0-S3-configuraties.
- Zorg ervoor dat de EN-pin is verbonden met GND voor activering.
-
Wisselende metingen:
- Voeg een kleine vertraging toe (
time.sleep(0.1)) between switching channels to allow signal stabilization.
- Voeg een kleine vertraging toe (
Conclusie
De CD74HC4067 multiplexer





