CD74HC4067 16 Channel Analog Multiplexer Module er et breakout board til den meget praktiske 16-kanals analog/digital multiplexer/demultiplekser
Modulet fungerer med både digitale og analoge signaler (spændingen kan ikke være højere end VCC),
Da mux/demux også fungerer med digitale signaler,
Du kan bruge den til at overføre seriel data på TTL-niveau til eller fra flere enheder.
For eksempel kan du bruge den til at forbinde TX-benene på 16 enheder til en RX-pin på din mikrocontroller.
Du kan derefter vælge en af disse 16 enheder at lytte til.
Hvis du ønsker to-vejs kommunikation, kan du tilføje et andet board til ruten
De interne switche er tovejs, understøtter spændinger mellem jord og VCC, har lav “on” modstand og lav “off” lækage, og for at forhindre krydstale skal du udføre “break-before-make” switching. Kortet bryder også chippens “enable”-pin ud, som, når den køres højt, vil afbryde den fælles pin fuldstændigt (alle afbrydere “fra”).
Tekniske detaljer:
- 2V to 6V operation
- “On” resistance: 70 Ohms @ 4.5V
- 6ns break-before-make @ 4.5V
- Wide operating temperature range: -55C to 125C
For at styre den skal du tilslutte 4 digitale udgange til chippens adressevalgben (S0-S3), Ved at styre flere skal det nye modul bare have en anden adresse med SIG skal føres vedere.
Eksempel
Her viser vi et hurtig eksempel på hvordan du kan læse 16 potentiometer i serial monitor.
Du skal bruge
Forbind sådan:
Forbind Analog 0 (Arduino) – SIG (Modulet)
Forbind pin 8 (Arduino) – S0 (Modulet)
Forbind pin 9 (Arduino) – S1 (Modulet)
Forbind pin 10 (Arduino) – S2 (Modulet)
Forbind pin 11 (Arduino) – S3 (Modulet)
Forbind 5V (Arduino) – VCC (Modulet)
Forbind GND (Arduino) – GND (Modulet)
Forbind GND (Arduino) – EN (Modulet)
Find adressen på modulet
Modulet har en adresse, fin den ved at kikke på dette skema:
Kode (Stand alone)
//Mux control pins int s0 = 8; int s1 = 9; int s2 = 10; int s3 = 11; //Mux in "SIG" pin int SIG_pin = 0; void setup(){ pinMode(s0, OUTPUT); pinMode(s1, OUTPUT); pinMode(s2, OUTPUT); pinMode(s3, OUTPUT); digitalWrite(s0, LOW); digitalWrite(s1, LOW); digitalWrite(s2, LOW); digitalWrite(s3, LOW); Serial.begin(9600); } void loop(){ //Loop through and read all 16 values //Reports back Value at channel 6 is: 346 for(int i = 0; i < 16; i ++){ Serial.print("Value at channel "); Serial.print(i); Serial.print("is : "); Serial.println(readMux(i)); delay(1000); } } int readMux(int channel){ int controlPin[] = {s0, s1, s2, s3}; int muxChannel[16][4]={ {0,0,0,0}, //channel 0 {1,0,0,0}, //channel 1 {0,1,0,0}, //channel 2 {1,1,0,0}, //channel 3 {0,0,1,0}, //channel 4 {1,0,1,0}, //channel 5 {0,1,1,0}, //channel 6 {1,1,1,0}, //channel 7 {0,0,0,1}, //channel 8 {1,0,0,1}, //channel 9 {0,1,0,1}, //channel 10 {1,1,0,1}, //channel 11 {0,0,1,1}, //channel 12 {1,0,1,1}, //channel 13 {0,1,1,1}, //channel 14 {1,1,1,1} //channel 15 }; //loop through the 4 sig for(int i = 0; i < 4; i ++){ digitalWrite(controlPin[i], muxChannel[channel][i]); } //read the value at the SIG pin int val = analogRead(SIG_pin); //return the value return val; }
Download
Kontakt os
Du er altid velkommen til at kontakte os på info@ardustore.dk, eller sende os en besked via messenger (Klik her) og vi vil hjælpe dig.
Anmeldelser
Der er endnu ikke nogle anmeldelser.