I am working on an electrical project that, actually works something like a touchscreen digitizer, where I have to generate multiple inputs from over 50-100 sources, and I need to check from which sensor or a group of sensors (probably 3-5) are giving the signals, and then which sensor among the group has the highest electrical signal.

So I would like to know, if there is some way to do this. It has a lot of resemblance with the a resistive touch-screen digitizer, where there are many points that can send the signals, but the digitizer works by detecting exactly where the pressure has been exerted, and then it is sent to the micro-processor which calculates it according to the actual lcd screen.

A basic diagram, or a similar microprocessor reference will be appreciated.

-------------------Edit (More info added)--------------------------

My sensor are basically LDR's (or probably Photo Diodes), and I need to sense light intensity on a specific group of sensors. I am working on an academic project related to robotics.

The LDR's are placed at a distance of 10 mm from each other and arranged in the form of a matrix. So if I take a laser pointer and point to a specific LDR, I should get the reading (may be in number, count) of the active LDR sensor.

  • 2
    \$\begingroup\$ What are the sensors and the signals? Are they voltage or current based? Are they resistive? Can you power them off while not measuring? How fast do you need to acquire the data? \$\endgroup\$
    – pjc50
    May 27, 2013 at 9:41
  • \$\begingroup\$ The sensors are LDR's/photo diodes and the data must be acquired on regular intervals, it can be say 5-10 min, but at the same time I am not bound by time constraints, it can depend on a specific sensor being less resistive in case of LDR and voltage dependent in case of a photo diode, on any given time instant. \$\endgroup\$
    – Cyberpks
    May 27, 2013 at 9:48
  • \$\begingroup\$ It might also be worth adding the rough distance between each group of sensors. Sometimes a multi-drop bus is a good way to do this sort of thing but options will depend on the distance. \$\endgroup\$
    – PeterJ
    May 27, 2013 at 9:53
  • \$\begingroup\$ Ok, that's a good idea (Thanks @PeterJ). Now I'll assume that the sensors are placed on a circular disc, in a matrix form, with all sensors placed at a distance of say 5-10 mm away from each other. But, now how do I process and find, the exact sensor sending in the signals. \$\endgroup\$
    – Cyberpks
    May 27, 2013 at 10:03
  • 1
    \$\begingroup\$ I think you want a diode matrix combined with the multiplexer like this: leobodnar.com/products/BU0836/6x6.png , but the switches replaced with sensors. \$\endgroup\$
    – jippie
    May 27, 2013 at 19:17

1 Answer 1


I'd use an analog multiplexer in combination with a 2D matrix. An example:

  • Matrix of 64 sensors in an 8*8 configuration
  • An eight-channel analog multiplexer with three-bit address input, each input channel connected to a row of the matrix
  • A means of applying a voltage to each column in turn (for example, an 8-bit shift register and some transistors)
  • A microcontroller with built-in ADC

    1. Connect output pins of the uC to the address pins of the multiplexer and the input, shift, reset pins of the shift register.
    2. Connect an ADC analog input pin of the uC to the multiplexer's output
    3. Scan the matrix by shifting columns using the shift register and reading all eight sensors on that column using the multiplexer.

Note that this assumes the variable output of each sensor is a voltage. If linearity isn't required (or you're OK with software compensation), you can build a simple voltage divider with each sensor to achieve this.

  • \$\begingroup\$ 2D matrix is definitely the way to go, although I'd suggest just getting a uC with lots of analog inputs rather than a multiplexer - they tend to be expensive and noisy. \$\endgroup\$
    – pjc50
    May 27, 2013 at 10:28
  • \$\begingroup\$ @Mels, appreciate your help (+1), and it was quite what I wanted, but I guess it helps me to get the address of a single sensor, and I would be glad if you could help me with getting output from group (say 3 sensors) and generate the average of all among that group, to be quite efficient if the laser pointer is replaced with a broad beam of light, that covers somewhere around 3 LDR's at a time. \$\endgroup\$
    – Cyberpks
    May 27, 2013 at 10:29
  • \$\begingroup\$ Once you have scanned the entire matrix, you can perform whatever calculations you require on the set of values. If you load all the values into a 2d array, your platform of choice will probably have lots of online examples on how to do some aggregate processing on the data. If you specify which microcontroller platform you will be using, we may be able to help our further. \$\endgroup\$
    – Mels
    May 27, 2013 at 11:17
  • 1
    \$\begingroup\$ If you need to be able to detect the center of a beam that spans multiple sensors (or simply need a greated resolution of detection than your sensor matrix provides natively), look at applying interpolation functions. In the 8*8 example, you could do a bicubic resampling to a 64*64 array and search for the highest value in the resulting array to get the position of (the center of) your beam. However, this is venturing way into programming territory. I'd recommend asking a specific Q on Stack Overflow once you have the electronics up and running. \$\endgroup\$
    – Mels
    May 27, 2013 at 11:28
  • 1
    \$\begingroup\$ Applying a voltage to the columns should really be done with active high/low circuits. Going hi-impedance might allow feedthrough from the active column (via a light activated sensor) to push a little current through all the other sensors - it's hard to explain in words!! \$\endgroup\$
    – Andy aka
    May 27, 2013 at 11:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.