

The CD74HC4067 is a 16-channel analog multiplexer/demultiplexer that enables the selection of one of 16 input channels to connect to a single output line. This selection is controlled using a 4-bit binary address. The component is highly versatile and is commonly used in applications requiring signal routing, data acquisition, or expansion of input/output capabilities in microcontroller-based systems.








The CD74HC4067 is a high-speed CMOS device with the following key specifications:
| Parameter | Value |
|---|---|
| Supply Voltage (Vcc) | 2V to 6V |
| Input Voltage Range | 0V to Vcc |
| Maximum Current per Pin | ±25mA |
| On-Resistance (Ron) | ~70Ω (typical at 5V Vcc) |
| Propagation Delay | ~10ns (typical at 5V Vcc) |
| Operating Temperature Range | -55°C to +125°C |
| Package Types | DIP, SOIC, TSSOP |
The CD74HC4067 has 24 pins, with the following configuration:
| Pin Number | Pin Name | Description |
|---|---|---|
| 1-16 | CH0-CH15 | Analog or digital input/output channels (multiplexed to the COM pin) |
| 23 | COM | Common I/O pin (connected to one of CH0-CH15 based on the address selection) |
| 10, 11, 12, 13 | S0, S1, S2, S3 | Address selection pins (4-bit binary input to select one of 16 channels) |
| 24 | Vcc | Positive power supply (2V to 6V) |
| 12 | GND | Ground |
| 15 | EN | Enable pin (active LOW; when HIGH, all channels are disconnected) |
0000 selects CH0.1111 selects CH15.The following example demonstrates how to use the CD74HC4067 with an Arduino UNO to read analog signals from multiple sensors.
// Define the address selection pins
const int S0 = 2;
const int S1 = 3;
const int S2 = 4;
const int S3 = 5;
// Define the analog input pin for the COM pin
const int COM_PIN = A0;
void setup() {
// Set the address pins as outputs
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
// Initialize serial communication for debugging
Serial.begin(9600);
}
void loop() {
for (int channel = 0; channel < 16; channel++) {
// Set the address pins to select the desired channel
digitalWrite(S0, channel & 0x01); // Set S0 to the least significant bit
digitalWrite(S1, (channel >> 1) & 0x01); // Set S1 to the second bit
digitalWrite(S2, (channel >> 2) & 0x01); // Set S2 to the third bit
digitalWrite(S3, (channel >> 3) & 0x01); // Set S3 to the most significant bit
// Read the analog value from the selected channel
int sensorValue = analogRead(COM_PIN);
// Print the channel number and sensor value to the serial monitor
Serial.print("Channel ");
Serial.print(channel);
Serial.print(": ");
Serial.println(sensorValue);
// Wait for a short delay before reading the next channel
delay(100);
}
}
No Signal Output on COM Pin:
Incorrect Channel Selection:
Signal Distortion or Voltage Drop:
Noise or Unstable Readings:
Q: Can the CD74HC4067 handle digital signals?
A: Yes, the CD74HC4067 can handle both analog and digital signals, as long as the signal voltage is within the supply voltage range (0V to Vcc).
Q: What happens if the EN pin is left floating?
A: If the EN pin is left floating, its state may be undefined, leading to unpredictable behavior. Always connect it to GND (LOW) to enable the multiplexer or to Vcc (HIGH) to disable it.
Q: Can multiple CD74HC4067 chips be cascaded?
A: Yes, multiple chips can be cascaded to expand the number of channels. Use additional address lines or logic to control the enable pins of each chip.
Q: What is the maximum frequency the CD74HC4067 can handle?
A: The maximum frequency depends on the supply voltage and the load capacitance. For typical applications, it can handle signals up to a few MHz.