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.
   231   232   233   234   235   236   237   238   239   240   241