Page 236 - The Unofficial Guide to Lego Mindstorms Robots
P. 236
225
more than three inputs or outputs? On the input side, at least, there are some tricks. Chapter 5, Minerva, a Robot with an Arm,
describes some ways of putting more than one sensor on a single input. It's possible to put multiple switches on a single input,
but you can't tell which of them was pressed when a touch occurs.
A simple circuit allows you to hook up four switches to a single input and detect them individually. This circuit is called a
touch multiplexer, because it mashes three input signals into one. This idea was originally suggested by Paul Haas; one
implementation is documented nicely at Michael Gasperi's web site.
Note that this method uses regular switches, not the LEGO touch sensors. The touch sensors that come with RIS provide a
varying resistance as they are pressed. A garden variety switch is much more of a binary device, which is better suited to our
touch multiplexer.
The touch multiplexer is based on a fundamental concept in electronics: the combination of different resistances. Michael
Gasperi's design combines resistors in parallel. The touch multiplexer I'll describe here combines resistors in series, which
simplifies the math.∗ The basic circuit is shown in Figure 11-8.
Figure 11-8.
The touch multiplexer circuit
Pressing a single switch shorts out the corresponding resistance, which reduces the raw input value. Because each touch sensor
has a different resistance, the touch sensors each reduce the raw input readings by recognizable amounts. Note that the resistors
roughly double in value as you move from left to right. This makes it easier to interpret the results of the touch multiplexer.
Each combination of switches produces a unique resistance, which results in a unique raw input value. By examining the raw
input values in your robot's program, you can figure out which touch sensors were pressed.
You can convert the raw value to a resistance with the following equation, where raw is the raw input value:
∗John Tamplin deserves the credit for this idea.