I have 1024 analogue signals coming in. I eventually need to measure the analogue signal (approx 100Hz) from each source.

I have the following ideas

  • I could read them sequentially through an ADC circuit I've made. Analogue matrix switches exist. I could cascade them to read out. This sounds painful. Multiplexers only seem to go up to 8.
  • Could I feed it into an FPGA - but I'm unaware of any FPGA with enough ADCs
  • I could build a motor which rotates and makes a contact with 1024 circular points. This is genuinely my favourite option at the moment.

Any ideas?

Update based on comments:

  • How long to scan all 1024 channels? 20 minutes is fine. i.e. Justover 1s per channel.

  • What noise level, impedance level, voltage level? The signal on the channels is weak - before amplification. The outputs are all high impedance. Voltage level is flexible.

  • What leakage can you tolerate in the switches, to other channels, to ground, to any rail? What resistance ditto. What capacitance ditto. I can tolerate leakage. I don't have any numbers for resistance or capacitance to hand, but are not of great concern at the moment. As a bit of a background, each cable is connected to a sensor that I can 3D print/place onto an array.

  • So, what exactly are you digitizing? The signal shape itself.

  • What is it's bandwidth (and I don't mean center frequency), what is the resolution you need, which is probably a result of what the SNR of your analog signal is and what your application needs? The signal looks like a sine wave it really is at 100Hz. I need maybe 150 points on the sine wave to make a good reading.

  • What voltage range are we talking about on the channels and how precisely do you need signals to be handled. The original set up was based on a current measurement (i.e. went into transimpedance amplifier) - but could be a voltage instead. Would be on microvolt range.

  • Input impedance and bandwidth are important and what DC content too. Input impedance could be varied. It is currently high. No DC content.

  • What exactly are you doing? Currently we do this experiment using a scanning probe on a surface (typically around 50 mm by 50 mm). It would be advantageous to not having a scanning probe, instead using a an electrode array. An oscillating current is generated in the material. As the electrode array nears the material, effectivaly a capacitor is formed. We measure the current on the electrode. We are interested in how the current is propogated through the device, and we can obtain material properties simply from the shape/phase of the current at each point. The misshappen sine wave arises the dielectric constant is modulated of the capacitor/surface system.

  • 4
    \$\begingroup\$ Anything involving probing 1024 channels will be painful. Better describe why you need this, and we might be able to point out a better way to solve it. \$\endgroup\$
    – Eugene Sh.
    Feb 28, 2023 at 17:08
  • 3
    \$\begingroup\$ It might help people make suggestions if you put some numbers on your requirements. How long to scan all 1024 channels? What noise level, impedance level, voltage level? What leakage can you tolerate in the switches, to other channels, to ground, to any rail? What resistance ditto. What capacitance ditto. Generally, one honkin' great board is not the best solution, go for the square root. Build a 32 input board with an MCU for communication and cal on it. Test the * out of it. Get it working well. Replicate it on a PCB, and stack 32 PCBs. \$\endgroup\$
    – Neil_UK
    Feb 28, 2023 at 17:20
  • 1
    \$\begingroup\$ 32 channel analog in is common on NI DAQ boards. Could mux that, or if you're willing to wait minutes, manually swap out the cable 32 times. \$\endgroup\$ Feb 28, 2023 at 17:52
  • 1
    \$\begingroup\$ Haha! @Marcus Be careful what you ask for - but give me a minute and I will properly write out what I'm attempting to do. Note - I'm trying to determine the exact bandwidth - but it is very close to 100Hz. \$\endgroup\$
    – Tomi
    Feb 28, 2023 at 17:52
  • 1
    \$\begingroup\$ Is the whole surface you're intending to take 1024 measurements on 50 mm × 50 mm, or is the area covered by one electrode 50 mm×50 mm? This decides the question whether your problem is packing 1024 electrodes and the dependent electronics densely, or your distributing sensitive signals over a wide area. Also, you still owe us any indication on the fidelity you need! \$\endgroup\$ Feb 28, 2023 at 20:33

1 Answer 1


Below I’m making a lot of assumptions. You have not provided any necessary detail to approach such design in anything but most general terms. For example, you may have an XY problem where instead of discrete sensors a camera and machine vision would do. How can we know? The signal levels, transducer type, distance from sensor to data acquisition computer, environment and water protection (indoors/outdoors, corrosive water like on a shore or in an indoor pool etc), resiliency (how much the data is worth having when the power goes out etc), desired life of the system, so on and so forth… Please don’t think that any of it is obvious. For all I know you could be talking about undersea seismic geophone arrays.

I’ve dealt with distributed data acquisition with similar number of channels. Last thing you want is to run those low level signals a long way. Shielded cabling and connections will eat your lunch. Digitize as close to the source as you can. MCUs are cheap - it makes sense to put one on each of the custom digitizers. A digitizer could serve 16 or 32 channels - only you know what your system’s layout is. Cable routing and making this practical is just as important as the circuit schematic. Most of the cost and pain will be in the interconnects. The digitizers can be made quite cheaply.

If someone asked me to put one together, I’d get an MCU with suitable ADC already on-board, put a couple quad op-amps to preamplify all channels in parallel and feed them to MCU inputs, then use WizNet module for ethernet output. For low cost you could use “poor man’s” PoE - feed 9 or 12VDC between the two data pairs, without additional isolation. As soon as all those ethernet lines pass through the power injector and go into a switch, it becomes a simple matter to have a program that listens on UDP for data broadcasts from the nodes. The nodes can also be receiving time broadcasts from the data collection computer, so that the data is time stamped for easy alignment of all the channels in the “receive window buffer” the software needs. This is not the TCP receive window by the way.

Given the number of channels you want everything to be cheap, with as little custom wiring and interconnect as possible. Cat5 cables are cheap, so are connectors that fit them. “Poor man’s” power injectors for ethernet are widely used in CCTV and alarm industries so you don’t need to roll your own. Network switches can be bought in grocery stores pretty much. A simple to use “SPI to RJ-45” module makes it all easy as well. Sending UDP packets with data is simple, as is receiving UDP broadcasts. The modules take care of DHCP and so on. Plug and play.

As for the rotating commutator: it’s the most expensive solution imaginable. You’re entering the fine mechanics territory, custom contact plating, and so on. It can be done if this is some boutique one-of-a-kind cost doesn’t matter project, otherwise it’d be the last thing on your mind.

For the ethernet-based digitizers, if you’re careful in the design, the parts cost could be around $1/channel. You want the least amount of custom anything, so having just one PCB you’d make lots of and the rest should be mass-made off the shelf stuff. Even the ethernet cables should be premade unless you really want to spend time crimping connectors.

  • \$\begingroup\$ I agree with this. My first inclination would be to sample everything separately, maybe broadcasting a common trigger signal for timing. \$\endgroup\$ Feb 28, 2023 at 18:28

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.