I need a few more analog inputs on the RPI Pico for part of my upcoming Project14 build.
The venerable CD4051 seemed like a good fit, will operate on 3.3V and is available in a 16-DIP package.
Today I popped over to my local electronics/hobby shop (Sayal). I ended coming home with a 4051 Analog-Mux with a 1995 date code, from a semiconductor supplier I not familiar with AVG Semiconductors.
I wired up a resistor ladder long the 8 inputs just to give it a test run.
I wrote a few lines of \(\mu Python\) to cycle through the mux inputs every 1 ms:
from machine import Pin, ADC
MUXA0 = Pin(20,Pin.OUT)
MUXA1 = Pin(21,Pin.OUT)
MUXA2 = Pin(22,Pin.OUT)
x = 0
tmr = machine.Timer()
def MuxUpdate(tim):
global x
MUXA0.value(x & (1<<0))
MUXA1.value(x & (1<<1))
MUXA2.value(x & (1<<2))
x += 1
x &= 0x7
tmr.init(period=1,callback=MuxUpdate)
while True:
pass
Just like that a new to the world microcontroller, the RP2040 says hello to a 25 year old Analog Mux (not really that old…).
Probing the common pin on the CD4051 we can see the mux cycling along nodes of the resistor ladder:
There are few glitches on the transition because I am strobing out addresses bits one at time sequentially. After the last address bit is set the output settles in a few microseconds.
A bit set takes about 10 us to complete, not that fast, but it is python after all.
Just some random ramblings.