Multiplexer-moduler udvider antallet af I/O-porte på en mikrocontroller — eller løser adresse-konflikter mellem flere ens I²C-sensorer på samme bus. Med en multiplexer kan du tilkoble mange ens sensorer uden at de bekæmper hinanden om samme I²C-adresse, eller udvide antallet af GPIO-ben fra 4-8 til 24-128 ekstra ben. Udvalget rummer I²C multiplexers (8 porte), I²C hubs til at fordele én bus til flere stik, og digitale IO-expanders med 16-24 ekstra GPIO-ben. Find modulet til store sensor-arrays, robotik eller IO-kritiske projekter.
Multiplexer-moduler bruges til at løse to forskellige problemer:
Adresse-konflikter på I²C-bus: hvis du har to identiske sensorer (fx to MPU6050 accelerometre eller fire BME280 vejr-sensorer), har de typisk samme I²C-adresse og kan ikke fungere på samme bus. En I²C-multiplexer giver dig 8 separate "kanaler" du kan tænde og slukke for én ad gangen.
For få GPIO-ben: en Arduino UNO har 14 digitale + 6 analoge ben. Med en IO-expander kan du udvide til 16, 24 eller 128 ekstra GPIO-ben — uden at opgradere til en Mega eller ESP32.
Modeller i udvalget
I²C multiplexer (kanal-skiftning)
I²C Multiplexer 1-til-8 (DFR0576) — 8 separate I²C-kanaler. Tilkobl op til 8 sensorer med samme adresse, og brug software til at vælge hvilken der er aktiv. Justerbar I²C-adresse 0x70-0x77 — kan kaskaderes med op til 8 multiplexers for i alt 64 enheder med samme adresse. Plug-and-play med Gravity-stik.
I²C hub (passiv splitter)
I²C HUB (DFR0759) — kompakt passiv splitter der fordeler én I²C-bus til 8 stik. Bruger ikke selv en I²C-adresse. Til når du har forskellige I²C-sensorer (med forskellige adresser) der bare skal tilkobles samme bus uden ledningsrod.
IO-expandere (flere GPIO)
I²C IO Expansion 16 GPIO MCP23017 (DFR0626) — udvider med 16 fuldt konfigurerbare GPIO-ben (kan være input, output eller input med pull-up). 8 mulige I²C-adresser betyder du kan tilkoble 8 moduler = 128 ekstra GPIO. Med interrupt-pins til hver halvdel (8+8). 3,3 V og 5 V kompatibel.
I²C IO Expansion 24 GPIO CH423 (DFR0979) — 24 ekstra ben (8 GPIO med interrupt + 16 GPO). Kan drive 15 mA pr. ben — direkte LED-drift uden ekstra transistorer. Til LED-cubes, dot-matrix-skærme og lyseffekter.
Hvilket modul skal jeg vælge?
Flere ens I²C-sensorer (samme adresse): I²C Multiplexer 1-til-8 (DFR0576).
Forskellige I²C-sensorer der skal samles på én bus: I²C HUB (DFR0759). Billigere og passivt.
Flere GPIO-ben til knapper, switches, LED'er: MCP23017 IO Expansion (DFR0626).
LED-arrays, dot-matrix eller lyse-effekter: CH423 IO Expansion (DFR0979). Har indbygget driver så LED'er kan drives direkte.
Få ens I²C-sensorer + forskellige sensorer på samme bus: Kombinér multiplexer + hub.
Forskel på multiplexer vs hub
I²C Multiplexer
I²C Hub
Funktion
Skifter mellem kanaler
Fordeler én bus til flere stik
Bruger I²C-adresse
Ja (0x70-0x77)
Nej (passiv)
Kræver software
Ja — vælg kanal før læsning
Nej
Til ens I²C-adresser
Ja
Nej
Til forskellige adresser
Også (men overkill)
Ja
Pris
Højere
Lav
Forskel på multiplexer vs IO-expander
Multiplexer: skifter mellem allerede eksisterende I²C-enheder (sensorer du har).
IO-expander: giver dig nye GPIO-ben til at tilkoble knapper, LED'er, switches og andre digitale komponenter direkte.
Begge moduler bruger I²C-bus til at tale med mikrocontrolleren — og begge giver dig adgang til mere "noget" via samme I²C.
Sådan bruger du I²C Multiplexer
Tilkobl multiplexer (DFR0576) til Arduino's I²C-bus (SDA, SCL, VCC, GND).
Tilkobl op til 8 sensorer til multiplexerens 8 udgangs-kanaler (SC0-SC7).
I koden: send en byte til multiplexer-adressen (0x70) for at vælge hvilken kanal der er aktiv. Eks: Wire.beginTransmission(0x70); Wire.write(1 << 0); Wire.endTransmission(); — dette aktiverer kanal 0.
Læs nu sensoren via dens normale I²C-adresse — den ses kun på den valgte kanal.
Gentag for hver kanal/sensor.
Sådan bruger du IO-expander (MCP23017)
Tilkobl modulet (DFR0626) til I²C-bussen.
Inkluder Adafruit_MCP23X17 eller lignende bibliotek i Arduino-koden.
Konfigurer hvert ben som input eller output: mcp.pinMode(0, OUTPUT);
Læs/skriv på de 16 ekstra ben præcis som med Arduino's egne: mcp.digitalWrite(0, HIGH); eller mcp.digitalRead(1);
Andre multiplexer-typer
Selvom udvalget primært består af I²C-baserede løsninger, findes der flere typer multiplexere generelt:
Analog multiplexer (CD74HC4051, CD74HC4067): ren signalskifter til analog/digital. 8 eller 16 kanaler. Til at læse mange potentiometre eller analog-sensorer med få ADC-ben.
Digital multiplexer: samme princip men kun til digitale signaler. Til at gemme RX/TX-pins.
Shift register (74HC595): outputter mange GPIO via SPI-lignende protokol. Bruges typisk til 7-segment, LED-arrays.
Mux Shield (Arduino): kombineret 48-pin shield til mange I/O på én gang.
Adafruit_MCP23X17 — til MCP23017 IO-expandere. Gør ekstra ben tilgængelige som var de Arduino's egne.
Wire (Arduino): standard I²C-bibliotek til at tale med multiplexere på lavt niveau.
SparkFun_I2C_Mux_Arduino_Library: wrapper-bibliotek der gør I²C-multiplexer simpelt.
SX1509: til SX1509-baserede IO-expandere med PWM, breathing-effects og keypad-scanning.
Typiske anvendelser
Vejrstationer med flere identiske sensorer på forskellige steder, robotik med multiple accelerometre eller IMU-sensorer, store LED-cube projekter (hvor en MCP23017 driver 16 søjler), keyboard-matrixer med 64+ taster, smart-hjem med mange knapper og switches, hjemmeautomation hvor mange sensorer og aktuatorer skal tilkobles én Arduino, billige Arduino-projekter hvor du vil undgå at opgradere til Mega eller ESP32, og audio-projekter med multiple analog-input til lydblanding.
Relateret
Til shift-registre der også giver flere I/O, se Shift Register Moduler. Til mikrocontrollere med flere indbyggede I/O, se Arduino (Mega-serien) og ESP32 Boards. Til I²C-kabler og stik, se Qwiic I²C Moduler. Til level-shiftere når du tilkobler 5 V og 3,3 V enheder, se Level Shifter. Tilbage til Moduler oversigt.