Menggunakan multiplexer CD74HC4067 dengan Raspberry Pi

Using the CD74HC4067 Multiplexer with the Raspberry Pi

Itu CD74HC4067 adalah multiplexer analog/digital 16-channel yang memungkinkan raspberry pi untuk berinteraksi dengan hingga 16 input atau output hanya menggunakan beberapa pin GPIO. Ini sempurna untuk memperluas kemampuan I/O Raspberry Pi Anda saat bekerja dengan beberapa sensor atau perangkat.


Apa yang Anda Butuhkan

  1. Raspberry Pi (Model apa pun dengan dukungan GPIO, mis., Pi 3, pi 4)
  2. Multiplexer CD74HC4067
  3. Perangkat input analog atau digital (mis., Sensor, sakelar)
  4. Papan tempat memotong papan dan kabel jumper
  5. Python terpasang di raspberry pi

Langkah 1: Memahami CD74HC4067

CD74HC4067 memiliki:

  • 16 saluran input/output (S0-S15)
  • 4 Pin kontrol (S0, S1, S2, S3) untuk memilih saluran aktif.
  • 1 Aktifkan pin (en) untuk mengaktifkan multiplexer (aktif rendah).
  • Satu Pin com (umum) untuk komunikasi bersama.

Tabel kebenaran untuk pemilihan saluran

S3 S2 S1 S0 Saluran aktif
0 0 0 0 S0
0 0 0 1 S1
0 0 1 0 S2
... ... ... ... ...
1 1 1 1 S15

Langkah 2: Kabel CD74HC4067 ke Raspberry Pi

Hubungkan multiplexer ke raspberry pi sebagai berikut:

Pin CD74HC4067 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 (aktif rendah)
Com GPIO18 (pin 12, input/output analog)
S0-S15 Hubungkan sensor/perangkat

Langkah 3: Instal perpustakaan yang diperlukan

Perbarui Raspberry Pi Anda dan instal pustaka Python untuk kontrol GPIO.

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

Langkah 4: Kode Python untuk membaca data dari multiplexer

Berikut skrip Python untuk mengontrol CD74HC4067 dan membaca data dari saluran yang terhubung.

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

Langkah 5: Aplikasi CD74HC4067 dengan Raspberry Pi

  1. Membaca banyak sensor: Antarmuka dengan hingga 16 sensor (mis., Suhu, kelembaban, atau cahaya).
  2. Memperluas I/O Digital: Kelola beberapa sakelar, LED, atau relay.
  3. Integrasi Sensor Analog: Baca sinyal dari potensiometer, joystick, atau sensor kelembaban tanah.
  4. Otomatisasi Rumah: Mengontrol banyak perangkat seperti lampu, kipas, atau peralatan.

Pemecahan masalah

  1. Tidak ada data dari saluran:

    • Verifikasi kabel pin kontrol S0-S3 dan pin com.
    • Pastikan sensor/perangkat terhubung dengan benar ke pin S0-S15.
  2. Pemilihan saluran yang salah:

    • Periksa tabel kebenaran untuk konfigurasi S0-S3.
    • Pastikan PIN EN terhubung ke GND untuk aktivasi.
  3. Bacaan yang terputus -putus:

    • Tambahkan penundaan kecil (time.sleep(0.1)) antara saluran switching untuk memungkinkan stabilisasi sinyal.

Kesimpulan

Itu Multiplexer CD74HC4067 adalah cara yang kuat dan hemat biaya untuk memperluas kemampuan input/output Raspberry Pi. Dengan mengikuti panduan ini, Anda dapat dengan mudah berinteraksi dengan hingga 16 perangkat analog atau digital hanya menggunakan 4 pin GPIO. Eksperimen dengan berbagai sensor dan aplikasi untuk memanfaatkan modul serbaguna ini! 🚀

Tinggalkan komentar

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.