I'm creating a grid of 200+ pressure sensors and need a clean way to get their values back to the master controller without a mess of wires.

To me it seems like daisy chaining all the sensors together would be the most straight forward. I was planning to use daisy chained SPI, unless there was a better way.

ADC chips would be the most straight forward, but the only SPI daisy chain-able one I found (AD7685), which is ~$15 a chip.

As a cheaper option, I could use an ATtiny and write a custom serial data chain protocol; however, it seems like a bit of overkill to have a microcontoller per sensor.

What do you think? Is there a better way? Perhaps another chip that I'm not familiar with?

  • 1
    \$\begingroup\$ What about using clusters of about 8 sensors with a smaller MCU, with SPI+8*SS# for the sensors, and daisy-chainable SPI for connection to the rest of the system? \$\endgroup\$
    – venny
    Commented Sep 15, 2014 at 20:14
  • \$\begingroup\$ Unfortunately it will not be easy to cluster the sensors. \$\endgroup\$ Commented Sep 15, 2014 at 20:30
  • \$\begingroup\$ AD7912 is 10 bit with daisy chain; AD7922 is 12 bit. These are cheaper. Do you need 16 bits? What speed SPI? \$\endgroup\$
    – Andy aka
    Commented Sep 15, 2014 at 20:34
  • 1
    \$\begingroup\$ That changes everything. I'm not sure how I didn't see this. 10 bits of resolution should be more than enough. The master will be either an Arduino or a Raspberry Pi. \$\endgroup\$ Commented Sep 15, 2014 at 20:47
  • 1
    \$\begingroup\$ How quickly do the sensor values change, and need to be captured. How quickly does the master controller need to be notified? What distances are between sensors and the master controller? Their are many ways to solve this, and response times and cable length are important to know to choose between them. The obvious way is to use a cheap microcontroller (MCU) with plenty of ADC inputs to handle a bunch of sensors (8-16 sensors/MCU, typically). Chain MCUs together using 4 wires, power ground clock and data, e.g. I2C, and poll them from the master controller. \$\endgroup\$
    – gbulmer
    Commented Sep 15, 2014 at 22:11

1 Answer 1


'overkill' is a strange term for a cheaper solution! If you can find a cheap chainable A/D use it, but when 10 bits is sufficient I doubt you will find anything cheaper than a small microcontroller.

I once designed something similar for a client, a grid of sensors. Each node was in a chain of IIRC 30 nodes, and each chain was 'hanging' from a master chain for 30 master nodes, for a total of ~ 1000 nodes. Each sensor node had a bootloader (I think the uC was an PIC16F88). All sensor nodes could be bootloaded in parallel. After startup each chain was enumerated (each node got a sequential number), so communication could target individual sensor nodes.

The hardware of each sensor node was the uC, an HC TTL buffer chip, and an 7805 (otherwise the line would drop the voltage too much). Plus some decoupling caps and a few resistors. Four wires: gnd, power (=power down to reset/bootload), data in, data out (both daisy chained). The protocol was sufficiently timing-tolerant that the internal oscillator could be used under all voltages and temperatures.

  • 1
    \$\begingroup\$ Funny, shortly after my post I started realizing that my gut-response of a MCU being overkill was probably incorrect. I'll probably do something similar to what you're describing. The project is already pretty big, so initially I was hoping to be able to use cheap off-the-shelf components for that part. \$\endgroup\$ Commented Sep 15, 2014 at 23:30
  • \$\begingroup\$ If you were using TTL to communicate between sensors, what was the maximum distance each node could be from one another? \$\endgroup\$ Commented Sep 15, 2014 at 23:37
  • 1
    \$\begingroup\$ IIRC the sensors were on a 1 x 1 m grid, so 1 m between sensors. \$\endgroup\$ Commented Sep 16, 2014 at 6:35

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.