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 kan interface 16 ingangen of uitgangen Gebruik slechts enkele GPIO -pinnen. Het is perfect voor het uitbreiden van de I/O -mogelijkheden van uw Raspberry Pi bij het werken met meerdere sensoren of apparaten.


Wat u nodig hebt

  1. Raspberry Pi (Elk model met GPIO -ondersteuning, bijvoorbeeld PI 3, PI 4)
  2. CD74HC4067 multiplexer
  3. Analoge of digitale invoerapparaten (bijv. Sensoren, schakelaars)
  4. Breadboard en jumper draden
  5. Python geïnstalleerd Op de Raspberry Pi

Stap 1: Inzicht in de CD74HC4067

De CD74HC4067 heeft:

  • 16 Input/outputkanalen (S0-S15)
  • 4 controlepinnen (S0, S1, S2, S3) om het actieve kanaal te selecteren.
  • 1 Schakel pin in (en) om de multiplexer te activeren (actief laag).
  • Een enkele Com (gemeenschappelijke) pin voor gedeelde communicatie.

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

Stap 2: De CD74HC4067 bedraden naar de Raspberry Pi

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)
Eng GND (actief laag)
Com Gpio18 (pin 12, analoge ingang/uitgang)
S0-S15 Verbind sensoren/apparaten

Stap 3: Installeer vereiste bibliotheken

Werk uw Raspberry Pi bij en installeer Python -bibliotheken voor GPIO -besturingselement.

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

Stap 4: Python -code om gegevens van de multiplexer te lezen

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

Python Code Voorbeeld

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

Stap 5: Toepassingen van de CD74HC4067 met Raspberry Pi

  1. Meerdere sensoren lezen: Interface met maximaal 16 sensoren (bijv. Temperatuur, vochtigheid of licht).
  2. Uitbreiding van digitale I/O: Beheer meerdere schakelaars, LED's of relais.
  3. Analoge sensorintegratie: Lees signalen van potentiometers, joysticks of bodemvochtsensoren.
  4. Home Automation: Besturing van meerdere apparaten zoals lichten, fans of apparaten.

Problemen oplossen

  1. Geen gegevens van kanalen:

    • Controleer de bedrading van S0-S3-besturingpennen en de COM-pin.
    • Zorg ervoor dat sensoren/apparaten correct zijn verbonden met 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. Intermitterende lezingen:

    • Voeg een kleine vertraging toe (time.sleep(0.1)) Tussen schakelkanalen om signaalstabilisatie mogelijk te maken.

Conclusie

De CD74HC4067 multiplexer is een krachtige en kosteneffectieve manier om de invoer-/uitvoermogelijkheden van de Raspberry Pi uit te breiden. Door deze gids te volgen, kunt u eenvoudig communiceren met maximaal 16 analoge of digitale apparaten met slechts 4 GPIO -pinnen. Experimenteer met verschillende sensoren en toepassingen om het meeste uit deze veelzijdige module te halen! 🚀

Laat een reactie achter

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.