MUX selection advice

Hello,

I am currently working on a velostat-based pixel pressure sensor. Basically, I need to measure a bunch of resistors that are related to the pressure on a certain pixel.

I thought a lot on how to perform the measurements so that I only need to measure voltages and so that each measurement does not depend on all other measurements. Briefly, I came up with the scheme shown in the picture, where everything is grounded except for the wires connected to pixel (i,j) (in the example, pixel (2,3)), so that column i is biased at 5V, and row j is left floating. The voltage measurement performed on row j, gives voltage Vi,j. Resistance ri,j is given by

ri,j=Rj*5v/Vi,j

Where Rj is the resistance equivalent to all the resistors of row j put in parallel. Rj can be easily found by inserting one known resistor in each row.
Applying the 5V bias to each column successively, you can measure all resistors in row j. Iterating for all rows, you measure all the pixels. In this way, you should apply the 5V biases on columns, and perform measurements on rows.

This is easily implemented with an arduino, connecting all rows to analog inputs (which can be at 0V in low impedance mode or in high impedance mode and perform the ADC conversion), and connecting all columns to digital pins (in low impedance mode, supposing all currents are smaller than rated values). The problem is, if you need more pixels, you should think of a way to mux/demux the rows and the columns. (Or buy a bunch of chinese arduinos, which only cost about 1€ when bought in bulk, but it doesn't sound like the efficient way to do this!)

My understanding of analog mux/demux chips is that only one of the multiple inputs/outputs is connected at any given time, and that the others are left floating. I thought that perhaps there might be a smart way to use the mux/demux ics so that the unconnected pins are grounded, but I couldn't come up with a solution. Maybe there are some dedicated ics that ground the unused pins? Or maybe someone can come up with a better solution..

Thanks for your help,
Davide

I don't believe this.

I don't believe this.

Did I say something wrong?

Mux/demux chip like DG406, a 16-channel to 1 analog switch, can be used with TPIC6C595 to have the TPIC6C595 pull the unselected inputs low if that's what you're after.

You'd have to look at the switch resistance and the Rds of the shift register for the impact of their "resistance" to your ADC measurement.

balerion:
Did I say something wrong?

I don't think it is going to work. I am very suspicious of the theory behind it.

CrossRoads, thanks for your great advice, this looks like a very elegant solution. The shift register you suggested has the drain of single mosfets as outputs, basically giving either the source voltage on the output, or leaving the pin floating. Great device!
Using this together with a Mux/demux chip should work just fine.

Edit: I just checked the Rds(on) value for the TPIC6C595, which is 7ohm typical. The TPIC6A596 is a very similar device, with 1ohm typical Rds(on). On the other hand, from the datasheet, the atmega328 digital ports have a ~0.5V drop (sourcing 20mA) or rise (sinking 20mA) at 5V Vcc which gives ~25ohm impedance. Your solution with power logic shift registers is much better than using many arduinos!

Paul__B, I like skepticism! I would love to show you the theory. It requires some math, if you like I can write up a short document.
Regarding the hardware, I have tried to build single velostat-based pixels with a geometry very similar to the flexiforce sensors, where the resistance changes more as a consequence of different contact area with the resistive film rather than bulk compression of the resistive material. They seem to work just fine. You basically have electrodes touching the resistive membrane on both sides, but one side has a spacer.
it looks something like this, but with a single pressure layer rather than two: