Im hoping to get some suggestions and ideas on how to read in 200+ phototransistors voltages (0-5) into an ADC? I only need to look at 1 by 1 rather than all at once.

  • \$\begingroup\$ Can you not use a camera instead of phototransistors? \$\endgroup\$
    – Ktc
    Commented Aug 29, 2012 at 14:32

2 Answers 2


One approach would be to multiplex your ADC with lots of analog multiplexors (muxes).

Another approach is to connect all phototransistor collectors together to one ADC channel. Connect the emitters to digital i/o pins. If the i/o pin is floating, the phototransistor is not driving the ADC. If the i/o pin is low, the phototransistor is driving the ADC. This allows you to select one phototransistor at a time. You would need as many digital i/o lines as there are phototransistors. In this approach, you trade analog muxes for digital i/o.

Somewhere in between is a matrix approach. Suppose, you have 256 phototransistors. You could arrange them in a matrix. 8x32, for example. 8x ADC channels (or 1x ADC channel with 8-to-1 analog mux). One for each row of the matrix. All collectors in one row are connected together. 32x digital i/o. One for each column. All emitters in one column are connected together. Digital i/o works in the same way as in the 2nd paragraph, except one i/o activates a column of 8x phototransistors.


The 74HC4067 is a 16-channel analog multiplexer/demultiplexer, so cascading two levels of them gives you up to 256 inputs.

You use 16 devices for 16 \$\times\$ 16 inputs, and connect the 16 outputs to a 17th device to make the final selection. The 16 input multiplexers share the same 4-bit select word, and with a 4-bit select word for the second level you have an 8-bit select word for 2\$^8\$ = 256 input channels.

Rocketmagnet has his doubts. This is indeed not the minimum parts solution, but it's the easiest to control: set 8-bit phototransistor address, read analog input. Also, depending on the location of the phototransistors, it may be easier for signal routing than a matrix.

  • \$\begingroup\$ Surely a matrix is simpler? \$\endgroup\$ Commented Aug 29, 2012 at 10:34
  • 1
    \$\begingroup\$ @Rocketmagnet - Not to control it: set 8-bit phototransistor address, read analog input. \$\endgroup\$
    – stevenvh
    Commented Aug 29, 2012 at 10:38
  • \$\begingroup\$ vs. set column bit, read ADC channel. Both are simple. \$\endgroup\$ Commented Aug 29, 2012 at 16:07
  • \$\begingroup\$ @Rocket - clear previous column bit, convert phototransistor number to ADC channel, select ADC channel, convert phototransistor number to column, set column bit, read ADC channel. \$\endgroup\$
    – stevenvh
    Commented Aug 29, 2012 at 16:20
  • \$\begingroup\$ I think there are multiple ways you could use that 7th 74HC4067... Instead of using it as another level of analog mux in the tree, you could also use it as a digital demux to drive the enable pins of the other 4067's, and just connect all of the 16 analog outputs from each chip together and to the input of your ADC. I'm not sure which has better SNR, but the latter design is probably easier to route. \$\endgroup\$ Commented Oct 2, 2013 at 13:01

Your Answer

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

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