Part 2: Hardware Connections


Now that you've gathered the required parts listed in the previous section, it's time to build things.

All parts are available in DIP / through-hole form factor, so we can breadboard the whole thing, no soldering required. Cutting to the chase, here's the schematic:

See Full Size Schematic (PDF)

How Does it Work?

If you have measured single-element FSRs by looking at the voltage across a divider, we're doing the same thing here.

But in this case, we're choosing the point to measure by powering a single drive column, enabling one mux channel so that the ADC sees a single row. In the next section, the Arduino code demonstrates a scan pattern to read all 160 elements in sequence.

Does it Ghost?

"Ghosting" is a term that describes a common issue that arises in sensor or button matrices. We'll skip the full explanation, as it's already discussed thoroughly elsewhere on the web.

Here's a good article that explains ghosting (in relation to computer keyboard circuits).

In short, the issue is that when multiple cells are pressed, unintended paths between rows and columns can be created, resulting in false readings on an unpressed cell. Is it an issue in our design? Well, partially. If we used shift registers with a tri-state outputs to drive columns, and set undriven columns to Hi-Z, we would expect to see "ghost" points just like in a keyboard matrix. But instead, we're going to ground undriven columns. The unintended paths are effectively paralleled with the sensing resistor (R1), which decreases the apparent sensitivity of certain cells when other cells are pressed in the same column or row. So maybe we could say that this example demonstrates "reverse ghosting".

The end result is that this design will not provide accurate absolute readings when touched at multiple points. However, it will provide decent measurements of relative force on each cell, with respect to other forces present on the sensor sheet.

Looking at the circuit, another question that arises is "will shift register high/low outputs be shorted to one another?". The answer in this case is "no", because each cell in this particular ThruMode matrix has a minimum resistance (under full load) in the realm of 2.5k-5.0k, which limits maximum current sourced / sunk by any shift register pin to 1-2 mA. If we were using a sensor matrix in which cells could be forced to near zero ohms, then yes, we could probably melt sensor membranes and blow up shift registers.

Are There Solutions to this Limitation?

Yes, amplifier stage(s) can be designed to replace the simple voltage divider output to improve cell independence and filter undesirable signal components. However, things get a bit complicated and application-specific. So for the sake of this basic tutorial, this research is left to the reader.

And here's the assembled circuit. We used surface mount ICs because they were available, but they're also available in thru-hole / DIP packages.