Multiplexer CD4067 bug:signal appears in unselected channels

multiplexer

I connected a multiplexer CD4067 with arduino. I will select ch0-ch15 in turn and pass the selected channel to A0 on arduino to do AD Convert.

Then I only connected ch0 to 5V on arduino and selected all channels in turn to do a test. The result shows that when ch1-ch15 is selected, some of those channels will have a output around 5V and those "wrong channels" are fixed if you choose a fixed input channel. However when I connected a 1kΩ resistor between the output of CD4067 and the GND. Those unselected channels' voltage will be 0. And the voltage of ch0 will be around 4.2v. (I checked the connection and code which are correct.)

So after this, I changed the analog input to a piezoelectric film's signal. A similar problem exists. And I tried several kinds of resistors(max at 4MΩ), but the problem still exists.

I have no ideal about why this happened? And I am a little bit confused about some flaws about the CMOS. What is the possible solution?

Best Answer

You need to connect the unused channels to some particular voltage, not leave them floating.

You are violating the 10K\$\Omega\$ maximum source impedance requirement for the microcontroller by leaving them floating so you will get a reading that depends on the previous channel selection and other things.

Adding a resistor on the output of the multiplexer is not a very good idea, as you have found, because not only does the multiplexer have significant internal resistance (around 500\$\Omega\$ typically) but it varies significantly with input voltage and with temperature.

So, don't connect anything other than the ADC input to the output of the mux and don't leave the analog inputs floating if you want the ADC to give you a sensible reading. There are no bugs here.

Because of the 10K maximum source impedance, you probably should not expect to use a piezo sensor directly with the micro, you may need a high impedance buffer amplifier (unless you can parallel the sensor with 10K and still get enough signal to be useful).